11176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# libtool (GNU libtool) 2.4.2
31176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
41176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
51176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
61176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
71176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This is free software; see the source for copying conditions.  There is NO
81176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
91176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# GNU Libtool is free software; you can redistribute it and/or modify
111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# it under the terms of the GNU General Public License as published by
121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the Free Software Foundation; either version 2 of the License, or
131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (at your option) any later version.
141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# As a special exception to the GNU General Public License,
161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if you distribute this file as part of a program or library that
171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is built using GNU Libtool, you may include this file under the
181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# same distribution terms that you use for the rest of that program.
191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# GNU Libtool is distributed in the hope that it will be useful, but
211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# WITHOUT ANY WARRANTY; without even the implied warranty of
221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# General Public License for more details.
241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# You should have received a copy of the GNU General Public License
261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# along with GNU Libtool; see the file COPYING.  If not, a copy
271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# can be downloaded from http://www.gnu.org/licenses/gpl.html,
281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# or obtained by writing to the Free Software Foundation, Inc.,
291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Usage: $progname [OPTION]... [MODE-ARG]...
321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Provide generalized library-building support services.
341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --config             show all configuration variables
361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --debug              enable verbose shell tracing
371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   -n, --dry-run            display commands without modifying any files
381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --features           display basic configuration information and exit
391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --mode=MODE          use operation mode MODE
401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --preserve-dup-deps  don't remove duplicate dependency libraries
411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --quiet, --silent    don't print informational messages
421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --no-quiet, --no-silent
431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#                            print informational messages (default)
441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --no-warn            don't display warning messages
451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --tag=TAG            use configuration variables from tag TAG
461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   -v, --verbose            print more informational messages than default
471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --no-verbose         don't print the extra informational messages
481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#       --version            print version information
491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   -h, --help, --help-all   print short, long, or detailed help message
501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# MODE must be one of the following:
521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         clean              remove files from the build directory
541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         compile            compile a source file into a libtool object
551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         execute            automatically set library path, then run a program
561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         finish             complete the installation of libtool libraries
571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         install            install libraries or executables
581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         link               create a library or an executable
591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         uninstall          remove libraries from an installed directory
601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# MODE-ARGS vary depending on the MODE.  When passed as first option,
621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# When reporting a bug, please describe a test case to reproduce it and
661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include the following information:
671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         host-triplet:	$host
691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         shell:		$SHELL
701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         compiler:		$LTCC
711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         compiler flags:		$LTCFLAGS
721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         linker:		$LD (gnu? $with_gnu_ld)
731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         $progname:	(GNU libtool) 2.4.2
741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         automake:	$automake_version
751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#         autoconf:	$autoconf_version
761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Report bugs to <bug-libtool@gnu.org>.
781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# General help using GNU software: <http://www.gnu.org/gethelp/>.
801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
811176bdada62cabc6ec4b0308a930e83b679d5d36John ReckPROGRAM=libtool
821176bdada62cabc6ec4b0308a930e83b679d5d36John ReckPACKAGE=libtool
831176bdada62cabc6ec4b0308a930e83b679d5d36John ReckVERSION=2.4.2
841176bdada62cabc6ec4b0308a930e83b679d5d36John ReckTIMESTAMP=""
851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpackage_revision=1.3337
861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Be Bourne compatible
881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  emulate sh
901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  NULLCMD=:
911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # is contrary to our usage.  Disable this feature.
931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  alias -g '${1+"$@"}'='"$@"'
941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  setopt NO_GLOB_SUBST
951176bdada62cabc6ec4b0308a930e83b679d5d36John Reckelse
961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi
981176bdada62cabc6ec4b0308a930e83b679d5d36John ReckBIN_SH=xpg4; export BIN_SH # for Tru64
991176bdada62cabc6ec4b0308a930e83b679d5d36John ReckDUALCASE=1; export DUALCASE # for MKS sh
1001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# A function that is used when there is no print builtin or printf.
1021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fallback_echo ()
1031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
1041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  eval 'cat <<_LTECHO_EOF
1051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$1
1061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LTECHO_EOF'
1071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
1081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# NLS nuisances: We save the old values to restore during execute mode.
1101176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_user_locale=
1111176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_safe_locale=
1121176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdo
1141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  eval "if test \"\${$lt_var+set}\" = set; then
1151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          save_$lt_var=\$$lt_var
1161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          $lt_var=C
1171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  export $lt_var
1181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi"
1211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdone
1221176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLC_ALL=C
1231176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLANGUAGE=C
1241176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexport LANGUAGE LC_ALL
1251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$lt_unset CDPATH
1271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is ksh but when the shell is invoked as "sh" and the current value of
1311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the _XPG environment variable is not equal to 1 (one), the special
1321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# positional parameter $0, within a function call, is the name of the
1331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# function.
1341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckprogpath="$0"
1351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${CP="cp -f"}
1391176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
1401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${MAKE="make"}
1411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${MKDIR="mkdir"}
1421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${MV="mv -f"}
1431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${RM="rm -f"}
1441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck: ${Xsed="$SED -e 1s/^X//"}
1461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Global variables:
1481176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_SUCCESS=0
1491176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_FAILURE=1
1501176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1511176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexit_status=$EXIT_SUCCESS
1541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make sure IFS has a sensible default
1561176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_nl='
1571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck'
1581176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIFS=" 	$lt_nl"
1591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1601176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdirname="s,/[^/]*$,,"
1611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbasename="s,^.*/,,"
1621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_dirname file append nondir_replacement
1641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
1651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# otherwise set result to NONDIR_REPLACEMENT.
1661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_dirname ()
1671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
1681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
1691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "X$func_dirname_result" = "X${1}"; then
1701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_dirname_result="${3}"
1711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
1721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_dirname_result="$func_dirname_result${2}"
1731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
1741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_dirname may be replaced by extended shell implementation
1751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_basename file
1781176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_basename ()
1791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
1801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_basename_result=`$ECHO "${1}" | $SED "$basename"`
1811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_basename may be replaced by extended shell implementation
1821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
1841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_dirname_and_basename file append nondir_replacement
1851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# perform func_basename and func_dirname in a single function
1861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# call:
1871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   dirname:  Compute the dirname of FILE.  If nonempty,
1881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#             add APPEND to the result, otherwise set result
1891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#             to NONDIR_REPLACEMENT.
1901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#             value returned in "$func_dirname_result"
1911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   basename: Compute filename of FILE.
1921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#             value retuned in "$func_basename_result"
1931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Implementation must be kept synchronized with func_dirname
1941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and func_basename. For efficiency, we do not delegate to
1951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# those functions but instead duplicate the functionality here.
1961176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_dirname_and_basename ()
1971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
1981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Extract subdirectory from the argument.
1991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
2001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "X$func_dirname_result" = "X${1}"; then
2011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_dirname_result="${3}"
2021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
2031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_dirname_result="$func_dirname_result${2}"
2041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
2051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
2061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_dirname_and_basename may be replaced by extended shell implementation
2071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_stripname prefix suffix name
2101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# strip PREFIX and SUFFIX off of NAME.
2111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# PREFIX and SUFFIX must not contain globbing or regex special
2121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# characters, hashes, percent signs, but SUFFIX may contain a leading
2131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# dot (in which case that matches only a dot).
2141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_strip_suffix prefix name
2151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_stripname ()
2161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
2171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case ${2} in
2181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
2191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)  func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
2201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
2211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_stripname may be replaced by extended shell implementation
2221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# These SED scripts presuppose an absolute path with a trailing slash.
2251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpathcar='s,^/\([^/]*\).*$,\1,'
2261176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpathcdr='s,^/[^/]*,,'
2271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckremovedotparts=':dotsl
2281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		s@/\./@/@g
2291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		t dotsl
2301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		s,/\.$,/,'
2311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcollapseslashes='s@/\{1,\}@/@g'
2321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfinalslash='s,/*$,/,'
2331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
2341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_normal_abspath PATH
2351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Remove doubled-up and trailing slashes, "." path components,
2361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and cancel out any ".." path components in PATH after making
2371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# it an absolute path.
2381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#             value returned in "$func_normal_abspath_result"
2391176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_normal_abspath ()
2401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
2411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Start from root dir and reassemble the path.
2421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath_result=
2431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath_tpath=$1
2441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath_altnamespace=
2451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $func_normal_abspath_tpath in
2461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    "")
2471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Empty path, that just means $cwd.
2481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_stripname '' '/' "`pwd`"
2491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_normal_abspath_result=$func_stripname_result
2501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      return
2511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
2521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # The next three entries are used to spot a run of precisely
2531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # two leading slashes without using negated character classes;
2541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # we take advantage of case's first-match behaviour.
2551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ///*)
2561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Unusual form of absolute path, do nothing.
2571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
2581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    //*)
2591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Not necessarily an ordinary path; POSIX reserves leading '//'
2601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # and for example Cygwin uses it to access remote file shares
2611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # over CIFS/SMB, so we conserve a leading double slash if found.
2621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_normal_abspath_altnamespace=/
2631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
2641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    /*)
2651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Absolute path, do nothing.
2661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
2671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
2681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Relative path, prepend $cwd.
2691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
2701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
2711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
2721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Cancel out all the simple stuff to save iterations.  We also want
2731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # the path to end with a slash for ease of parsing, so make sure
2741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # there is one (and only one) here.
2751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
2761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
2771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  while :; do
2781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Processed it all yet?
2791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$func_normal_abspath_tpath" = / ; then
2801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # If we ascended to the root using ".." the result may be empty now.
2811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -z "$func_normal_abspath_result" ; then
2821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_normal_abspath_result=/
2831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
2841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      break
2851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
2861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
2871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        -e "$pathcar"`
2881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
2891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        -e "$pathcdr"`
2901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Figure out what to do with it
2911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $func_normal_abspath_tcomponent in
2921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "")
2931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # Trailing empty path component, ignore it.
2941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
2951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ..)
2961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # Parent dir; strip last assembled component from result.
2971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_dirname "$func_normal_abspath_result"
2981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_normal_abspath_result=$func_dirname_result
2991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
3001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
3011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # Actual path component, append it.
3021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
3031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
3041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
3051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  done
3061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Restore leading double-slash if one was found on entry.
3071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
3081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
3091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_relative_path SRCDIR DSTDIR
3111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# generates a relative path from SRCDIR to DSTDIR, with a trailing
3121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# slash if non-empty, suitable for immediately appending a filename
3131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# without needing to append a separator.
3141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#             value returned in "$func_relative_path_result"
3151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_relative_path ()
3161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
3171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_relative_path_result=
3181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath "$1"
3191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_relative_path_tlibdir=$func_normal_abspath_result
3201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_normal_abspath "$2"
3211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_relative_path_tbindir=$func_normal_abspath_result
3221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Ascend the tree starting from libdir
3241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  while :; do
3251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # check if we have found a prefix of bindir
3261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $func_relative_path_tbindir in
3271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $func_relative_path_tlibdir)
3281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # found an exact match
3291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_relative_path_tcancelled=
3301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        break
3311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
3321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $func_relative_path_tlibdir*)
3331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # found a matching prefix
3341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
3351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_relative_path_tcancelled=$func_stripname_result
3361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        if test -z "$func_relative_path_result"; then
3371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_relative_path_result=.
3381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        fi
3391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        break
3401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
3411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
3421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_dirname $func_relative_path_tlibdir
3431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_relative_path_tlibdir=${func_dirname_result}
3441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        if test "x$func_relative_path_tlibdir" = x ; then
3451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          # Have to descend all the way to the root!
3461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_relative_path_result=../$func_relative_path_result
3471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_relative_path_tcancelled=$func_relative_path_tbindir
3481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          break
3491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        fi
3501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_relative_path_result=../$func_relative_path_result
3511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
3521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
3531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  done
3541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Now calculate path; take care to avoid doubling-up slashes.
3561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_stripname '' '/' "$func_relative_path_result"
3571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_relative_path_result=$func_stripname_result
3581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_stripname '/' '/' "$func_relative_path_tcancelled"
3591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test "x$func_stripname_result" != x ; then
3601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
3611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
3621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Normalisation. If bindir is libdir, return empty string,
3641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # else relative path ending with a slash; either way, target
3651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # file name can be directly appended.
3661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test ! -z "$func_relative_path_result"; then
3671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname './' '' "$func_relative_path_result/"
3681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_relative_path_result=$func_stripname_result
3691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
3701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
3711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The name of this program:
3731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_dirname_and_basename "$progpath"
3741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckprogname=$func_basename_result
3751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make sure we have an absolute path for reexecution:
3771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcase $progpath in
3781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  [\\/]*|[A-Za-z]:\\*) ;;
3791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *[\\/]*)
3801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     progdir=$func_dirname_result
3811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     progdir=`cd "$progdir" && pwd`
3821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     progpath="$progdir/$progname"
3831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     ;;
3841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *)
3851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     save_IFS="$IFS"
3861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     IFS=${PATH_SEPARATOR-:}
3871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     for progdir in $PATH; do
3881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       IFS="$save_IFS"
3891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       test -x "$progdir/$progname" && break
3901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     done
3911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     IFS="$save_IFS"
3921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     test -n "$progdir" || progdir=`pwd`
3931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     progpath="$progdir/$progname"
3941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     ;;
3951176bdada62cabc6ec4b0308a930e83b679d5d36John Reckesac
3961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
3971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that helps us do robust quoting.  It backslashifies
3981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# metacharacters that are still active within double-quoted strings.
3991176bdada62cabc6ec4b0308a930e83b679d5d36John ReckXsed="${SED}"' -e 1s/^X//'
4001176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_quote_subst='s/\([`"$\\]\)/\\\1/g'
4011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Same as above, but do not quote variable references.
4031176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
4041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that turns a string into a regex matching for the
4061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# string literally.
4071176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
4081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that converts a w32 file name or path
4101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# which contains forward slashes, into one that contains
4111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (escaped) backslashes.  A very naive implementation.
4121176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
4131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Re-`\' parameter expansions in output of double_quote_subst that were
4151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
4161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in input to double_quote_subst, that '$' was protected from expansion.
4171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Since each input `\' is now two `\'s, look for any number of runs of
4181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
4191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbs='\\'
4201176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbs2='\\\\'
4211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbs4='\\\\\\\\'
4221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdollar='\$'
4231176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_double_backslash="\
4241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  s/$bs4/&\\
4251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/g
4261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  s/^$bs2$dollar/$bs&/
4271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
4281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  s/\n//g"
4291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Standard options:
4311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_dry_run=false
4321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help=false
4331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_quiet=false
4341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_verbose=false
4351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_warning=:
4361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_echo arg...
4381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message, along with the current mode
4391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# name if it has been set yet.
4401176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_echo ()
4411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
4431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_verbose arg...
4461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message in verbose mode only.
4471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_verbose ()
4481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_verbose && func_echo ${1+"$@"}
4501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # A bug in bash halts the script if the last line of a function
4521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # fails when set -e is in force, so we need another command to
4531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # work around that:
4541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    :
4551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_echo_all arg...
4581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Invoke $ECHO with all args, space-separated.
4591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_echo_all ()
4601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "$*"
4621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_error arg...
4651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error.
4661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_error ()
4671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
4691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_warning arg...
4721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed warning message to standard error.
4731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_warning ()
4741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
4761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # bash bug again:
4781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    :
4791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_fatal_error arg...
4821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error, and exit.
4831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fatal_error ()
4841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error ${1+"$@"}
4861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $EXIT_FAILURE
4871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_fatal_help arg...
4901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error, followed by
4911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a help hint, and exit.
4921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fatal_help ()
4931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
4941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error ${1+"$@"}
4951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_fatal_error "$help"
4961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
4971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckhelp="Try \`$progname --help' for more information."  ## default
4981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
4991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_grep expression filename
5011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Check whether EXPRESSION matches any line of FILENAME, without output.
5021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_grep ()
5031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
5041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $GREP "$1" "$2" >/dev/null 2>&1
5051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
5061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mkdir_p directory-path
5091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make sure the entire path to DIRECTORY-PATH is available.
5101176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mkdir_p ()
5111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
5121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_directory_path="$1"
5131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_dir_list=
5141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
5161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Protect directory names starting with `-'
5181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $my_directory_path in
5191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        -*) my_directory_path="./$my_directory_path" ;;
5201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
5211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # While some portion of DIR does not yet exist...
5231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      while test ! -d "$my_directory_path"; do
5241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # ...make a list in topmost first order.  Use a colon delimited
5251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# list incase some portion of path contains whitespace.
5261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        my_dir_list="$my_directory_path:$my_dir_list"
5271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # If the last portion added has no slash in it, the list is done
5291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        case $my_directory_path in */*) ;; *) break ;; esac
5301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # ...otherwise throw away the child directory and loop
5321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
5331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
5341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
5351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      save_mkdir_p_IFS="$IFS"; IFS=':'
5371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for my_dir in $my_dir_list; do
5381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	IFS="$save_mkdir_p_IFS"
5391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # mkdir can fail with a `File exist' error if two processes
5401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # try to create one of the directories concurrently.  Don't
5411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # stop in that case!
5421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $MKDIR "$my_dir" 2>/dev/null || :
5431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
5441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      IFS="$save_mkdir_p_IFS"
5451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Bail out if we (or some other process) failed to create a directory.
5471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -d "$my_directory_path" || \
5481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_fatal_error "Failed to create \`$1'"
5491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
5501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
5511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mktempdir [string]
5541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Make a temporary directory that won't clash with other running
5551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# libtool processes, and avoids race conditions if possible.  If
5561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# given, STRING is the basename for that directory.
5571176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mktempdir ()
5581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
5591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_template="${TMPDIR-/tmp}/${1-$progname}"
5601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$opt_dry_run" = ":"; then
5621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Return a directory name, but don't create it in dry-run mode
5631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_tmpdir="${my_template}-$$"
5641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
5651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # If mktemp works, use that first and foremost
5671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
5681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test ! -d "$my_tmpdir"; then
5701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # Failing that, at least try and use $RANDOM to avoid a race
5711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        my_tmpdir="${my_template}-${RANDOM-0}$$"
5721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        save_mktempdir_umask=`umask`
5741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        umask 0077
5751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $MKDIR "$my_tmpdir"
5761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        umask $save_mktempdir_umask
5771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
5781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # If we're not in dry-run mode, bomb out on failure
5801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -d "$my_tmpdir" || \
5811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
5821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
5831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "$my_tmpdir"
5851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
5861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
5881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_quote_for_eval arg
5891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Aesthetically quote ARG to be evaled later.
5901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
5911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is double-quoted, suitable for a subsequent eval, whereas
5921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
5931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# which are still active within double quotes backslashified.
5941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_quote_for_eval ()
5951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
5961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $1 in
5971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *[\\\`\"\$]*)
5981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
5991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
6001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_quote_for_eval_unquoted_result="$1" ;;
6011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
6021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $func_quote_for_eval_unquoted_result in
6041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Double-quote args containing shell metacharacters to delay
6051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # word splitting, command substitution and and variable
6061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # expansion for a subsequent eval.
6071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Many Bourne shells cannot handle close brackets correctly
6081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # in scan sets, so we specify it separately.
6091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
6111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
6121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
6131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
6141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
6151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
6161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_quote_for_expand arg
6191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Aesthetically quote ARG to be evaled later; same as above,
6201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# but do not quote variable references.
6211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_quote_for_expand ()
6221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
6231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $1 in
6241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *[\\\`\"]*)
6251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	my_arg=`$ECHO "$1" | $SED \
6261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
6271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
6281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        my_arg="$1" ;;
6291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
6301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $my_arg in
6321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Double-quote args containing shell metacharacters to delay
6331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # word splitting and command substitution for a subsequent eval.
6341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Many Bourne shells cannot handle close brackets correctly
6351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # in scan sets, so we specify it separately.
6361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
6371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        my_arg="\"$my_arg\""
6381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
6391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
6401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_quote_for_expand_result="$my_arg"
6421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
6431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_show_eval cmd [fail_exp]
6461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is given, then evaluate it.
6491176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_show_eval ()
6501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
6511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_cmd="$1"
6521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_fail_exp="${2-:}"
6531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ${opt_silent-false} || {
6551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_quote_for_expand "$my_cmd"
6561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval "func_echo $func_quote_for_expand_result"
6571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
6581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ${opt_dry_run-false}; then :; else
6601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval "$my_cmd"
6611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_status=$?
6621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$my_status" -eq 0; then :; else
6631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "(exit $my_status); $my_fail_exp"
6641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
6651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
6661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
6671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_show_eval_locale cmd [fail_exp]
6701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
6711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
6721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# is given, then evaluate it.  Use the saved locale for evaluation.
6731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_show_eval_locale ()
6741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
6751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_cmd="$1"
6761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_fail_exp="${2-:}"
6771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ${opt_silent-false} || {
6791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_quote_for_expand "$my_cmd"
6801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval "func_echo $func_quote_for_expand_result"
6811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
6821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ${opt_dry_run-false}; then :; else
6841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval "$lt_user_locale
6851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $my_cmd"
6861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_status=$?
6871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval "$lt_safe_locale"
6881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$my_status" -eq 0; then :; else
6891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "(exit $my_status); $my_fail_exp"
6901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
6911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
6921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
6931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
6941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_tr_sh
6951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Turn $1 into a string suitable for a shell variable name.
6961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is stored in $func_tr_sh_result.  All characters
6971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
6981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if $1 begins with a digit, a '_' is prepended as well.
6991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_tr_sh ()
7001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
7011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $1 in
7021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  [0-9]* | *[!a-zA-Z0-9_]*)
7031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
7041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
7051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  * )
7061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_tr_sh_result=$1
7071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
7081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
7091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
7101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_version
7131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo version message to standard output and exit.
7141176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_version ()
7151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
7161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
7171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED -n '/(C)/!b go
7191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	:more
7201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	/\./!{
7211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  N
7221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  s/\n# / /
7231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  b more
7241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
7251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	:go
7261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	/^# '$PROGRAM' (GNU /,/# warranty; / {
7271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        s/^# //
7281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/^# *$//
7291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
7301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        p
7311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     }' < "$progpath"
7321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     exit $?
7331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
7341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_usage
7361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo short help message to standard output and exit.
7371176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_usage ()
7381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
7391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
7401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED -n '/^# Usage:/,/^#  *.*--help/ {
7421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        s/^# //
7431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/^# *$//
7441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/\$progname/'$progname'/
7451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	p
7461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }' < "$progpath"
7471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    echo
7481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "run \`$progname --help | more' for full usage"
7491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $?
7501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
7511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_help [NOEXIT]
7531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo long help message to standard output and exit,
7541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# unless 'noexit' is passed as argument.
7551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_help ()
7561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
7571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
7581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED -n '/^# Usage:/,/# Report bugs to/ {
7601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	:print
7611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        s/^# //
7621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/^# *$//
7631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s*\$progname*'$progname'*
7641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s*\$host*'"$host"'*
7651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s*\$SHELL*'"$SHELL"'*
7661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s*\$LTCC*'"$LTCC"'*
7671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s*\$LTCFLAGS*'"$LTCFLAGS"'*
7681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s*\$LD*'"$LD"'*
7691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/\$with_gnu_ld/'"$with_gnu_ld"'/
7701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
7711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
7721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	p
7731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	d
7741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     }
7751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     /^# .* home page:/b print
7761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     /^# General help using/b print
7771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     ' < "$progpath"
7781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ret=$?
7791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -z "$1"; then
7801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit $ret
7811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
7821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
7831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_missing_arg argname
7851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error and set global
7861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# exit_cmd.
7871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_missing_arg ()
7881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
7891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
7901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "missing argument for $1."
7921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit_cmd=exit
7931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
7941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
7961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_split_short_opt shortopt
7971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Set func_split_short_opt_name and func_split_short_opt_arg shell
7981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variables after splitting SHORTOPT after the 2nd character.
7991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_split_short_opt ()
8001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_sed_short_opt='1s/^\(..\).*$/\1/;q'
8021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
8031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
8051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
8061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_split_short_opt may be replaced by extended shell implementation
8071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_split_long_opt longopt
8101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Set func_split_long_opt_name and func_split_long_opt_arg shell
8111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variables after splitting LONGOPT at the `=' sign.
8121176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_split_long_opt ()
8131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
8151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_sed_long_arg='1s/^--[^=]*=//'
8161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
8181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
8191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_split_long_opt may be replaced by extended shell implementation
8201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexit_cmd=:
8221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmagic="%%%MAGIC variable%%%"
8281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmagic_exe="%%%MAGIC EXE variable%%%"
8291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Global variables.
8311176bdada62cabc6ec4b0308a930e83b679d5d36John Recknonopt=
8321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpreserve_args=
8331176bdada62cabc6ec4b0308a930e83b679d5d36John Recklo2o="s/\\.lo\$/.${objext}/"
8341176bdada62cabc6ec4b0308a930e83b679d5d36John Recko2lo="s/\\.${objext}\$/.lo/"
8351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextracted_archives=
8361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextracted_serial=0
8371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If this variable is set in any of the actions, the command in it
8391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# will be execed at the end.  This prevents here-documents from being
8401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# left over by shells.
8411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexec_cmd=
8421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_append var value
8441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Append VALUE to the end of shell variable VAR.
8451176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append ()
8461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    eval "${1}=\$${1}\${2}"
8481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_append may be replaced by extended shell implementation
8491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_append_quoted var value
8511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Quote VALUE and append to the end of shell variable VAR, separated
8521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# by a space.
8531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append_quoted ()
8541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_quote_for_eval "${2}"
8561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
8571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_append_quoted may be replaced by extended shell implementation
8581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_arith arithmetic-term...
8611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_arith ()
8621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_arith_result=`expr "${@}"`
8641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_arith may be replaced by extended shell implementation
8651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_len string
8681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# STRING may not start with a hyphen.
8691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_len ()
8701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
8721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_len may be replaced by extended shell implementation
8731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_lo2o object
8761176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lo2o ()
8771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
8791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_lo2o may be replaced by extended shell implementation
8801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_xform libobj-or-source
8831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_xform ()
8841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
8861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} # func_xform may be replaced by extended shell implementation
8871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_fatal_configuration arg...
8901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echo program name prefixed message to standard error, followed by
8911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a configuration failure hint, and exit.
8921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fatal_configuration ()
8931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
8941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error ${1+"$@"}
8951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "See the $PACKAGE documentation for more information."
8961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_fatal_error "Fatal configuration error."
8971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
8981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
8991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_config
9011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Display the configuration for all the tags in this script.
9021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_config ()
9031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
9041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    re_begincf='^# ### BEGIN LIBTOOL'
9051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    re_endcf='^# ### END LIBTOOL'
9061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Default configuration.
9081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
9091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Now print the configurations for the tags.
9111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for tagname in $taglist; do
9121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
9131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
9141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $?
9161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
9171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_features
9191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Display the features supported by this script.
9201176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_features ()
9211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
9221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    echo "host: $host"
9231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_libtool_libs" = yes; then
9241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "enable shared libraries"
9251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
9261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "disable shared libraries"
9271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
9281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_old_libs" = yes; then
9291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "enable static libraries"
9301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
9311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "disable static libraries"
9321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
9331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $?
9351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
9361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_enable_tag tagname
9381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Verify that TAGNAME is valid, and either flag an error and exit, or
9391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
9401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variable here.
9411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_enable_tag ()
9421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
9431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Global variable:
9441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tagname="$1"
9451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
9471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
9481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  sed_extractcf="/$re_begincf/,/$re_endcf/p"
9491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Validate tagname.
9511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $tagname in
9521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *[!-_A-Za-z0-9,/]*)
9531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_error "invalid tag name: $tagname"
9541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
9551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
9561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Don't test for the "default" C tag, as we know it's
9581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # there but not specially marked.
9591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $tagname in
9601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    CC) ;;
9611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
9621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
9631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	taglist="$taglist $tagname"
9641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Evaluate the configuration.  Be careful to quote the path
9661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# and the sed script, to avoid splitting on whitespace, but
9671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# also don't use non-portable quotes within backquotes within
9681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# quotes we have to do it in 2 steps:
9691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
9701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "$extractedcf"
9711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
9721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_error "ignoring unknown tag $tagname"
9731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
9741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
9751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
9761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
9771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_check_version_match
9791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Ensure that we are using m4 macros, and libtool script from the same
9801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# release of libtool.
9811176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_check_version_match ()
9821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
9831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test "$package_revision" != "$macro_revision"; then
9841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$VERSION" != "$macro_version"; then
9851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -z "$macro_version"; then
9861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        cat >&2 <<_LT_EOF
9871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
9881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: definition of this LT_INIT comes from an older release.
9891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
9901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: and run autoconf again.
9911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LT_EOF
9921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
9931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        cat >&2 <<_LT_EOF
9941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
9951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
9961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
9971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: and run autoconf again.
9981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LT_EOF
9991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
10001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
10011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      cat >&2 <<_LT_EOF
10021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
10031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: but the definition of this LT_INIT comes from revision $macro_revision.
10041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: You should recreate aclocal.m4 with macros from revision $package_revision
10051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$progname: of $PACKAGE $VERSION and run autoconf again.
10061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LT_EOF
10071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
10081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $EXIT_MISMATCH
10101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
10111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
10121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Shorthand for --mode=foo, only valid as the first argument
10151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcase $1 in
10161176bdada62cabc6ec4b0308a930e83b679d5d36John Reckclean|clea|cle|cl)
10171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode clean ${1+"$@"}; shift
10181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompile|compil|compi|comp|com|co|c)
10201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode compile ${1+"$@"}; shift
10211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexecute|execut|execu|exec|exe|ex|e)
10231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode execute ${1+"$@"}; shift
10241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfinish|finis|fini|fin|fi|f)
10261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode finish ${1+"$@"}; shift
10271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinstall|instal|insta|inst|ins|in|i)
10291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode install ${1+"$@"}; shift
10301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10311176bdada62cabc6ec4b0308a930e83b679d5d36John Recklink|lin|li|l)
10321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode link ${1+"$@"}; shift
10331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
10351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift; set dummy --mode uninstall ${1+"$@"}; shift
10361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ;;
10371176bdada62cabc6ec4b0308a930e83b679d5d36John Reckesac
10381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Option defaults:
10421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_debug=:
10431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_dry_run=false
10441176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_config=false
10451176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_preserve_dup_deps=false
10461176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_features=false
10471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_finish=false
10481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help=false
10491176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help_all=false
10501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_silent=:
10511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_warning=:
10521176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_verbose=:
10531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_silent=false
10541176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_verbose=false
10551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
10571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Parse options once, thoroughly.  This comes as soon as possible in the
10581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# script to make things like `--version' happen as quickly as we can.
10591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
10601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # this just eases exit handling
10611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  while test $# -gt 0; do
10621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    opt="$1"
10631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    shift
10641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $opt in
10651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --debug|-x)	opt_debug='set -x'
10661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			func_echo "enabling shell trace mode"
10671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			$opt_debug
10681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --dry-run|--dryrun|-n)
10701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_dry_run=:
10711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --config)
10731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_config=:
10741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_config
10751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --dlopen|-dlopen)
10771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			optarg="$1"
10781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_dlopen="${opt_dlopen+$opt_dlopen
10791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}$optarg"
10801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			shift
10811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --preserve-dup-deps)
10831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_preserve_dup_deps=:
10841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --features)
10861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_features=:
10871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_features
10881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --finish)
10901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_finish=:
10911176bdada62cabc6ec4b0308a930e83b679d5d36John Reckset dummy --mode finish ${1+"$@"}; shift
10921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --help)
10941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_help=:
10951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
10961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --help-all)
10971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_help_all=:
10981176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_help=': help-all'
10991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --mode)
11011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			test $# = 0 && func_missing_arg $opt && break
11021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			optarg="$1"
11031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_mode="$optarg"
11041176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcase $optarg in
11051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Valid mode arguments:
11061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  clean|compile|execute|finish|install|link|relink|uninstall) ;;
11071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Catch anything else as an error
11091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *) func_error "invalid argument for $opt"
11101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     exit_cmd=exit
11111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     break
11121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     ;;
11131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckesac
11141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			shift
11151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --no-silent|--no-quiet)
11171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_silent=false
11181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt"
11191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --no-warning|--no-warn)
11211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_warning=false
11221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt"
11231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --no-verbose)
11251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_verbose=false
11261176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt"
11271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --silent|--quiet)
11291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_silent=:
11301176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt"
11311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        opt_verbose=false
11321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --verbose|-v)
11341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_verbose=:
11351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt"
11361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckopt_silent=false
11371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --tag)
11391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			test $# = 0 && func_missing_arg $opt && break
11401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			optarg="$1"
11411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			opt_tag="$optarg"
11421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_append preserve_args " $opt $optarg"
11431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_enable_tag "$optarg"
11441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			shift
11451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -\?|-h)		func_usage				;;
11481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --help)		func_help				;;
11491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --version)	func_version				;;
11501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Separate optargs to long options:
11521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --*=*)
11531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			func_split_long_opt "$opt"
11541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"}
11551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			shift
11561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Separate non-argument short options:
11591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -\?*|-h*|-n*|-v*)
11601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			func_split_short_opt "$opt"
11611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"}
11621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			shift
11631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			;;
11641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --)		break					;;
11661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -*)		func_fatal_help "unrecognized option \`$opt'" ;;
11671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)		set dummy "$opt" ${1+"$@"};	shift; break  ;;
11681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
11691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  done
11701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Validate options:
11721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # save first non-option argument
11741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test "$#" -gt 0; then
11751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    nonopt="$opt"
11761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    shift
11771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
11781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # preserve --debug
11801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  test "$opt_debug" = : || func_append preserve_args " --debug"
11811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $host in
11831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *cygwin* | *mingw* | *pw32* | *cegcc*)
11841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # don't eliminate duplications in $postdeps and $predeps
11851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      opt_duplicate_compiler_generated_deps=:
11861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
11871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
11881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps
11891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
11901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
11911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_help || {
11931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Sanity checks first:
11941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_check_version_match
11951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
11961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
11971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_configuration "not configured to build any kind of library"
11981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
11991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Darwin sucks
12011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    eval std_shrext=\"$shrext_cmds\"
12021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Only execute mode is allowed to have -dlopen flags.
12041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$opt_dlopen" && test "$opt_mode" != execute; then
12051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_error "unrecognized option \`-dlopen'"
12061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $ECHO "$help" 1>&2
12071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit $EXIT_FAILURE
12081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
12091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Change the help message to a mode-specific one.
12111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    generic_help="$help"
12121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    help="Try \`$progname --help --mode=$opt_mode' for more information."
12131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  }
12141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Bail if the options were screwed
12171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $exit_cmd $EXIT_FAILURE
12181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
12191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck## ----------- ##
12241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck##    Main.    ##
12251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck## ----------- ##
12261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_lalib_p file
12281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool `.la' library or `.lo' object file.
12291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out
12301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters.
12311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lalib_p ()
12321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
12331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -f "$1" &&
12341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $SED -e 4q "$1" 2>/dev/null \
12351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
12361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
12371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_lalib_unsafe_p file
12391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool `.la' library or `.lo' object file.
12401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function implements the same check as func_lalib_p without
12411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# resorting to external programs.  To this end, it redirects stdin and
12421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# closes it afterwards, without saving the original file descriptor.
12431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# As a safety measure, use it only where a negative result would be
12441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# fatal anyway.  Works if `file' does not exist.
12451176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lalib_unsafe_p ()
12461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
12471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lalib_p=no
12481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
12491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for lalib_p_l in 1 2 3 4
12501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	do
12511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    read lalib_p_line
12521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$lalib_p_line" in
12531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
12541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
12551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
12561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exec 0<&5 5<&-
12571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
12581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test "$lalib_p" = yes
12591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
12601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_script_p file
12621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool wrapper script
12631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out
12641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters.
12651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_script_p ()
12661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
12671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_lalib_p "$1"
12681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
12691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_executable_p file
12711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool wrapper executable
12721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out
12731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters.
12741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_executable_p ()
12751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
12761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_ltwrapper_exec_suffix=
12771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $1 in
12781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.exe) ;;
12791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *) func_ltwrapper_exec_suffix=.exe ;;
12801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
12811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
12821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
12831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_scriptname file
12851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Assumes file is an ltwrapper_executable
12861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# uses $file to determine the appropriate filename for a
12871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# temporary ltwrapper_script.
12881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_scriptname ()
12891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
12901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_dirname_and_basename "$1" "" "."
12911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname '' '.exe' "$func_basename_result"
12921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
12931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
12941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
12951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_ltwrapper_p file
12961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True iff FILE is a libtool wrapper script or wrapper executable
12971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This function is only a basic sanity check; it will hardly flush out
12981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# determined imposters.
12991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_ltwrapper_p ()
13001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
13011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
13021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
13031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_execute_cmds commands fail_cmd
13061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Execute tilde-delimited COMMANDS.
13071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If FAIL_CMD is given, eval that upon failure.
13081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FAIL_CMD may read-access the current command in variable CMD!
13091176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_execute_cmds ()
13101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
13111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
13121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    save_ifs=$IFS; IFS='~'
13131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for cmd in $1; do
13141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      IFS=$save_ifs
13151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval cmd=\"$cmd\"
13161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval "$cmd" "${2-:}"
13171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
13181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    IFS=$save_ifs
13191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
13201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_source file
13231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Source FILE, adding directory component if necessary.
13241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Note that it is not necessary on cygwin/mingw to append a dot to
13251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
13261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# behavior happens only for exec(3), not for open(2)!  Also, sourcing
13271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# `FILE.' does not work on cygwin managed mounts.
13281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_source ()
13291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
13301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
13311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $1 in
13321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    */* | *\\*)	. "$1" ;;
13331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)		. "./$1" ;;
13341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
13351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
13361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_resolve_sysroot PATH
13391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Replace a leading = in PATH with a sysroot.  Store the result into
13401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_resolve_sysroot_result
13411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_resolve_sysroot ()
13421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
13431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_resolve_sysroot_result=$1
13441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $func_resolve_sysroot_result in
13451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  =*)
13461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname '=' '' "$func_resolve_sysroot_result"
13471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_resolve_sysroot_result=$lt_sysroot$func_stripname_result
13481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
13491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
13501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
13511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_replace_sysroot PATH
13531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If PATH begins with the sysroot, replace it with = and
13541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# store the result into func_replace_sysroot_result.
13551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_replace_sysroot ()
13561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
13571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case "$lt_sysroot:$1" in
13581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  ?*:"$lt_sysroot"*)
13591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname "$lt_sysroot" '' "$1"
13601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_replace_sysroot_result="=$func_stripname_result"
13611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
13621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *)
13631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Including no sysroot.
13641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_replace_sysroot_result=$1
13651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
13661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
13671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
13681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
13691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_infer_tag arg
13701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Infer tagged configuration to use if any are available and
13711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if one wasn't chosen via the "--tag" command line option.
13721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Only attempt this if the compiler in the base compile
13731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# command doesn't match the default compiler.
13741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# arg is usually of the form 'gcc ...'
13751176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_infer_tag ()
13761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
13771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
13781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$available_tags" && test -z "$tagname"; then
13791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      CC_quoted=
13801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for arg in $CC; do
13811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append_quoted CC_quoted "$arg"
13821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
13831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      CC_expanded=`func_echo_all $CC`
13841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      CC_quoted_expanded=`func_echo_all $CC_quoted`
13851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $@ in
13861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Blanks in the command may have been stripped by the calling shell,
13871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # but not from the CC environment variable when configure was run.
13881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
13891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;;
13901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Blanks at the start of $base_compile will cause this to fail
13911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # if we don't check for them as well.
13921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
13931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for z in $available_tags; do
13941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
13951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Evaluate the configuration.
13961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
13971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    CC_quoted=
13981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for arg in $CC; do
13991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Double-quote args containing other shell metacharacters.
14001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append_quoted CC_quoted "$arg"
14011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
14021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    CC_expanded=`func_echo_all $CC`
14031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    CC_quoted_expanded=`func_echo_all $CC_quoted`
14041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$@ " in
14051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \
14061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*)
14071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # The compiler in the base compile command matches
14081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # the one in the tagged configuration.
14091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Assume this is the tagged configuration we want.
14101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      tagname=$z
14111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      break
14121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
14131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
14141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
14151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
14161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If $tagname still isn't set, then no tagged configuration
14171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# was found and let the user know that the "--tag" command
14181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# line option must be used.
14191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$tagname"; then
14201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_echo "unable to infer tagged configuration"
14211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "specify a tag with \`--tag'"
14221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#	else
14231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#	  func_verbose "using $tagname tagged configuration"
14241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
14251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
14261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
14271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
14281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
14291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_write_libtool_object output_name pic_name nonpic_name
14331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Create a libtool object file (analogous to a ".la" file),
14341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# but don't create it if we're doing a dry run.
14351176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_write_libtool_object ()
14361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
14371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    write_libobj=${1}
14381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_libtool_libs" = yes; then
14391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      write_lobj=\'${2}\'
14401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
14411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      write_lobj=none
14421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
14431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_old_libs" = yes; then
14451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      write_oldobj=\'${3}\'
14461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
14471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      write_oldobj=none
14481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
14491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_dry_run || {
14511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      cat >${write_libobj}T <<EOF
14521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $write_libobj - a libtool object file
14531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
14541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
14551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Please DO NOT delete this file!
14561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# It is necessary for linking the library.
14571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Name of the PIC object.
14591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckpic_object=$write_lobj
14601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Name of the non-PIC object
14621176bdada62cabc6ec4b0308a930e83b679d5d36John Recknon_pic_object=$write_oldobj
14631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14641176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
14651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $MV "${write_libobj}T" "${write_libobj}"
14661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
14671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
14681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck##################################################
14711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS #
14721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck##################################################
14731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
14741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_core_file_wine_to_w32 ARG
14751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Helper function used by file name conversion functions when $build is *nix,
14761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and $host is mingw, cygwin, or some other w32 environment. Relies on a
14771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# correctly configured wine environment available, with the winepath program
14781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in $build's $PATH.
14791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
14801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is the $build file name to be converted to w32 format.
14811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in $func_convert_core_file_wine_to_w32_result, and will
14821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# be empty on error (or when ARG is empty)
14831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_core_file_wine_to_w32 ()
14841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
14851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
14861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_core_file_wine_to_w32_result="$1"
14871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
14881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Unfortunately, winepath does not exit with a non-zero error code, so we
14891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # are forced to check the contents of stdout. On the other hand, if the
14901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # command is not found, the shell will set an exit code of 127 and print
14911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # *an error message* to stdout. So we must check for both error code of
14921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # zero AND non-empty stdout, which explains the odd construction:
14931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null`
14941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then
14951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" |
14961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $SED -e "$lt_sed_naive_backslashify"`
14971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
14981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_convert_core_file_wine_to_w32_result=
14991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
15001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
15011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
15021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end: func_convert_core_file_wine_to_w32
15031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_core_path_wine_to_w32 ARG
15061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Helper function used by path conversion functions when $build is *nix, and
15071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly
15081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# configured wine environment available, with the winepath program in $build's
15091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $PATH. Assumes ARG has no leading or trailing path separator characters.
15101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
15111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is path to be converted from $build format to win32.
15121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in $func_convert_core_path_wine_to_w32_result.
15131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Unconvertible file (directory) names in ARG are skipped; if no directory names
15141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# are convertible, then the result may be empty.
15151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_core_path_wine_to_w32 ()
15161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
15171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
15181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # unfortunately, winepath doesn't convert paths, only file names
15191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_core_path_wine_to_w32_result=""
15201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
15211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    oldIFS=$IFS
15221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    IFS=:
15231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for func_convert_core_path_wine_to_w32_f in $1; do
15241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      IFS=$oldIFS
15251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f"
15261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$func_convert_core_file_wine_to_w32_result" ; then
15271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        if test -z "$func_convert_core_path_wine_to_w32_result"; then
15281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result"
15291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        else
15301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result"
15311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        fi
15321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
15331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
15341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    IFS=$oldIFS
15351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
15361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
15371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end: func_convert_core_path_wine_to_w32
15381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygpath ARGS...
15411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when
15421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2)
15431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or
15441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (2), returns the Cygwin file name or path in func_cygpath_result (input
15451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# file name or path is assumed to be in w32 format, as previously converted
15461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# from $build's *nix or MSYS format). In case (3), returns the w32 file name
15471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# or path in func_cygpath_result (input file name or path is assumed to be in
15481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Cygwin format). Returns an empty string on error.
15491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
15501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARGS are passed to cygpath, with the last one being the file name or path to
15511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# be converted.
15521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
15531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH
15541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# environment variable; do not put it in $PATH.
15551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygpath ()
15561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
15571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
15581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then
15591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null`
15601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$?" -ne 0; then
15611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # on failure, ensure result is empty
15621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_cygpath_result=
15631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
15641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
15651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_cygpath_result=
15661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'"
15671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
15681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
15691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#end: func_cygpath
15701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_core_msys_to_w32 ARG
15731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name or path ARG from MSYS format to w32 format.  Return
15741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# result in func_convert_core_msys_to_w32_result.
15751176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_core_msys_to_w32 ()
15761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
15771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
15781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # awkward: cmd appends spaces to result
15791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null |
15801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"`
15811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
15821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#end: func_convert_core_msys_to_w32
15831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
15851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_check ARG1 ARG2
15861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Verify that ARG1 (a file name in $build format) was converted to $host
15871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# format in ARG2. Otherwise, emit an error message, but continue (resetting
15881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result to ARG1).
15891176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_check ()
15901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
15911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
15921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -z "$2" && test -n "$1" ; then
15931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "Could not determine host file name corresponding to"
15941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "  \`$1'"
15951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "Continuing, but uninstalled executables may not work."
15961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Fallback:
15971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_file_result="$1"
15981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
15991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
16001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_check
16011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH
16041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Verify that FROM_PATH (a path in $build format) was converted to $host
16051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# format in TO_PATH. Otherwise, emit an error message, but continue, resetting
16061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result to a simplistic fallback value (see below).
16071176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_check ()
16081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
16091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
16101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -z "$4" && test -n "$3"; then
16111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "Could not determine the host path corresponding to"
16121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "  \`$3'"
16131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_error "Continuing, but uninstalled executables may not work."
16141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Fallback.  This is a deliberately simplistic "conversion" and
16151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # should not be "improved".  See libtool.info.
16161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "x$1" != "x$2"; then
16171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_replace_pathsep_chars="s|$1|$2|g"
16181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_to_host_path_result=`echo "$3" |
16191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $SED -e "$lt_replace_pathsep_chars"`
16201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
16211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_to_host_path_result="$3"
16221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
16231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
16241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
16251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_check
16261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG
16291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT
16301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and appending REPL if ORIG matches BACKPAT.
16311176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_front_back_pathsep ()
16321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
16331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
16341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $4 in
16351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $1 ) func_to_host_path_result="$3$func_to_host_path_result"
16361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
16371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
16381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $4 in
16391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $2 ) func_append func_to_host_path_result "$3"
16401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
16411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
16421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
16431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_front_back_pathsep
16441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck##################################################
16471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $build to $host FILE NAME CONVERSION FUNCTIONS #
16481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck##################################################
16491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# invoked via `$to_host_file_cmd ARG'
16501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
16511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# In each case, ARG is the path to be converted from $build to $host format.
16521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result will be available in $func_to_host_file_result.
16531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file ARG
16561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Converts the file name ARG from $build format to $host format. Return result
16571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in func_to_host_file_result.
16581176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_to_host_file ()
16591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
16601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
16611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $to_host_file_cmd "$1"
16621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
16631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_to_host_file
16641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_tool_file ARG LAZY
16671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# converts the file name ARG from $build format to toolchain format. Return
16681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# result in func_to_tool_file_result.  If the conversion in use is listed
16691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in (the comma separated) LAZY, no conversion takes place.
16701176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_to_tool_file ()
16711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
16721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
16731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case ,$2, in
16741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *,"$to_tool_file_cmd",*)
16751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_to_tool_file_result=$1
16761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
16771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
16781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $to_tool_file_cmd "$1"
16791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_to_tool_file_result=$func_to_host_file_result
16801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
16811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
16821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
16831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_to_tool_file
16841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_noop ARG
16871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Copy ARG to func_to_host_file_result.
16881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_noop ()
16891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
16901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_file_result="$1"
16911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
16921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_noop
16931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
16951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_msys_to_w32 ARG
16961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic
16971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# conversion to w32 is not available inside the cwrapper.  Returns result in
16981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result.
16991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_msys_to_w32 ()
17001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
17011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
17021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_file_result="$1"
17031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
17041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_msys_to_w32 "$1"
17051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_file_result="$func_convert_core_msys_to_w32_result"
17061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
17071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_file_check "$1" "$func_to_host_file_result"
17081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
17091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_msys_to_w32
17101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_cygwin_to_w32 ARG
17131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from Cygwin to w32 format.  Returns result in
17141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result.
17151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_cygwin_to_w32 ()
17161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
17171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
17181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_file_result="$1"
17191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
17201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # because $build is cygwin, we call "the" cygpath in $PATH; no need to use
17211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # LT_CYGPATH in this case.
17221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_file_result=`cygpath -m "$1"`
17231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
17241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_file_check "$1" "$func_to_host_file_result"
17251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
17261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_cygwin_to_w32
17271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_nix_to_w32 ARG
17301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from *nix to w32 format.  Requires a wine environment
17311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# and a working winepath. Returns result in func_to_host_file_result.
17321176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_nix_to_w32 ()
17331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
17341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
17351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_file_result="$1"
17361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
17371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_file_wine_to_w32 "$1"
17381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_file_result="$func_convert_core_file_wine_to_w32_result"
17391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
17401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_file_check "$1" "$func_to_host_file_result"
17411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
17421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_nix_to_w32
17431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_msys_to_cygwin ARG
17461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
17471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Returns result in func_to_host_file_result.
17481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_msys_to_cygwin ()
17491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
17501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
17511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_file_result="$1"
17521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
17531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_msys_to_w32 "$1"
17541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_cygpath -u "$func_convert_core_msys_to_w32_result"
17551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_file_result="$func_cygpath_result"
17561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
17571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_file_check "$1" "$func_to_host_file_result"
17581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
17591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_msys_to_cygwin
17601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_file_nix_to_cygwin ARG
17631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert file name ARG from *nix to Cygwin format.  Requires Cygwin installed
17641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in a wine environment, working winepath, and LT_CYGPATH set.  Returns result
17651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in func_to_host_file_result.
17661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_file_nix_to_cygwin ()
17671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
17681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
17691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_file_result="$1"
17701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
17711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # convert from *nix to w32, then use cygpath to convert from w32 to cygwin.
17721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_file_wine_to_w32 "$1"
17731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_cygpath -u "$func_convert_core_file_wine_to_w32_result"
17741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_file_result="$func_cygpath_result"
17751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
17761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_convert_file_check "$1" "$func_to_host_file_result"
17771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
17781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_file_nix_to_cygwin
17791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
17811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#############################################
17821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $build to $host PATH CONVERSION FUNCTIONS #
17831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#############################################
17841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# invoked via `$to_host_path_cmd ARG'
17851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
17861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# In each case, ARG is the path to be converted from $build to $host format.
17871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The result will be available in $func_to_host_path_result.
17881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
17891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Path separators are also converted from $build format to $host format.  If
17901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG begins or ends with a path separator character, it is preserved (but
17911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# converted to $host format) on output.
17921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
17931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# All path conversion functions are named using the following convention:
17941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   file name conversion function    : func_convert_file_X_to_Y ()
17951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#   path conversion function         : func_convert_path_X_to_Y ()
17961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# where, for any given $build/$host combination the 'X_to_Y' value is the
17971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# same.  If conversion functions are added for new $build/$host combinations,
17981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the two new functions must follow this pattern, or func_init_to_host_path_cmd
17991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# will break.
18001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_init_to_host_path_cmd
18031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Ensures that function "pointer" variable $to_host_path_cmd is set to the
18041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# appropriate value, based on the value of $to_host_file_cmd.
18051176bdada62cabc6ec4b0308a930e83b679d5d36John Reckto_host_path_cmd=
18061176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_init_to_host_path_cmd ()
18071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
18081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
18091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -z "$to_host_path_cmd"; then
18101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname 'func_convert_file_' '' "$to_host_file_cmd"
18111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    to_host_path_cmd="func_convert_path_${func_stripname_result}"
18121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
18131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
18141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_path ARG
18171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Converts the path ARG from $build format to $host format. Return result
18181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in func_to_host_path_result.
18191176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_to_host_path ()
18201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
18211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
18221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_init_to_host_path_cmd
18231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $to_host_path_cmd "$1"
18241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
18251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_to_host_path
18261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_noop ARG
18291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Copy ARG to func_to_host_path_result.
18301176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_noop ()
18311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
18321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_path_result="$1"
18331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
18341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_noop
18351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_msys_to_w32 ARG
18381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic
18391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# conversion to w32 is not available inside the cwrapper.  Returns result in
18401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_path_result.
18411176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_msys_to_w32 ()
18421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
18431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
18441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_path_result="$1"
18451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
18461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Remove leading and trailing path separator characters from ARG.  MSYS
18471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # behavior is inconsistent here; cygpath turns them into '.;' and ';.';
18481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # and winepath ignores them completely.
18491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname : : "$1"
18501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_tmp1=$func_stripname_result
18511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
18521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_result="$func_convert_core_msys_to_w32_result"
18531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_check : ";" \
18541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "$func_to_host_path_tmp1" "$func_to_host_path_result"
18551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
18561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
18571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
18581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_msys_to_w32
18591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_cygwin_to_w32 ARG
18621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from Cygwin to w32 format.  Returns result in
18631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result.
18641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_cygwin_to_w32 ()
18651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
18661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
18671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_path_result="$1"
18681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
18691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # See func_convert_path_msys_to_w32:
18701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname : : "$1"
18711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_tmp1=$func_stripname_result
18721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"`
18731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_check : ";" \
18741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "$func_to_host_path_tmp1" "$func_to_host_path_result"
18751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
18761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
18771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
18781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_cygwin_to_w32
18791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
18811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_nix_to_w32 ARG
18821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from *nix to w32 format.  Requires a wine environment and
18831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a working winepath.  Returns result in func_to_host_file_result.
18841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_nix_to_w32 ()
18851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
18861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
18871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_path_result="$1"
18881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
18891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # See func_convert_path_msys_to_w32:
18901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname : : "$1"
18911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_tmp1=$func_stripname_result
18921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
18931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_result="$func_convert_core_path_wine_to_w32_result"
18941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_check : ";" \
18951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "$func_to_host_path_tmp1" "$func_to_host_path_result"
18961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_front_back_pathsep ":*" "*:" ";" "$1"
18971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
18981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
18991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_nix_to_w32
19001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_msys_to_cygwin ARG
19031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from MSYS to Cygwin format.  Requires LT_CYGPATH set.
19041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Returns result in func_to_host_file_result.
19051176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_msys_to_cygwin ()
19061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
19071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
19081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_path_result="$1"
19091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
19101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # See func_convert_path_msys_to_w32:
19111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname : : "$1"
19121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_tmp1=$func_stripname_result
19131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_msys_to_w32 "$func_to_host_path_tmp1"
19141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_cygpath -u -p "$func_convert_core_msys_to_w32_result"
19151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_result="$func_cygpath_result"
19161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_check : : \
19171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "$func_to_host_path_tmp1" "$func_to_host_path_result"
19181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
19191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
19201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
19211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_msys_to_cygwin
19221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_convert_path_nix_to_cygwin ARG
19251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Convert path ARG from *nix to Cygwin format.  Requires Cygwin installed in a
19261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a wine environment, working winepath, and LT_CYGPATH set.  Returns result in
19271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_to_host_file_result.
19281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_convert_path_nix_to_cygwin ()
19291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
19301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
19311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_host_path_result="$1"
19321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n "$1"; then
19331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Remove leading and trailing path separator characters from
19341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # ARG. msys behavior is inconsistent here, cygpath turns them
19351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # into '.;' and ';.', and winepath ignores them completely.
19361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname : : "$1"
19371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_tmp1=$func_stripname_result
19381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1"
19391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result"
19401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_host_path_result="$func_cygpath_result"
19411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_check : : \
19421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "$func_to_host_path_tmp1" "$func_to_host_path_result"
19431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_convert_path_front_back_pathsep ":*" "*:" : "$1"
19441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
19451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
19461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end func_convert_path_nix_to_cygwin
19471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_compile arg...
19501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_compile ()
19511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
19521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
19531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Get the compilation command and the source file.
19541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    base_compile=
19551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
19561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    suppress_opt=yes
19571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    suppress_output=
19581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    arg_mode=normal
19591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libobj=
19601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    later=
19611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    pie_flag=
19621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for arg
19641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
19651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $arg_mode in
19661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      arg  )
19671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# do not "continue".  Instead, add this to base_compile
19681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	lastarg="$arg"
19691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg_mode=normal
19701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
19711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      target )
19731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libobj="$arg"
19741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg_mode=normal
19751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
19761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
19771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      normal )
19791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Accept any command-line options.
19801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $arg in
19811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-o)
19821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$libobj" && \
19831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "you cannot specify \`-o' more than once"
19841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  arg_mode=target
19851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
19861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
19871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-pie | -fpie | -fPIE)
19891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_append pie_flag " $arg"
19901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
19911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
19921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-shared | -static | -prefer-pic | -prefer-non-pic)
19941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append later " $arg"
19951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
19961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
19971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
19981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-no-suppress)
19991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  suppress_opt=no
20001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
20011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
20021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-Xcompiler)
20041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
20051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue      #  The current "srcfile" will either be retained or
20061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;            #  replaced later.  I would guess that would be a bug.
20071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-Wc,*)
20091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_stripname '-Wc,' '' "$arg"
20101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  args=$func_stripname_result
20111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lastarg=
20121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  save_ifs="$IFS"; IFS=','
20131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for arg in $args; do
20141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    IFS="$save_ifs"
20151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append_quoted lastarg "$arg"
20161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
20171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  IFS="$save_ifs"
20181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_stripname ' ' '' "$lastarg"
20191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lastarg=$func_stripname_result
20201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add the arguments to base_compile.
20221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append base_compile " $lastarg"
20231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
20241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
20251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
20271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Accept the current argument as the source file.
20281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # The previous "srcfile" becomes the current argument.
20291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  #
20301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lastarg="$srcfile"
20311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  srcfile="$arg"
20321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
20331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac  #  case $arg
20341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
20351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac    #  case $arg_mode
20361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Aesthetically quote the previous argument.
20381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append_quoted base_compile "$lastarg"
20391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done # for arg
20401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $arg_mode in
20421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    arg)
20431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_error "you must specify an argument for -Xcompile"
20441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
20451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    target)
20461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_error "you must specify a target with \`-o'"
20471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
20481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
20491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Get the name of the library object.
20501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -z "$libobj" && {
20511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_basename "$srcfile"
20521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libobj="$func_basename_result"
20531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
20541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
20551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
20561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Recognize several different file suffixes.
20581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # If the user specifies -o file.o, it is replaced with file.lo
20591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $libobj in
20601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.[cCFSifmso] | \
20611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.ada | *.adb | *.ads | *.asm | \
20621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
20631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup)
20641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_xform "$libobj"
20651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      libobj=$func_xform_result
20661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
20671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
20681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $libobj in
20701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
20711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
20721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_error "cannot determine name of library object from \`$libobj'"
20731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
20741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
20751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_infer_tag $base_compile
20771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for arg in $later; do
20791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $arg in
20801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -shared)
20811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test "$build_libtool_libs" != yes && \
20821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_configuration "can not build a shared library"
20831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_old_libs=no
20841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
20851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
20861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -static)
20881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_libtool_libs=no
20891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_old_libs=yes
20901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
20911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
20921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -prefer-pic)
20941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	pic_mode=yes
20951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
20961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
20971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
20981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -prefer-non-pic)
20991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	pic_mode=no
21001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
21011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
21021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
21031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
21041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_quote_for_eval "$libobj"
21061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test "X$libobj" != "X$func_quote_for_eval_result" \
21071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
21081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      && func_warning "libobj name \`$libobj' may not contain shell special characters."
21091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_dirname_and_basename "$obj" "/" ""
21101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    objname="$func_basename_result"
21111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    xdir="$func_dirname_result"
21121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lobj=${xdir}$objdir/$objname
21131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -z "$base_compile" && \
21151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "you must specify a compilation command"
21161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Delete any leftover library objects.
21181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_old_libs" = yes; then
21191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      removelist="$obj $lobj $libobj ${libobj}T"
21201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
21211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      removelist="$lobj $libobj ${libobj}T"
21221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
21231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # On Cygwin there's no "real" PIC flag so we must build both object types
21251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $host_os in
21261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    cygwin* | mingw* | pw32* | os2* | cegcc*)
21271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      pic_mode=default
21281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
21291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
21301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
21311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # non-PIC code in shared libraries is not supported
21321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      pic_mode=default
21331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
21341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Calculate the filename of the output object if compiler does
21361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # not support -o with -c
21371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$compiler_c_o" = no; then
21381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext}
21391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lockfile="$output_obj.lock"
21401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
21411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      output_obj=
21421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      need_locks=no
21431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lockfile=
21441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
21451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Lock this critical section if it is needed
21471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # We use this script file to make the link, it avoids creating a new file
21481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$need_locks" = yes; then
21491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
21501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_echo "Waiting for $lockfile to be removed"
21511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	sleep 2
21521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
21531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    elif test "$need_locks" = warn; then
21541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -f "$lockfile"; then
21551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "\
21561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*** ERROR, $lockfile exists and contains:
21571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck`cat $lockfile 2>/dev/null`
21581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21591176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis indicates that another process is trying to use the same
21601176bdada62cabc6ec4b0308a930e83b679d5d36John Recktemporary object file, and libtool could not work around it because
21611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckyour compiler does not support \`-c' and \`-o' together.  If you
21621176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrepeat this compilation, it may succeed, by chance, but you had better
21631176bdada62cabc6ec4b0308a930e83b679d5d36John Reckavoid parallel builds (make -j) in this platform, or get a better
21641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompiler."
21651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || $RM $removelist
21671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_FAILURE
21681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
21691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append removelist " $output_obj"
21701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $ECHO "$srcfile" > "$lockfile"
21711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
21721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_dry_run || $RM $removelist
21741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_append removelist " $lockfile"
21751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
21761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_tool_file "$srcfile" func_convert_file_msys_to_w32
21781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    srcfile=$func_to_tool_file_result
21791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_quote_for_eval "$srcfile"
21801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    qsrcfile=$func_quote_for_eval_result
21811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Only build a PIC object if we are building libtool libraries.
21831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_libtool_libs" = yes; then
21841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Without this assignment, base_compile gets emptied.
21851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fbsd_hideous_sh_bug=$base_compile
21861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$pic_mode" != no; then
21881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	command="$base_compile $qsrcfile $pic_flag"
21891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
21901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Don't build PIC code
21911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	command="$base_compile $qsrcfile"
21921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
21931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_mkdir_p "$xdir$objdir"
21951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
21961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -z "$output_obj"; then
21971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Place PIC objects in $objdir
21981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append command " -o $lobj"
21991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval_locale "$command"	\
22021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
22031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$need_locks" = warn &&
22051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
22061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "\
22071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*** ERROR, $lockfile contains:
22081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck`cat $lockfile 2>/dev/null`
22091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22101176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbut it should contain:
22111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$srcfile
22121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22131176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis indicates that another process is trying to use the same
22141176bdada62cabc6ec4b0308a930e83b679d5d36John Recktemporary object file, and libtool could not work around it because
22151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckyour compiler does not support \`-c' and \`-o' together.  If you
22161176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrepeat this compilation, it may succeed, by chance, but you had better
22171176bdada62cabc6ec4b0308a930e83b679d5d36John Reckavoid parallel builds (make -j) in this platform, or get a better
22181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompiler."
22191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || $RM $removelist
22211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_FAILURE
22221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Just move the object if needed, then go on to compile the next one
22251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
22261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval '$MV "$output_obj" "$lobj"' \
22271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
22281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Allow error messages only from the first compilation.
22311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$suppress_opt" = yes; then
22321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	suppress_output=' >/dev/null 2>&1'
22331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
22351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Only build a position-dependent object if we build old libraries.
22371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$build_old_libs" = yes; then
22381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$pic_mode" != yes; then
22391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Don't build PIC code
22401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	command="$base_compile $qsrcfile$pie_flag"
22411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
22421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	command="$base_compile $qsrcfile $pic_flag"
22431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$compiler_c_o" = yes; then
22451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append command " -o $obj"
22461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Suppress compiler output if we already did a PIC compilation.
22491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append command "$suppress_output"
22501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval_locale "$command" \
22511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
22521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$need_locks" = warn &&
22541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
22551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "\
22561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*** ERROR, $lockfile contains:
22571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck`cat $lockfile 2>/dev/null`
22581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbut it should contain:
22601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$srcfile
22611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22621176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis indicates that another process is trying to use the same
22631176bdada62cabc6ec4b0308a930e83b679d5d36John Recktemporary object file, and libtool could not work around it because
22641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckyour compiler does not support \`-c' and \`-o' together.  If you
22651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrepeat this compilation, it may succeed, by chance, but you had better
22661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckavoid parallel builds (make -j) in this platform, or get a better
22671176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcompiler."
22681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || $RM $removelist
22701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_FAILURE
22711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Just move the object if needed
22741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
22751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval '$MV "$output_obj" "$obj"' \
22761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
22771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
22791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_dry_run || {
22811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
22821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Unlock the critical section if it was locked
22841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$need_locks" != no; then
22851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	removelist=$lockfile
22861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $RM "$lockfile"
22871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
22881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
22891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $EXIT_SUCCESS
22911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
22921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck$opt_help || {
22941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  test "$opt_mode" = compile && func_mode_compile ${1+"$@"}
22951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
22961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
22971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_help ()
22981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
22991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # We need to display help for each of the modes.
23001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $opt_mode in
23011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "")
23021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # Generic help is extracted from the usage comments
23031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # at the start of this file.
23041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_help
23051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
23061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      clean)
23081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $ECHO \
23091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
23101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23111176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRemove files from the build directory.
23121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23131176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRM is the name of the program to use to delete files associated with each FILE
23141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
23151176bdada62cabc6ec4b0308a930e83b679d5d36John Reckto RM.
23161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23171176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf FILE is a libtool library, object or program, all the files associated
23181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckwith it are deleted. Otherwise, only FILE itself is deleted using RM."
23191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
23201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      compile)
23221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $ECHO \
23231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
23241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23251176bdada62cabc6ec4b0308a930e83b679d5d36John ReckCompile a source file into a libtool library object.
23261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23271176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis mode accepts the following additional options:
23281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
23301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -no-suppress      do not suppress compiler output for multiple passes
23311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -prefer-pic       try to build PIC objects only
23321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -prefer-non-pic   try to build non-PIC objects only
23331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -shared           do not build a \`.o' file suitable for static linking
23341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -static           only build a \`.o' file suitable for static linking
23351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -Wc,FLAG          pass FLAG directly to the compiler
23361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23371176bdada62cabc6ec4b0308a930e83b679d5d36John ReckCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
23381176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfrom the given SOURCEFILE.
23391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23401176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe output file name is determined by removing the directory component from
23411176bdada62cabc6ec4b0308a930e83b679d5d36John ReckSOURCEFILE, then substituting the C source code suffix \`.c' with the
23421176bdada62cabc6ec4b0308a930e83b679d5d36John Recklibrary object suffix, \`.lo'."
23431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
23441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      execute)
23461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $ECHO \
23471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
23481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23491176bdada62cabc6ec4b0308a930e83b679d5d36John ReckAutomatically set library path, then run a program.
23501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23511176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis mode accepts the following additional options:
23521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -dlopen FILE      add the directory containing FILE to the library path
23541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23551176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThis mode sets the library path environment variable according to \`-dlopen'
23561176bdada62cabc6ec4b0308a930e83b679d5d36John Reckflags.
23571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23581176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf any of the ARGS are libtool executable wrappers, then they are translated
23591176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinto their corresponding uninstalled binary, and any of their required library
23601176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdirectories are added to the library path.
23611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23621176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThen, COMMAND is executed, with ARGS as arguments."
23631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
23641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      finish)
23661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $ECHO \
23671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
23681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23691176bdada62cabc6ec4b0308a930e83b679d5d36John ReckComplete the installation of libtool libraries.
23701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23711176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEach LIBDIR is a directory that contains libtool libraries.
23721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23731176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe commands that this mode executes may require superuser privileges.  Use
23741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckthe \`--dry-run' option if you just want to see what would be executed."
23751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
23761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      install)
23781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $ECHO \
23791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
23801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23811176bdada62cabc6ec4b0308a930e83b679d5d36John ReckInstall executables or libraries.
23821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23831176bdada62cabc6ec4b0308a930e83b679d5d36John ReckINSTALL-COMMAND is the installation command.  The first component should be
23841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckeither the \`install' or \`cp' program.
23851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23861176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe following components of INSTALL-COMMAND are treated specially:
23871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -inst-prefix-dir PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
23891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23901176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe rest of the components are interpreted as arguments to that command (only
23911176bdada62cabc6ec4b0308a930e83b679d5d36John ReckBSD-compatible install options are recognized)."
23921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
23931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      link)
23951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $ECHO \
23961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
23971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
23981176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLink object files or libraries together to form another library, or to
23991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcreate an executable program.
24001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24011176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLINK-COMMAND is a command using the C compiler that you would use to create
24021176bdada62cabc6ec4b0308a930e83b679d5d36John Recka program from several object files.
24031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24041176bdada62cabc6ec4b0308a930e83b679d5d36John ReckThe following components of LINK-COMMAND are treated specially:
24051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -all-static       do not do any dynamic linking at all
24071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -avoid-version    do not add a version suffix if possible
24081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -bindir BINDIR    specify path to binaries directory (for systems where
24091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    libraries must be found in the PATH setting at runtime)
24101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
24111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
24121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
24131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -export-symbols SYMFILE
24141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    try to export only the symbols listed in SYMFILE
24151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -export-symbols-regex REGEX
24161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    try to export only the symbols matching REGEX
24171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -LLIBDIR          search LIBDIR for required installed libraries
24181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -lNAME            OUTPUT-FILE requires the installed library libNAME
24191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -module           build a library that can dlopened
24201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -no-fast-install  disable the fast-install mode
24211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -no-install       link a not-installable executable
24221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -no-undefined     declare that a library does not refer to external symbols
24231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
24241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -objectlist FILE  Use a list of object files found in FILE to specify objects
24251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -precious-files-regex REGEX
24261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    don't remove output files matching REGEX
24271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -release RELEASE  specify package release information
24281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
24291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
24301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -shared           only do dynamic linking of libtool libraries
24311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -shrext SUFFIX    override the standard shared library file extension
24321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -static           do not do any dynamic linking of uninstalled libtool libraries
24331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -static-libtool-libs
24341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    do not do any dynamic linking of libtool libraries
24351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -version-info CURRENT[:REVISION[:AGE]]
24361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    specify library version info [each variable defaults to 0]
24371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -weak LIBNAME     declare that the target provides the LIBNAME interface
24381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -Wc,FLAG
24391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -Xcompiler FLAG   pass linker-specific FLAG directly to the compiler
24401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -Wl,FLAG
24411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -Xlinker FLAG     pass linker-specific FLAG directly to the linker
24421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  -XCClinker FLAG   pass link-specific FLAG to the compiler driver (CC)
24431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24441176bdada62cabc6ec4b0308a930e83b679d5d36John ReckAll other options (arguments beginning with \`-') are ignored.
24451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24461176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEvery other argument is treated as a filename.  Files ending in \`.la' are
24471176bdada62cabc6ec4b0308a930e83b679d5d36John Recktreated as uninstalled libtool libraries, other files are standard or library
24481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckobject files.
24491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24501176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
24511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckonly library objects (\`.lo' files) may be specified, and \`-rpath' is
24521176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrequired, except when creating a convenience library.
24531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24541176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
24551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckusing \`ar' and \`ranlib', or on Windows using \`lib'.
24561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24571176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
24581176bdada62cabc6ec4b0308a930e83b679d5d36John Reckis created, otherwise an executable program is created."
24591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
24601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      uninstall)
24621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        $ECHO \
24631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
24641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24651176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRemove libraries from an installation directory.
24661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24671176bdada62cabc6ec4b0308a930e83b679d5d36John ReckRM is the name of the program to use to delete files associated with each FILE
24681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
24691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckto RM.
24701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24711176bdada62cabc6ec4b0308a930e83b679d5d36John ReckIf FILE is a libtool library, all the files associated with it are deleted.
24721176bdada62cabc6ec4b0308a930e83b679d5d36John ReckOtherwise, only FILE itself is deleted using RM."
24731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
24741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
24761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_fatal_help "invalid operation mode \`$opt_mode'"
24771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
24781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
24791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    echo
24811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "Try \`$progname --help' for more information about other modes."
24821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
24831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
24841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Now that we've collected a possible --mode arg, show help if necessary
24851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif $opt_help; then
24861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test "$opt_help" = :; then
24871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_mode_help
24881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
24891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
24901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_help noexit
24911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for opt_mode in compile link execute install finish uninstall clean; do
24921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_mode_help
24931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
24941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    } | sed -n '1p; 2,$s/^Usage:/  or: /p'
24951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
24961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_help noexit
24971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for opt_mode in compile link execute install finish uninstall clean; do
24981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo
24991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_mode_help
25001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
25011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    } |
25021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    sed '1d
25031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /^When reporting/,/^Report/{
25041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	H
25051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	d
25061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
25071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $x
25081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /information about other modes/d
25091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /more detailed .*MODE/d
25101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/'
25111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
25121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  exit $?
25131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi
25141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_execute arg...
25171176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_execute ()
25181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
25191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
25201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # The first argument is the command name.
25211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    cmd="$nonopt"
25221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -z "$cmd" && \
25231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "you must specify a COMMAND"
25241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Handle -dlopen flags immediately.
25261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for file in $opt_dlopen; do
25271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -f "$file" \
25281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	|| func_fatal_help "\`$file' is not a file"
25291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dir=
25311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $file in
25321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.la)
25331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_resolve_sysroot "$file"
25341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	file=$func_resolve_sysroot_result
25351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Check to see that this really is a libtool archive.
25371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_lalib_unsafe_p "$file" \
25381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  || func_fatal_help "\`$lib' is not a valid libtool archive"
25391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Read the libtool library.
25411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlname=
25421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	library_names=
25431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_source "$file"
25441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Skip this library if it cannot be dlopened.
25461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$dlname"; then
25471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Warn if it was a shared library.
25481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$library_names" && \
25491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "\`$file' was not linked with \`-export-dynamic'"
25501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
25511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
25521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_dirname "$file" "" "."
25541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dir="$func_dirname_result"
25551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -f "$dir/$objdir/$dlname"; then
25571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append dir "/$objdir"
25581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
25591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test ! -f "$dir/$dlname"; then
25601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
25611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
25621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
25631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
25641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.lo)
25661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Just add the directory containing the .lo file.
25671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_dirname "$file" "" "."
25681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dir="$func_dirname_result"
25691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
25701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
25721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
25731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
25741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
25751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
25761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Get the absolute pathname.
25781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      absdir=`cd "$dir" && pwd`
25791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$absdir" && dir="$absdir"
25801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now add the directory to shlibpath_var.
25821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if eval "test -z \"\$$shlibpath_var\""; then
25831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "$shlibpath_var=\"\$dir\""
25841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
25851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
25861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
25871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
25881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # This variable tells wrapper scripts just to set shlibpath_var
25901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # rather than running their programs.
25911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libtool_execute_magic="$magic"
25921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
25931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Check if any of the arguments is a wrapper script.
25941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    args=
25951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for file
25961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
25971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $file in
25981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -* | *.la | *.lo ) ;;
25991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
26001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Do a test to see if this is really a libtool program.
26011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if func_ltwrapper_script_p "$file"; then
26021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source "$file"
26031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Transform arg to wrapped name.
26041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  file="$progdir/$program"
26051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif func_ltwrapper_executable_p "$file"; then
26061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_ltwrapper_scriptname "$file"
26071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source "$func_ltwrapper_scriptname_result"
26081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Transform arg to wrapped name.
26091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  file="$progdir/$program"
26101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
26111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
26121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
26131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Quote arguments (to preserve shell metacharacters).
26141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append_quoted args "$file"
26151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
26161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "X$opt_dry_run" = Xfalse; then
26181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$shlibpath_var"; then
26191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Export the shlibpath_var.
26201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "export $shlibpath_var"
26211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
26221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Restore saved environment variables
26241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
26251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      do
26261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "if test \"\${save_$lt_var+set}\" = set; then
26271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                $lt_var=\$save_$lt_var; export $lt_var
26281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
26291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$lt_unset $lt_var
26301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi"
26311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
26321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now prepare to actually exec the command.
26341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exec_cmd="\$cmd$args"
26351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
26361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Display what would be done.
26371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$shlibpath_var"; then
26381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
26391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo "export $shlibpath_var"
26401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
26411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $ECHO "$cmd$args"
26421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit $EXIT_SUCCESS
26431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
26441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
26451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26461176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "$opt_mode" = execute && func_mode_execute ${1+"$@"}
26471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_finish arg...
26501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_finish ()
26511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
26521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
26531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libs=
26541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libdirs=
26551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    admincmds=
26561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for opt in "$nonopt" ${1+"$@"}
26581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
26591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -d "$opt"; then
26601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append libdirs " $opt"
26611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      elif test -f "$opt"; then
26631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if func_lalib_unsafe_p "$opt"; then
26641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append libs " $opt"
26651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
26661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "\`$opt' is not a valid libtool archive"
26671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
26681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
26701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_fatal_error "invalid argument \`$opt'"
26711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
26721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
26731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$libs"; then
26751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$lt_sysroot"; then
26761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"`
26771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;"
26781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
26791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        sysroot_cmd=
26801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
26811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Remove sysroot references
26831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if $opt_dry_run; then
26841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        for lib in $libs; do
26851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          echo "removing references to $lt_sysroot and \`=' prefixes from $lib"
26861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        done
26871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
26881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        tmpdir=`func_mktempdir`
26891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        for lib in $libs; do
26901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \
26911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    > $tmpdir/tmp-la
26921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  mv -f $tmpdir/tmp-la $lib
26931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
26941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ${RM}r "$tmpdir"
26951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
26961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
26971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
26981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
26991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for libdir in $libdirs; do
27001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$finish_cmds"; then
27011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Do each command in the finish commands.
27021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
27031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck'"$cmd"'"'
27041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
27051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$finish_eval"; then
27061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Do the single finish_eval.
27071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval cmds=\"$finish_eval\"
27081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || eval "$cmds" || func_append admincmds "
27091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       $cmds"
27101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
27111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
27121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
27131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Exit here if they wanted silent mode.
27151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_silent && exit $EXIT_SUCCESS
27161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
27181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "----------------------------------------------------------------------"
27191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "Libraries have been installed in:"
27201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for libdir in $libdirs; do
27211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "   $libdir"
27221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
27231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo
27241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "If you ever happen to want to link against installed libraries"
27251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "in a given directory, LIBDIR, you must either use libtool, and"
27261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "specify the full pathname of the library, or use the \`-LLIBDIR'"
27271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "flag during linking and do at least one of the following:"
27281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$shlibpath_var"; then
27291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo "   - add LIBDIR to the \`$shlibpath_var' environment variable"
27301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo "     during execution"
27311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
27321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$runpath_var"; then
27331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo "   - add LIBDIR to the \`$runpath_var' environment variable"
27341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo "     during linking"
27351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
27361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$hardcode_libdir_flag_spec"; then
27371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libdir=LIBDIR
27381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval flag=\"$hardcode_libdir_flag_spec\"
27391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "   - use the \`$flag' linker flag"
27411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
27421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$admincmds"; then
27431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "   - have your system administrator run these commands:$admincmds"
27441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
27451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -f /etc/ld.so.conf; then
27461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	echo "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
27471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
27481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo
27491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "See any operating system documentation about shared libraries for"
27511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
27521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	solaris2.[6789]|solaris2.1[0-9])
27531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo "more information, such as the ld(1), crle(1) and ld.so(8) manual"
27541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo "pages."
27551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
27561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
27571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo "more information, such as the ld(1) and ld.so(8) manual pages."
27581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
27591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
27601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      echo "----------------------------------------------------------------------"
27611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
27621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $EXIT_SUCCESS
27631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
27641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27651176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "$opt_mode" = finish && func_mode_finish ${1+"$@"}
27661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_install arg...
27691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_install ()
27701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
27711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
27721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # There may be an optional sh(1) argument at the beginning of
27731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # install_prog (especially on Windows NT).
27741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
27751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       # Allow the use of GNU shtool's install command.
27761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       case $nonopt in *shtool*) :;; *) false;; esac; then
27771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Aesthetically quote it.
27781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_quote_for_eval "$nonopt"
27791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      install_prog="$func_quote_for_eval_result "
27801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      arg=$1
27811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      shift
27821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
27831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      install_prog=
27841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      arg=$nonopt
27851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
27861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # The real first argument should be the name of the installation program.
27881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Aesthetically quote it.
27891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_quote_for_eval "$arg"
27901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_append install_prog "$func_quote_for_eval_result"
27911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    install_shared_prog=$install_prog
27921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case " $install_prog " in
27931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *[\\\ /]cp\ *) install_cp=: ;;
27941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *) install_cp=false ;;
27951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
27961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
27971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # We need to accept at least all the BSD install flags.
27981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dest=
27991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    files=
28001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    opts=
28011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    prev=
28021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    install_type=
28031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    isdir=no
28041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    stripme=
28051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    no_mode=:
28061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for arg
28071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
28081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      arg2=
28091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$dest"; then
28101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append files " $dest"
28111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dest=$arg
28121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
28131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
28141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $arg in
28161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -d) isdir=yes ;;
28171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -f)
28181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if $install_cp; then :; else
28191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=$arg
28201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
28211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
28221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -g | -m | -o)
28231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=$arg
28241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
28251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -s)
28261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	stripme=" -s"
28271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
28281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
28291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -*)
28301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
28311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
28321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If the previous option needed an argument, then skip it.
28331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$prev"; then
28341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "x$prev" = x-m && test -n "$install_override_mode"; then
28351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    arg2=$install_override_mode
28361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    no_mode=false
28371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
28381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
28391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
28401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dest=$arg
28411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
28421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
28431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
28441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
28451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Aesthetically quote the argument.
28471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_quote_for_eval "$arg"
28481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append install_prog " $func_quote_for_eval_result"
28491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$arg2"; then
28501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_quote_for_eval "$arg2"
28511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
28521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append install_shared_prog " $func_quote_for_eval_result"
28531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
28541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -z "$install_prog" && \
28561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "you must specify an install program"
28571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -n "$prev" && \
28591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "the \`$prev' option requires an argument"
28601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$install_override_mode" && $no_mode; then
28621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if $install_cp; then :; else
28631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_quote_for_eval "$install_override_mode"
28641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append install_shared_prog " -m $func_quote_for_eval_result"
28651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
28661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
28671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -z "$files"; then
28691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -z "$dest"; then
28701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_fatal_help "no file or destination specified"
28711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
28721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_fatal_help "you must specify a destination"
28731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
28741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
28751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Strip any trailing slash from the destination.
28771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_stripname '' '/' "$dest"
28781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dest=$func_stripname_result
28791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Check to see that the destination is a directory.
28811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -d "$dest" && isdir=yes
28821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$isdir" = yes; then
28831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      destdir="$dest"
28841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      destname=
28851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
28861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_dirname_and_basename "$dest" "" "."
28871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      destdir="$func_dirname_result"
28881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      destname="$func_basename_result"
28891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
28901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Not a directory, so check to see that there is only one file specified.
28911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      set dummy $files; shift
28921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$#" -gt 1 && \
28931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_fatal_help "\`$dest' is not a directory"
28941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
28951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $destdir in
28961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    [\\/]* | [A-Za-z]:[\\/]*) ;;
28971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
28981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for file in $files; do
28991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $file in
29001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.lo) ;;
29011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
29021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_help "\`$destdir' must be an absolute directory name"
29031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
29041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
29051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
29061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
29071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
29081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # This variable tells wrapper scripts just to set variables rather
29101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # than running their programs.
29111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libtool_install_magic="$magic"
29121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    staticlibs=
29141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    future_libdirs=
29151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    current_libdirs=
29161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for file in $files; do
29171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Do each installation.
29191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $file in
29201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.$libext)
29211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Do the static libraries later.
29221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append staticlibs " $file"
29231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
29241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.la)
29261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_resolve_sysroot "$file"
29271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	file=$func_resolve_sysroot_result
29281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Check to see that this really is a libtool archive.
29301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_lalib_unsafe_p "$file" \
29311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  || func_fatal_help "\`$file' is not a valid libtool archive"
29321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	library_names=
29341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	old_library=
29351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	relink_command=
29361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_source "$file"
29371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Add the libdir to current_libdirs if it is the destination.
29391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "X$destdir" = "X$libdir"; then
29401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$current_libdirs " in
29411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $libdir "*) ;;
29421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append current_libdirs " $libdir" ;;
29431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
29441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
29451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Note the libdir as a future libdir.
29461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$future_libdirs " in
29471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $libdir "*) ;;
29481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append future_libdirs " $libdir" ;;
29491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
29501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
29511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_dirname "$file" "/" ""
29531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dir="$func_dirname_result"
29541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append dir "$objdir"
29551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$relink_command"; then
29571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Determine the prefix the user has applied to our future dir.
29581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"`
29591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Don't allow the user to place us outside of our expected
29611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # location b/c this prevents finding dependent libraries that
29621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # are installed to the same prefix.
29631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # At present, this check doesn't affect windows .dll's that
29641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # are installed into $libdir/../bin (currently, that works fine)
29651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # but it's something to keep an eye on.
29661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test "$inst_prefix_dir" = "$destdir" && \
29671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
29681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$inst_prefix_dir"; then
29701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Stick the inst_prefix_dir data into the link command.
29711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
29721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
29731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
29741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
29751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "relinking \`$file'"
29771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval "$relink_command" \
29781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
29791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
29801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# See the names of the shared library.
29821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	set dummy $library_names; shift
29831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$1"; then
29841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  realname="$1"
29851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  shift
29861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  srcname="$realname"
29881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$relink_command" && srcname="$realname"T
29891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
29901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Install the shared library and build the symlinks.
29911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \
29921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      'exit $?'
29931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tstripme="$stripme"
29941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host_os in
29951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  cygwin* | mingw* | pw32* | cegcc*)
29961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $realname in
29971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *.dll.a)
29981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      tstripme=""
29991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
30001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
30011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
30021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
30031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$tstripme" && test -n "$striplib"; then
30041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
30051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
30061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$#" -gt 0; then
30081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Delete the old symlinks, and create new ones.
30091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Try `ln -sf' first, because the `ln' binary might depend on
30101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
30111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # so we also need to try rm && ln -s.
30121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for linkname
30131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    do
30141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test "$linkname" != "$realname" \
30151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
30161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
30171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
30181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Do each command in the postinstall commands.
30201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lib="$destdir/$realname"
30211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_execute_cmds "$postinstall_cmds" 'exit $?'
30221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
30231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Install the pseudo-library for information purposes.
30251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_basename "$file"
30261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	name="$func_basename_result"
30271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	instname="$dir/$name"i
30281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
30291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Maybe install the static library, too.
30311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$old_library" && func_append staticlibs " $dir/$old_library"
30321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
30331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.lo)
30351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Install (i.e. copy) a libtool object.
30361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Figure out destination file name, if it wasn't already specified.
30381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$destname"; then
30391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile="$destdir/$destname"
30401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
30411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_basename "$file"
30421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile="$func_basename_result"
30431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile="$destdir/$destfile"
30441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
30451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Deduce the name of the destination old-style object file.
30471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $destfile in
30481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.lo)
30491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_lo2o "$destfile"
30501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  staticdest=$func_lo2o_result
30511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
30521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.$objext)
30531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  staticdest="$destfile"
30541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile=
30551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
30561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
30571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
30581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
30591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
30601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Install the libtool object if requested.
30621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$destfile" && \
30631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval "$install_prog $file $destfile" 'exit $?'
30641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Install the old object if enabled.
30661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$build_old_libs" = yes; then
30671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Deduce the name of the old-style object file.
30681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_lo2o "$file"
30691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  staticobj=$func_lo2o_result
30701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
30711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
30721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_SUCCESS
30731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
30741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
30761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Figure out destination file name, if it wasn't already specified.
30771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$destname"; then
30781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile="$destdir/$destname"
30791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
30801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_basename "$file"
30811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile="$func_basename_result"
30821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  destfile="$destdir/$destfile"
30831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
30841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If the file is missing, and there is a .exe on the end, strip it
30861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# because it is most likely a libtool script we actually want to
30871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# install
30881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	stripped_ext=""
30891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $file in
30901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.exe)
30911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test ! -f "$file"; then
30921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_stripname '' '.exe' "$file"
30931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      file=$func_stripname_result
30941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      stripped_ext=".exe"
30951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
30961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
30971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
30981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
30991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Do a test to see if this is really a libtool program.
31001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
31011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*cygwin* | *mingw*)
31021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if func_ltwrapper_executable_p "$file"; then
31031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_ltwrapper_scriptname "$file"
31041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      wrapper=$func_ltwrapper_scriptname_result
31051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
31061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_stripname '' '.exe' "$file"
31071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      wrapper=$func_stripname_result
31081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
31091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
31101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
31111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    wrapper=$file
31121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
31131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
31141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if func_ltwrapper_script_p "$wrapper"; then
31151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  notinst_deplibs=
31161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  relink_command=
31171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source "$wrapper"
31191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Check the variables that should have been set.
31211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -z "$generated_by_libtool_version" && \
31221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
31231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  finalize=yes
31251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for lib in $notinst_deplibs; do
31261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Check to see that each library is installed.
31271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    libdir=
31281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -f "$lib"; then
31291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_source "$lib"
31301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
31311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test
31321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$libdir" && test ! -f "$libfile"; then
31331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_warning "\`$lib' has not been installed in \`$libdir'"
31341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      finalize=no
31351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
31361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
31371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  relink_command=
31391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source "$wrapper"
31401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  outputname=
31421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$fast_install" = no && test -n "$relink_command"; then
31431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
31441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$finalize" = yes; then
31451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        tmpdir=`func_mktempdir`
31461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_basename "$file$stripped_ext"
31471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		file="$func_basename_result"
31481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        outputname="$tmpdir/$file"
31491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        # Replace the output file specification.
31501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'`
31511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        $opt_silent || {
31531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          func_quote_for_expand "$relink_command"
31541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  eval "func_echo $func_quote_for_expand_result"
31551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        }
31561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        if eval "$relink_command"; then :
31571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          else
31581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_error "error: relink \`$file' with the above command before installing it"
31591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $opt_dry_run || ${RM}r "$tmpdir"
31601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  continue
31611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        fi
31621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        file="$outputname"
31631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
31641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_warning "cannot relink \`$file'"
31651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
31661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
31671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
31681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Install the binary that we compiled earlier.
31691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"`
31701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
31711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
31721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# remove .exe since cygwin /usr/bin/install will append another
31741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# one anyway
31751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $install_prog,$host in
31761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*/usr/bin/install*,*cygwin*)
31771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $file:$destfile in
31781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.exe:*.exe)
31791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # this is ok
31801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
31811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.exe:*)
31821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    destfile=$destfile.exe
31831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
31841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *:*.exe)
31851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '' '.exe' "$destfile"
31861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    destfile=$func_stripname_result
31871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
31881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
31891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
31901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
31911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
31921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || if test -n "$outputname"; then
31931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ${RM}r "$tmpdir"
31941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
31951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
31961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
31971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
31981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
31991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for file in $staticlibs; do
32001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_basename "$file"
32011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      name="$func_basename_result"
32021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Set up the ranlib parameters.
32041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      oldlib="$destdir/$name"
32051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
32061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      tool_oldlib=$func_to_tool_file_result
32071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
32091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$stripme" && test -n "$old_striplib"; then
32111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "$old_striplib $tool_oldlib" 'exit $?'
32121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
32131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Do each command in the postinstall commands.
32151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
32161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
32171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -n "$future_libdirs" && \
32191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_warning "remember to run \`$progname --finish$future_libdirs'"
32201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$current_libdirs"; then
32221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Maybe just do a dry run.
32231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $opt_dry_run && current_libdirs=" -n$current_libdirs"
32241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
32251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
32261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit $EXIT_SUCCESS
32271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
32281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
32291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32301176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest "$opt_mode" = install && func_mode_install ${1+"$@"}
32311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_generate_dlsyms outputname originator pic_p
32341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Extract symbols from dlprefiles and create ${outputname}S.o with
32351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# a dlpreopen symbol table.
32361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_generate_dlsyms ()
32371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
32381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
32391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_outputname="$1"
32401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_originator="$2"
32411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_pic_p="${3-no}"
32421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
32431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_dlsyms=
32441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
32461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$NM" && test -n "$global_symbol_pipe"; then
32471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	my_dlsyms="${my_outputname}S.c"
32481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
32491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_error "not configured to extract global symbols from dlpreopened files"
32501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
32511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
32521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$my_dlsyms"; then
32541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $my_dlsyms in
32551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      "") ;;
32561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.c)
32571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Discover the nlist of each of the dlfiles.
32581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	nlist="$output_objdir/${my_outputname}.nm"
32591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
32611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Parse the name list into a source file.
32631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_verbose "creating $output_objdir/$my_dlsyms"
32641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
32661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
32671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
32681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef __cplusplus
32701176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextern \"C\" {
32711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
32721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4))
32741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#pragma GCC diagnostic ignored \"-Wstrict-prototypes\"
32751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
32761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests.  */
32781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE)
32791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* DATA imports from DLLs on WIN32 con't be const, because runtime
32801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   relocations are performed -- see ld's documentation on pseudo-relocs.  */
32811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_DLSYM_CONST
32821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__osf__)
32831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* This system does not cope well with relocations in const data.  */
32841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_DLSYM_CONST
32851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else
32861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_DLSYM_CONST const
32871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
32881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* External symbol declarations for the compiler. */\
32901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
32911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$dlself" = yes; then
32931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_verbose "generating symbol list for \`$output'"
32941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
32961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
32971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add our own program objects to the symbol list.
32981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP`
32991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for progfile in $progfiles; do
33001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_to_tool_file "$progfile" func_convert_file_msys_to_w32
33011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_verbose "extracting global C symbols from \`$func_to_tool_file_result'"
33021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'"
33031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
33041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
33051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$exclude_expsyms"; then
33061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
33071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
33081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval '$MV "$nlist"T "$nlist"'
33091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
33101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
33111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
33121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$export_symbols_regex"; then
33131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
33141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
33151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval '$MV "$nlist"T "$nlist"'
33161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
33171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
33181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
33191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Prepare the list of exported symbols
33201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$export_symbols"; then
33211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    export_symbols="$output_objdir/$outputname.exp"
33221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
33231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $RM $export_symbols
33241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
33251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $host in
33261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *cygwin* | *mingw* | *cegcc* )
33271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
33281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
33291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        ;;
33301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
33311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
33321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
33331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
33341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
33351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
33361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval '$MV "$nlist"T "$nlist"'
33371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $host in
33381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        *cygwin* | *mingw* | *cegcc* )
33391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
33401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
33411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          ;;
33421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
33431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
33441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
33451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
33461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
33471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for dlprefile in $dlprefiles; do
33481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_verbose "extracting global C symbols from \`$dlprefile'"
33491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_basename "$dlprefile"
33501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  name="$func_basename_result"
33511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          case $host in
33521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *cygwin* | *mingw* | *cegcc* )
33531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # if an import library, we need to obtain dlname
33541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if func_win32_import_lib_p "$dlprefile"; then
33551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_tr_sh "$dlprefile"
33561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        eval "curr_lafile=\$libfile_$func_tr_sh_result"
33571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        dlprefile_dlbasename=""
33581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then
33591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          # Use subshell, to avoid clobbering current variable values
33601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"`
33611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          if test -n "$dlprefile_dlname" ; then
33621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            func_basename "$dlprefile_dlname"
33631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            dlprefile_dlbasename="$func_basename_result"
33641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          else
33651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            # no lafile. user explicitly requested -dlpreopen <import library>.
33661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            $sharedlib_from_linklib_cmd "$dlprefile"
33671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            dlprefile_dlbasename=$sharedlib_from_linklib_result
33681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          fi
33691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        fi
33701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        $opt_dry_run || {
33711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          if test -n "$dlprefile_dlbasename" ; then
33721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"'
33731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          else
33741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            func_warning "Could not compute DLL name from $name"
33751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            eval '$ECHO ": $name " >> "$nlist"'
33761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          fi
33771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
33781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe |
33791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	            $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'"
33801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        }
33811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else # not an import lib
33821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        $opt_dry_run || {
33831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          eval '$ECHO ": $name " >> "$nlist"'
33841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
33851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
33861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        }
33871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
33881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
33891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
33901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_dry_run || {
33911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        eval '$ECHO ": $name " >> "$nlist"'
33921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32
33931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'"
33941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      }
33951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
33961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          esac
33971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
33981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
33991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || {
34001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Make sure we have at least an empty file.
34011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -f "$nlist" || : > "$nlist"
34021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$exclude_expsyms"; then
34041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
34051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $MV "$nlist"T "$nlist"
34061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
34071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Try sorting and uniquifying the output.
34091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if $GREP -v "^: " < "$nlist" |
34101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if sort -k 3 </dev/null >/dev/null 2>&1; then
34111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		sort -k 3
34121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
34131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		sort +2
34141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi |
34151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      uniq > "$nlist"S; then
34161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    :
34171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
34181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $GREP -v "^: " < "$nlist" > "$nlist"S
34191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
34201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -f "$nlist"S; then
34221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
34231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
34241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo '/* NONE */' >> "$output_objdir/$my_dlsyms"
34251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
34261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo >> "$output_objdir/$my_dlsyms" "\
34281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* The mapping between symbol names and symbols.  */
34301176bdada62cabc6ec4b0308a930e83b679d5d36John Recktypedef struct {
34311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  const char *name;
34321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  void *address;
34331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} lt_dlsymlist;
34341176bdada62cabc6ec4b0308a930e83b679d5d36John Reckextern LT_DLSYM_CONST lt_dlsymlist
34351176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_${my_prefix}_LTX_preloaded_symbols[];
34361176bdada62cabc6ec4b0308a930e83b679d5d36John ReckLT_DLSYM_CONST lt_dlsymlist
34371176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_${my_prefix}_LTX_preloaded_symbols[] =
34381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{\
34391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  { \"$my_originator\", (void *) 0 },"
34401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $need_lib_prefix in
34421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  no)
34431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
34441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
34451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
34461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
34471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
34481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
34491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo >> "$output_objdir/$my_dlsyms" "\
34501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  {0, (void *) 0}
34511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck};
34521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* This works around a problem in FreeBSD linker */
34541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef FREEBSD_WORKAROUND
34551176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const void *lt_preloaded_setup() {
34561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return lt_${my_prefix}_LTX_preloaded_symbols;
34571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
34581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
34591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef __cplusplus
34611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
34621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif\
34631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
34641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	} # !$opt_dry_run
34651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	pic_flag_for_symtable=
34671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case "$compile_command " in
34681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" -static "*) ;;
34691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
34701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host in
34711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # compiling the symbol table file with pic_flag works around
34721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # a FreeBSD bug that causes programs to crash when -lm is
34731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # linked before any other PIC object.  But we must not use
34741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # pic_flag when linking with -static.  The problem exists in
34751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
34761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
34771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
34781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-hpux*)
34791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    pic_flag_for_symtable=" $pic_flag"  ;;
34801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
34811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "X$my_pic_p" != Xno; then
34821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      pic_flag_for_symtable=" $pic_flag"
34831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
34841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
34851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
34861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
34871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
34881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	symtab_cflags=
34891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for arg in $LTCFLAGS; do
34901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $arg in
34911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  -pie | -fpie | -fPIE) ;;
34921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append symtab_cflags " $arg" ;;
34931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
34941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
34951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Now compile the dynamic symbol file.
34971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
34981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
34991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Clean up the generated files.
35001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
35011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
35021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Transform the symbol file into the correct name.
35031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	symfileobj="$output_objdir/${my_outputname}S.$objext"
35041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
35051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*cygwin* | *mingw* | *cegcc* )
35061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -f "$output_objdir/$my_outputname.def"; then
35071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
35081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
35091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
35101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
35131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
35141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
35151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"`
35171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
35181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
35191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
35201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
35211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_fatal_error "unknown suffix for \`$my_dlsyms'"
35221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
35231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
35241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
35251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # We keep going just in case the user didn't refer to
35261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
35271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # really was required.
35281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
35291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Nullify the symbol file.
35301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"`
35311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"`
35321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
35331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
35341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
35351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_win32_libid arg
35361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# return the library type of file 'arg'
35371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
35381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Need a lot of goo to handle *both* DLLs and import libs
35391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Has to be a shell function in order to 'eat' the argument
35401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# that is supplied when $file_magic_command is called.
35411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Despite the name, also deal with 64 bit binaries.
35421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_win32_libid ()
35431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
35441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
35451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  win32_libid_type="unknown"
35461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  win32_fileres=`file -L $1 2>/dev/null`
35471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $win32_fileres in
35481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *ar\ archive\ import\ library*) # definitely import
35491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    win32_libid_type="x86 archive import"
35501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
35511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *ar\ archive*) # could be an import, or static
35521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD.
35531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
35541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then
35551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_to_tool_file "$1" func_convert_file_msys_to_w32
35561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" |
35571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$SED -n -e '
35581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    1,100{
35591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		/ I /{
35601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    s,.*,import,
35611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    p
35621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    q
35631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		}
35641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }'`
35651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $win32_nmres in
35661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      import*)  win32_libid_type="x86 archive import";;
35671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)        win32_libid_type="x86 archive static";;
35681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
35691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
35701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
35711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *DLL*)
35721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    win32_libid_type="x86 DLL"
35731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
35741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *executable*) # but shell scripts are "executable" too...
35751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $win32_fileres in
35761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *MS\ Windows\ PE\ Intel*)
35771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      win32_libid_type="x86 DLL"
35781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
35791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
35801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
35811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
35821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $ECHO "$win32_libid_type"
35831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
35841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
35851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_dll_for_implib ARG
35861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
35871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Platform-specific function to extract the
35881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# name of the DLL associated with the specified
35891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# import library ARG.
35901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Invoked by eval'ing the libtool variable
35911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#    $sharedlib_from_linklib_cmd
35921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in the variable
35931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#    $sharedlib_from_linklib_result
35941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_dll_for_implib ()
35951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
35961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
35971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"`
35981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
35991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
36001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs
36011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
36021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The is the core of a fallback implementation of a
36031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# platform-specific function to extract the name of the
36041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# DLL associated with the specified import library LIBNAME.
36051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
36061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# SECTION_NAME is either .idata$6 or .idata$7, depending
36071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# on the platform and compiler that created the implib.
36081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
36091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Echos the name of the DLL associated with the
36101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# specified import library.
36111176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_dll_for_implib_fallback_core ()
36121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
36131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
36141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"`
36151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $OBJDUMP -s --section "$1" "$2" 2>/dev/null |
36161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED '/^Contents of section '"$match_literal"':/{
36171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Place marker at beginning of archive member dllname section
36181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      s/.*/====MARK====/
36191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      p
36201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      d
36211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
36221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # These lines can sometimes be longer than 43 characters, but
36231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # are always uninteresting
36241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    /:[	 ]*file format pe[i]\{,1\}-/d
36251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    /^In archive [^:]*:/d
36261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Ensure marker is printed
36271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    /^====MARK====/p
36281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Remove all lines with less than 43 characters
36291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    /^.\{43\}/!d
36301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # From remaining lines, remove first 43 characters
36311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    s/^.\{43\}//' |
36321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED -n '
36331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Join marker and all lines until next marker into a single line
36341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /^====MARK====/ b para
36351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      H
36361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $ b para
36371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      b
36381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      :para
36391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      x
36401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      s/\n//g
36411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Remove the marker
36421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      s/^====MARK====//
36431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Remove trailing dots and whitespace
36441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      s/[\. \t]*$//
36451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Print
36461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /./p' |
36471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # we now have a list, one entry per line, of the stringified
36481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # contents of the appropriate section of all members of the
36491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # archive which possess that section. Heuristic: eliminate
36501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # all those which have a first or second character that is
36511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # a '.' (that is, objdump's representation of an unprintable
36521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # character.) This should work for all archives with less than
36531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # 0x302f exports -- but will fail for DLLs whose name actually
36541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # begins with a literal '.' or a single character followed by
36551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # a '.'.
36561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    #
36571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Of those that remain, print the first one.
36581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $SED -e '/^\./d;/^.\./d;q'
36591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
36601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
36611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_gnu_implib_p ARG
36621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This predicate returns with zero status (TRUE) if
36631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is a GNU/binutils-style import library. Returns
36641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# with nonzero status (FALSE) otherwise.
36651176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_gnu_implib_p ()
36661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
36671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
36681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_tool_file "$1" func_convert_file_msys_to_w32
36691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  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)$'`
36701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  test -n "$func_cygming_gnu_implib_tmp"
36711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
36721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
36731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_ms_implib_p ARG
36741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This predicate returns with zero status (TRUE) if
36751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is an MS-style import library. Returns
36761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# with nonzero status (FALSE) otherwise.
36771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_ms_implib_p ()
36781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
36791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
36801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_to_tool_file "$1" func_convert_file_msys_to_w32
36811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'`
36821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  test -n "$func_cygming_ms_implib_tmp"
36831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
36841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
36851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_cygming_dll_for_implib_fallback ARG
36861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Platform-specific function to extract the
36871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# name of the DLL associated with the specified
36881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# import library ARG.
36891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
36901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This fallback implementation is for use when $DLLTOOL
36911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# does not support the --identify-strict option.
36921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Invoked by eval'ing the libtool variable
36931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#    $sharedlib_from_linklib_cmd
36941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Result is available in the variable
36951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#    $sharedlib_from_linklib_result
36961176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_cygming_dll_for_implib_fallback ()
36971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
36981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $opt_debug
36991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if func_cygming_gnu_implib_p "$1" ; then
37001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # binutils import library
37011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"`
37021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  elif func_cygming_ms_implib_p "$1" ; then
37031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # ms-generated import library
37041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"`
37051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
37061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # unknown
37071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    sharedlib_from_linklib_result=""
37081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
37091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
37101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_extract_an_archive dir oldlib
37131176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_extract_an_archive ()
37141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
37151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
37161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    f_ex_an_ar_dir="$1"; shift
37171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    f_ex_an_ar_oldlib="$1"
37181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$lock_old_archive_extraction" = yes; then
37191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lockfile=$f_ex_an_ar_oldlib.lock
37201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
37211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_echo "Waiting for $lockfile to be removed"
37221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	sleep 2
37231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
37241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
37251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \
37261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   'stat=$?; rm -f "$lockfile"; exit $stat'
37271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$lock_old_archive_extraction" = yes; then
37281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $opt_dry_run || rm -f "$lockfile"
37291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
37301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
37311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     :
37321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
37331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
37341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
37351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
37361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_extract_archives gentop oldlib ...
37391176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_extract_archives ()
37401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
37411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
37421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_gentop="$1"; shift
37431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_oldlibs=${1+"$@"}
37441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_oldobjs=""
37451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_xlib=""
37461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_xabs=""
37471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    my_xdir=""
37481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for my_xlib in $my_oldlibs; do
37501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Extract the objects.
37511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $my_xlib in
37521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
37531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) my_xabs=`pwd`"/$my_xlib" ;;
37541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
37551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_basename "$my_xlib"
37561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_xlib="$func_basename_result"
37571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_xlib_u=$my_xlib
37581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      while :; do
37591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        case " $extracted_archives " in
37601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" $my_xlib_u "*)
37611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_arith $extracted_serial + 1
37621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  extracted_serial=$func_arith_result
37631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
37641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) break ;;
37651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
37661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
37671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      extracted_archives="$extracted_archives $my_xlib_u"
37681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_xdir="$my_gentop/$my_xlib_u"
37691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_mkdir_p "$my_xdir"
37711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
37721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
37731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *-darwin*)
37741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_verbose "Extracting $my_xabs"
37751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Do not bother doing anything if just a dry run
37761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || {
37771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin_orig_dir=`pwd`
37781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  cd $my_xdir || exit $?
37791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin_archive=$my_xabs
37801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin_curdir=`pwd`
37811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin_base_archive=`basename "$darwin_archive"`
37821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
37831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$darwin_arches"; then
37841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
37851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    darwin_arch=
37861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
37871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for darwin_arch in  $darwin_arches ; do
37881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
37891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
37901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
37911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
37921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cd "$darwin_curdir"
37931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
37941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done # $darwin_arches
37951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
37961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
37971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    darwin_file=
37981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    darwin_files=
37991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for darwin_file in $darwin_filelist; do
38001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP`
38011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $LIPO -create -output "$darwin_file" $darwin_files
38021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done # $darwin_filelist
38031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $RM -rf unfat-$$
38041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cd "$darwin_orig_dir"
38051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
38061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cd $darwin_orig_dir
38071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_extract_an_archive "$my_xdir" "$my_xabs"
38081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi # $darwin_arches
38091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	} # !$opt_dry_run
38101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
38111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
38121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_extract_an_archive "$my_xdir" "$my_xabs"
38131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
38141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
38151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP`
38161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
38171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_extract_archives_result="$my_oldobjs"
38191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
38201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_emit_wrapper [arg=no]
38231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
38241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Emit a libtool wrapper script on stdout.
38251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Don't directly open a file because we may want to
38261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# incorporate the script contents within a cygwin/mingw
38271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# wrapper executable.  Must ONLY be called from within
38281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_link because it depends on a number of variables
38291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# set therein.
38301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
38311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
38321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# variable will take.  If 'yes', then the emitted script
38331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# will assume that the directory in which it is stored is
38341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the $objdir directory.  This is a cygwin/mingw-specific
38351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# behavior.
38361176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_emit_wrapper ()
38371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
38381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_emit_wrapper_arg1=${1-no}
38391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "\
38411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#! $SHELL
38421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $output - temporary wrapper script for $objdir/$outputname
38441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
38451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
38461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The $output program cannot be directly executed until all the libtool
38471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# libraries that it depends on are installed.
38481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
38491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This wrapper script should never be moved out of the build directory.
38501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If it is, it will not operate correctly.
38511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Sed substitution that helps us do robust quoting.  It backslashifies
38531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# metacharacters that are still active within double-quoted strings.
38541176bdada62cabc6ec4b0308a930e83b679d5d36John Recksed_quote_subst='$sed_quote_subst'
38551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Be Bourne compatible
38571176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
38581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  emulate sh
38591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  NULLCMD=:
38601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
38611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # is contrary to our usage.  Disable this feature.
38621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  alias -g '\${1+\"\$@\"}'='\"\$@\"'
38631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  setopt NO_GLOB_SUBST
38641176bdada62cabc6ec4b0308a930e83b679d5d36John Reckelse
38651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
38661176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi
38671176bdada62cabc6ec4b0308a930e83b679d5d36John ReckBIN_SH=xpg4; export BIN_SH # for Tru64
38681176bdada62cabc6ec4b0308a930e83b679d5d36John ReckDUALCASE=1; export DUALCASE # for MKS sh
38691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The HP-UX ksh and POSIX shell print the target directory to stdout
38711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# if CDPATH is set.
38721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
38731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38741176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrelink_command=\"$relink_command\"
38751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# This environment variable determines our operation mode.
38771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test \"\$libtool_install_magic\" = \"$magic\"; then
38781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # install mode needs the following variables:
38791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  generated_by_libtool_version='$macro_version'
38801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  notinst_deplibs='$notinst_deplibs'
38811176bdada62cabc6ec4b0308a930e83b679d5d36John Reckelse
38821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # When we are sourced in execute mode, \$file and \$ECHO are already set.
38831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test \"\$libtool_execute_magic\" != \"$magic\"; then
38841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    file=\"\$0\""
38851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"`
38871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "\
38881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# A function that is used when there is no print builtin or printf.
38901176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_fallback_echo ()
38911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
38921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  eval 'cat <<_LTECHO_EOF
38931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck\$1
38941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck_LTECHO_EOF'
38951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
38961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ECHO=\"$qECHO\"
38971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
38981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
38991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Very basic option parsing. These options are (a) specific to
39001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the libtool wrapper, (b) are identical between the wrapper
39011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# /script/ and the wrapper /executable/ which is used only on
39021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# windows platforms, and (c) all begin with the string "--lt-"
39031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (application programs are unlikely to have options which match
39041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# this pattern).
39051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
39061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# There are only two supported options: --lt-debug and
39071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# --lt-dump-script. There is, deliberately, no --lt-help.
39081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
39091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The first argument to this parsing function should be the
39101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# script's $0 value, followed by "$@".
39111176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_option_debug=
39121176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_parse_lt_options ()
39131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
39141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_script_arg0=\$0
39151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  shift
39161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for lt_opt
39171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  do
39181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case \"\$lt_opt\" in
39191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    --lt-debug) lt_option_debug=1 ;;
39201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    --lt-dump-script)
39211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\`
39221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=.
39231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\`
39241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        cat \"\$lt_dump_D/\$lt_dump_F\"
39251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        exit 0
39261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
39271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    --lt-*)
39281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2
39291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        exit 1
39301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
39311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
39321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  done
39331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
39341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Print the debug banner immediately:
39351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -n \"\$lt_option_debug\"; then
39361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2
39371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
39381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
39391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
39401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Used when --lt-debug. Prints its arguments to stdout
39411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# (redirection is the responsibility of the caller)
39421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_lt_dump_args ()
39431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
39441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_dump_args_N=1;
39451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for lt_arg
39461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  do
39471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\"
39481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lt_dump_args_N=\`expr \$lt_dump_args_N + 1\`
39491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  done
39501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
39511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
39521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Core function for launching the target application
39531176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_exec_program_core ()
39541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
39551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
39561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case $host in
39571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Backslashes separate directories on plain windows
39581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *-*-mingw | *-*-os2* | *-cegcc*)
39591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "\
39601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n \"\$lt_option_debug\"; then
39611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2
39621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_lt_dump_args \${1+\"\$@\"} 1>&2
39631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
39641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
39651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
39661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
39671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
39681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *)
39691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $ECHO "\
39701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n \"\$lt_option_debug\"; then
39711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2
39721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_lt_dump_args \${1+\"\$@\"} 1>&2
39731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
39741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exec \"\$progdir/\$program\" \${1+\"\$@\"}
39751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
39761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;;
39771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
39781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  $ECHO "\
39791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
39801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit 1
39811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
39821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
39831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# A function to encapsulate launching the target application
39841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Strips options in the --lt-* namespace from \$@ and
39851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# launches target application with the remaining arguments.
39861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_exec_program ()
39871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
39881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  case \" \$* \" in
39891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  *\\ --lt-*)
39901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for lt_wr_arg
39911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
39921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case \$lt_wr_arg in
39931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      --lt-*) ;;
39941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *) set x \"\$@\" \"\$lt_wr_arg\"; shift;;
39951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
39961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      shift
39971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done ;;
39981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  esac
39991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_exec_program_core \${1+\"\$@\"}
40001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
40011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Parse options
40031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_parse_lt_options \"\$0\" \${1+\"\$@\"}
40041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Find the directory that this script lives in.
40061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\`
40071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
40081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Follow symbolic links until we get to the real thisdir.
40101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\`
40111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  while test -n \"\$file\"; do
40121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\`
40131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # If there was a directory component, then change thisdir.
40151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test \"x\$destdir\" != \"x\$file\"; then
40161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case \"\$destdir\" in
40171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
40181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *) thisdir=\"\$thisdir/\$destdir\" ;;
40191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
40201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
40211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\`
40231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\`
40241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  done
40251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Usually 'no', except on cygwin/mingw when embedded into
40271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # the cwrapper.
40281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1
40291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
40301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # special case for '.'
40311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test \"\$thisdir\" = \".\"; then
40321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      thisdir=\`pwd\`
40331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
40341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # remove .libs from thisdir
40351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case \"\$thisdir\" in
40361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;;
40371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $objdir )   thisdir=. ;;
40381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
40391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
40401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  # Try to get the absolute directory name.
40421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  absdir=\`cd \"\$thisdir\" && pwd\`
40431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  test -n \"\$absdir\" && thisdir=\"\$absdir\"
40441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
40451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$fast_install" = yes; then
40471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "\
40481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  program=lt-'$outputname'$exeext
40491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  progdir=\"\$thisdir/$objdir\"
40501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test ! -f \"\$progdir/\$program\" ||
40521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
40531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
40541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    file=\"\$\$-\$program\"
40561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test ! -d \"\$progdir\"; then
40581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $MKDIR \"\$progdir\"
40591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
40601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $RM \"\$progdir/\$file\"
40611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi"
40621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "\
40641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # relink executable if necessary
40661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n \"\$relink_command\"; then
40671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
40681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
40691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO \"\$relink_command_output\" >&2
40701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$RM \"\$progdir/\$file\"
40711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit 1
40721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
40731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
40741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
40761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    { $RM \"\$progdir/\$program\";
40771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
40781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $RM \"\$progdir/\$file\"
40791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi"
40801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
40811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "\
40821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  program='$outputname'
40831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  progdir=\"\$thisdir/$objdir\"
40841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
40851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
40861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "\
40881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if test -f \"\$progdir/\$program\"; then"
40901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
40911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# fixup the dll searchpath if we need to.
40921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	#
40931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Fix the DLL searchpath if we need to.  Do this before prepending
40941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# to shlibpath, because on Windows, both are PATH and uninstalled
40951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# libraries must come first.
40961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$dllsearchpath"; then
40971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "\
40981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Add the dll search path components to the executable PATH
40991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    PATH=$dllsearchpath:\$PATH
41001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
41011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
41021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Export our shlibpath_var if we have one.
41041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
41051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "\
41061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Add our own library path to $shlibpath_var
41071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
41081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Some systems cannot cope with colon-terminated $shlibpath_var
41101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # The second colon is a workaround for a bug in BeOS R4 sed
41111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\`
41121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    export $shlibpath_var
41141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
41151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
41161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$ECHO "\
41181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test \"\$libtool_execute_magic\" != \"$magic\"; then
41191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Run the actual program with our arguments.
41201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_exec_program \${1+\"\$@\"}
41211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
41221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
41231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # The program doesn't exist.
41241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
41251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
41261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
41271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit 1
41281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fi
41291176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi\
41301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck"
41311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
41321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_emit_cwrapperexe_src
41351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# emit the source code for a wrapper executable on stdout
41361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Must ONLY be called from within func_mode_link because
41371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# it depends on a number of variable set therein.
41381176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_emit_cwrapperexe_src ()
41391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
41401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	cat <<EOF
41411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
41431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
41441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   The $output program cannot be directly executed until all the libtool
41461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   libraries that it depends on are installed.
41471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   This wrapper executable should never be moved out of the build directory.
41491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   If it is, it will not operate correctly.
41501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*/
41511176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
41521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
41531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef _MSC_VER
41541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define _CRT_SECURE_NO_DEPRECATE 1
41551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
41561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdio.h>
41571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdlib.h>
41581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef _MSC_VER
41591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <direct.h>
41601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <process.h>
41611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <io.h>
41621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else
41631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <unistd.h>
41641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# include <stdint.h>
41651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifdef __CYGWIN__
41661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#  include <io.h>
41671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif
41681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
41691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <malloc.h>
41701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <stdarg.h>
41711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <assert.h>
41721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <string.h>
41731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <ctype.h>
41741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <errno.h>
41751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <fcntl.h>
41761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#include <sys/stat.h>
41771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* declarations of non-ANSI functions */
41791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(__MINGW32__)
41801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifdef __STRICT_ANSI__
41811176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint _putenv (const char *);
41821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif
41831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__CYGWIN__)
41841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifdef __STRICT_ANSI__
41851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *realpath (const char *, char *);
41861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint putenv (char *);
41871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint setenv (const char *, const char *, int);
41881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif
41891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* #elif defined (other platforms) ... */
41901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
41911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
41921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* portability defines, excluding path handling macros */
41931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(_MSC_VER)
41941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define setmode _setmode
41951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define stat    _stat
41961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define chmod   _chmod
41971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define getcwd  _getcwd
41981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define putenv  _putenv
41991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define S_IXUSR _S_IEXEC
42001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifndef _INTPTR_T_DEFINED
42011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#  define _INTPTR_T_DEFINED
42021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#  define intptr_t int
42031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif
42041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__MINGW32__)
42051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define setmode _setmode
42061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define stat    _stat
42071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define chmod   _chmod
42081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define getcwd  _getcwd
42091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define putenv  _putenv
42101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(__CYGWIN__)
42111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define HAVE_SETENV
42121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define FOPEN_WB "wb"
42131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* #elif defined (other platforms) ... */
42141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(PATH_MAX)
42171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_PATHMAX PATH_MAX
42181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#elif defined(MAXPATHLEN)
42191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_PATHMAX MAXPATHLEN
42201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else
42211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define LT_PATHMAX 1024
42221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef S_IXOTH
42251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define S_IXOTH 0
42261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef S_IXGRP
42281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define S_IXGRP 0
42291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* path handling portability macros */
42321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef DIR_SEPARATOR
42331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define DIR_SEPARATOR '/'
42341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define PATH_SEPARATOR ':'
42351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
42381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  defined (__OS2__)
42391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define HAVE_DOS_BASED_FILE_SYSTEM
42401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define FOPEN_WB "wb"
42411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifndef DIR_SEPARATOR_2
42421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#  define DIR_SEPARATOR_2 '\\'
42431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif
42441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ifndef PATH_SEPARATOR_2
42451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#  define PATH_SEPARATOR_2 ';'
42461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# endif
42471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef DIR_SEPARATOR_2
42501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
42511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else /* DIR_SEPARATOR_2 */
42521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_DIR_SEPARATOR(ch) \
42531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
42541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif /* DIR_SEPARATOR_2 */
42551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef PATH_SEPARATOR_2
42571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
42581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else /* PATH_SEPARATOR_2 */
42591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
42601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif /* PATH_SEPARATOR_2 */
42611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef FOPEN_WB
42631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define FOPEN_WB "w"
42641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef _O_BINARY
42661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# define _O_BINARY 0
42671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
42701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define XFREE(stale) do { \
42711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (stale) { free ((void *) stale); stale = 0; } \
42721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck} while (0)
42731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined(LT_DEBUGWRAPPER)
42751176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic int lt_debug = 1;
42761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else
42771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic int lt_debug = 0;
42781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
42791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42801176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */
42811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
42821176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid *xmalloc (size_t num);
42831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *xstrdup (const char *string);
42841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char *base_name (const char *name);
42851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *find_executable (const char *wrapper);
42861176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *chase_symlinks (const char *pathspec);
42871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint make_executable (const char *path);
42881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint check_executable (const char *path);
42891176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *strendzap (char *str, const char *pat);
42901176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_debugprintf (const char *file, int line, const char *fmt, ...);
42911176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_fatal (const char *file, int line, const char *message, ...);
42921176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *nonnull (const char *s);
42931176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *nonempty (const char *s);
42941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_setenv (const char *name, const char *value);
42951176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
42961176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_update_exe_path (const char *name, const char *value);
42971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_update_lib_path (const char *name, const char *value);
42981176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar **prepare_spawn (char **argv);
42991176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_dump_script (FILE *f);
43001176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<EOF
43031176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvolatile const char * MAGIC_EXE = "$magic_exe";
43041176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * LIB_PATH_VARNAME = "$shlibpath_var";
43051176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
43081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck              func_to_host_path "$temp_rpath"
43091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cat <<EOF
43101176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * LIB_PATH_VALUE   = "$func_to_host_path_result";
43111176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
43131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cat <<"EOF"
43141176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * LIB_PATH_VALUE   = "";
43151176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
43171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$dllsearchpath"; then
43191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck              func_to_host_path "$dllsearchpath:"
43201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cat <<EOF
43211176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VARNAME = "PATH";
43221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VALUE   = "$func_to_host_path_result";
43231176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
43251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cat <<"EOF"
43261176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VARNAME = "";
43271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * EXE_PATH_VALUE   = "";
43281176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
43301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$fast_install" = yes; then
43321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cat <<EOF
43331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
43341176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
43361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cat <<EOF
43371176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
43381176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
43401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
43431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#define LTWRAPPER_OPTION_PREFIX         "--lt-"
43451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43461176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
43471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
43481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *debug_opt            = LTWRAPPER_OPTION_PREFIX "debug";
43491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint
43511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmain (int argc, char *argv[])
43521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
43531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char **newargz;
43541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  int  newargc;
43551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *tmp_pathspec;
43561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *actual_cwrapper_path;
43571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *actual_cwrapper_name;
43581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *target_name;
43591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *lt_argv_zero;
43601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  intptr_t rval = 127;
43611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  int i;
43631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  program_name = (char *) xstrdup (base_name (argv[0]));
43651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  newargz = XMALLOC (char *, argc + 1);
43661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* very simple arg parsing; don't want to rely on getopt
43681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   * also, copy all non cwrapper options to newargz, except
43691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   * argz[0], which is handled differently
43701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   */
43711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  newargc=0;
43721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for (i = 1; i < argc; i++)
43731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
43741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (strcmp (argv[i], dumpscript_opt) == 0)
43751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
43761176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
43771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$host" in
43781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *mingw* | *cygwin* )
43791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# make stdout use "unix" line endings
43801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "          setmode(1,_O_BINARY);"
43811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
43821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
43831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
43841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
43851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lt_dump_script (stdout);
43861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  return 0;
43871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
43881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (strcmp (argv[i], debug_opt) == 0)
43891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
43901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          lt_debug = 1;
43911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          continue;
43921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
43931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (strcmp (argv[i], ltwrapper_option_prefix) == 0)
43941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        {
43951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
43961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             namespace, but it is not one of the ones we know about and
43971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             have already dealt with, above (inluding dump-script), then
43981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             report an error. Otherwise, targets might begin to believe
43991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
44001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             namespace. The first time any user complains about this, we'll
44011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
44021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck             or a configure.ac-settable value.
44031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck           */
44041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          lt_fatal (__FILE__, __LINE__,
44051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    "unrecognized %s option: '%s'",
44061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                    ltwrapper_option_prefix, argv[i]);
44071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        }
44081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /* otherwise ... */
44091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      newargz[++newargc] = xstrdup (argv[i]);
44101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
44111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  newargz[++newargc] = NULL;
44121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44131176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
44141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<EOF
44151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* The GNU banner must be the first non-error debug message */
44161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n");
44171176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
44181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
44191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]);
44201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name);
44211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = find_executable (argv[0]);
44231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (tmp_pathspec == NULL)
44241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]);
44251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__,
44261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  "(main) found exe (before symlink chase) at: %s\n",
44271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  tmp_pathspec);
44281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
44301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__,
44311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  "(main) found exe (after symlink chase) at: %s\n",
44321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  actual_cwrapper_path);
44331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (tmp_pathspec);
44341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path));
44361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strendzap (actual_cwrapper_path, actual_cwrapper_name);
44371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* wrapper name transforms */
44391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strendzap (actual_cwrapper_name, ".exe");
44401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
44411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (actual_cwrapper_name);
44421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  actual_cwrapper_name = tmp_pathspec;
44431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = 0;
44441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* target_name transforms -- use actual target program name; might have lt- prefix */
44461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
44471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strendzap (target_name, ".exe");
44481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
44491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (target_name);
44501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  target_name = tmp_pathspec;
44511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = 0;
44521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__,
44541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  "(main) libtool target name: %s\n",
44551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  target_name);
44561176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
44571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<EOF
44591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  newargz[0] =
44601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    XMALLOC (char, (strlen (actual_cwrapper_path) +
44611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
44621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strcpy (newargz[0], actual_cwrapper_path);
44631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strcat (newargz[0], "$objdir");
44641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strcat (newargz[0], "/");
44651176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
44661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
44681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* stop here, and copy so we don't have to do this twice */
44691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = xstrdup (newargz[0]);
44701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
44721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strcat (newargz[0], actual_cwrapper_name);
44731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* DO want the lt- prefix here if it exists, so use target_name */
44751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
44761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (tmp_pathspec);
44771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = NULL;
44781176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
44791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $host_os in
44811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      mingw*)
44821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
44831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  {
44841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    char* p;
44851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    while ((p = strchr (newargz[0], '\\')) != NULL)
44861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      {
44871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*p = '/';
44881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
44891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
44901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      {
44911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*p = '/';
44921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
44931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  }
44941176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
44951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
44961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
44971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
44981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
44991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (target_name);
45001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (actual_cwrapper_path);
45011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (actual_cwrapper_name);
45021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
45041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
45051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Update the DLL searchpath.  EXE_PATH_VALUE ($dllsearchpath) must
45061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath)
45071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     because on Windows, both *_VARNAMEs are PATH but uninstalled
45081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     libraries must come first. */
45091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
45101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
45111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n",
45131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  nonnull (lt_argv_zero));
45141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for (i = 0; i < newargc; i++)
45151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
45161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n",
45171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      i, nonnull (newargz[i]));
45181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
45191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45201176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
45211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $host_os in
45231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      mingw*)
45241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		cat <<"EOF"
45251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* execv doesn't actually work on mingw as expected on unix */
45261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  newargz = prepare_spawn (newargz);
45271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
45281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (rval == -1)
45291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
45301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /* failed to start process */
45311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_debugprintf (__FILE__, __LINE__,
45321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      "(main) failed to launch target \"%s\": %s\n",
45331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      lt_argv_zero, nonnull (strerror (errno)));
45341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      return 127;
45351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
45361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return rval;
45371176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
45381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
45391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *)
45401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		cat <<"EOF"
45411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  execv (lt_argv_zero, newargz);
45421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return rval; /* =127, but avoids unused variable warning */
45431176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
45441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
45451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
45461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cat <<"EOF"
45481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
45491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45501176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid *
45511176bdada62cabc6ec4b0308a930e83b679d5d36John Reckxmalloc (size_t num)
45521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
45531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  void *p = (void *) malloc (num);
45541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (!p)
45551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lt_fatal (__FILE__, __LINE__, "memory exhausted");
45561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return p;
45581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
45591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45601176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *
45611176bdada62cabc6ec4b0308a930e83b679d5d36John Reckxstrdup (const char *string)
45621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
45631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
45641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			  string) : NULL;
45651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
45661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45671176bdada62cabc6ec4b0308a930e83b679d5d36John Reckconst char *
45681176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbase_name (const char *name)
45691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
45701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  const char *base;
45711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
45731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Skip over the disk name in MSDOS pathnames. */
45741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
45751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    name += 2;
45761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
45771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for (base = name; *name; name++)
45791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if (IS_DIR_SEPARATOR (*name))
45801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      base = name + 1;
45811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return base;
45821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
45831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45841176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint
45851176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcheck_executable (const char *path)
45861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
45871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  struct stat st;
45881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n",
45901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  nonempty (path));
45911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if ((!path) || (!*path))
45921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return 0;
45931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
45941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if ((stat (path, &st) >= 0)
45951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
45961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return 1;
45971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
45981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return 0;
45991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
46001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46011176bdada62cabc6ec4b0308a930e83b679d5d36John Reckint
46021176bdada62cabc6ec4b0308a930e83b679d5d36John Reckmake_executable (const char *path)
46031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
46041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  int rval = 0;
46051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  struct stat st;
46061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n",
46081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  nonempty (path));
46091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if ((!path) || (!*path))
46101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return 0;
46111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (stat (path, &st) >= 0)
46131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
46141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
46151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
46161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return rval;
46171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
46181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Searches for the full path of the wrapper.  Returns
46201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   newly allocated full path name if found, NULL otherwise
46211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   Does not chase symlinks, even on platforms that support them.
46221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck*/
46231176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *
46241176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfind_executable (const char *wrapper)
46251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
46261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  int has_slash = 0;
46271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  const char *p;
46281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  const char *p_next;
46291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* static buffer for getcwd */
46301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char tmp[LT_PATHMAX + 1];
46311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  int tmp_len;
46321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *concat_name;
46331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n",
46351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  nonempty (wrapper));
46361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if ((wrapper == NULL) || (*wrapper == '\0'))
46381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return NULL;
46391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Absolute path? */
46411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
46431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
46441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      concat_name = xstrdup (wrapper);
46451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (check_executable (concat_name))
46461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	return concat_name;
46471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      XFREE (concat_name);
46481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
46491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
46501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
46511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
46521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (IS_DIR_SEPARATOR (wrapper[0]))
46531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
46541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  concat_name = xstrdup (wrapper);
46551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if (check_executable (concat_name))
46561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    return concat_name;
46571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  XFREE (concat_name);
46581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
46591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
46601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
46611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
46621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
46631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for (p = wrapper; *p; p++)
46641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if (*p == '/')
46651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      {
46661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	has_slash = 1;
46671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	break;
46681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
46691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (!has_slash)
46701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
46711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /* no slashes; search PATH */
46721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      const char *path = getenv ("PATH");
46731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (path != NULL)
46741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
46751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for (p = path; *p; p = p_next)
46761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    {
46771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      const char *q;
46781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      size_t p_len;
46791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      for (q = p; *q; q++)
46801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if (IS_PATH_SEPARATOR (*q))
46811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  break;
46821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      p_len = q - p;
46831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      p_next = (*q == '\0' ? q : q + 1);
46841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if (p_len == 0)
46851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		{
46861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  /* empty path: current directory */
46871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if (getcwd (tmp, LT_PATHMAX) == NULL)
46881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
46891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                              nonnull (strerror (errno)));
46901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  tmp_len = strlen (tmp);
46911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  concat_name =
46921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
46931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  memcpy (concat_name, tmp, tmp_len);
46941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  concat_name[tmp_len] = '/';
46951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  strcpy (concat_name + tmp_len + 1, wrapper);
46961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		}
46971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
46981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		{
46991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  concat_name =
47001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
47011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  memcpy (concat_name, p, p_len);
47021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  concat_name[p_len] = '/';
47031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  strcpy (concat_name + p_len + 1, wrapper);
47041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		}
47051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if (check_executable (concat_name))
47061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		return concat_name;
47071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      XFREE (concat_name);
47081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
47091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
47101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /* not found in PATH; assume curdir */
47111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
47121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Relative path | not found in path: prepend cwd */
47131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (getcwd (tmp, LT_PATHMAX) == NULL)
47141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lt_fatal (__FILE__, __LINE__, "getcwd failed: %s",
47151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck              nonnull (strerror (errno)));
47161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_len = strlen (tmp);
47171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
47181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  memcpy (concat_name, tmp, tmp_len);
47191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  concat_name[tmp_len] = '/';
47201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  strcpy (concat_name + tmp_len + 1, wrapper);
47211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (check_executable (concat_name))
47231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    return concat_name;
47241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (concat_name);
47251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return NULL;
47261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
47271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47281176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *
47291176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchase_symlinks (const char *pathspec)
47301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
47311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifndef S_ISLNK
47321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return xstrdup (pathspec);
47331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else
47341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char buf[LT_PATHMAX];
47351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  struct stat s;
47361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *tmp_pathspec = xstrdup (pathspec);
47371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *p;
47381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  int has_symlinks = 0;
47391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  while (strlen (tmp_pathspec) && !has_symlinks)
47401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
47411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_debugprintf (__FILE__, __LINE__,
47421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      "checking path component for symlinks: %s\n",
47431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      tmp_pathspec);
47441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (lstat (tmp_pathspec, &s) == 0)
47451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
47461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if (S_ISLNK (s.st_mode) != 0)
47471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    {
47481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      has_symlinks = 1;
47491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      break;
47501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
47511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  /* search backwards for last DIR_SEPARATOR */
47531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
47541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
47551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    p--;
47561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
47571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    {
47581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      /* no more DIR_SEPARATORS left */
47591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      break;
47601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
47611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *p = '\0';
47621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
47631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
47641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
47651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lt_fatal (__FILE__, __LINE__,
47661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    "error accessing file \"%s\": %s",
47671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    tmp_pathspec, nonnull (strerror (errno)));
47681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
47691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
47701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  XFREE (tmp_pathspec);
47711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (!has_symlinks)
47731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
47741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      return xstrdup (pathspec);
47751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
47761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  tmp_pathspec = realpath (pathspec, buf);
47781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (tmp_pathspec == 0)
47791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
47801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_fatal (__FILE__, __LINE__,
47811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		"could not follow symlinks for %s", pathspec);
47821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
47831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return xstrdup (tmp_pathspec);
47841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
47851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
47861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47871176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *
47881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstrendzap (char *str, const char *pat)
47891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
47901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  size_t len, patlen;
47911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  assert (str != NULL);
47931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  assert (pat != NULL);
47941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  len = strlen (str);
47961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  patlen = strlen (pat);
47971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
47981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (patlen <= len)
47991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
48001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      str += len - patlen;
48011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (strcmp (str, pat) == 0)
48021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*str = '\0';
48031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
48041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return str;
48051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48071176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid
48081176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_debugprintf (const char *file, int line, const char *fmt, ...)
48091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  va_list args;
48111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (lt_debug)
48121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
48131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line);
48141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      va_start (args, fmt);
48151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      (void) vfprintf (stderr, fmt, args);
48161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      va_end (args);
48171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
48181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48201176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic void
48211176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_error_core (int exit_status, const char *file,
48221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       int line, const char *mode,
48231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       const char *message, va_list ap)
48241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode);
48261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  vfprintf (stderr, message, ap);
48271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  fprintf (stderr, ".\n");
48281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (exit_status >= 0)
48301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit (exit_status);
48311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48331176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid
48341176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_fatal (const char *file, int line, const char *message, ...)
48351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  va_list ap;
48371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  va_start (ap, message);
48381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap);
48391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  va_end (ap);
48401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *
48431176bdada62cabc6ec4b0308a930e83b679d5d36John Recknonnull (const char *s)
48441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return s ? s : "(null)";
48461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48481176bdada62cabc6ec4b0308a930e83b679d5d36John Reckstatic const char *
48491176bdada62cabc6ec4b0308a930e83b679d5d36John Recknonempty (const char *s)
48501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return (s && !*s) ? "(empty)" : nonnull (s);
48521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48541176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid
48551176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_setenv (const char *name, const char *value)
48561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__,
48581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  "(lt_setenv) setting '%s' to '%s'\n",
48591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  nonnull (name), nonnull (value));
48601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  {
48611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#ifdef HAVE_SETENV
48621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    /* always make a copy, for consistency with !HAVE_SETENV */
48631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    char *str = xstrdup (value);
48641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    setenv (name, str, 1);
48651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#else
48661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    int len = strlen (name) + 1 + strlen (value) + 1;
48671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    char *str = XMALLOC (char, len);
48681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    sprintf (str, "%s=%s", name, value);
48691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if (putenv (str) != EXIT_SUCCESS)
48701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      {
48711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        XFREE (str);
48721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
48731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#endif
48741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  }
48751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
48761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
48771176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar *
48781176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_extend_str (const char *orig_value, const char *add, int to_end)
48791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
48801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char *new_value;
48811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (orig_value && *orig_value)
48821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
48831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      int orig_value_len = strlen (orig_value);
48841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      int add_len = strlen (add);
48851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      new_value = XMALLOC (char, add_len + orig_value_len + 1);
48861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (to_end)
48871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        {
48881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          strcpy (new_value, orig_value);
48891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          strcpy (new_value + orig_value_len, add);
48901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        }
48911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
48921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        {
48931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          strcpy (new_value, add);
48941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          strcpy (new_value + add_len, orig_value);
48951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        }
48961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
48971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  else
48981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
48991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      new_value = xstrdup (add);
49001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
49011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return new_value;
49021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
49031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49041176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid
49051176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_update_exe_path (const char *name, const char *value)
49061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
49071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__,
49081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  "(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
49091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  nonnull (name), nonnull (value));
49101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (name && *name && value && *value)
49121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
49131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      char *new_value = lt_extend_str (getenv (name), value, 0);
49141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      /* some systems can't cope with a ':'-terminated path #' */
49151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      int len = strlen (new_value);
49161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
49171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        {
49181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          new_value[len-1] = '\0';
49191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        }
49201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_setenv (name, new_value);
49211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      XFREE (new_value);
49221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
49231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
49241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid
49261176bdada62cabc6ec4b0308a930e83b679d5d36John Recklt_update_lib_path (const char *name, const char *value)
49271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
49281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  lt_debugprintf (__FILE__, __LINE__,
49291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  "(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
49301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                  nonnull (name), nonnull (value));
49311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  if (name && *name && value && *value)
49331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
49341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      char *new_value = lt_extend_str (getenv (name), value, 0);
49351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lt_setenv (name, new_value);
49361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      XFREE (new_value);
49371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
49381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
49391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49401176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
49411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $host_os in
49421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      mingw*)
49431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		cat <<"EOF"
49441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck/* Prepares an argument vector before calling spawn().
49461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   Note that spawn() does not by itself call the command interpreter
49471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") :
49481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
49491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck         GetVersionEx(&v);
49501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck         v.dwPlatformId == VER_PLATFORM_WIN32_NT;
49511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }) ? "cmd.exe" : "command.com").
49521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   Instead it simply concatenates the arguments, separated by ' ', and calls
49531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   CreateProcess().  We must quote the arguments since Win32 CreateProcess()
49541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a
49551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   special way:
49561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   - Space and tab are interpreted as delimiters. They are not treated as
49571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     delimiters if they are surrounded by double quotes: "...".
49581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   - Unescaped double quotes are removed from the input. Their only effect is
49591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     that within double quotes, space and tab are treated like normal
49601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     characters.
49611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   - Backslashes not followed by double quotes are not special.
49621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck   - But 2*n+1 backslashes followed by a double quote become
49631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck     n backslashes followed by a double quote (n >= 0):
49641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       \" -> "
49651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       \\\" -> \"
49661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck       \\\\\" -> \\"
49671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck */
49681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#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"
49691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#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"
49701176bdada62cabc6ec4b0308a930e83b679d5d36John Reckchar **
49711176bdada62cabc6ec4b0308a930e83b679d5d36John Reckprepare_spawn (char **argv)
49721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
49731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  size_t argc;
49741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  char **new_argv;
49751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  size_t i;
49761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Count number of arguments.  */
49781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for (argc = 0; argv[argc] != NULL; argc++)
49791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ;
49801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Allocate new argument vector.  */
49821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  new_argv = XMALLOC (char *, argc + 1);
49831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  /* Put quoted arguments into the new argument vector.  */
49851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  for (i = 0; i < argc; i++)
49861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    {
49871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      const char *string = argv[i];
49881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
49891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if (string[0] == '\0')
49901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	new_argv[i] = xstrdup ("\"\"");
49911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL)
49921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	{
49931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL);
49941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  size_t length;
49951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  unsigned int backslashes;
49961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  const char *s;
49971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  char *quoted_string;
49981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  char *p;
49991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  length = 0;
50011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  backslashes = 0;
50021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if (quote_around)
50031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    length++;
50041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for (s = string; *s != '\0'; s++)
50051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    {
50061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      char c = *s;
50071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if (c == '"')
50081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		length += backslashes + 1;
50091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      length++;
50101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if (c == '\\')
50111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		backslashes++;
50121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
50131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		backslashes = 0;
50141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
50151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if (quote_around)
50161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    length += backslashes + 1;
50171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  quoted_string = XMALLOC (char, length + 1);
50191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  p = quoted_string;
50211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  backslashes = 0;
50221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if (quote_around)
50231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *p++ = '"';
50241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for (s = string; *s != '\0'; s++)
50251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    {
50261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      char c = *s;
50271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if (c == '"')
50281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		{
50291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  unsigned int j;
50301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  for (j = backslashes + 1; j > 0; j--)
50311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    *p++ = '\\';
50321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		}
50331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *p++ = c;
50341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if (c == '\\')
50351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		backslashes++;
50361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
50371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		backslashes = 0;
50381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
50391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if (quote_around)
50401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    {
50411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      unsigned int j;
50421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      for (j = backslashes; j > 0; j--)
50431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*p++ = '\\';
50441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *p++ = '"';
50451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
50461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *p = '\0';
50471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  new_argv[i] = quoted_string;
50491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	}
50501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
50511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	new_argv[i] = (char *) string;
50521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    }
50531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  new_argv[argc] = NULL;
50541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  return new_argv;
50561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
50571176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
50581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
50591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
50601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck            cat <<"EOF"
50621176bdada62cabc6ec4b0308a930e83b679d5d36John Reckvoid lt_dump_script (FILE* f)
50631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
50641176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
50651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_emit_wrapper yes |
50661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $SED -n -e '
50671176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/^\(.\{79\}\)\(..*\)/\1\
50681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck\2/
50691176bdada62cabc6ec4b0308a930e83b679d5d36John Reckh
50701176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/\([\\"]\)/\\\1/g
50711176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/$/\\n/
50721176bdada62cabc6ec4b0308a930e83b679d5d36John Recks/\([^\n]*\).*/  fputs ("\1", f);/p
50731176bdada62cabc6ec4b0308a930e83b679d5d36John Reckg
50741176bdada62cabc6ec4b0308a930e83b679d5d36John ReckD'
50751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck            cat <<"EOF"
50761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
50771176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
50781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
50791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# end: func_emit_cwrapperexe_src
50801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_win32_import_lib_p ARG
50821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# True if ARG is an import lib, as indicated by $file_magic_cmd
50831176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_win32_import_lib_p ()
50841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
50851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
50861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in
50871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *import*) : ;;
50881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *) false ;;
50891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
50901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
50911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
50921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_link arg...
50931176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_link ()
50941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
50951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
50961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $host in
50971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
50981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # It is impossible to link a dll without this setting, and
50991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # we shouldn't force the makefile maintainer to figure out
51001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # which system we are compiling for in order to pass an extra
51011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # flag for every libtool invocation.
51021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # allow_undefined=no
51031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
51041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # FIXME: Unfortunately, there are problems with the above when trying
51051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # to make a dll which has undefined symbols, in which case not
51061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # even a static library is built.  For now, we need to specify
51071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -no-undefined on the libtool link line when we can be certain
51081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # that all symbols are satisfied, otherwise we get a static library.
51091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      allow_undefined=yes
51101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
51111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)
51121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      allow_undefined=yes
51131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
51141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
51151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libtool_args=$nonopt
51161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    base_compile="$nonopt $@"
51171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    compile_command=$nonopt
51181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    finalize_command=$nonopt
51191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
51201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    compile_rpath=
51211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    finalize_rpath=
51221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    compile_shlibpath=
51231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    finalize_shlibpath=
51241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    convenience=
51251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    old_convenience=
51261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    deplibs=
51271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    old_deplibs=
51281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    compiler_flags=
51291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    linker_flags=
51301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dllsearchpath=
51311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lib_search_path=`pwd`
51321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    inst_prefix_dir=
51331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    new_inherited_linker_flags=
51341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
51351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    avoid_version=no
51361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    bindir=
51371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dlfiles=
51381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dlprefiles=
51391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    dlself=no
51401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    export_dynamic=no
51411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    export_symbols=
51421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    export_symbols_regex=
51431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    generated=
51441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libobjs=
51451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    ltlibs=
51461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    module=no
51471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    no_install=no
51481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    objs=
51491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    non_pic_objects=
51501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    precious_files_regex=
51511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    prefer_static_libs=no
51521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    preload=no
51531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    prev=
51541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    prevarg=
51551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    release=
51561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    rpath=
51571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    xrpath=
51581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    perm_rpath=
51591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    temp_rpath=
51601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    thread_safe=no
51611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    vinfo=
51621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    vinfo_number=no
51631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    weak_libs=
51641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    single_module="${wl}-single_module"
51651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_infer_tag $base_compile
51661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
51671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # We need to know -static, to get the right output filenames.
51681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for arg
51691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
51701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $arg in
51711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -shared)
51721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test "$build_libtool_libs" != yes && \
51731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_configuration "can not build a shared library"
51741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_old_libs=no
51751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	break
51761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
51771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -all-static | -static | -static-libtool-libs)
51781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $arg in
51791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-all-static)
51801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
51811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "complete static linking is impossible in this configuration"
51821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
51831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$link_static_flag"; then
51841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlopen_self=$dlopen_self_static
51851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
51861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prefer_static_libs=yes
51871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
51881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-static)
51891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
51901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlopen_self=$dlopen_self_static
51911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
51921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prefer_static_libs=built
51931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
51941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-static-libtool-libs)
51951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
51961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlopen_self=$dlopen_self_static
51971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
51981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prefer_static_libs=yes
51991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
52011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_libtool_libs=no
52021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_old_libs=yes
52031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	break
52041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
52051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
52061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
52071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
52081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # See if our shared archives depend on static archives.
52091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
52101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
52111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Go through the arguments, transforming them on the way.
52121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    while test "$#" -gt 0; do
52131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      arg="$1"
52141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      shift
52151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_quote_for_eval "$arg"
52161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      qarg=$func_quote_for_eval_unquoted_result
52171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append libtool_args " $func_quote_for_eval_result"
52181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
52191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # If the previous option needs an argument, assign it.
52201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$prev"; then
52211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $prev in
52221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	output)
52231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compile_command " @OUTPUT@"
52241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append finalize_command " @OUTPUT@"
52251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
52271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
52281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $prev in
52291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	bindir)
52301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  bindir="$arg"
52311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
52321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
52331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlfiles|dlprefiles)
52351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$preload" = no; then
52361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Add the symbol object into the linking commands.
52371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append compile_command " @SYMFILE@"
52381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append finalize_command " @SYMFILE@"
52391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    preload=yes
52401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
52411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $arg in
52421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.la | *.lo) ;;  # We handle these cases below.
52431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  force)
52441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$dlself" = no; then
52451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      dlself=needless
52461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      export_dynamic=yes
52471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
52481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    prev=
52491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
52501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
52511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  self)
52521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$prev" = dlprefiles; then
52531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      dlself=yes
52541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
52551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      dlself=yes
52561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
52571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      dlself=needless
52581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      export_dynamic=yes
52591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
52601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    prev=
52611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
52621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
52631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
52641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$prev" = dlfiles; then
52651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append dlfiles " $arg"
52661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
52671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append dlprefiles " $arg"
52681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
52691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    prev=
52701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
52711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
52721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
52731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	expsyms)
52751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  export_symbols="$arg"
52761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -f "$arg" \
52771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    || func_fatal_error "symbol file \`$arg' does not exist"
52781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
52791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
52801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	expsyms_regex)
52821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  export_symbols_regex="$arg"
52831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
52841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
52851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	framework)
52871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host in
52881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *-*-darwin*)
52891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$deplibs " in
52901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*" $qarg.ltframework "*) ;;
52911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*) func_append deplibs " $qarg.ltframework" # this is fixed later
52921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   ;;
52931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
52941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
52951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
52961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
52971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
52981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
52991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	inst_prefix)
53001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  inst_prefix_dir="$arg"
53011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
53021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
53031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
53041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	objectlist)
53051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -f "$arg"; then
53061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    save_arg=$arg
53071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    moreargs=
53081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for fil in `cat "$save_arg"`
53091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    do
53101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#	      func_append moreargs " $fil"
53111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      arg=$fil
53121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # A libtool-controlled object.
53131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Check to see that this really is a libtool object.
53151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if func_lalib_unsafe_p "$arg"; then
53161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		pic_object=
53171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		non_pic_object=
53181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Read the .lo file
53201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_source "$arg"
53211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -z "$pic_object" ||
53231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   test -z "$non_pic_object" ||
53241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   test "$pic_object" = none &&
53251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   test "$non_pic_object" = none; then
53261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_fatal_error "cannot find name of object for \`$arg'"
53271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
53281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Extract subdirectory from the argument.
53301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_dirname "$arg" "/" ""
53311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		xdir="$func_dirname_result"
53321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test "$pic_object" != none; then
53341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # Prepend the subdirectory the object is found in.
53351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  pic_object="$xdir$pic_object"
53361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test "$prev" = dlfiles; then
53381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
53391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append dlfiles " $pic_object"
53401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      prev=
53411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      continue
53421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    else
53431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # If libtool objects are unsupported, then we need to preload.
53441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      prev=dlprefiles
53451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    fi
53461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
53471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # CHECK ME:  I think I busted this.  -Ossama
53491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test "$prev" = dlprefiles; then
53501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    # Preload the old-style object.
53511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_append dlprefiles " $pic_object"
53521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    prev=
53531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
53541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # A PIC object.
53561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append libobjs " $pic_object"
53571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  arg="$pic_object"
53581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
53591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Non-PIC object.
53611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test "$non_pic_object" != none; then
53621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # Prepend the subdirectory the object is found in.
53631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  non_pic_object="$xdir$non_pic_object"
53641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # A standard non-PIC object
53661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append non_pic_objects " $non_pic_object"
53671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test -z "$pic_object" || test "$pic_object" = none ; then
53681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    arg="$non_pic_object"
53691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
53701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
53711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # If the PIC object exists, use it instead.
53721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # $xdir was prepended to $pic_object above.
53731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  non_pic_object="$pic_object"
53741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append non_pic_objects " $non_pic_object"
53751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
53761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
53771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Only an error if not doing a dry-run.
53781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if $opt_dry_run; then
53791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # Extract subdirectory from the argument.
53801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_dirname "$arg" "/" ""
53811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  xdir="$func_dirname_result"
53821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
53831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_lo2o "$arg"
53841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  pic_object=$xdir$objdir/$func_lo2o_result
53851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  non_pic_object=$xdir$func_lo2o_result
53861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append libobjs " $pic_object"
53871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append non_pic_objects " $non_pic_object"
53881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        else
53891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_fatal_error "\`$arg' is not a valid libtool object"
53901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
53911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
53921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
53931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
53941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "link input file \`$arg' does not exist"
53951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
53961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  arg=$save_arg
53971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
53981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
53991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	precious_regex)
54011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  precious_files_regex="$arg"
54021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	release)
54061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  release="-$arg"
54071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	rpath | xrpath)
54111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # We need an absolute path.
54121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $arg in
54131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  [\\/]* | [A-Za-z]:[\\/]*) ;;
54141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
54151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "only absolute run-paths are allowed"
54161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
54171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
54181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$prev" = rpath; then
54191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$rpath " in
54201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $arg "*) ;;
54211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append rpath " $arg" ;;
54221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
54231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
54241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$xrpath " in
54251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $arg "*) ;;
54261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append xrpath " $arg" ;;
54271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
54281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
54291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	shrext)
54331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  shrext_cmds="$arg"
54341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	weak)
54381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append weak_libs " $arg"
54391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	xcclinker)
54431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append linker_flags " $qarg"
54441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compiler_flags " $qarg"
54451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compile_command " $qarg"
54471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append finalize_command " $qarg"
54481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	xcompiler)
54511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compiler_flags " $qarg"
54521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compile_command " $qarg"
54541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append finalize_command " $qarg"
54551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	xlinker)
54581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append linker_flags " $qarg"
54591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compiler_flags " $wl$qarg"
54601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compile_command " $wl$qarg"
54621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append finalize_command " $wl$qarg"
54631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
54661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval "$prev=\"\$arg\""
54671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
54681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
54691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
54701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
54711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi # test -n "$prev"
54721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
54731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      prevarg="$arg"
54741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
54751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $arg in
54761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -all-static)
54771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$link_static_flag"; then
54781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # See comment for -static flag below, for more details.
54791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compile_command " $link_static_flag"
54801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append finalize_command " $link_static_flag"
54811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
54821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
54831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
54841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
54851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -allow-undefined)
54861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# FIXME: remove this flag sometime in the future.
54871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
54881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
54891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
54901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -avoid-version)
54911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	avoid_version=yes
54921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
54931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
54941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
54951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -bindir)
54961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=bindir
54971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
54981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
54991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -dlopen)
55011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=dlfiles
55021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -dlpreopen)
55061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=dlprefiles
55071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -export-dynamic)
55111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	export_dynamic=yes
55121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -export-symbols | -export-symbols-regex)
55161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
55171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "more than one -exported-symbols argument is not allowed"
55181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
55191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "X$arg" = "X-export-symbols"; then
55201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=expsyms
55211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
55221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=expsyms_regex
55231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
55241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -framework)
55281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=framework
55291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -inst-prefix-dir)
55331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=inst_prefix
55341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
55381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # so, if we see these flags be careful not to treat them like -L
55391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -L[A-Z][A-Z]*:*)
55401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $with_gcc/$host in
55411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	no/*-*-irix* | /*-*-irix*)
55421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compile_command " $arg"
55431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append finalize_command " $arg"
55441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
55451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
55461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
55481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
55491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -L*)
55501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname "-L" '' "$arg"
55511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$func_stripname_result"; then
55521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$#" -gt 0; then
55531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "require no space between \`-L' and \`$1'"
55541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
55551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "need path for \`-L' option"
55561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
55571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
55581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_resolve_sysroot "$func_stripname_result"
55591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dir=$func_resolve_sysroot_result
55601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# We need an absolute path.
55611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $dir in
55621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	[\\/]* | [A-Za-z]:[\\/]*) ;;
55631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
55641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  absdir=`cd "$dir" && pwd`
55651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -z "$absdir" && \
55661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
55671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dir="$absdir"
55681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
55691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
55701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case "$deplibs " in
55711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" -L$dir "* | *" $arg "*)
55721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Will only happen for absolute or sysroot arguments
55731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
55741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
55751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Preserve sysroot, but never include relative directories
55761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $dir in
55771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;;
55781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append deplibs " -L$dir" ;;
55791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
55801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append lib_search_path " $dir"
55811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
55821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
55831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
55841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
55851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'`
55861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case :$dllsearchpath: in
55871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *":$dir:"*) ;;
55881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ::) dllsearchpath=$dir;;
55891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append dllsearchpath ":$dir";;
55901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
55911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case :$dllsearchpath: in
55921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *":$testbindir:"*) ;;
55931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ::) dllsearchpath=$testbindir;;
55941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append dllsearchpath ":$testbindir";;
55951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
55961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
55971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
55981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
55991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -l*)
56021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
56031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host in
56041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*)
56051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # These systems don't actually have a C or math library (as such)
56061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
56071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
56081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-os2*)
56091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # These systems don't actually have a C library (as such)
56101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$arg" = "X-lc" && continue
56111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
56121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
56131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Do not include libc due to us having libc/libc_r.
56141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$arg" = "X-lc" && continue
56151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
56161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-rhapsody* | *-*-darwin1.[012])
56171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Rhapsody C and math libraries are in the System framework
56181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append deplibs " System.ltframework"
56191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
56201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
56211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-sco3.2v5* | *-*-sco5v6*)
56221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Causes problems with __ctype
56231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$arg" = "X-lc" && continue
56241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
56251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
56261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Compiler inserts libc in the correct place for threads to work
56271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$arg" = "X-lc" && continue
56281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
56291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
56301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test "X$arg" = "X-lc_r"; then
56311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 case $host in
56321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
56331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   # Do not include libc_r directly, use -pthread flag.
56341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   continue
56351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   ;;
56361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 esac
56371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
56381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append deplibs " $arg"
56391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -module)
56431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	module=yes
56441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Tru64 UNIX uses -model [arg] to determine the layout of C++
56481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # classes, name mangling, and exception handling.
56491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Darwin uses the -arch flag to determine output architecture.
56501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -model|-arch|-isysroot|--sysroot)
56511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append compiler_flags " $arg"
56521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append compile_command " $arg"
56531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append finalize_command " $arg"
56541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=xcompiler
56551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
56591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
56601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append compiler_flags " $arg"
56611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append compile_command " $arg"
56621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append finalize_command " $arg"
56631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case "$new_inherited_linker_flags " in
56641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $arg "*) ;;
56651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    * ) func_append new_inherited_linker_flags " $arg" ;;
56661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
56671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -multi_module)
56711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	single_module="${wl}-multi_module"
56721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -no-fast-install)
56761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fast_install=no
56771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -no-install)
56811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
56821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
56831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # The PATH hackery in wrapper scripts is required on Windows
56841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # and Darwin in order for the loader to find any dlls it needs.
56851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "\`-no-install' is ignored for $host"
56861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "assuming \`-no-fast-install' instead"
56871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fast_install=no
56881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
56891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) no_install=yes ;;
56901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
56911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -no-undefined)
56951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	allow_undefined=no
56961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
56971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
56981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
56991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -objectlist)
57001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=objectlist
57011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -o) prev=output ;;
57051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -precious-files-regex)
57071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=precious_regex
57081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -release)
57121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=release
57131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -rpath)
57171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=rpath
57181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -R)
57221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=xrpath
57231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -R*)
57271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname '-R' '' "$arg"
57281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dir=$func_stripname_result
57291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# We need an absolute path.
57301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $dir in
57311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	[\\/]* | [A-Za-z]:[\\/]*) ;;
57321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	=*)
57331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_stripname '=' '' "$dir"
57341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dir=$lt_sysroot$func_stripname_result
57351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
57361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
57371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "only absolute run-paths are allowed"
57381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
57391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
57401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case "$xrpath " in
57411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" $dir "*) ;;
57421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) func_append xrpath " $dir" ;;
57431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
57441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -shared)
57481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# The effects of -shared are defined in a previous loop.
57491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -shrext)
57531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=shrext
57541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -static | -static-libtool-libs)
57581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# The effects of -static are defined in a previous loop.
57591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# We used to do the same as -all-static on platforms that
57601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# didn't have a PIC flag, but the assumption that the effects
57611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# would be equivalent was wrong.  It would break on at least
57621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Digital Unix and AIX.
57631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -thread-safe)
57671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	thread_safe=yes
57681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -version-info)
57721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=vinfo
57731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -version-number)
57771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=vinfo
57781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	vinfo_number=yes
57791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -weak)
57831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        prev=weak
57841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
57851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
57861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
57871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -Wc,*)
57881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname '-Wc,' '' "$arg"
57891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	args=$func_stripname_result
57901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg=
57911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	save_ifs="$IFS"; IFS=','
57921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for flag in $args; do
57931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  IFS="$save_ifs"
57941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_quote_for_eval "$flag"
57951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append arg " $func_quote_for_eval_result"
57961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compiler_flags " $func_quote_for_eval_result"
57971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
57981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	IFS="$save_ifs"
57991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname ' ' '' "$arg"
58001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg=$func_stripname_result
58011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -Wl,*)
58041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname '-Wl,' '' "$arg"
58051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	args=$func_stripname_result
58061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg=
58071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	save_ifs="$IFS"; IFS=','
58081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for flag in $args; do
58091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  IFS="$save_ifs"
58101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          func_quote_for_eval "$flag"
58111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append arg " $wl$func_quote_for_eval_result"
58121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append compiler_flags " $wl$func_quote_for_eval_result"
58131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append linker_flags " $func_quote_for_eval_result"
58141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
58151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	IFS="$save_ifs"
58161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname ' ' '' "$arg"
58171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg=$func_stripname_result
58181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -Xcompiler)
58211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=xcompiler
58221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
58231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -Xlinker)
58261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=xlinker
58271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
58281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -XCClinker)
58311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	prev=xcclinker
58321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
58331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -msg_* for osf cc
58361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -msg_*)
58371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_quote_for_eval "$arg"
58381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg="$func_quote_for_eval_result"
58391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Flags to be passed through unchanged, with rationale:
58421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -64, -mips[0-9]      enable 64-bit mode for the SGI compiler
58431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -r[0-9][0-9]*        specify processor for the SGI compiler
58441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler
58451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # +DA*, +DD*           enable 64-bit mode for the HP compiler
58461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -q*                  compiler args for the IBM compiler
58471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -m*, -t[45]*, -txscale* architecture-specific flags for GCC
58481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -F/path              path to uninstalled frameworks, gcc on darwin
58491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -p, -pg, --coverage, -fprofile-*  profiling flags for GCC
58501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # @file                GCC response files
58511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -tp=*                Portland pgcc target processor selection
58521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # --sysroot=*          for sysroot support
58531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
58541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
58551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
58561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -O*|-flto*|-fwhopr*|-fuse-linker-plugin)
58571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_quote_for_eval "$arg"
58581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg="$func_quote_for_eval_result"
58591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_append compile_command " $arg"
58601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_append finalize_command " $arg"
58611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_append compiler_flags " $arg"
58621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        continue
58631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
58641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Some other compiler flag.
58661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -* | +*)
58671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        func_quote_for_eval "$arg"
58681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg="$func_quote_for_eval_result"
58691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.$objext)
58721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# A standard object.
58731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append objs " $arg"
58741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
58751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.lo)
58771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# A libtool-controlled object.
58781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Check to see that this really is a libtool object.
58801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if func_lalib_unsafe_p "$arg"; then
58811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  pic_object=
58821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  non_pic_object=
58831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Read the .lo file
58851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source "$arg"
58861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$pic_object" ||
58881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test -z "$non_pic_object" ||
58891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$pic_object" = none &&
58901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$non_pic_object" = none; then
58911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "cannot find name of object for \`$arg'"
58921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
58931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Extract subdirectory from the argument.
58951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_dirname "$arg" "/" ""
58961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  xdir="$func_dirname_result"
58971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
58981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$pic_object" != none; then
58991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Prepend the subdirectory the object is found in.
59001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    pic_object="$xdir$pic_object"
59011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$prev" = dlfiles; then
59031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
59041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append dlfiles " $pic_object"
59051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		prev=
59061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		continue
59071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
59081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# If libtool objects are unsupported, then we need to preload.
59091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		prev=dlprefiles
59101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
59111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
59121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # CHECK ME:  I think I busted this.  -Ossama
59141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$prev" = dlprefiles; then
59151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Preload the old-style object.
59161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append dlprefiles " $pic_object"
59171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      prev=
59181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
59191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # A PIC object.
59211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append libobjs " $pic_object"
59221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    arg="$pic_object"
59231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
59241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Non-PIC object.
59261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$non_pic_object" != none; then
59271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Prepend the subdirectory the object is found in.
59281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    non_pic_object="$xdir$non_pic_object"
59291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # A standard non-PIC object
59311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append non_pic_objects " $non_pic_object"
59321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$pic_object" || test "$pic_object" = none ; then
59331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      arg="$non_pic_object"
59341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
59351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
59361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # If the PIC object exists, use it instead.
59371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # $xdir was prepended to $pic_object above.
59381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    non_pic_object="$pic_object"
59391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append non_pic_objects " $non_pic_object"
59401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
59411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
59421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Only an error if not doing a dry-run.
59431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if $opt_dry_run; then
59441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Extract subdirectory from the argument.
59451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_dirname "$arg" "/" ""
59461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    xdir="$func_dirname_result"
59471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_lo2o "$arg"
59491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    pic_object=$xdir$objdir/$func_lo2o_result
59501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    non_pic_object=$xdir$func_lo2o_result
59511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append libobjs " $pic_object"
59521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append non_pic_objects " $non_pic_object"
59531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
59541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "\`$arg' is not a valid libtool object"
59551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
59561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
59571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
59581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.$libext)
59601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# An archive.
59611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append deplibs " $arg"
59621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append old_deplibs " $arg"
59631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
59641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
59651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.la)
59671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# A libtool-controlled library.
59681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_resolve_sysroot "$arg"
59701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$prev" = dlfiles; then
59711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # This library was specified with -dlopen.
59721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append dlfiles " $func_resolve_sysroot_result"
59731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
59741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test "$prev" = dlprefiles; then
59751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # The library was specified with -dlpreopen.
59761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append dlprefiles " $func_resolve_sysroot_result"
59771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prev=
59781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
59791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append deplibs " $func_resolve_sysroot_result"
59801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
59811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
59821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
59831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Some other compiler argument.
59851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
59861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Unknown arguments in both finalize_command and compile_command need
59871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# to be aesthetically quoted because they are evaled later.
59881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_quote_for_eval "$arg"
59891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	arg="$func_quote_for_eval_result"
59901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
59911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac # arg
59921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
59931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now actually substitute the argument into the commands.
59941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$arg"; then
59951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append compile_command " $arg"
59961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append finalize_command " $arg"
59971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
59981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done # argument parsing loop
59991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -n "$prev" && \
60011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "the \`$prevarg' option requires an argument"
60021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
60041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval arg=\"$export_dynamic_flag_spec\"
60051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append compile_command " $arg"
60061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append finalize_command " $arg"
60071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
60081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    oldlibs=
60101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # calculate the name of the file, without its directory
60111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_basename "$output"
60121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    outputname="$func_basename_result"
60131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libobjs_save="$libobjs"
60141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test -n "$shlibpath_var"; then
60161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # get the directories listed in $shlibpath_var
60171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\`
60181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    else
60191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      shlib_search_path=
60201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
60211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
60221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
60231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_dirname "$output" "/" ""
60251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    output_objdir="$func_dirname_result$objdir"
60261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_to_tool_file "$output_objdir/"
60271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    tool_output_objdir=$func_to_tool_file_result
60281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Create the object directory.
60291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_mkdir_p "$output_objdir"
60301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Determine the type of output
60321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $output in
60331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    "")
60341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "you must specify an output file"
60351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
60361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.$libext) linkmode=oldlib ;;
60371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.lo | *.$objext) linkmode=obj ;;
60381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.la) linkmode=lib ;;
60391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *) linkmode=prog ;; # Anything else should be a program.
60401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
60411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    specialdeplibs=
60431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libs=
60451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Find all interdependent deplibs by searching for libraries
60461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # that are linked more than once (e.g. -la -lb -la)
60471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for deplib in $deplibs; do
60481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if $opt_preserve_dup_deps ; then
60491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case "$libs " in
60501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" $deplib "*) func_append specialdeplibs " $deplib" ;;
60511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
60521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
60531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append libs " $deplib"
60541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
60551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$linkmode" = lib; then
60571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      libs="$predeps $libs $compiler_lib_search_path $postdeps"
60581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Compute libraries that are listed more than once in $predeps
60601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # $postdeps and mark them as special (i.e., whose duplicates are
60611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # not to be eliminated).
60621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      pre_post_deps=
60631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if $opt_duplicate_compiler_generated_deps; then
60641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for pre_post_dep in $predeps $postdeps; do
60651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$pre_post_deps " in
60661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;;
60671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
60681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append pre_post_deps " $pre_post_dep"
60691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
60701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
60711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      pre_post_deps=
60721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
60731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    deplibs=
60751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    newdependency_libs=
60761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    newlib_search_path=
60771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    need_relink=no # whether we're linking any uninstalled libtool libraries
60781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    notinst_deplibs= # not-installed libtool libraries
60791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    notinst_path= # paths that contain not-installed libtool libraries
60801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
60811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $linkmode in
60821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lib)
60831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	passes="conv dlpreopen link"
60841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for file in $dlfiles $dlprefiles; do
60851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $file in
60861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.la) ;;
60871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
60881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
60891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
60901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
60911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
60921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
60931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    prog)
60941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	compile_deplibs=
60951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	finalize_deplibs=
60961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	alldeplibs=no
60971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	newdlfiles=
60981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	newdlprefiles=
60991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	passes="conv scan dlopen dlpreopen link"
61001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
61011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *)  passes="conv"
61021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
61031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
61041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
61051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for pass in $passes; do
61061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # The preopen pass in lib mode reverses $deplibs; put it back here
61071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # so that -L comes before libs that need it for instance...
61081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$linkmode,$pass" = "lib,link"; then
61091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	## FIXME: Find the place where the list is rebuilt in the wrong
61101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	##        order, and fix it there properly
61111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        tmp_deplibs=
61121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for deplib in $deplibs; do
61131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_deplibs="$deplib $tmp_deplibs"
61141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
61151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	deplibs="$tmp_deplibs"
61161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
61171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
61181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$linkmode,$pass" = "lib,link" ||
61191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 test "$linkmode,$pass" = "prog,scan"; then
61201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libs="$deplibs"
61211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	deplibs=
61221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
61231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$linkmode" = prog; then
61241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $pass in
61251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlopen) libs="$dlfiles" ;;
61261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlpreopen) libs="$dlprefiles" ;;
61271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
61281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
61291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
61301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$linkmode,$pass" = "lib,dlpreopen"; then
61311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Collect and forward deplibs of preopened libtool libs
61321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for lib in $dlprefiles; do
61331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Ignore non-libtool-libs
61341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dependency_libs=
61351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_resolve_sysroot "$lib"
61361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $lib in
61371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.la)	func_source "$func_resolve_sysroot_result" ;;
61381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
61391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
61401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Collect preopened libtool deplibs, except any this library
61411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # has declared as weak libs
61421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for deplib in $dependency_libs; do
61431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_basename "$deplib"
61441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck            deplib_base=$func_basename_result
61451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $weak_libs " in
61461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $deplib_base "*) ;;
61471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append deplibs " $deplib" ;;
61481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
61491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
61501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
61511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libs="$dlprefiles"
61521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
61531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$pass" = dlopen; then
61541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Collect dlpreopened libraries
61551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	save_deplibs="$deplibs"
61561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	deplibs=
61571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
61581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
61591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for deplib in $libs; do
61601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	lib=
61611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	found=no
61621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $deplib in
61631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \
61641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*)
61651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode,$pass" = "prog,link"; then
61661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_deplibs="$deplib $compile_deplibs"
61671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_deplibs="$deplib $finalize_deplibs"
61681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
61691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append compiler_flags " $deplib"
61701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkmode" = lib ; then
61711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case "$new_inherited_linker_flags " in
61721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    *" $deplib "*) ;;
61731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    * ) func_append new_inherited_linker_flags " $deplib" ;;
61741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
61751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
61761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
61771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
61781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
61791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-l*)
61801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode" != lib && test "$linkmode" != prog; then
61811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "\`-l' is ignored for archives/objects"
61821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
61831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
61841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_stripname '-l' '' "$deplib"
61851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  name=$func_stripname_result
61861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode" = lib; then
61871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
61881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
61891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
61901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
61911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for searchdir in $searchdirs; do
61921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for search_ext in .la $std_shrext .so .a; do
61931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Search the libtool library
61941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      lib="$searchdir/lib${name}${search_ext}"
61951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -f "$lib"; then
61961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test "$search_ext" = ".la"; then
61971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  found=yes
61981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
61991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  found=no
62001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
62011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		break 2
62021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
62031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
62041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
62051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$found" != yes; then
62061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # deplib doesn't seem to be a libtool library
62071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkmode,$pass" = "prog,link"; then
62081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      compile_deplibs="$deplib $compile_deplibs"
62091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      finalize_deplibs="$deplib $finalize_deplibs"
62101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
62111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      deplibs="$deplib $deplibs"
62121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
62131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
62141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
62151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else # deplib is a libtool library
62161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
62171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # We need to do some special things here, and not later.
62181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
62191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case " $predeps $postdeps " in
62201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $deplib "*)
62211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if func_lalib_p "$lib"; then
62221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  library_names=
62231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  old_library=
62241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_source "$lib"
62251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  for l in $old_library $library_names; do
62261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    ll="$l"
62271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  done
62281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test "X$ll" = "X$old_library" ; then # only static version available
62291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    found=no
62301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_dirname "$lib" "" "."
62311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    ladir="$func_dirname_result"
62321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    lib=$ladir/$old_library
62331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    if test "$linkmode,$pass" = "prog,link"; then
62341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      compile_deplibs="$deplib $compile_deplibs"
62351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      finalize_deplibs="$deplib $finalize_deplibs"
62361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    else
62371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      deplibs="$deplib $deplibs"
62381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
62391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    fi
62401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    continue
62411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
62421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
62431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
62441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) ;;
62451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
62461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
62471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
62481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;; # -l
62491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.ltframework)
62501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode,$pass" = "prog,link"; then
62511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_deplibs="$deplib $compile_deplibs"
62521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_deplibs="$deplib $finalize_deplibs"
62531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
62541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$deplib $deplibs"
62551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkmode" = lib ; then
62561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case "$new_inherited_linker_flags " in
62571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    *" $deplib "*) ;;
62581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    * ) func_append new_inherited_linker_flags " $deplib" ;;
62591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
62601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
62611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
62621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
62631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
62641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-L*)
62651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $linkmode in
62661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lib)
62671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$deplib $deplibs"
62681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "$pass" = conv && continue
62691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdependency_libs="$deplib $newdependency_libs"
62701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '-L' '' "$deplib"
62711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_resolve_sysroot "$func_stripname_result"
62721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append newlib_search_path " $func_resolve_sysroot_result"
62731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
62741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prog)
62751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$pass" = conv; then
62761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      deplibs="$deplib $deplibs"
62771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      continue
62781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
62791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$pass" = scan; then
62801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      deplibs="$deplib $deplibs"
62811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
62821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      compile_deplibs="$deplib $compile_deplibs"
62831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      finalize_deplibs="$deplib $finalize_deplibs"
62841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
62851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '-L' '' "$deplib"
62861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_resolve_sysroot "$func_stripname_result"
62871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append newlib_search_path " $func_resolve_sysroot_result"
62881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
62891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
62901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "\`-L' is ignored for archives/objects"
62911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
62921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac # linkmode
62931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
62941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;; # -L
62951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-R*)
62961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$pass" = link; then
62971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '-R' '' "$deplib"
62981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_resolve_sysroot "$func_stripname_result"
62991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dir=$func_resolve_sysroot_result
63001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Make sure the xrpath contains only unique directories.
63011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$xrpath " in
63021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $dir "*) ;;
63031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append xrpath " $dir" ;;
63041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
63051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
63061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  deplibs="$deplib $deplibs"
63071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
63081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
63091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.la)
63101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_resolve_sysroot "$deplib"
63111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lib=$func_resolve_sysroot_result
63121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
63131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.$libext)
63141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$pass" = conv; then
63151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$deplib $deplibs"
63161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
63171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
63181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $linkmode in
63191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lib)
63201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Linking convenience modules into shared libraries is allowed,
63211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # but linking other static libraries is non-portable.
63221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $dlpreconveniencelibs " in
63231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $deplib "*) ;;
63241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
63251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      valid_a_lib=no
63261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $deplibs_check_method in
63271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		match_pattern*)
63281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  set dummy $deplibs_check_method; shift
63291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
63301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \
63311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    | $EGREP "$match_pattern_regex" > /dev/null; then
63321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    valid_a_lib=yes
63331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
63341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
63351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		pass_all)
63361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  valid_a_lib=yes
63371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
63381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
63391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$valid_a_lib" != yes; then
63401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo
63411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
63421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** I have the capability to make that library automatically link in when"
63431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** you link to this library.  But I can only do this if you have a"
63441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** shared version of the library, which you do not appear to have"
63451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** because the file extensions .$libext of this argument makes me believe"
63461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** that it is just a static archive that I should not use here."
63471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
63481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo
63491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$ECHO "*** Warning: Linking the shared library $output against the"
63501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$ECHO "*** static library $deplib is not portable!"
63511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		deplibs="$deplib $deplibs"
63521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
63531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
63541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
63551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
63561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
63571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  prog)
63581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$pass" != link; then
63591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      deplibs="$deplib $deplibs"
63601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
63611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      compile_deplibs="$deplib $compile_deplibs"
63621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      finalize_deplibs="$deplib $finalize_deplibs"
63631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
63641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
63651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
63661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac # linkmode
63671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;; # *.$libext
63681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*.lo | *.$objext)
63691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$pass" = conv; then
63701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$deplib $deplibs"
63711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  elif test "$linkmode" = prog; then
63721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
63731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # If there is no dlopen support or we're linking statically,
63741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # we need to preload.
63751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append newdlprefiles " $deplib"
63761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      compile_deplibs="$deplib $compile_deplibs"
63771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      finalize_deplibs="$deplib $finalize_deplibs"
63781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
63791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append newdlfiles " $deplib"
63801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
63811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
63821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
63831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
63841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	%DEPLIBS%)
63851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  alldeplibs=yes
63861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
63871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
63881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac # case $deplib
63891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
63901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$found" = yes || test -f "$lib"; then :
63911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
63921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
63931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
63941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
63951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Check to see that this really is a libtool archive.
63961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_lalib_unsafe_p "$lib" \
63971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  || func_fatal_error "\`$lib' is not a valid libtool archive"
63981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
63991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_dirname "$lib" "" "."
64001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	ladir="$func_dirname_result"
64011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlname=
64031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlopen=
64041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dlpreopen=
64051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libdir=
64061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	library_names=
64071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	old_library=
64081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	inherited_linker_flags=
64091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If the library was installed with an old release of libtool,
64101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# it will not redefine variables installed, or shouldnotlink
64111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	installed=yes
64121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	shouldnotlink=no
64131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	avoidtemprpath=
64141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Read the .la file
64171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_source "$lib"
64181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Convert "-framework foo" to "foo.ltframework"
64201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$inherited_linker_flags"; then
64211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'`
64221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
64231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $new_inherited_linker_flags " in
64241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $tmp_inherited_linker_flag "*) ;;
64251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";;
64261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
64271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
64281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
64291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
64301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$linkmode,$pass" = "lib,link" ||
64311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   test "$linkmode,$pass" = "prog,scan" ||
64321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
64331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$dlopen" && func_append dlfiles " $dlopen"
64341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen"
64351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
64361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$pass" = conv; then
64381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Only check for convenience libraries
64391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  deplibs="$lib $deplibs"
64401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$libdir"; then
64411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$old_library"; then
64421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_fatal_error "cannot find name of link library for \`$lib'"
64431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
64441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # It is a libtool convenience library, so add in its objects.
64451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append convenience " $ladir/$objdir/$old_library"
64461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append old_convenience " $ladir/$objdir/$old_library"
64471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
64481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "\`$lib' is not a convenience library"
64491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
64501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_libs=
64511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for deplib in $dependency_libs; do
64521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$deplib $deplibs"
64531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if $opt_preserve_dup_deps ; then
64541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$tmp_libs " in
64551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
64561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
64571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
64581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append tmp_libs " $deplib"
64591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
64601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
64611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # $pass = conv
64621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Get the name of the library we link against.
64651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	linklib=
64661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$old_library" &&
64671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   { test "$prefer_static_libs" = yes ||
64681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$prefer_static_libs,$installed" = "built,no"; }; then
64691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  linklib=$old_library
64701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
64711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for l in $old_library $library_names; do
64721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    linklib="$l"
64731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
64741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
64751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$linklib"; then
64761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "cannot find name of link library for \`$lib'"
64771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
64781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# This library was specified with -dlopen.
64801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$pass" = dlopen; then
64811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$libdir"; then
64821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
64831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
64841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$dlname" ||
64851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$dlopen_support" != yes ||
64861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$build_libtool_libs" = no; then
64871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # If there is no dlname, no dlopen support or we're linking
64881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # statically, we need to preload.  We also need to preload any
64891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # dependent libraries so libltdl's deplib preloader doesn't
64901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # bomb out in the load deplibs phase.
64911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append dlprefiles " $lib $dependency_libs"
64921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
64931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append newdlfiles " $lib"
64941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
64951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
64961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # $pass = dlopen
64971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
64981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# We need an absolute path.
64991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $ladir in
65001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
65011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
65021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  abs_ladir=`cd "$ladir" && pwd`
65031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$abs_ladir"; then
65041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "cannot determine absolute directory name of \`$ladir'"
65051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "passing it literally to the linker, although it might fail"
65061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    abs_ladir="$ladir"
65071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
65081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
65091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
65101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_basename "$lib"
65111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	laname="$func_basename_result"
65121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
65131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Find the relevant object directory and library name.
65141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "X$installed" = Xyes; then
65151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
65161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "library \`$lib' was moved."
65171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dir="$ladir"
65181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    absdir="$abs_ladir"
65191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    libdir="$abs_ladir"
65201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
65211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dir="$lt_sysroot$libdir"
65221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    absdir="$lt_sysroot$libdir"
65231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
65241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
65251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
65261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
65271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dir="$ladir"
65281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    absdir="$abs_ladir"
65291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Remove this search path later
65301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append notinst_path " $abs_ladir"
65311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
65321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dir="$ladir/$objdir"
65331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    absdir="$abs_ladir/$objdir"
65341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Remove this search path later
65351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append notinst_path " $abs_ladir"
65361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
65371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # $installed = yes
65381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname 'lib' '.la' "$laname"
65391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	name=$func_stripname_result
65401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
65411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# This library was specified with -dlpreopen.
65421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$pass" = dlpreopen; then
65431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$libdir" && test "$linkmode" = prog; then
65441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
65451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
65461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$host" in
65471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # special handling for platforms with PE-DLLs.
65481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *cygwin* | *mingw* | *cegcc* )
65491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Linker will automatically link against shared library if both
65501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # static and shared are present.  Therefore, ensure we extract
65511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # symbols from the import library if a shared library is present
65521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # (otherwise, the dlopen module name will be incorrect).  We do
65531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # this by putting the import library name into $newdlprefiles.
65541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # We recover the dlopen module name by 'saving' the la file
65551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # name in a special purpose variable, and (later) extracting the
65561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # dlname from the la file.
65571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$dlname"; then
65581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_tr_sh "$dir/$linklib"
65591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname"
65601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_append newdlprefiles " $dir/$linklib"
65611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
65621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_append newdlprefiles " $dir/$old_library"
65631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        # Keep a list of preopened convenience libraries to check
65641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        # that they are being used correctly in the link pass.
65651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        test -z "$libdir" && \
65661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          func_append dlpreconveniencelibs " $dir/$old_library"
65671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
65681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
65691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    * )
65701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Prefer using a static library (so that no silly _DYNAMIC symbols
65711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # are required to link).
65721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$old_library"; then
65731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_append newdlprefiles " $dir/$old_library"
65741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        # Keep a list of preopened convenience libraries to check
65751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        # that they are being used correctly in the link pass.
65761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        test -z "$libdir" && \
65771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          func_append dlpreconveniencelibs " $dir/$old_library"
65781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Otherwise, use the dlname, so that lt_dlopen finds it.
65791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      elif test -n "$dlname"; then
65801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_append newdlprefiles " $dir/$dlname"
65811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
65821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_append newdlprefiles " $dir/$linklib"
65831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
65841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
65851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
65861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # $pass = dlpreopen
65871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
65881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$libdir"; then
65891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Link the convenience library
65901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode" = lib; then
65911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$dir/$old_library $deplibs"
65921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  elif test "$linkmode,$pass" = "prog,link"; then
65931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_deplibs="$dir/$old_library $compile_deplibs"
65941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
65951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
65961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$lib $deplibs" # used for prog,scan pass
65971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
65981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
65991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
66001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$linkmode" = prog && test "$pass" != link; then
66031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append newlib_search_path " $ladir"
66041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  deplibs="$lib $deplibs"
66051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  linkalldeplibs=no
66071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
66081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$build_libtool_libs" = no; then
66091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    linkalldeplibs=yes
66101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
66111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_libs=
66131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for deplib in $dependency_libs; do
66141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $deplib in
66151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -L*) func_stripname '-L' '' "$deplib"
66161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	         func_resolve_sysroot "$func_stripname_result"
66171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	         func_append newlib_search_path " $func_resolve_sysroot_result"
66181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 ;;
66191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
66201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Need to link against all dependency_libs?
66211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkalldeplibs" = yes; then
66221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      deplibs="$deplib $deplibs"
66231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
66241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Need to hardcode shared library paths
66251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # or/and link against static libraries
66261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      newdependency_libs="$deplib $newdependency_libs"
66271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
66281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if $opt_preserve_dup_deps ; then
66291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$tmp_libs " in
66301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $deplib "*) func_append specialdeplibs " $deplib" ;;
66311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
66321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
66331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append tmp_libs " $deplib"
66341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done # for deplib
66351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  continue
66361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # $linkmode = prog...
66371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$linkmode,$pass" = "prog,link"; then
66391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$library_names" &&
66401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     { { test "$prefer_static_libs" = no ||
66411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
66421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       test -z "$old_library"; }; then
66431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # We need to hardcode the library path
66441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
66451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Make sure the rpath contains only unique directories.
66461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$temp_rpath:" in
66471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *"$absdir:"*) ;;
66481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append temp_rpath "$absdir:" ;;
66491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
66501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
66511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Hardcode the library path.
66531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Skip directories that are in the system default run-time
66541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # search path.
66551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $sys_lib_dlsearch_path " in
66561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $absdir "*) ;;
66571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
66581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$compile_rpath " in
66591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $absdir "*) ;;
66601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append compile_rpath " $absdir" ;;
66611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
66621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
66631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
66641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $sys_lib_dlsearch_path " in
66651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $libdir "*) ;;
66661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
66671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$finalize_rpath " in
66681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $libdir "*) ;;
66691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append finalize_rpath " $libdir" ;;
66701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
66711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
66721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
66731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi # $linkmode,$pass = prog,link...
66741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$alldeplibs" = yes &&
66761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     { test "$deplibs_check_method" = pass_all ||
66771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       { test "$build_libtool_libs" = yes &&
66781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 test -n "$library_names"; }; }; then
66791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # We only need to search for static libraries
66801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    continue
66811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
66821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
66831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
66841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	link_static=no # Whether the deplib will be linked statically
66851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	use_static_libs=$prefer_static_libs
66861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$use_static_libs" = built && test "$installed" = yes; then
66871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  use_static_libs=no
66881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
66891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$library_names" &&
66901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
66911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host in
66921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *cygwin* | *mingw* | *cegcc*)
66931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # No point in relinking DLLs because paths are not encoded
66941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append notinst_deplibs " $lib"
66951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      need_relink=no
66961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
66971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
66981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$installed" = no; then
66991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append notinst_deplibs " $lib"
67001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      need_relink=yes
67011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
67021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
67031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
67041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # This is a shared library
67051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
67061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Warn about portability, can't link against -module's on some
67071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # systems (darwin).  Don't bleat about dlopened modules though!
67081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dlopenmodule=""
67091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for dlpremoduletest in $dlprefiles; do
67101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "X$dlpremoduletest" = "X$lib"; then
67111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      dlopenmodule="$dlpremoduletest"
67121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      break
67131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
67141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
67151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
67161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo
67171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkmode" = prog; then
67181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
67191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
67201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
67211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
67221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $ECHO "*** $linklib is not portable!"
67231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
67241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode" = lib &&
67251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$hardcode_into_libs" = yes; then
67261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Hardcode the library path.
67271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Skip directories that are in the system default run-time
67281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # search path.
67291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $sys_lib_dlsearch_path " in
67301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $absdir "*) ;;
67311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
67321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$compile_rpath " in
67331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $absdir "*) ;;
67341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append compile_rpath " $absdir" ;;
67351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
67361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
67371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
67381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $sys_lib_dlsearch_path " in
67391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $libdir "*) ;;
67401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
67411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$finalize_rpath " in
67421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $libdir "*) ;;
67431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append finalize_rpath " $libdir" ;;
67441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
67451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
67461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
67471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
67481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
67491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$old_archive_from_expsyms_cmds"; then
67501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # figure out the soname
67511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    set dummy $library_names
67521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    shift
67531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    realname="$1"
67541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    shift
67551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    libname=`eval "\\$ECHO \"$libname_spec\""`
67561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # use dlname if we got it. it's perfectly good, no?
67571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$dlname"; then
67581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      soname="$dlname"
67591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    elif test -n "$soname_spec"; then
67601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # bleh windows
67611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $host in
67621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *cygwin* | mingw* | *cegcc*)
67631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_arith $current - $age
67641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		major=$func_arith_result
67651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		versuffix="-$major"
67661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
67671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
67681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval soname=\"$soname_spec\"
67691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
67701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      soname="$realname"
67711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
67721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
67731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Make a new name for the extract_expsyms_cmds to use
67741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    soroot="$soname"
67751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_basename "$soroot"
67761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    soname="$func_basename_result"
67771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname 'lib' '.dll' "$soname"
67781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newlib=libimp-$func_stripname_result.a
67791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
67801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # If the library has no export list, then create one now
67811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -f "$output_objdir/$soname-def"; then :
67821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
67831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_verbose "extracting exported symbol list from \`$soname'"
67841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
67851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
67861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
67871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Create $newlib
67881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -f "$output_objdir/$newlib"; then :; else
67891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_verbose "generating import library for \`$soname'"
67901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
67911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
67921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # make sure the library variables are pointing to the new library
67931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dir=$output_objdir
67941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    linklib=$newlib
67951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi # test -n "$old_archive_from_expsyms_cmds"
67961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
67971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode" = prog || test "$opt_mode" != relink; then
67981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    add_shlibpath=
67991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    add_dir=
68001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    add=
68011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    lib_linked=yes
68021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $hardcode_action in
68031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    immediate | unsupported)
68041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$hardcode_direct" = no; then
68051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="$dir/$linklib"
68061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case $host in
68071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
68081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
68091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
68101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    *-*-unixware7*) add_dir="-L$dir" ;;
68111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *-*-darwin* )
68121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    # if the lib is a (non-dlopened) module then we can not
68131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    # link against it, someone is ignoring the earlier warnings
68141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    if /usr/bin/file -L $add 2> /dev/null |
68151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			 $GREP ": [^:]* bundle" >/dev/null ; then
68161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      if test "X$dlopenmodule" != "X$lib"; then
68171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
68181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			if test -z "$old_library" ; then
68191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			  echo
68201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			  echo "*** And there doesn't seem to be a static archive available"
68211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			  echo "*** The link will probably fail, sorry"
68221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			else
68231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			  add="$dir/$old_library"
68241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			fi
68251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      elif test -n "$old_library"; then
68261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			add="$dir/$old_library"
68271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      fi
68281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    fi
68291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
68301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      elif test "$hardcode_minus_L" = no; then
68311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case $host in
68321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*-*-sunos*) add_shlibpath="$dir" ;;
68331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
68341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add_dir="-L$dir"
68351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="-l$name"
68361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      elif test "$hardcode_shlibpath_var" = no; then
68371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add_shlibpath="$dir"
68381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="-l$name"
68391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
68401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		lib_linked=no
68411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
68421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
68431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink)
68441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$hardcode_direct" = yes &&
68451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	         test "$hardcode_direct_absolute" = no; then
68461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="$dir/$linklib"
68471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      elif test "$hardcode_minus_L" = yes; then
68481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add_dir="-L$absdir"
68491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Try looking first in the location we're being installed to.
68501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -n "$inst_prefix_dir"; then
68511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  case $libdir in
68521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    [\\/]*)
68531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append add_dir " -L$inst_prefix_dir$libdir"
68541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      ;;
68551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  esac
68561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
68571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="-l$name"
68581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      elif test "$hardcode_shlibpath_var" = yes; then
68591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add_shlibpath="$dir"
68601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="-l$name"
68611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
68621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		lib_linked=no
68631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
68641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
68651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) lib_linked=no ;;
68661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
68671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
68681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$lib_linked" != yes; then
68691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_fatal_configuration "unsupported hardcode properties"
68701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
68711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
68721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$add_shlibpath"; then
68731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case :$compile_shlibpath: in
68741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *":$add_shlibpath:"*) ;;
68751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append compile_shlibpath "$add_shlibpath:" ;;
68761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
68771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
68781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkmode" = prog; then
68791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
68801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
68811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
68821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
68831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add" && deplibs="$add $deplibs"
68841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$hardcode_direct" != yes &&
68851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 test "$hardcode_minus_L" != yes &&
68861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 test "$hardcode_shlibpath_var" = yes; then
68871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case :$finalize_shlibpath: in
68881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*":$libdir:"*) ;;
68891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*) func_append finalize_shlibpath "$libdir:" ;;
68901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
68911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
68921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
68931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
68941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
68951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$linkmode" = prog || test "$opt_mode" = relink; then
68961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    add_shlibpath=
68971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    add_dir=
68981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    add=
68991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Finalize command for both is simple: just hardcode it.
69001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$hardcode_direct" = yes &&
69011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       test "$hardcode_direct_absolute" = no; then
69021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      add="$libdir/$linklib"
69031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    elif test "$hardcode_minus_L" = yes; then
69041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      add_dir="-L$libdir"
69051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      add="-l$name"
69061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    elif test "$hardcode_shlibpath_var" = yes; then
69071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case :$finalize_shlibpath: in
69081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *":$libdir:"*) ;;
69091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append finalize_shlibpath "$libdir:" ;;
69101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
69111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      add="-l$name"
69121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    elif test "$hardcode_automatic" = yes; then
69131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$inst_prefix_dir" &&
69141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
69151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="$inst_prefix_dir$libdir/$linklib"
69161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
69171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		add="$libdir/$linklib"
69181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
69191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
69201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # We cannot seem to hardcode it, guess we'll fake it.
69211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      add_dir="-L$libdir"
69221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Try looking first in the location we're being installed to.
69231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$inst_prefix_dir"; then
69241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case $libdir in
69251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  [\\/]*)
69261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_append add_dir " -L$inst_prefix_dir$libdir"
69271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    ;;
69281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
69291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
69301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      add="-l$name"
69311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
69321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
69331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$linkmode" = prog; then
69341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
69351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
69361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
69371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
69381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$add" && deplibs="$add $deplibs"
69391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
69401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
69411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test "$linkmode" = prog; then
69421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Here we assume that one of hardcode_direct or hardcode_minus_L
69431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # is not unsupported.  This is valid on all known static and
69441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # shared platforms.
69451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$hardcode_direct" != unsupported; then
69461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test -n "$old_library" && linklib="$old_library"
69471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_deplibs="$dir/$linklib $compile_deplibs"
69481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
69491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
69501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    compile_deplibs="-l$name -L$dir $compile_deplibs"
69511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
69521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
69531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test "$build_libtool_libs" = yes; then
69541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Not a shared library
69551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$deplibs_check_method" != pass_all; then
69561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # We're trying link a shared library against a static one
69571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # but the system doesn't support it.
69581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
69591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Just print a warning and add the library to dependency_libs so
69601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # that the program can be linked against the static library.
69611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo
69621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
69631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** I have the capability to make that library automatically link in when"
69641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** you link to this library.  But I can only do this if you have a"
69651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** shared version of the library, which you do not appear to have."
69661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$module" = yes; then
69671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** But as you try to build a module library, libtool will still create "
69681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** a static module, that should work as long as the dlopening application"
69691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** is linked with the -dlopen flag to resolve symbols at runtime."
69701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -z "$global_symbol_pipe"; then
69711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo
69721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** However, this would only work if libtool was able to extract symbol"
69731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
69741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** not find such a program.  So, this module is probably useless."
69751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** \`nm' from GNU binutils and a full rebuild may help."
69761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
69771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$build_old_libs" = no; then
69781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		build_libtool_libs=module
69791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		build_old_libs=yes
69801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
69811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		build_libtool_libs=no
69821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
69831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
69841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
69851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    deplibs="$dir/$old_library $deplibs"
69861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    link_static=yes
69871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
69881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # link shared/static library?
69891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
69901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$linkmode" = lib; then
69911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$dependency_libs" &&
69921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     { test "$hardcode_into_libs" != yes ||
69931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       test "$build_old_libs" = yes ||
69941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       test "$link_static" = yes; }; then
69951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Extract -R from dependency_libs
69961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    temp_deplibs=
69971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for libdir in $dependency_libs; do
69981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $libdir in
69991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      -R*) func_stripname '-R' '' "$libdir"
70001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	           temp_xrpath=$func_stripname_result
70011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   case " $xrpath " in
70021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   *" $temp_xrpath "*) ;;
70031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   *) func_append xrpath " $temp_xrpath";;
70041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   esac;;
70051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append temp_deplibs " $libdir";;
70061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
70071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
70081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dependency_libs="$temp_deplibs"
70091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
70101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
70111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append newlib_search_path " $absdir"
70121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Link against this library
70131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
70141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # ... and its dependency_libs
70151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_libs=
70161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for deplib in $dependency_libs; do
70171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdependency_libs="$deplib $newdependency_libs"
70181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $deplib in
70191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck              -L*) func_stripname '-L' '' "$deplib"
70201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                   func_resolve_sysroot "$func_stripname_result";;
70211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck              *) func_resolve_sysroot "$deplib" ;;
70221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck            esac
70231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if $opt_preserve_dup_deps ; then
70241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$tmp_libs " in
70251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $func_resolve_sysroot_result "*)
70261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                func_append specialdeplibs " $func_resolve_sysroot_result" ;;
70271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
70281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
70291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append tmp_libs " $func_resolve_sysroot_result"
70301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
70311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
70321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$link_all_deplibs" != no; then
70331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Add the search paths of all dependency libraries
70341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for deplib in $dependency_libs; do
70351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      path=
70361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $deplib in
70371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      -L*) path="$deplib" ;;
70381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *.la)
70391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_resolve_sysroot "$deplib"
70401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        deplib=$func_resolve_sysroot_result
70411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_dirname "$deplib" "" "."
70421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		dir=$func_dirname_result
70431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# We need an absolute path.
70441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case $dir in
70451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
70461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*)
70471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  absdir=`cd "$dir" && pwd`
70481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test -z "$absdir"; then
70491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_warning "cannot determine absolute directory name of \`$dir'"
70501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    absdir="$dir"
70511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
70521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
70531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
70541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if $GREP "^installed=no" $deplib > /dev/null; then
70551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case $host in
70561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*-*-darwin*)
70571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  depdepl=
70581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
70591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test -n "$deplibrary_names" ; then
70601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    for tmp in $deplibrary_names ; do
70611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      depdepl=$tmp
70621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    done
70631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    if test -f "$absdir/$objdir/$depdepl" ; then
70641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      depdepl="$absdir/$objdir/$depdepl"
70651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
70661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                      if test -z "$darwin_install_name"; then
70671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
70681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck                      fi
70691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
70701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}"
70711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      path=
70721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    fi
70731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
70741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
70751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*)
70761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  path="-L$absdir/$objdir"
70771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
70781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
70791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
70801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
70811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  test -z "$libdir" && \
70821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_fatal_error "\`$deplib' is not a valid libtool archive"
70831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  test "$absdir" != "$libdir" && \
70841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_warning "\`$deplib' seems to be moved"
70851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
70861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  path="-L$absdir"
70871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
70881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
70891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
70901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case " $deplibs " in
70911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $path "*) ;;
70921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) deplibs="$path $deplibs" ;;
70931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
70941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
70951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi # link_all_deplibs != no
70961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi # linkmode = lib
70971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done # for deplib in $libs
70981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$pass" = link; then
70991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$linkmode" = "prog"; then
71001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
71011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
71021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
71031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
71041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
71051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
71061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dependency_libs="$newdependency_libs"
71071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$pass" = dlpreopen; then
71081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Link the dlpreopened libraries before other libraries
71091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for deplib in $save_deplibs; do
71101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  deplibs="$deplib $deplibs"
71111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
71121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
71131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$pass" != dlopen; then
71141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$pass" != conv; then
71151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Make sure lib_search_path contains only unique directories.
71161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  lib_search_path=
71171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for dir in $newlib_search_path; do
71181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case "$lib_search_path " in
71191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $dir "*) ;;
71201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append lib_search_path " $dir" ;;
71211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
71221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
71231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  newlib_search_path=
71241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
71251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
71261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$linkmode,$pass" != "prog,link"; then
71271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  vars="deplibs"
71281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
71291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  vars="compile_deplibs finalize_deplibs"
71301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
71311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for var in $vars dependency_libs; do
71321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add libraries to $var in reverse order
71331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval tmp_libs=\"\$$var\"
71341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  new_libs=
71351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for deplib in $tmp_libs; do
71361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # FIXME: Pedantically, this is the right thing to do, so
71371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    #        that some nasty dependency loop isn't accidentally
71381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    #        broken:
71391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    #new_libs="$deplib $new_libs"
71401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Pragmatically, this seems to cause very few problems in
71411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # practice:
71421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $deplib in
71431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -L*) new_libs="$deplib $new_libs" ;;
71441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -R*) ;;
71451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
71461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # And here is the reason: when a library appears more
71471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # than once as an explicit dependence of a library, or
71481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # is implicitly linked in more than once by the
71491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # compiler, it is considered special, and multiple
71501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # occurrences thereof are not removed.  Compare this
71511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # with having the same library being listed as a
71521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # dependency of multiple other libraries: in this case,
71531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # we know (pedantically, we assume) the library does not
71541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # need to be listed more than once, so we keep only the
71551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # last copy.  This is not always right, but it is rare
71561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # enough that we require users that really mean to play
71571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # such unportable linking tricks to link the library
71581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # using -Wl,-lname, so that libtool does not consider it
71591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # for duplicate removal.
71601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case " $specialdeplibs " in
71611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
71621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *)
71631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case " $new_libs " in
71641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*" $deplib "*) ;;
71651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*) new_libs="$deplib $new_libs" ;;
71661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
71671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
71681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
71691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
71701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
71711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
71721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_libs=
71731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for deplib in $new_libs; do
71741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $deplib in
71751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -L*)
71761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case " $tmp_libs " in
71771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $deplib "*) ;;
71781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append tmp_libs " $deplib" ;;
71791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
71801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
71811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append tmp_libs " $deplib" ;;
71821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
71831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
71841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval $var=\"$tmp_libs\"
71851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done # for var
71861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
71871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Last step: remove runtime libs from dependency_libs
71881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # (they stay in deplibs)
71891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      tmp_libs=
71901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for i in $dependency_libs ; do
71911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case " $predeps $postdeps $compiler_lib_search_path " in
71921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" $i "*)
71931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  i=""
71941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
71951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
71961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$i" ; then
71971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append tmp_libs " $i"
71981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
71991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
72001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dependency_libs=$tmp_libs
72011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done # for pass
72021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$linkmode" = prog; then
72031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dlfiles="$newdlfiles"
72041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
72051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    if test "$linkmode" = prog || test "$linkmode" = lib; then
72061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dlprefiles="$newdlprefiles"
72071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    fi
72081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $linkmode in
72101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    oldlib)
72111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
72121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-dlopen' is ignored for archives"
72131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
72141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case " $deplibs" in
72161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *\ -l* | *\ -L*)
72171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-l' and \`-L' are ignored for archives" ;;
72181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
72191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$rpath" && \
72211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-rpath' is ignored for archives"
72221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$xrpath" && \
72241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-R' is ignored for archives"
72251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$vinfo" && \
72271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-version-info/-version-number' is ignored for archives"
72281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$release" && \
72301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-release' is ignored for archives"
72311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$export_symbols$export_symbols_regex" && \
72331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-export-symbols' is ignored for archives"
72341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now set the variables for building old libraries.
72361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      build_libtool_libs=no
72371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      oldlibs="$output"
72381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append objs "$old_deplibs"
72391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
72401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    lib)
72421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Make sure we only generate libraries of the form `libNAME.la'.
72431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $outputname in
72441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      lib*)
72451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_stripname 'lib' '.la' "$outputname"
72461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	name=$func_stripname_result
72471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval shared_ext=\"$shrext_cmds\"
72481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval libname=\"$libname_spec\"
72491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
72501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
72511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test "$module" = no && \
72521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
72531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$need_lib_prefix" != no; then
72551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add the "lib" prefix for modules if required
72561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_stripname '' '.la' "$outputname"
72571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  name=$func_stripname_result
72581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval shared_ext=\"$shrext_cmds\"
72591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval libname=\"$libname_spec\"
72601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
72611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_stripname '' '.la' "$outputname"
72621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  libname=$func_stripname_result
72631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
72641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
72651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
72661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$objs"; then
72681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$deplibs_check_method" != pass_all; then
72691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
72701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
72711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo
72721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
72731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO "*** objects $objs is not portable!"
72741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append libobjs " $objs"
72751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
72761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
72771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$dlself" != no && \
72791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-dlopen self' is ignored for libtool libraries"
72801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      set dummy $rpath
72821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      shift
72831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$#" -gt 1 && \
72841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "ignoring multiple \`-rpath's for a libtool library"
72851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      install_libdir="$1"
72871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
72881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      oldlibs=
72891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -z "$rpath"; then
72901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$build_libtool_libs" = yes; then
72911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Building a libtool convenience library.
72921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Some compilers have problems with a `.al' extension so
72931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # convenience libraries should have the same extension an
72941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # archive normally would.
72951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
72961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  build_libtool_libs=convenience
72971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  build_old_libs=yes
72981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
72991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$vinfo" && \
73011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
73021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$release" && \
73041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "\`-release' is ignored for convenience libraries"
73051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
73061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Parse the version information argument.
73081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	save_ifs="$IFS"; IFS=':'
73091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	set dummy $vinfo 0 0 0
73101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	shift
73111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	IFS="$save_ifs"
73121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$7" && \
73141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_help "too many parameters to \`-version-info'"
73151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# convert absolute version numbers to libtool ages
73171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# this retains compatibility with .la files and attempts
73181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# to make the code below a bit more comprehensible
73191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $vinfo_number in
73211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	yes)
73221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  number_major="$1"
73231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  number_minor="$2"
73241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  number_revision="$3"
73251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  #
73261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # There are really only two kinds -- those that
73271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # use the current revision as the major version
73281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # and those that subtract age and use age as
73291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # a minor version.  But, then there is irix
73301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # which has an extra 1 added just for fun
73311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  #
73321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $version_type in
73331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # correct linux to gnu/linux during the next big refactor
73341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin|linux|osf|windows|none)
73351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $number_major + $number_minor
73361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    current=$func_arith_result
73371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    age="$number_minor"
73381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    revision="$number_revision"
73391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
73401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  freebsd-aout|freebsd-elf|qnx|sunos)
73411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    current="$number_major"
73421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    revision="$number_minor"
73431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    age="0"
73441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
73451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  irix|nonstopux)
73461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $number_major + $number_minor
73471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    current=$func_arith_result
73481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    age="$number_minor"
73491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    revision="$number_minor"
73501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    lt_irix_increment=no
73511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
73521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
73531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
73541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	no)
73551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  current="$1"
73561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  revision="$2"
73571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  age="$3"
73581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
73591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
73601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Check that each of the things are valid numbers.
73621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $current in
73631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	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]) ;;
73641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
73651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_error "CURRENT \`$current' must be a nonnegative integer"
73661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "\`$vinfo' is not valid version information"
73671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
73681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
73691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $revision in
73711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	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]) ;;
73721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
73731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_error "REVISION \`$revision' must be a nonnegative integer"
73741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "\`$vinfo' is not valid version information"
73751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
73761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
73771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $age in
73791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	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]) ;;
73801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
73811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_error "AGE \`$age' must be a nonnegative integer"
73821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "\`$vinfo' is not valid version information"
73831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
73841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
73851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$age" -gt "$current"; then
73871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
73881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "\`$vinfo' is not valid version information"
73891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
73901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Calculate the version variables.
73921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	major=
73931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	versuffix=
73941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	verstring=
73951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $version_type in
73961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	none) ;;
73971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
73981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	darwin)
73991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Like Linux, but with the current version available in
74001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # verstring for coding it into the library header
74011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_arith $current - $age
74021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=.$func_arith_result
74031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix="$major.$age.$revision"
74041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Darwin ld doesn't like 0 for these options...
74051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_arith $current + 1
74061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  minor_current=$func_arith_result
74071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
74081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
74091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	freebsd-aout)
74121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=".$current"
74131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix=".$current.$revision";
74141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	freebsd-elf)
74171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=".$current"
74181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix=".$current"
74191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	irix | nonstopux)
74221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "X$lt_irix_increment" = "Xno"; then
74231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $current - $age
74241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
74251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $current - $age + 1
74261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
74271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=$func_arith_result
74281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $version_type in
74301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    nonstopux) verstring_prefix=nonstopux ;;
74311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)         verstring_prefix=sgi ;;
74321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
74331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  verstring="$verstring_prefix$major.$revision"
74341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add in all the interfaces that we are compatible with.
74361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  loop=$revision
74371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  while test "$loop" -ne 0; do
74381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $revision - $loop
74391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    iface=$func_arith_result
74401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $loop - 1
74411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    loop=$func_arith_result
74421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    verstring="$verstring_prefix$major.$iface:$verstring"
74431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
74441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Before this point, $major must not contain `.'.
74461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=.$major
74471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix="$major.$revision"
74481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	linux) # correct to gnu/linux during the next big refactor
74511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_arith $current - $age
74521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=.$func_arith_result
74531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix="$major.$age.$revision"
74541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	osf)
74571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_arith $current - $age
74581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=.$func_arith_result
74591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix=".$current.$age.$revision"
74601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  verstring="$current.$age.$revision"
74611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add in all the interfaces that we are compatible with.
74631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  loop=$age
74641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  while test "$loop" -ne 0; do
74651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $current - $loop
74661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    iface=$func_arith_result
74671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $loop - 1
74681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    loop=$func_arith_result
74691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    verstring="$verstring:${iface}.0"
74701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
74711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Make executables depend on our current version.
74731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append verstring ":${current}.0"
74741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	qnx)
74771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=".$current"
74781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix=".$current"
74791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	sunos)
74821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=".$current"
74831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix=".$current.$revision"
74841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	windows)
74871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Use '-' rather than '.', since we only want one
74881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # extension on DOS 8.3 filesystems.
74891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_arith $current - $age
74901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=$func_arith_result
74911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix="-$major"
74921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
74951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_configuration "unknown library version type \`$version_type'"
74961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
74971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
74981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
74991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Clear the version info if we defaulted, and they specified a release.
75001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$vinfo" && test -n "$release"; then
75011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=
75021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $version_type in
75031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  darwin)
75041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # we can't check for "0.0" in archive_cmds due to quoting
75051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # problems, so we reset it completely
75061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    verstring=
75071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
75081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
75091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    verstring="0.0"
75101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
75111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
75121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$need_version" = no; then
75131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    versuffix=
75141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
75151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    versuffix=".0.0"
75161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
75171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
75181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Remove version info from name if versioning should be avoided
75201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$avoid_version" = yes && test "$need_version" = no; then
75211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  major=
75221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  versuffix=
75231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  verstring=""
75241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
75251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Check to see if the archive will have undefined symbols.
75271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$allow_undefined" = yes; then
75281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$allow_undefined_flag" = unsupported; then
75291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_warning "undefined symbols not allowed in $host shared libraries"
75301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    build_libtool_libs=no
75311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    build_old_libs=yes
75321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
75331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
75341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Don't allow undefined symbols.
75351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  allow_undefined_flag="$no_undefined_flag"
75361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
75371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
75391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_generate_dlsyms "$libname" "$libname" "yes"
75411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append libobjs " $symfileobj"
75421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "X$libobjs" = "X " && libobjs=
75431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$opt_mode" != relink; then
75451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Remove our outputs, but don't remove object files since they
75461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# may have been created when compiling PIC objects.
75471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	removelist=
75481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	tempremovelist=`$ECHO "$output_objdir/*"`
75491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for p in $tempremovelist; do
75501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $p in
75511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *.$objext | *.gcno)
75521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       ;;
75531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
75541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       if test "X$precious_files_regex" != "X"; then
75551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
75561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 then
75571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   continue
75581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 fi
75591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       fi
75601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       func_append removelist " $p"
75611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	       ;;
75621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) ;;
75631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
75641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
75651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$removelist" && \
75661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval "${RM}r \$removelist"
75671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
75681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now set the variables for building old libraries.
75701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
75711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append oldlibs " $output_objdir/$libname.$libext"
75721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Transform .lo files to .o files.
75741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP`
75751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
75761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Eliminate all temporary directories.
75781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      #for path in $notinst_path; do
75791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      #	lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"`
75801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      #	deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"`
75811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      #	dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"`
75821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      #done
75831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
75841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$xrpath"; then
75851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If the user specified any rpath flags, then add them.
75861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	temp_xrpath=
75871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for libdir in $xrpath; do
75881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_replace_sysroot "$libdir"
75891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append temp_xrpath " -R$func_replace_sysroot_result"
75901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$finalize_rpath " in
75911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $libdir "*) ;;
75921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append finalize_rpath " $libdir" ;;
75931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
75941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
75951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
75961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dependency_libs="$temp_xrpath $dependency_libs"
75971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
75981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
75991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
76001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Make sure dlfiles contains only unique files that won't be dlpreopened
76011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      old_dlfiles="$dlfiles"
76021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dlfiles=
76031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for lib in $old_dlfiles; do
76041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case " $dlprefiles $dlfiles " in
76051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" $lib "*) ;;
76061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) func_append dlfiles " $lib" ;;
76071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
76081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
76091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
76101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Make sure dlprefiles contains only unique files
76111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      old_dlprefiles="$dlprefiles"
76121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dlprefiles=
76131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for lib in $old_dlprefiles; do
76141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case "$dlprefiles " in
76151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" $lib "*) ;;
76161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) func_append dlprefiles " $lib" ;;
76171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
76181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
76191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
76201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$build_libtool_libs" = yes; then
76211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$rpath"; then
76221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host in
76231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*)
76241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # these systems don't actually have a c library (as such)!
76251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-rhapsody* | *-*-darwin1.[012])
76271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Rhapsody C library is in the System framework
76281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append deplibs " System.ltframework"
76291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-netbsd*)
76311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Don't link with libc until the a.out ld.so is fixed.
76321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
76341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Do not include libc due to us having libc/libc_r.
76351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-sco3.2v5* | *-*-sco5v6*)
76371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Causes problems with __ctype
76381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
76401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Compiler inserts libc in the correct place for threads to work
76411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
76431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Add libc to deplibs on all other systems if necessary.
76441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$build_libtool_need_lc" = "yes"; then
76451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append deplibs " -lc"
76461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
76471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
76481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
76491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
76501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
76511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Transform deplibs into only deplibs that can be linked in shared.
76521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	name_save=$name
76531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libname_save=$libname
76541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	release_save=$release
76551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	versuffix_save=$versuffix
76561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	major_save=$major
76571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# I'm not sure if I'm treating the release correctly.  I think
76581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# release should show up in the -l (ie -lgmp5) so we don't want to
76591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# add it in twice.  Is that correct?
76601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	release=""
76611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	versuffix=""
76621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	major=""
76631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	newdeplibs=
76641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	droppeddeps=no
76651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $deplibs_check_method in
76661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	pass_all)
76671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Don't check for shared/static.  Everything works.
76681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # This might be a little naive.  We might want to check
76691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # whether the library exists or not.  But this is on
76701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # osf3 & osf4 and I'm not really sure... Just
76711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # implementing what was already the behavior.
76721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  newdeplibs=$deplibs
76731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
76741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test_compile)
76751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # This code stresses the "libraries are programs" paradigm to its
76761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # limits. Maybe even breaks it.  We compile a program, linking it
76771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # against the deplibs as a proxy for the library.  Then we can check
76781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # whether they linked in statically or dynamically with ldd.
76791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || $RM conftest.c
76801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  cat > conftest.c <<EOF
76811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  int main() { return 0; }
76821176bdada62cabc6ec4b0308a930e83b679d5d36John ReckEOF
76831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || $RM conftest
76841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
76851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ldd_output=`ldd conftest`
76861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for i in $deplibs; do
76871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $i in
76881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      -l*)
76891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_stripname -l '' "$i"
76901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		name=$func_stripname_result
76911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
76921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  case " $predeps $postdeps " in
76931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *" $i "*)
76941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_append newdeplibs " $i"
76951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    i=""
76961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    ;;
76971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  esac
76981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
76991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -n "$i" ; then
77001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  libname=`eval "\\$ECHO \"$libname_spec\""`
77011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
77021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  set dummy $deplib_matches; shift
77031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  deplib_match=$1
77041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
77051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_append newdeplibs " $i"
77061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  else
77071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    droppeddeps=yes
77081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    echo
77091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
77101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    echo "*** I have the capability to make that library automatically link in when"
77111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    echo "*** you link to this library.  But I can only do this if you have a"
77121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    echo "*** shared version of the library, which I believe you do not have"
77131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    echo "*** because a test_compile did reveal that the linker did not use it for"
77141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    echo "*** its dynamic dependency list that programs get resolved with at runtime."
77151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
77161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
77171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
77181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *)
77191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdeplibs " $i"
77201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
77211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
77221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
77231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
77241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Error occurred in the first compile.  Let's try to salvage
77251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # the situation: Compile a separate program for each library.
77261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for i in $deplibs; do
77271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $i in
77281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      -l*)
77291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_stripname -l '' "$i"
77301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		name=$func_stripname_result
77311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$opt_dry_run || $RM conftest
77321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
77331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ldd_output=`ldd conftest`
77341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
77351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    case " $predeps $postdeps " in
77361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    *" $i "*)
77371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append newdeplibs " $i"
77381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      i=""
77391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      ;;
77401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    esac
77411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
77421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test -n "$i" ; then
77431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    libname=`eval "\\$ECHO \"$libname_spec\""`
77441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
77451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    set dummy $deplib_matches; shift
77461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    deplib_match=$1
77471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
77481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append newdeplibs " $i"
77491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    else
77501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      droppeddeps=yes
77511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      echo
77521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
77531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      echo "*** I have the capability to make that library automatically link in when"
77541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      echo "*** you link to this library.  But I can only do this if you have a"
77551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      echo "*** shared version of the library, which you do not appear to have"
77561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      echo "*** because a test_compile did reveal that the linker did not use this one"
77571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      echo "*** as a dynamic dependency that programs can get resolved with at runtime."
77581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    fi
77591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
77601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
77611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  droppeddeps=yes
77621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  echo
77631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
77641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  echo "*** make it link in!  You will probably need to install it or some"
77651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  echo "*** library that it depends on before this library will be fully"
77661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  echo "*** functional.  Installing it before continuing would be even better."
77671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
77681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
77691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *)
77701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdeplibs " $i"
77711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
77721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
77731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
77741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
77751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
77761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	file_magic*)
77771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  set dummy $deplibs_check_method; shift
77781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
77791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for a_deplib in $deplibs; do
77801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $a_deplib in
77811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -l*)
77821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_stripname -l '' "$a_deplib"
77831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      name=$func_stripname_result
77841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
77851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case " $predeps $postdeps " in
77861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*" $a_deplib "*)
77871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append newdeplibs " $a_deplib"
77881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  a_deplib=""
77891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
77901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
77911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
77921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$a_deplib" ; then
77931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		libname=`eval "\\$ECHO \"$libname_spec\""`
77941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -n "$file_magic_glob"; then
77951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob`
77961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
77971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  libnameglob=$libname
77981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
77991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob`
78001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
78011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test "$want_nocaseglob" = yes; then
78021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    shopt -s nocaseglob
78031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
78041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    $nocaseglob
78051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  else
78061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null`
78071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
78081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  for potent_lib in $potential_libs; do
78091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # Follow soft links.
78101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      if ls -lLd "$potent_lib" 2>/dev/null |
78111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			 $GREP " -> " >/dev/null; then
78121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			continue
78131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      fi
78141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # The statement above tries to avoid entering an
78151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # endless loop below, in case of cyclic links.
78161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # We might still enter an endless loop, since a link
78171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # loop can be closed while we follow links,
78181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      # but so what?
78191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      potlib="$potent_lib"
78201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      while test -h "$potlib" 2>/dev/null; do
78211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
78221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			case $potliblink in
78231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
78241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			*) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";;
78251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			esac
78261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      done
78271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
78281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			 $SED -e 10q |
78291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			 $EGREP "$file_magic_regex" > /dev/null; then
78301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			func_append newdeplibs " $a_deplib"
78311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			a_deplib=""
78321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck			break 2
78331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      fi
78341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  done
78351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		done
78361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
78371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$a_deplib" ; then
78381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		droppeddeps=yes
78391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo
78401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
78411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** I have the capability to make that library automatically link in when"
78421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** you link to this library.  But I can only do this if you have a"
78431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** shared version of the library, which you do not appear to have"
78441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** because I did check the linker path looking for a file starting"
78451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -z "$potlib" ; then
78461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
78471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
78481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** with $libname and none of the candidates passed a file format test"
78491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** using a file magic. Last file checked: $potlib"
78501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
78511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
78521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
78531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
78541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Add a -L argument.
78551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append newdeplibs " $a_deplib"
78561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
78571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
78581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done # Gone through all deplibs.
78591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
78601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	match_pattern*)
78611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  set dummy $deplibs_check_method; shift
78621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
78631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for a_deplib in $deplibs; do
78641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case $a_deplib in
78651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    -l*)
78661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_stripname -l '' "$a_deplib"
78671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      name=$func_stripname_result
78681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
78691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case " $predeps $postdeps " in
78701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*" $a_deplib "*)
78711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append newdeplibs " $a_deplib"
78721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  a_deplib=""
78731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
78741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
78751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
78761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$a_deplib" ; then
78771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		libname=`eval "\\$ECHO \"$libname_spec\""`
78781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
78791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
78801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  for potent_lib in $potential_libs; do
78811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    potlib="$potent_lib" # see symlink-check above in file_magic test
78821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \
78831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		       $EGREP "$match_pattern_regex" > /dev/null; then
78841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      func_append newdeplibs " $a_deplib"
78851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      a_deplib=""
78861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      break 2
78871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    fi
78881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  done
78891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		done
78901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
78911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$a_deplib" ; then
78921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		droppeddeps=yes
78931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo
78941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
78951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** I have the capability to make that library automatically link in when"
78961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** you link to this library.  But I can only do this if you have a"
78971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** shared version of the library, which you do not appear to have"
78981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		echo "*** because I did check the linker path looking for a file starting"
78991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -z "$potlib" ; then
79001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
79011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
79021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** with $libname and none of the candidates passed a file format test"
79031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
79041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
79051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
79061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
79071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *)
79081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Add a -L argument.
79091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append newdeplibs " $a_deplib"
79101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
79111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
79121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done # Gone through all deplibs.
79131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
79141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	none | unknown | *)
79151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  newdeplibs=""
79161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'`
79171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
79181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for i in $predeps $postdeps ; do
79191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # can't use Xsed below, because $i might contain '/'
79201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"`
79211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
79221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
79231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $tmp_deplibs in
79241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *[!\	\ ]*)
79251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo
79261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "X$deplibs_check_method" = "Xnone"; then
79271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** Warning: inter-library dependencies are not supported in this platform."
79281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
79291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** Warning: inter-library dependencies are not known to be supported."
79301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
79311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** All declared inter-library dependencies are being dropped."
79321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    droppeddeps=yes
79331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
79341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
79351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
79361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
79371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	versuffix=$versuffix_save
79381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	major=$major_save
79391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	release=$release_save
79401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libname=$libname_save
79411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	name=$name_save
79421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
79431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
79441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*-*-rhapsody* | *-*-darwin1.[012])
79451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # On Rhapsody replace the C library with the System framework
79461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'`
79471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
79481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
79491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
79501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$droppeddeps" = yes; then
79511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$module" = yes; then
79521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo
79531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** Warning: libtool could not satisfy all declared inter-library"
79541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
79551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** a static module, that should work as long as the dlopening"
79561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** application is linked with the -dlopen flag."
79571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$global_symbol_pipe"; then
79581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo
79591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** However, this would only work if libtool was able to extract symbol"
79601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** lists from a program, using \`nm' or equivalent, but libtool could"
79611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** not find such a program.  So, this module is probably useless."
79621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** \`nm' from GNU binutils and a full rebuild may help."
79631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
79641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$build_old_libs" = no; then
79651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      oldlibs="$output_objdir/$libname.$libext"
79661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      build_libtool_libs=module
79671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      build_old_libs=yes
79681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
79691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      build_libtool_libs=no
79701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
79711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
79721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** The inter-library dependencies that have been dropped here will be"
79731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** automatically added whenever a program is linked with this library"
79741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo "*** or is declared to -dlopen it."
79751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
79761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$allow_undefined" = no; then
79771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo
79781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** Since this library must not contain undefined symbols,"
79791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** because either the platform does not support them or"
79801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** it was explicitly requested with -no-undefined,"
79811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      echo "*** libtool will only create a static version of it."
79821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$build_old_libs" = no; then
79831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		oldlibs="$output_objdir/$libname.$libext"
79841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		build_libtool_libs=module
79851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		build_old_libs=yes
79861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
79871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		build_libtool_libs=no
79881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
79891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
79901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
79911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
79921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Done checking deplibs!
79931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	deplibs=$newdeplibs
79941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
79951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
79961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
79971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*-*-darwin*)
79981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
79991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
80001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
80011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
80021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
80031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
80041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # move library search paths that coincide with paths to not yet
80051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # installed libraries to the beginning of the library search list
80061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      new_libs=
80071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for path in $notinst_path; do
80081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case " $new_libs " in
80091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" -L$path/$objdir "*) ;;
80101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
80111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case " $deplibs " in
80121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" -L$path/$objdir "*)
80131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append new_libs " -L$path/$objdir" ;;
80141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
80151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
80161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
80171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
80181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for deplib in $deplibs; do
80191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $deplib in
80201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-L*)
80211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case " $new_libs " in
80221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $deplib "*) ;;
80231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append new_libs " $deplib" ;;
80241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
80251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
80261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) func_append new_libs " $deplib" ;;
80271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
80281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
80291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      deplibs="$new_libs"
80301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
80311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # All the library-specific variables (install_libdir is set above).
80321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      library_names=
80331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      old_library=
80341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dlname=
80351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
80361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Test again, we may have decided not to build it any more
80371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$build_libtool_libs" = yes; then
80381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Remove ${wl} instances when linking with ld.
80391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# FIXME: should test the right _cmds variable.
80401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $archive_cmds in
80411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *\$LD\ *) wl= ;;
80421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        esac
80431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$hardcode_into_libs" = yes; then
80441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Hardcode the library paths
80451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  hardcode_libdirs=
80461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dep_rpath=
80471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  rpath="$finalize_rpath"
80481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test "$opt_mode" != relink && rpath="$compile_rpath$rpath"
80491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for libdir in $rpath; do
80501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$hardcode_libdir_flag_spec"; then
80511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$hardcode_libdir_separator"; then
80521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_replace_sysroot "$libdir"
80531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		libdir=$func_replace_sysroot_result
80541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test -z "$hardcode_libdirs"; then
80551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  hardcode_libdirs="$libdir"
80561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
80571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # Just accumulate the unique libdirs.
80581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
80591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
80601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    ;;
80611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  *)
80621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
80631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    ;;
80641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  esac
80651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
80661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
80671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		eval flag=\"$hardcode_libdir_flag_spec\"
80681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append dep_rpath " $flag"
80691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
80701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    elif test -n "$runpath_var"; then
80711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case "$perm_rpath " in
80721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *" $libdir "*) ;;
80731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append perm_rpath " $libdir" ;;
80741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
80751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
80761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
80771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Substitute the hardcoded libdirs into the rpath.
80781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$hardcode_libdir_separator" &&
80791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test -n "$hardcode_libdirs"; then
80801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    libdir="$hardcode_libdirs"
80811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "dep_rpath=\"$hardcode_libdir_flag_spec\""
80821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
80831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
80841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # We should set the runpath_var.
80851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    rpath=
80861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for dir in $perm_rpath; do
80871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append rpath "$dir:"
80881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
80891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
80901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
80911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
80921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
80931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
80941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	shlibpath="$finalize_shlibpath"
80951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
80961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$shlibpath"; then
80971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
80981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
80991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Get the real and link names of the library.
81011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval shared_ext=\"$shrext_cmds\"
81021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval library_names=\"$library_names_spec\"
81031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	set dummy $library_names
81041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	shift
81051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	realname="$1"
81061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	shift
81071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$soname_spec"; then
81091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval soname=\"$soname_spec\"
81101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
81111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  soname="$realname"
81121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
81131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$dlname"; then
81141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dlname=$soname
81151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
81161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	lib="$output_objdir/$realname"
81181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	linknames=
81191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for link
81201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	do
81211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append linknames " $link"
81221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
81231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Use standard objects if they are pic
81251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP`
81261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test "X$libobjs" = "X " && libobjs=
81271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	delfiles=
81291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$export_symbols" && test -n "$include_expsyms"; then
81301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
81311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  export_symbols="$output_objdir/$libname.uexp"
81321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append delfiles " $export_symbols"
81331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
81341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	orig_export_symbols=
81361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host_os in
81371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	cygwin* | mingw* | cegcc*)
81381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
81391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # exporting using user supplied symfile
81401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
81411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # and it's NOT already a .def file. Must figure out
81421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # which of the given symbols are data symbols and tag
81431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # them as such. So, trigger use of export_symbols_cmds.
81441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # export_symbols gets reassigned inside the "prepare
81451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # the list of exported symbols" if statement, so the
81461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # include_expsyms logic still works.
81471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      orig_export_symbols="$export_symbols"
81481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      export_symbols=
81491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      always_export_symbols=yes
81501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
81511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
81521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
81531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
81541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
81551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Prepare the list of exported symbols
81561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -z "$export_symbols"; then
81571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
81581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_verbose "generating symbol list for \`$libname.la'"
81591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    export_symbols="$output_objdir/$libname.exp"
81601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || $RM $export_symbols
81611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cmds=$export_symbols_cmds
81621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    save_ifs="$IFS"; IFS='~'
81631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for cmd1 in $cmds; do
81641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      IFS="$save_ifs"
81651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Take the normal branch if the nm_file_list_spec branch
81661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # doesn't work or if tool conversion is not needed.
81671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $nm_file_list_spec~$to_tool_file_cmd in
81681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*)
81691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  try_normal_branch=yes
81701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  eval cmd=\"$cmd1\"
81711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_len " $cmd"
81721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  len=$func_len_result
81731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
81741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*)
81751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  try_normal_branch=no
81761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ;;
81771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
81781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$try_normal_branch" = yes \
81791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		 && { test "$len" -lt "$max_cmd_len" \
81801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		      || test "$max_cmd_len" -le -1; }
81811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      then
81821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_show_eval "$cmd" 'exit $?'
81831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		skipped_export=false
81841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      elif test -n "$nm_file_list_spec"; then
81851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_basename "$output"
81861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		output_la=$func_basename_result
81871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		save_libobjs=$libobjs
81881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		save_output=$output
81891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		output=${output_objdir}/${output_la}.nm
81901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_to_tool_file "$output"
81911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		libobjs=$nm_file_list_spec$func_to_tool_file_result
81921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append delfiles " $output"
81931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_verbose "creating $NM input file list: $output"
81941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		for obj in $save_libobjs; do
81951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_to_tool_file "$obj"
81961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  $ECHO "$func_to_tool_file_result"
81971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		done > "$output"
81981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		eval cmd=\"$cmd1\"
81991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_show_eval "$cmd" 'exit $?'
82001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		output=$save_output
82011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		libobjs=$save_libobjs
82021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		skipped_export=false
82031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
82041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# The command line is too long to execute in one step.
82051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_verbose "using reloadable object file for export list..."
82061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		skipped_export=:
82071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Break out early, otherwise skipped_export may be
82081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# set to false by a later but shorter cmd.
82091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		break
82101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
82111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
82121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    IFS="$save_ifs"
82131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
82141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
82151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
82161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
82171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
82181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
82191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$export_symbols" && test -n "$include_expsyms"; then
82211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tmp_export_symbols="$export_symbols"
82221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
82231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
82241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
82251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
82271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # The given exports_symbols file has to be filtered, so filter it.
82281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
82291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
82301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # 's' commands which not all seds can handle. GNU sed should be fine
82311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # though. Also, the filter scales superlinearly with the number of
82321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # global variables. join(1) would be nice here, but unfortunately
82331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # isn't a blessed tool.
82341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
82351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append delfiles " $export_symbols $output_objdir/$libname.filter"
82361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  export_symbols=$output_objdir/$libname.def
82371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
82381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
82391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	tmp_deplibs=
82411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for test_deplib in $deplibs; do
82421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case " $convenience " in
82431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $test_deplib "*) ;;
82441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *)
82451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append tmp_deplibs " $test_deplib"
82461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
82471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
82481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
82491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	deplibs="$tmp_deplibs"
82501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$convenience"; then
82521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$whole_archive_flag_spec" &&
82531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "$compiler_needs_object" = yes &&
82541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test -z "$libobjs"; then
82551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # extract the archives, so we have objects to list.
82561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # TODO: could optimize this to just extract one archive.
82571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    whole_archive_flag_spec=
82581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
82591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$whole_archive_flag_spec"; then
82601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    save_libobjs=$libobjs
82611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
82621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$libobjs" = "X " && libobjs=
82631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
82641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    gentop="$output_objdir/${outputname}x"
82651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append generated " $gentop"
82661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_extract_archives $gentop $convenience
82681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append libobjs " $func_extract_archives_result"
82691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$libobjs" = "X " && libobjs=
82701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
82711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
82721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
82741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval flag=\"$thread_safe_flag_spec\"
82751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append linker_flags " $flag"
82761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
82771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Make a backup of the uninstalled library when relinking
82791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$opt_mode" = relink; then
82801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
82811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
82821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
82831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Do each of the archive commands.
82841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$module" = yes && test -n "$module_cmds" ; then
82851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
82861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval test_cmds=\"$module_expsym_cmds\"
82871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cmds=$module_expsym_cmds
82881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
82891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval test_cmds=\"$module_cmds\"
82901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cmds=$module_cmds
82911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
82921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
82931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
82941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval test_cmds=\"$archive_expsym_cmds\"
82951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cmds=$archive_expsym_cmds
82961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
82971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval test_cmds=\"$archive_cmds\"
82981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cmds=$archive_cmds
82991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
83001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
83011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
83021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "X$skipped_export" != "X:" &&
83031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   func_len " $test_cmds" &&
83041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   len=$func_len_result &&
83051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
83061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  :
83071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
83081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # The command line is too long to link in one step, link piecewise
83091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # or, if using GNU ld and skipped_export is not :, use a linker
83101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # script.
83111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
83121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Save the value of $output and $libobjs because we want to
83131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # use them later.  If we have whole_archive_flag_spec, we
83141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # want to use save_libobjs as it was before
83151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # whole_archive_flag_spec was expanded, because we can't
83161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # assume the linker understands whole_archive_flag_spec.
83171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # This may have to be revisited, in case too many
83181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # convenience libraries get linked in and end up exceeding
83191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # the spec.
83201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
83211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    save_libobjs=$libobjs
83221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
83231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  save_output=$output
83241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_basename "$output"
83251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  output_la=$func_basename_result
83261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
83271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Clear the reloadable object creation command queue and
83281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # initialize k to one.
83291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test_cmds=
83301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  concat_cmds=
83311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  objlist=
83321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  last_robj=
83331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  k=1
83341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
83351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
83361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output=${output_objdir}/${output_la}.lnkscript
83371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_verbose "creating GNU ld script: $output"
83381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo 'INPUT (' > $output
83391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for obj in $save_libobjs
83401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    do
83411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_to_tool_file "$obj"
83421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $ECHO "$func_to_tool_file_result" >> $output
83431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
83441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    echo ')' >> $output
83451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append delfiles " $output"
83461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_to_tool_file "$output"
83471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output=$func_to_tool_file_result
83481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
83491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output=${output_objdir}/${output_la}.lnk
83501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_verbose "creating linker input file list: $output"
83511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    : > $output
83521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    set x $save_libobjs
83531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    shift
83541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    firstobj=
83551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$compiler_needs_object" = yes; then
83561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      firstobj="$1 "
83571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      shift
83581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
83591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for obj
83601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    do
83611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_to_tool_file "$obj"
83621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $ECHO "$func_to_tool_file_result" >> $output
83631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
83641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append delfiles " $output"
83651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_to_tool_file "$output"
83661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output=$firstobj\"$file_list_spec$func_to_tool_file_result\"
83671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
83681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$save_libobjs"; then
83691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_verbose "creating reloadable object files..."
83701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      output=$output_objdir/$output_la-${k}.$objext
83711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval test_cmds=\"$reload_cmds\"
83721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_len " $test_cmds"
83731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      len0=$func_len_result
83741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      len=$len0
83751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
83761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Loop over the list of objects to be linked.
83771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      for obj in $save_libobjs
83781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      do
83791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_len " $obj"
83801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_arith $len + $func_len_result
83811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		len=$func_arith_result
83821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test "X$objlist" = X ||
83831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		   test "$len" -lt "$max_cmd_len"; then
83841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_append objlist " $obj"
83851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		else
83861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # The command $test_cmds is almost too long, add a
83871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  # command to the queue.
83881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  if test "$k" -eq 1 ; then
83891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    # The first file doesn't have a previous command to add.
83901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    reload_objs=$objlist
83911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    eval concat_cmds=\"$reload_cmds\"
83921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  else
83931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    # All subsequent reloadable object files will link in
83941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    # the last one created.
83951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    reload_objs="$objlist $last_robj"
83961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\"
83971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  fi
83981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  last_robj=$output_objdir/$output_la-${k}.$objext
83991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_arith $k + 1
84001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  k=$func_arith_result
84011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  output=$output_objdir/$output_la-${k}.$objext
84021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  objlist=" $obj"
84031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_len " $last_robj"
84041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_arith $len0 + $func_len_result
84051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  len=$func_arith_result
84061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
84071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      done
84081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Handle the remaining objects by creating one last
84091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # reloadable object file.  All subsequent reloadable object
84101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # files will link in the last one created.
84111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
84121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      reload_objs="$objlist $last_robj"
84131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval concat_cmds=\"\${concat_cmds}$reload_cmds\"
84141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$last_robj"; then
84151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
84161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
84171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append delfiles " $output"
84181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
84201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      output=
84211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
84221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if ${skipped_export-false}; then
84241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_verbose "generating symbol list for \`$libname.la'"
84251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      export_symbols="$output_objdir/$libname.exp"
84261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_dry_run || $RM $export_symbols
84271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      libobjs=$output
84281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Append the command to create the export file.
84291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
84301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
84311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test -n "$last_robj"; then
84321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
84331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
84341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
84351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test -n "$save_libobjs" &&
84371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_verbose "creating a temporary reloadable object file: $output"
84381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Loop through the commands generated above and execute them.
84401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    save_ifs="$IFS"; IFS='~'
84411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for cmd in $concat_cmds; do
84421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      IFS="$save_ifs"
84431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_silent || {
84441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_quote_for_expand "$cmd"
84451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  eval "func_echo $func_quote_for_expand_result"
84461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      }
84471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_dry_run || eval "$cmd" || {
84481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		lt_exit=$?
84491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Restore the uninstalled library and exit
84511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		if test "$opt_mode" = relink; then
84521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  ( cd "$output_objdir" && \
84531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    $RM "${realname}T" && \
84541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		    $MV "${realname}U" "$realname" )
84551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		fi
84561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		exit $lt_exit
84581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      }
84591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
84601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    IFS="$save_ifs"
84611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
84631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
84641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
84651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
84661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
84671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          if ${skipped_export-false}; then
84691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
84701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      tmp_export_symbols="$export_symbols"
84711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
84721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"'
84731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
84741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$orig_export_symbols"; then
84761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # The given exports_symbols file has to be filtered, so filter it.
84771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
84781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
84791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # 's' commands which not all seds can handle. GNU sed should be fine
84801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # though. Also, the filter scales superlinearly with the number of
84811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # global variables. join(1) would be nice here, but unfortunately
84821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # isn't a blessed tool.
84831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
84841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append delfiles " $export_symbols $output_objdir/$libname.filter"
84851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      export_symbols=$output_objdir/$libname.def
84861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
84871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
84881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
84891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  libobjs=$output
84911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Restore the value of output.
84921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  output=$save_output
84931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
84941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
84951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
84961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test "X$libobjs" = "X " && libobjs=
84971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
84981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Expand the library linking commands again to reset the
84991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # value of $libobjs for piecewise linking.
85001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Do each of the archive commands.
85021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$module" = yes && test -n "$module_cmds" ; then
85031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
85041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cmds=$module_expsym_cmds
85051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
85061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cmds=$module_cmds
85071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
85081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
85091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
85101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cmds=$archive_expsym_cmds
85111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
85121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      cmds=$archive_cmds
85131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
85141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
85151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
85161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$delfiles"; then
85181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Append the command to remove temporary files to $cmds.
85191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval cmds=\"\$cmds~\$RM $delfiles\"
85201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
85211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Add any objects from preloaded convenience libraries
85231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$dlprefiles"; then
85241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  gentop="$output_objdir/${outputname}x"
85251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append generated " $gentop"
85261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_extract_archives $gentop $dlprefiles
85281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append libobjs " $func_extract_archives_result"
85291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test "X$libobjs" = "X " && libobjs=
85301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
85311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	save_ifs="$IFS"; IFS='~'
85331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for cmd in $cmds; do
85341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  IFS="$save_ifs"
85351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval cmd=\"$cmd\"
85361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_silent || {
85371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_quote_for_expand "$cmd"
85381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval "func_echo $func_quote_for_expand_result"
85391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  }
85401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || eval "$cmd" || {
85411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    lt_exit=$?
85421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Restore the uninstalled library and exit
85441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$opt_mode" = relink; then
85451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ( cd "$output_objdir" && \
85461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        $RM "${realname}T" && \
85471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$MV "${realname}U" "$realname" )
85481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
85491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    exit $lt_exit
85511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  }
85521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
85531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	IFS="$save_ifs"
85541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Restore the uninstalled library and exit
85561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$opt_mode" = relink; then
85571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
85581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$convenience"; then
85601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$whole_archive_flag_spec"; then
85611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_show_eval '${RM}r "$gentop"'
85621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
85631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
85641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  exit $EXIT_SUCCESS
85661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
85671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Create links to the real library.
85691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for linkname in $linknames; do
85701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$realname" != "$linkname"; then
85711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
85721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
85731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
85741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If -module or -export-dynamic was specified, set the dlname.
85761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$module" = yes || test "$export_dynamic" = yes; then
85771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # On all known operating systems, these are identical.
85781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  dlname="$soname"
85791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
85801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
85811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
85821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    obj)
85841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
85851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-dlopen' is ignored for objects"
85861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
85871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case " $deplibs" in
85891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *\ -l* | *\ -L*)
85901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-l' and \`-L' are ignored for objects" ;;
85911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
85921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$rpath" && \
85941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-rpath' is ignored for objects"
85951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$xrpath" && \
85971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-R' is ignored for objects"
85981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
85991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$vinfo" && \
86001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-version-info' is ignored for objects"
86011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$release" && \
86031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-release' is ignored for objects"
86041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $output in
86061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.lo)
86071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	test -n "$objs$old_deplibs" && \
86081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
86091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libobj=$output
86111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_lo2o "$libobj"
86121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	obj=$func_lo2o_result
86131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
86141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
86151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libobj=
86161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	obj="$output"
86171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
86181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
86191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Delete the old objects.
86211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $opt_dry_run || $RM $obj $libobj
86221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Objects from convenience libraries.  This assumes
86241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # single-version convenience libraries.  Whenever we create
86251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # different ones for PIC/non-PIC, this we'll have to duplicate
86261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # the extraction.
86271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      reload_conv_objs=
86281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      gentop=
86291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # reload_cmds runs $LD directly, so let us get rid of
86301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # -Wl from whole_archive_flag_spec and hope we can get by with
86311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # turning comma into space..
86321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      wl=
86331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$convenience"; then
86351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$whole_archive_flag_spec"; then
86361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
86371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'`
86381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
86391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  gentop="$output_objdir/${obj}x"
86401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append generated " $gentop"
86411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_extract_archives $gentop $convenience
86431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  reload_conv_objs="$reload_objs $func_extract_archives_result"
86441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
86451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
86461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # If we're not building shared, we need to use non_pic_objs
86481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$build_libtool_libs" != yes && libobjs="$non_pic_objects"
86491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Create the old-style object.
86511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
86521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      output="$obj"
86541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_execute_cmds "$reload_cmds" 'exit $?'
86551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Exit if we aren't doing a library object file.
86571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -z "$libobj"; then
86581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$gentop"; then
86591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval '${RM}r "$gentop"'
86601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
86611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_SUCCESS
86631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
86641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$build_libtool_libs" != yes; then
86661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$gentop"; then
86671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval '${RM}r "$gentop"'
86681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
86691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Create an invalid libtool object if no PIC, so that we don't
86711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# accidentally link it into a program.
86721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# $show "echo timestamp > $libobj"
86731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
86741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_SUCCESS
86751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
86761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$pic_flag" || test "$pic_mode" != default; then
86781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Only do commands if we really have different PIC objects.
86791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	reload_objs="$libobjs $reload_conv_objs"
86801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	output="$libobj"
86811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_execute_cmds "$reload_cmds" 'exit $?'
86821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
86831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$gentop"; then
86851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval '${RM}r "$gentop"'
86861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
86871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit $EXIT_SUCCESS
86891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
86901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    prog)
86921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
86931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*cygwin*) func_stripname '' '.exe' "$output"
86941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	          output=$func_stripname_result.exe;;
86951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
86961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$vinfo" && \
86971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-version-info' is ignored for programs"
86981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
86991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test -n "$release" && \
87001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`-release' is ignored for programs"
87011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$preload" = yes \
87031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        && test "$dlopen_support" = unknown \
87041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	&& test "$dlopen_self" = unknown \
87051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	&& test "$dlopen_self_static" = unknown && \
87061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
87071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
87091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *-*-rhapsody* | *-*-darwin1.[012])
87101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# On Rhapsody replace the C library is the System framework
87111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'`
87121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'`
87131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
87141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
87151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
87171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *-*-darwin*)
87181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Don't allow lazy linking, it breaks C++ global constructors
87191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# But is supposedly fixed on 10.4 or later (yay!).
87201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$tagname" = CXX ; then
87211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
87221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    10.[0123])
87231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append compile_command " ${wl}-bind_at_load"
87241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append finalize_command " ${wl}-bind_at_load"
87251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
87261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
87271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
87281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
87291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
87301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'`
87311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
87321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
87331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # move library search paths that coincide with paths to not yet
87361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # installed libraries to the beginning of the library search list
87371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      new_libs=
87381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for path in $notinst_path; do
87391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case " $new_libs " in
87401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*" -L$path/$objdir "*) ;;
87411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*)
87421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case " $compile_deplibs " in
87431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" -L$path/$objdir "*)
87441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append new_libs " -L$path/$objdir" ;;
87451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
87461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
87471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
87481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
87491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for deplib in $compile_deplibs; do
87501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $deplib in
87511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	-L*)
87521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case " $new_libs " in
87531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $deplib "*) ;;
87541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append new_libs " $deplib" ;;
87551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
87561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
87571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*) func_append new_libs " $deplib" ;;
87581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
87591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
87601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      compile_deplibs="$new_libs"
87611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append compile_command " $compile_deplibs"
87641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_append finalize_command " $finalize_deplibs"
87651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$rpath$xrpath"; then
87671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# If the user specified any rpath flags, then add them.
87681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for libdir in $rpath $xrpath; do
87691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # This is the magic to use -rpath.
87701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$finalize_rpath " in
87711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $libdir "*) ;;
87721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append finalize_rpath " $libdir" ;;
87731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
87741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
87751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
87761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
87771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now hardcode the library paths
87781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      rpath=
87791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      hardcode_libdirs=
87801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for libdir in $compile_rpath $finalize_rpath; do
87811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$hardcode_libdir_flag_spec"; then
87821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$hardcode_libdir_separator"; then
87831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$hardcode_libdirs"; then
87841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      hardcode_libdirs="$libdir"
87851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
87861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Just accumulate the unique libdirs.
87871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
87881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
87891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
87901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *)
87911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
87921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
87931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
87941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
87951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
87961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval flag=\"$hardcode_libdir_flag_spec\"
87971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rpath " $flag"
87981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
87991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test -n "$runpath_var"; then
88001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$perm_rpath " in
88011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $libdir "*) ;;
88021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append perm_rpath " $libdir" ;;
88031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
88041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
88051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
88061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
88071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
88081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case :$dllsearchpath: in
88091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *":$libdir:"*) ;;
88101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ::) dllsearchpath=$libdir;;
88111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append dllsearchpath ":$libdir";;
88121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
88131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case :$dllsearchpath: in
88141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *":$testbindir:"*) ;;
88151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ::) dllsearchpath=$testbindir;;
88161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append dllsearchpath ":$testbindir";;
88171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
88181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
88191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
88201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
88211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Substitute the hardcoded libdirs into the rpath.
88221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$hardcode_libdir_separator" &&
88231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 test -n "$hardcode_libdirs"; then
88241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libdir="$hardcode_libdirs"
88251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval rpath=\" $hardcode_libdir_flag_spec\"
88261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
88271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      compile_rpath="$rpath"
88281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
88291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      rpath=
88301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      hardcode_libdirs=
88311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for libdir in $finalize_rpath; do
88321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$hardcode_libdir_flag_spec"; then
88331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$hardcode_libdir_separator"; then
88341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$hardcode_libdirs"; then
88351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      hardcode_libdirs="$libdir"
88361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
88371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Just accumulate the unique libdirs.
88381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
88391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
88401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
88411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *)
88421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append hardcode_libdirs "$hardcode_libdir_separator$libdir"
88431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
88441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
88451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
88461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
88471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval flag=\"$hardcode_libdir_flag_spec\"
88481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rpath " $flag"
88491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
88501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test -n "$runpath_var"; then
88511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$finalize_perm_rpath " in
88521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $libdir "*) ;;
88531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append finalize_perm_rpath " $libdir" ;;
88541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
88551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
88561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
88571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Substitute the hardcoded libdirs into the rpath.
88581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$hardcode_libdir_separator" &&
88591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 test -n "$hardcode_libdirs"; then
88601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	libdir="$hardcode_libdirs"
88611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval rpath=\" $hardcode_libdir_flag_spec\"
88621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
88631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      finalize_rpath="$rpath"
88641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
88651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$libobjs" && test "$build_old_libs" = yes; then
88661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Transform all the library objects into standard objects.
88671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
88681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP`
88691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
88701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
88711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
88721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
88731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # template prelinking step
88741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$prelink_cmds"; then
88751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_execute_cmds "$prelink_cmds" 'exit $?'
88761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
88771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
88781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      wrappers_required=yes
88791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $host in
88801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *cegcc* | *mingw32ce*)
88811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway.
88821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        wrappers_required=no
88831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
88841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *cygwin* | *mingw* )
88851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        if test "$build_libtool_libs" != yes; then
88861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          wrappers_required=no
88871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        fi
88881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
88891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
88901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
88911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck          wrappers_required=no
88921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        fi
88931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck        ;;
88941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
88951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$wrappers_required" = no; then
88961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Replace the output file specification.
88971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
88981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	link_command="$compile_command$compile_rpath"
88991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# We have no uninstalled library dependencies, so finalize right now.
89011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit_status=0
89021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "$link_command" 'exit_status=$?'
89031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$postlink_cmds"; then
89051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_to_tool_file "$output"
89061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
89071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_execute_cmds "$postlink_cmds" 'exit $?'
89081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
89091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Delete the generated files.
89111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -f "$output_objdir/${outputname}S.${objext}"; then
89121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
89131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
89141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $exit_status
89161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
89171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$compile_shlibpath$finalize_shlibpath"; then
89191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
89201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
89211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$finalize_shlibpath"; then
89221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
89231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
89241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      compile_var=
89261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      finalize_var=
89271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$runpath_var"; then
89281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$perm_rpath"; then
89291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # We should set the runpath_var.
89301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  rpath=
89311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for dir in $perm_rpath; do
89321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rpath "$dir:"
89331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
89341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
89351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
89361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$finalize_perm_rpath"; then
89371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # We should set the runpath_var.
89381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  rpath=
89391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for dir in $finalize_perm_rpath; do
89401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rpath "$dir:"
89411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
89421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
89431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
89441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
89451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$no_install" = yes; then
89471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# We don't need to create a wrapper script.
89481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	link_command="$compile_var$compile_command$compile_rpath"
89491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Replace the output file specification.
89501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'`
89511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Delete the old output file.
89521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	$opt_dry_run || $RM $output
89531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Link the executable and exit
89541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "$link_command" 'exit $?'
89551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$postlink_cmds"; then
89571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_to_tool_file "$output"
89581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'`
89591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_execute_cmds "$postlink_cmds" 'exit $?'
89601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
89611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit $EXIT_SUCCESS
89631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
89641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$hardcode_action" = relink; then
89661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Fast installation is not supported
89671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	link_command="$compile_var$compile_command$compile_rpath"
89681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	relink_command="$finalize_var$finalize_command$finalize_rpath"
89691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "this platform does not like uninstalled shared libraries"
89711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_warning "\`$output' will be relinked during installation"
89721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
89731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$fast_install" != no; then
89741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  link_command="$finalize_var$compile_command$finalize_rpath"
89751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$fast_install" = yes; then
89761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'`
89771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
89781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # fast_install is set to needless
89791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command=
89801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
89811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
89821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  link_command="$compile_var$compile_command$compile_rpath"
89831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  relink_command="$finalize_var$finalize_command$finalize_rpath"
89841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
89851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
89861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Replace the output file specification.
89881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
89891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Delete the old output files.
89911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
89921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval "$link_command" 'exit $?'
89941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
89951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$postlink_cmds"; then
89961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_to_tool_file "$output_objdir/$outputname"
89971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	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'`
89981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_execute_cmds "$postlink_cmds" 'exit $?'
89991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
90001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Now create the wrapper script.
90021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_verbose "creating $output"
90031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Quote the relink command for shipping.
90051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$relink_command"; then
90061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Preserve any variables that may affect compiler behavior
90071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for var in $variables_saved_for_relink; do
90081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if eval test -z \"\${$var+set}\"; then
90091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
90101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  elif eval var_value=\$$var; test -z "$var_value"; then
90111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command="$var=; export $var; $relink_command"
90121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
90131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_quote_for_eval "$var_value"
90141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
90151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
90161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
90171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	relink_command="(cd `pwd`; $relink_command)"
90181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
90191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
90201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Only actually do things if not in dry run mode.
90221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $opt_dry_run || {
90231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# win32 will think the script is a binary if it has
90241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# a .exe suffix, so we strip it off here.
90251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $output in
90261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.exe) func_stripname '' '.exe' "$output"
90271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	         output=$func_stripname_result ;;
90281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
90291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# test for cygwin because mv fails w/o .exe extensions
90301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
90311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *cygwin*)
90321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    exeext=.exe
90331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '' '.exe' "$outputname"
90341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    outputname=$func_stripname_result ;;
90351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) exeext= ;;
90361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
90371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case $host in
90381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *cygwin* | *mingw* )
90391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_dirname_and_basename "$output" "" "."
90401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output_name=$func_basename_result
90411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output_path=$func_dirname_result
90421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
90431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    cwrapper="$output_path/$output_name.exe"
90441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $RM $cwrappersource $cwrapper
90451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
90461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_emit_cwrapperexe_src > $cwrappersource
90481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # The wrapper executable is built using the $host compiler,
90501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # because it contains $host paths and files. If cross-
90511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # compiling, it, like the target executable, must be
90521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # executed on the $host or under an emulation environment.
90531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
90541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
90551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $STRIP $cwrapper
90561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
90571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Now, create the wrapper script for func_source use:
90591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_ltwrapper_scriptname $cwrapper
90601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $RM $func_ltwrapper_scriptname_result
90611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
90621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $opt_dry_run || {
90631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # note: this script will not be executed, so do not chmod.
90641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "x$build" = "x$host" ; then
90651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
90661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
90671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_emit_wrapper no > $func_ltwrapper_scriptname_result
90681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
90691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    }
90701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
90711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  * )
90721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $RM $output
90731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
90741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_emit_wrapper no > $output
90761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    chmod +x $output
90771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  ;;
90781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
90791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
90801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      exit $EXIT_SUCCESS
90811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
90821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
90831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # See if we need to build an old-fashioned archive.
90851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for oldlib in $oldlibs; do
90861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
90871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$build_libtool_libs" = convenience; then
90881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	oldobjs="$libobjs_save $symfileobj"
90891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	addlibs="$convenience"
90901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	build_libtool_libs=no
90911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
90921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$build_libtool_libs" = module; then
90931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldobjs="$libobjs_save"
90941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  build_libtool_libs=no
90951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
90961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldobjs="$old_deplibs $non_pic_objects"
90971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$preload" = yes && test -f "$symfileobj"; then
90981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append oldobjs " $symfileobj"
90991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
91001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
91011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	addlibs="$old_convenience"
91021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
91031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$addlibs"; then
91051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	gentop="$output_objdir/${outputname}x"
91061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append generated " $gentop"
91071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_extract_archives $gentop $addlibs
91091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_append oldobjs " $func_extract_archives_result"
91101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
91111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Do each command in the archive commands.
91131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
91141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	cmds=$old_archive_from_new_cmds
91151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
91161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Add any objects from preloaded convenience libraries
91181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test -n "$dlprefiles"; then
91191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  gentop="$output_objdir/${outputname}x"
91201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append generated " $gentop"
91211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_extract_archives $gentop $dlprefiles
91231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append oldobjs " $func_extract_archives_result"
91241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
91251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# POSIX demands no paths to be encoded in archives.  We have
91271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# to avoid creating archives with duplicate basenames if we
91281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# might have to extract them afterwards, e.g., when creating a
91291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# static archive out of a convenience library, or when linking
91301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# the entirety of a libtool archive into another (currently
91311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# not supported by libtool).
91321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if (for obj in $oldobjs
91331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    do
91341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_basename "$obj"
91351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      $ECHO "$func_basename_result"
91361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done | sort | sort -uc >/dev/null 2>&1); then
91371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  :
91381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
91391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  echo "copying selected object files to avoid basename conflicts..."
91401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  gentop="$output_objdir/${outputname}x"
91411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_append generated " $gentop"
91421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_mkdir_p "$gentop"
91431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  save_oldobjs=$oldobjs
91441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldobjs=
91451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  counter=1
91461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for obj in $save_oldobjs
91471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  do
91481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_basename "$obj"
91491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    objbase="$func_basename_result"
91501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $oldobjs " in
91511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    " ") oldobjs=$obj ;;
91521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *[\ /]"$objbase "*)
91531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      while :; do
91541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Make sure we don't pick an alternate name that also
91551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# overlaps.
91561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		newobj=lt$counter-$objbase
91571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_arith $counter + 1
91581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		counter=$func_arith_result
91591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		case " $oldobjs " in
91601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*[\ /]"$newobj "*) ;;
91611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
91621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		esac
91631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      done
91641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
91651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append oldobjs " $gentop/$newobj"
91661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
91671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) func_append oldobjs " $obj" ;;
91681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
91691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
91701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
91711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_to_tool_file "$oldlib" func_convert_file_msys_to_w32
91721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	tool_oldlib=$func_to_tool_file_result
91731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	eval cmds=\"$old_archive_cmds\"
91741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
91751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_len " $cmds"
91761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	len=$func_len_result
91771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
91781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  cmds=$old_archive_cmds
91791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif test -n "$archiver_list_spec"; then
91801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_verbose "using command file archive linking..."
91811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for obj in $oldobjs
91821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  do
91831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_to_tool_file "$obj"
91841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $ECHO "$func_to_tool_file_result"
91851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done > $output_objdir/$libname.libcmd
91861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_to_tool_file "$output_objdir/$libname.libcmd"
91871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldobjs=" $archiver_list_spec$func_to_tool_file_result"
91881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  cmds=$old_archive_cmds
91891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
91901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # the command line is too long to link in one step, link in parts
91911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_verbose "using piecewise archive linking..."
91921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  save_RANLIB=$RANLIB
91931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  RANLIB=:
91941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  objlist=
91951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  concat_cmds=
91961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  save_oldobjs=$oldobjs
91971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldobjs=
91981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Is there a better way of finding the last object in the list?
91991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for obj in $save_oldobjs
92001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  do
92011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    last_oldobj=$obj
92021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
92031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  eval test_cmds=\"$old_archive_cmds\"
92041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_len " $test_cmds"
92051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  len0=$func_len_result
92061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  len=$len0
92071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for obj in $save_oldobjs
92081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  do
92091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_len " $obj"
92101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_arith $len + $func_len_result
92111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    len=$func_arith_result
92121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append objlist " $obj"
92131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$len" -lt "$max_cmd_len"; then
92141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      :
92151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
92161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # the above command should be used before it gets too long
92171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      oldobjs=$objlist
92181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "$obj" = "$last_oldobj" ; then
92191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		RANLIB=$save_RANLIB
92201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
92211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
92221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
92231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      objlist=
92241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      len=$len0
92251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
92261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
92271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  RANLIB=$save_RANLIB
92281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  oldobjs=$objlist
92291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "X$oldobjs" = "X" ; then
92301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval cmds=\"\$concat_cmds\"
92311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
92321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
92331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
92341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
92351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
92361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_execute_cmds "$cmds" 'exit $?'
92371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
92381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
92391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -n "$generated" && \
92401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval "${RM}r$generated"
92411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
92421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Now create the libtool archive.
92431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    case $output in
92441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    *.la)
92451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      old_library=
92461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$build_old_libs" = yes && old_library="$libname.$libext"
92471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_verbose "creating $output"
92481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
92491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Preserve any variables that may affect compiler behavior
92501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      for var in $variables_saved_for_relink; do
92511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if eval test -z \"\${$var+set}\"; then
92521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
92531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	elif eval var_value=\$$var; test -z "$var_value"; then
92541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  relink_command="$var=; export $var; $relink_command"
92551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	else
92561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_quote_for_eval "$var_value"
92571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
92581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
92591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      done
92601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Quote the link command for shipping.
92611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
92621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"`
92631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$hardcode_automatic" = yes ; then
92641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	relink_command=
92651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
92661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
92671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Only create the output if not a dry run.
92681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      $opt_dry_run || {
92691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	for installed in no yes; do
92701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$installed" = yes; then
92711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -z "$install_libdir"; then
92721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      break
92731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
92741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    output="$output_objdir/$outputname"i
92751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # Replace all uninstalled libtool libraries with the installed ones
92761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdependency_libs=
92771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for deplib in $dependency_libs; do
92781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $deplib in
92791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *.la)
92801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_basename "$deplib"
92811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		name="$func_basename_result"
92821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_resolve_sysroot "$deplib"
92831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result`
92841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		test -z "$libdir" && \
92851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_fatal_error "\`$deplib' is not a valid libtool archive"
92861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name"
92871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
92881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      -L*)
92891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_stripname -L '' "$deplib"
92901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_replace_sysroot "$func_stripname_result"
92911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdependency_libs " -L$func_replace_sysroot_result"
92921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
92931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      -R*)
92941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_stripname -R '' "$deplib"
92951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_replace_sysroot "$func_stripname_result"
92961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdependency_libs " -R$func_replace_sysroot_result"
92971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
92981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append newdependency_libs " $deplib" ;;
92991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
93001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
93011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dependency_libs="$newdependency_libs"
93021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdlfiles=
93031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
93041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for lib in $dlfiles; do
93051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $lib in
93061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *.la)
93071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	        func_basename "$lib"
93081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		name="$func_basename_result"
93091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
93101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		test -z "$libdir" && \
93111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_fatal_error "\`$lib' is not a valid libtool archive"
93121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name"
93131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
93141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *) func_append newdlfiles " $lib" ;;
93151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
93161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
93171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlfiles="$newdlfiles"
93181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdlprefiles=
93191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for lib in $dlprefiles; do
93201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $lib in
93211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      *.la)
93221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Only pass preopened files to the pseudo-archive (for
93231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# eventual linking with the app. that links it) if we
93241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# didn't already link the preopened objects directly into
93251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# the library:
93261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_basename "$lib"
93271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		name="$func_basename_result"
93281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
93291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		test -z "$libdir" && \
93301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		  func_fatal_error "\`$lib' is not a valid libtool archive"
93311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name"
93321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		;;
93331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
93341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
93351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlprefiles="$newdlprefiles"
93361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  else
93371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdlfiles=
93381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for lib in $dlfiles; do
93391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $lib in
93401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
93411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*) abs=`pwd`"/$lib" ;;
93421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
93431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append newdlfiles " $abs"
93441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
93451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlfiles="$newdlfiles"
93461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    newdlprefiles=
93471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    for lib in $dlprefiles; do
93481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      case $lib in
93491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
93501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		*) abs=`pwd`"/$lib" ;;
93511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      esac
93521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append newdlprefiles " $abs"
93531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    done
93541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    dlprefiles="$newdlprefiles"
93551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
93561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $RM $output
93571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # place dlname in correct position for cygwin
93581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # In fact, it would be nice if we could use this code for all target
93591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # systems that can't hard-code library paths into their executables
93601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # and that have no shared library path variable independent of PATH,
93611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # but it turns out we can't easily determine that from inspecting
93621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # libtool variables, so we have to hard-code the OSs to which it
93631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # applies here; at the moment, that means platforms that use the PE
93641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # object format with DLL files.  See the long comment at the top of
93651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # tests/bindir.at for full details.
93661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  tdlname=$dlname
93671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $host,$output,$installed,$module,$dlname in
93681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll)
93691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # If a -bindir argument was supplied, place the dll there.
93701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      if test "x$bindir" != x ;
93711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      then
93721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		func_relative_path "$install_libdir" "$bindir"
93731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		tdlname=$func_relative_path_result$dlname
93741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      else
93751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		# Otherwise fall back on heuristic.
93761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck		tdlname=../bin/$dlname
93771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      fi
93781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      ;;
93791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
93801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  $ECHO > $output "\
93811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# $outputname - a libtool library file
93821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
93831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck#
93841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Please DO NOT delete this file!
93851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# It is necessary for linking the library.
93861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
93871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The name that we can dlopen(3).
93881176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdlname='$tdlname'
93891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
93901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Names of this library.
93911176bdada62cabc6ec4b0308a930e83b679d5d36John Recklibrary_names='$library_names'
93921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
93931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The name of the static archive.
93941176bdada62cabc6ec4b0308a930e83b679d5d36John Reckold_library='$old_library'
93951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
93961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Linker flags that can not go in dependency_libs.
93971176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinherited_linker_flags='$new_inherited_linker_flags'
93981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
93991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Libraries that this one depends upon.
94001176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdependency_libs='$dependency_libs'
94011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Names of additional weak libraries provided by this library
94031176bdada62cabc6ec4b0308a930e83b679d5d36John Reckweak_library_names='$weak_libs'
94041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Version information for $libname.
94061176bdada62cabc6ec4b0308a930e83b679d5d36John Reckcurrent=$current
94071176bdada62cabc6ec4b0308a930e83b679d5d36John Reckage=$age
94081176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrevision=$revision
94091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Is this an already installed library?
94111176bdada62cabc6ec4b0308a930e83b679d5d36John Reckinstalled=$installed
94121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Should we warn about portability when linking against -modules?
94141176bdada62cabc6ec4b0308a930e83b679d5d36John Reckshouldnotlink=$module
94151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Files to dlopen/dlpreopen
94171176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdlopen='$dlfiles'
94181176bdada62cabc6ec4b0308a930e83b679d5d36John Reckdlpreopen='$dlprefiles'
94191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Directory that this library needs to be installed in:
94211176bdada62cabc6ec4b0308a930e83b679d5d36John Recklibdir='$install_libdir'"
94221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test "$installed" = no && test "$need_relink" = yes; then
94231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    $ECHO >> $output "\
94241176bdada62cabc6ec4b0308a930e83b679d5d36John Reckrelink_command=\"$relink_command\""
94251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
94261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	done
94271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      }
94281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Do a symbolic link so that the libtool archive can be found in
94301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # LD_LIBRARY_PATH before the program is installed.
94311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
94321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      ;;
94331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    esac
94341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $EXIT_SUCCESS
94351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
94361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ test "$opt_mode" = link || test "$opt_mode" = relink; } &&
94381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_mode_link ${1+"$@"}
94391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# func_mode_uninstall arg...
94421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfunc_mode_uninstall ()
94431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{
94441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    $opt_debug
94451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    RM="$nonopt"
94461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    files=
94471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    rmforce=
94481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit_status=0
94491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # This variable tells wrapper scripts just to set variables rather
94511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # than running their programs.
94521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    libtool_install_magic="$magic"
94531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for arg
94551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    do
94561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $arg in
94571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -f) func_append RM " $arg"; rmforce=yes ;;
94581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      -*) func_append RM " $arg" ;;
94591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *) func_append files " $arg" ;;
94601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
94611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
94621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    test -z "$RM" && \
94641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_fatal_help "you must specify an RM program"
94651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    rmdirs=
94671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for file in $files; do
94691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_dirname "$file" "" "."
94701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      dir="$func_dirname_result"
94711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "X$dir" = X.; then
94721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	odir="$objdir"
94731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      else
94741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	odir="$dir/$objdir"
94751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
94761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_basename "$file"
94771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      name="$func_basename_result"
94781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      test "$opt_mode" = uninstall && odir="$dir"
94791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Remember odir for removal later, being careful to avoid duplicates
94811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test "$opt_mode" = clean; then
94821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	case " $rmdirs " in
94831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *" $odir "*) ;;
94841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *) func_append rmdirs " $odir" ;;
94851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	esac
94861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
94871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
94881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      # Don't error if the file doesn't exist and rm -f was used.
94891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if { test -L "$file"; } >/dev/null 2>&1 ||
94901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 { test -h "$file"; } >/dev/null 2>&1 ||
94911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	 test -f "$file"; then
94921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	:
94931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      elif test -d "$file"; then
94941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	exit_status=1
94951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
94961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      elif test "$rmforce" = yes; then
94971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	continue
94981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
94991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      rmfiles="$file"
95011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      case $name in
95031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.la)
95041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Possibly a libtool archive, so verify it.
95051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if func_lalib_p "$file"; then
95061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source $dir/$name
95071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Delete the libtool libraries and symlinks.
95091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  for n in $library_names; do
95101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rmfiles " $odir/$n"
95111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  done
95121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  test -n "$old_library" && func_append rmfiles " $odir/$old_library"
95131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95141176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case "$opt_mode" in
95151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  clean)
95161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    case " $library_names " in
95171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *" $dlname "*) ;;
95181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;;
95191176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    esac
95201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i"
95211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
95221176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  uninstall)
95231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$library_names"; then
95241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Do each command in the postuninstall commands.
95251176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
95261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
95271176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test -n "$old_library"; then
95291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      # Do each command in the old_postuninstall commands.
95301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
95311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
95321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # FIXME: should reinstall the best remaining shared library.
95331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
95341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
95351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
95361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
95371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *.lo)
95391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	# Possibly a libtool object, so verify it.
95401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if func_lalib_p "$file"; then
95411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95421176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Read the .lo file
95431176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  func_source $dir/$name
95441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add PIC object to the list of files to remove.
95461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$pic_object" &&
95471176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$pic_object" != none; then
95481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rmfiles " $dir/$pic_object"
95491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
95501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Add non-PIC object to the list of files to remove.
95521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if test -n "$non_pic_object" &&
95531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	     test "$non_pic_object" != none; then
95541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rmfiles " $dir/$non_pic_object"
95551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
95561176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
95571176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
95581176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95591176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      *)
95601176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	if test "$opt_mode" = clean ; then
95611176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  noexename=$name
95621176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  case $file in
95631176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  *.exe)
95641176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '' '.exe' "$file"
95651176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    file=$func_stripname_result
95661176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_stripname '' '.exe' "$name"
95671176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    noexename=$func_stripname_result
95681176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # $file with .exe has already been added to rmfiles,
95691176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # add $file without .exe
95701176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rmfiles " $file"
95711176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    ;;
95721176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  esac
95731176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  # Do a test to see if this is a libtool program.
95741176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  if func_ltwrapper_p "$file"; then
95751176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if func_ltwrapper_executable_p "$file"; then
95761176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_ltwrapper_scriptname "$file"
95771176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      relink_command=
95781176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_source $func_ltwrapper_scriptname_result
95791176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append rmfiles " $func_ltwrapper_scriptname_result"
95801176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    else
95811176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      relink_command=
95821176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_source $dir/$noexename
95831176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
95841176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
95851176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # note $name still contains .exe if it was in $file originally
95861176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    # as does the version of $file that was added into $rmfiles
95871176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    func_append rmfiles " $odir/$name $odir/${name}S.${objext}"
95881176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "$fast_install" = yes && test -n "$relink_command"; then
95891176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append rmfiles " $odir/lt-$name"
95901176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
95911176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    if test "X$noexename" != "X$name" ; then
95921176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	      func_append rmfiles " $odir/lt-${noexename}.c"
95931176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	    fi
95941176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	  fi
95951176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	fi
95961176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	;;
95971176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      esac
95981176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      func_show_eval "$RM $rmfiles" 'exit_status=1'
95991176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
96001176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96011176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    # Try to remove the ${objdir}s in the directories where we deleted files
96021176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    for dir in $rmdirs; do
96031176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      if test -d "$dir"; then
96041176bdada62cabc6ec4b0308a930e83b679d5d36John Reck	func_show_eval "rmdir $dir >/dev/null 2>&1"
96051176bdada62cabc6ec4b0308a930e83b679d5d36John Reck      fi
96061176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    done
96071176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96081176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    exit $exit_status
96091176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
96101176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96111176bdada62cabc6ec4b0308a930e83b679d5d36John Reck{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } &&
96121176bdada62cabc6ec4b0308a930e83b679d5d36John Reck    func_mode_uninstall ${1+"$@"}
96131176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96141176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest -z "$opt_mode" && {
96151176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  help="$generic_help"
96161176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_fatal_help "you must specify a MODE"
96171176bdada62cabc6ec4b0308a930e83b679d5d36John Reck}
96181176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96191176bdada62cabc6ec4b0308a930e83b679d5d36John Recktest -z "$exec_cmd" && \
96201176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  func_fatal_help "invalid operation mode \`$opt_mode'"
96211176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96221176bdada62cabc6ec4b0308a930e83b679d5d36John Reckif test -n "$exec_cmd"; then
96231176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  eval exec "$exec_cmd"
96241176bdada62cabc6ec4b0308a930e83b679d5d36John Reck  exit $EXIT_FAILURE
96251176bdada62cabc6ec4b0308a930e83b679d5d36John Reckfi
96261176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96271176bdada62cabc6ec4b0308a930e83b679d5d36John Reckexit $exit_status
96281176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96291176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96301176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# The TAGs below are defined such that we never get into a situation
96311176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# in which we disable both kinds of libraries.  Given conflicting
96321176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# choices, we go for a static library, that is the most portable,
96331176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# since we can't tell whether shared libraries were disabled because
96341176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# the user asked for that or because the platform doesn't support
96351176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# them.  This is particularly important on AIX, because we don't
96361176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# support having both static and shared libraries enabled at the same
96371176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# time on that platform, so we default to a shared-only configuration.
96381176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# If a disable-shared tag is given, we'll fallback to a static-only
96391176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# configuration.  But we'll never go from static-only to shared-only.
96401176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96411176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
96421176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbuild_libtool_libs=no
96431176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbuild_old_libs=yes
96441176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### END LIBTOOL TAG CONFIG: disable-shared
96451176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96461176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### BEGIN LIBTOOL TAG CONFIG: disable-static
96471176bdada62cabc6ec4b0308a930e83b679d5d36John Reckbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
96481176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# ### END LIBTOOL TAG CONFIG: disable-static
96491176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
96501176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# Local Variables:
96511176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# mode:shell-script
96521176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# sh-indentation:2
96531176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# End:
96541176bdada62cabc6ec4b0308a930e83b679d5d36John Reck# vi:sw=2
96551176bdada62cabc6ec4b0308a930e83b679d5d36John Reck
9656