18e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated from ltmain.m4sh.
28e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ltmain.sh (GNU libtool) 2.2.6
48e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
58e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
68e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
78e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This is free software; see the source for copying conditions.  There is NO
88e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
98e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# GNU Libtool is free software; you can redistribute it and/or modify
118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# it under the terms of the GNU General Public License as published by
128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the Free Software Foundation; either version 2 of the License, or
138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# (at your option) any later version.
148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# As a special exception to the GNU General Public License,
168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# if you distribute this file as part of a program or library that
178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is built using GNU Libtool, you may include this file under the
188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# same distribution terms that you use for the rest of that program.
198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# GNU Libtool is distributed in the hope that it will be useful, but
218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# WITHOUT ANY WARRANTY; without even the implied warranty of
228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# General Public License for more details.
248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# You should have received a copy of the GNU General Public License
268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# along with GNU Libtool; see the file COPYING.  If not, a copy
278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# can be downloaded from http://www.gnu.org/licenses/gpl.html,
288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# or obtained by writing to the Free Software Foundation, Inc.,
298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Usage: $progname [OPTION]... [MODE-ARG]...
328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Provide generalized library-building support services.
348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --config             show all configuration variables
368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --debug              enable verbose shell tracing
378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# -n, --dry-run            display commands without modifying any files
388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --features           display basic configuration information and exit
398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --mode=MODE          use operation mode MODE
408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --preserve-dup-deps  don't remove duplicate dependency libraries
418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --quiet, --silent    don't print informational messages
428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --tag=TAG            use configuration variables from tag TAG
438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# -v, --verbose            print informational messages (default)
448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#     --version            print version information
458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# -h, --help               print short or long help message
468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# MODE must be one of the following:
488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       clean              remove files from the build directory
508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       compile            compile a source file into a libtool object
518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       execute            automatically set library path, then run a program
528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       finish             complete the installation of libtool libraries
538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       install            install libraries or executables
548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       link               create a library or an executable
558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       uninstall          remove libraries from an installed directory
568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# MODE-ARGS vary depending on the MODE.
588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# When reporting a bug, please describe a test case to reproduce it and
618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include the following information:
628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       host-triplet:	$host
648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       shell:		$SHELL
658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       compiler:		$LTCC
668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       compiler flags:		$LTCFLAGS
678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       linker:		$LD (gnu? $with_gnu_ld)
688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       $progname:		(GNU libtool) 2.2.6 Debian-2.2.6a-4
698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       automake:		$automake_version
708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#       autoconf:		$autoconf_version
718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Report bugs to <bug-libtool@gnu.org>.
738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsPROGRAM=ltmain.sh
758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsPACKAGE=libtool
768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsVERSION="2.2.6 Debian-2.2.6a-4"
778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsTIMESTAMP=""
788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspackage_revision=1.3012
798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Be Bourne compatible
818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  emulate sh
838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  NULLCMD=:
848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # is contrary to our usage.  Disable this feature.
868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  alias -g '${1+"$@"}'='"$@"'
878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  setopt NO_GLOB_SUBST
888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse
898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi
918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsBIN_SH=xpg4; export BIN_SH # for Tru64
928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsDUALCASE=1; export DUALCASE # for MKS sh
938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# NLS nuisances: We save the old values to restore during execute mode.
958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Only set LANG and LC_ALL to C if already set.
968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# These must not be set unconditionally because not all systems understand
978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# e.g. LANG=C (notably SCO).
988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_user_locale=
998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_safe_locale=
1008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdo
1028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  eval "if test \"\${$lt_var+set}\" = set; then
1038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          save_$lt_var=\$$lt_var
1048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          $lt_var=C
1058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  export $lt_var
1068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi"
1098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdone
1108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$lt_unset CDPATH
1128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${CP="cp -f"}
1188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${ECHO="echo"}
1198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${EGREP="/bin/grep -E"}
1208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${FGREP="/bin/grep -F"}
1218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${GREP="/bin/grep"}
1228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${LN_S="ln -s"}
1238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${MAKE="make"}
1248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${MKDIR="mkdir"}
1258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${MV="mv -f"}
1268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${RM="rm -f"}
1278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${SED="/bin/sed"}
1288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels: ${Xsed="$SED -e 1s/^X//"}
1308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Global variables:
1328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_SUCCESS=0
1338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_FAILURE=1
1348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexit_status=$EXIT_SUCCESS
1388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make sure IFS has a sensible default
1408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_nl='
1418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels'
1428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIFS=" 	$lt_nl"
1438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdirname="s,/[^/]*$,,"
1458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbasename="s,^.*/,,"
1468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_dirname_and_basename file append nondir_replacement
1488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# perform func_basename and func_dirname in a single function
1498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# call:
1508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#   dirname:  Compute the dirname of FILE.  If nonempty,
1518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#             add APPEND to the result, otherwise set result
1528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#             to NONDIR_REPLACEMENT.
1538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#             value returned in "$func_dirname_result"
1548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#   basename: Compute filename of FILE.
1558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#             value retuned in "$func_basename_result"
1568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Implementation must be kept synchronized with func_dirname
1578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# and func_basename. For efficiency, we do not delegate to
1588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# those functions but instead duplicate the functionality here.
1598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_dirname_and_basename ()
1608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
1618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Extract subdirectory from the argument.
1628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test "X$func_dirname_result" = "X${1}"; then
1648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_dirname_result="${3}"
1658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  else
1668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_dirname_result="$func_dirname_result${2}"
1678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
1688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
1708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated shell functions inserted here.
1728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is ksh but when the shell is invoked as "sh" and the current value of
1758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the _XPG environment variable is not equal to 1 (one), the special
1768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# positional parameter $0, within a function call, is the name of the
1778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# function.
1788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprogpath="$0"
1798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The name of this program:
1818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# In the unlikely event $progname began with a '-', it would play havoc with
1828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_echo (imagine progname=-n), so we prepend ./ in that case:
1838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_dirname_and_basename "$progpath"
1848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsprogname=$func_basename_result
1858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscase $progname in
1868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -*) progname=./$progname ;;
1878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsesac
1888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
1898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make sure we have an absolute path for reexecution:
1908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscase $progpath in
1918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  [\\/]*|[A-Za-z]:\\*) ;;
1928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *[\\/]*)
1938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     progdir=$func_dirname_result
1948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     progdir=`cd "$progdir" && pwd`
1958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     progpath="$progdir/$progname"
1968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     ;;
1978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *)
1988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     save_IFS="$IFS"
1998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     IFS=:
2008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     for progdir in $PATH; do
2018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       IFS="$save_IFS"
2028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       test -x "$progdir/$progname" && break
2038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     done
2048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     IFS="$save_IFS"
2058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     test -n "$progdir" || progdir=`pwd`
2068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     progpath="$progdir/$progname"
2078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     ;;
2088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsesac
2098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Sed substitution that helps us do robust quoting.  It backslashifies
2118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# metacharacters that are still active within double-quoted strings.
2128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsXsed="${SED}"' -e 1s/^X//'
2138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Same as above, but do not quote variable references.
2168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
2178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Re-`\' parameter expansions in output of double_quote_subst that were
2198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in input to double_quote_subst, that '$' was protected from expansion.
2218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Since each input `\' is now two `\'s, look for any number of runs of
2228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbs='\\'
2248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbs2='\\\\'
2258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbs4='\\\\\\\\'
2268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdollar='\$'
2278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssed_double_backslash="\
2288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  s/$bs4/&\\
2298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/g
2308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  s/^$bs2$dollar/$bs&/
2318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  s/\n//g"
2338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Standard options:
2358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_dry_run=false
2368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_help=false
2378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_quiet=false
2388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_verbose=false
2398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_warning=:
2408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_echo arg...
2428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message, along with the current mode
2438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# name if it has been set yet.
2448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_echo ()
2458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
2468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "$progname${mode+: }$mode: $*"
2478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
2488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_verbose arg...
2508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message in verbose mode only.
2518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_verbose ()
2528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
2538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_verbose && func_echo ${1+"$@"}
2548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # A bug in bash halts the script if the last line of a function
2568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # fails when set -e is in force, so we need another command to
2578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # work around that:
2588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    :
2598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
2608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_error arg...
2628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error.
2638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_error ()
2648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
2658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
2678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_warning arg...
2698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed warning message to standard error.
2708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_warning ()
2718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
2728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # bash bug again:
2758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    :
2768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
2778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_fatal_error arg...
2798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error, and exit.
2808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_fatal_error ()
2818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
2828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_error ${1+"$@"}
2838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $EXIT_FAILURE
2848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
2858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_fatal_help arg...
2878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error, followed by
2888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# a help hint, and exit.
2898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_fatal_help ()
2908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
2918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_error ${1+"$@"}
2928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_fatal_error "$help"
2938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
2948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelshelp="Try \`$progname --help' for more information."  ## default
2958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
2978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_grep expression filename
2988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Check whether EXPRESSION matches any line of FILENAME, without output.
2998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_grep ()
3008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
3018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $GREP "$1" "$2" >/dev/null 2>&1
3028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
3038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mkdir_p directory-path
3068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make sure the entire path to DIRECTORY-PATH is available.
3078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mkdir_p ()
3088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
3098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_directory_path="$1"
3108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_dir_list=
3118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Protect directory names starting with `-'
3158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $my_directory_path in
3168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        -*) my_directory_path="./$my_directory_path" ;;
3178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
3188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # While some portion of DIR does not yet exist...
3208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      while test ! -d "$my_directory_path"; do
3218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # ...make a list in topmost first order.  Use a colon delimited
3228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# list incase some portion of path contains whitespace.
3238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        my_dir_list="$my_directory_path:$my_dir_list"
3248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # If the last portion added has no slash in it, the list is done
3268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        case $my_directory_path in */*) ;; *) break ;; esac
3278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # ...otherwise throw away the child directory and loop
3298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
3318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      save_mkdir_p_IFS="$IFS"; IFS=':'
3348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for my_dir in $my_dir_list; do
3358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	IFS="$save_mkdir_p_IFS"
3368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # mkdir can fail with a `File exist' error if two processes
3378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # try to create one of the directories concurrently.  Don't
3388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # stop in that case!
3398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $MKDIR "$my_dir" 2>/dev/null || :
3408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
3418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      IFS="$save_mkdir_p_IFS"
3428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Bail out if we (or some other process) failed to create a directory.
3448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -d "$my_directory_path" || \
3458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_fatal_error "Failed to create \`$1'"
3468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
3478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
3488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mktempdir [string]
3518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Make a temporary directory that won't clash with other running
3528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# libtool processes, and avoids race conditions if possible.  If
3538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# given, STRING is the basename for that directory.
3548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mktempdir ()
3558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
3568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_template="${TMPDIR-/tmp}/${1-$progname}"
3578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$opt_dry_run" = ":"; then
3598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Return a directory name, but don't create it in dry-run mode
3608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_tmpdir="${my_template}-$$"
3618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
3628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # If mktemp works, use that first and foremost
3648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
3658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test ! -d "$my_tmpdir"; then
3678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # Failing that, at least try and use $RANDOM to avoid a race
3688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        my_tmpdir="${my_template}-${RANDOM-0}$$"
3698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        save_mktempdir_umask=`umask`
3718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        umask 0077
3728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $MKDIR "$my_tmpdir"
3738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        umask $save_mktempdir_umask
3748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
3758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # If we're not in dry-run mode, bomb out on failure
3778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -d "$my_tmpdir" || \
3788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
3798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
3808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "X$my_tmpdir" | $Xsed
3828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
3838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
3858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_quote_for_eval arg
3868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Aesthetically quote ARG to be evaled later.
3878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is double-quoted, suitable for a subsequent eval, whereas
3898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# which are still active within double quotes backslashified.
3918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_quote_for_eval ()
3928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
3938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $1 in
3948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *[\\\`\"\$]*)
3958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
3978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_quote_for_eval_unquoted_result="$1" ;;
3988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
3998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $func_quote_for_eval_unquoted_result in
4018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Double-quote args containing shell metacharacters to delay
4028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # word splitting, command substitution and and variable
4038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # expansion for a subsequent eval.
4048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Many Bourne shells cannot handle close brackets correctly
4058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # in scan sets, so we specify it separately.
4068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
4098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
4108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
4118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
4128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
4138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_quote_for_expand arg
4168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Aesthetically quote ARG to be evaled later; same as above,
4178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# but do not quote variable references.
4188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_quote_for_expand ()
4198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
4208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $1 in
4218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *[\\\`\"]*)
4228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	my_arg=`$ECHO "X$1" | $Xsed \
4238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
4248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
4258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        my_arg="$1" ;;
4268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
4278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $my_arg in
4298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Double-quote args containing shell metacharacters to delay
4308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # word splitting and command substitution for a subsequent eval.
4318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Many Bourne shells cannot handle close brackets correctly
4328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # in scan sets, so we specify it separately.
4338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        my_arg="\"$my_arg\""
4358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
4368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
4378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_quote_for_expand_result="$my_arg"
4398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
4408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_show_eval cmd [fail_exp]
4438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is given, then evaluate it.
4468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_show_eval ()
4478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
4488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_cmd="$1"
4498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_fail_exp="${2-:}"
4508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ${opt_silent-false} || {
4528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_expand "$my_cmd"
4538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval "func_echo $func_quote_for_expand_result"
4548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
4558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if ${opt_dry_run-false}; then :; else
4578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval "$my_cmd"
4588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_status=$?
4598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$my_status" -eq 0; then :; else
4608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "(exit $my_status); $my_fail_exp"
4618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
4628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
4638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
4648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_show_eval_locale cmd [fail_exp]
4678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is given, then evaluate it.  Use the saved locale for evaluation.
4708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_show_eval_locale ()
4718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
4728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_cmd="$1"
4738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_fail_exp="${2-:}"
4748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ${opt_silent-false} || {
4768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_expand "$my_cmd"
4778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval "func_echo $func_quote_for_expand_result"
4788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
4798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if ${opt_dry_run-false}; then :; else
4818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval "$lt_user_locale
4828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $my_cmd"
4838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_status=$?
4848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval "$lt_safe_locale"
4858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$my_status" -eq 0; then :; else
4868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "(exit $my_status); $my_fail_exp"
4878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
4888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
4898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
4908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
4958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_version
4968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo version message to standard output and exit.
4978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_version ()
4988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
4998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        s/^# //
5018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/^# *$//
5028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        p
5048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     }' < "$progpath"
5058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     exit $?
5068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
5078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_usage
5098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo short help message to standard output and exit.
5108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_usage ()
5118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
5128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $SED -n '/^# Usage:/,/# -h/ {
5138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        s/^# //
5148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/^# *$//
5158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/\$progname/'$progname'/
5168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	p
5178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }' < "$progpath"
5188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO
5198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "run \`$progname --help | more' for full usage"
5208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $?
5218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
5228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_help
5248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo long help message to standard output and exit.
5258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_help ()
5268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
5278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $SED -n '/^# Usage:/,/# Report bugs to/ {
5288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        s/^# //
5298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/^# *$//
5308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s*\$progname*'$progname'*
5318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s*\$host*'"$host"'*
5328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s*\$SHELL*'"$SHELL"'*
5338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s*\$LTCC*'"$LTCC"'*
5348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s*\$LD*'"$LD"'*
5368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	p
5408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     }' < "$progpath"
5418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $?
5428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
5438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_missing_arg argname
5458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error and set global
5468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# exit_cmd.
5478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_missing_arg ()
5488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
5498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_error "missing argument for $1"
5508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit_cmd=exit
5518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
5528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexit_cmd=:
5548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Check that we have a working $ECHO.
5608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test "X$1" = X--no-reexec; then
5618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Discard the --no-reexec flag, and continue.
5628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  shift
5638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselif test "X$1" = X--fallback-echo; then
5648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Avoid inline document here, it may be left over
5658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  :
5668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Yippee, $ECHO works!
5688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  :
5698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse
5708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Restart under the correct shell, and then maybe $ECHO will work.
5718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi
5738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test "X$1" = X--fallback-echo; then
5758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # used as fallback echo
5768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  shift
5778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  cat <<EOF
5788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$*
5798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
5808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  exit $EXIT_SUCCESS
5818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi
5828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmagic="%%%MAGIC variable%%%"
5848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmagic_exe="%%%MAGIC EXE variable%%%"
5858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Global variables.
5878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $mode is unset
5888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsnonopt=
5898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexecute_dlfiles=
5908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspreserve_args=
5918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslo2o="s/\\.lo\$/.${objext}/"
5928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelso2lo="s/\\.${objext}\$/.lo/"
5938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextracted_archives=
5948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextracted_serial=0
5958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
5968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_dry_run=false
5978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_duplicate_deps=false
5988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_silent=false
5998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsopt_debug=:
6008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If this variable is set in any of the actions, the command in it
6028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# will be execed at the end.  This prevents here-documents from being
6038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# left over by shells.
6048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexec_cmd=
6058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_fatal_configuration arg...
6078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Echo program name prefixed message to standard error, followed by
6088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# a configuration failure hint, and exit.
6098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_fatal_configuration ()
6108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
6118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_error ${1+"$@"}
6128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_error "See the $PACKAGE documentation for more information."
6138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_fatal_error "Fatal configuration error."
6148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
6158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_config
6188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Display the configuration for all the tags in this script.
6198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_config ()
6208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
6218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    re_begincf='^# ### BEGIN LIBTOOL'
6228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    re_endcf='^# ### END LIBTOOL'
6238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Default configuration.
6258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Now print the configurations for the tags.
6288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for tagname in $taglist; do
6298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
6318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $?
6338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
6348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_features
6368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Display the features supported by this script.
6378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_features ()
6388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
6398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "host: $host"
6408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_libtool_libs" = yes; then
6418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "enable shared libraries"
6428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
6438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "disable shared libraries"
6448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
6458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_old_libs" = yes; then
6468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "enable static libraries"
6478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
6488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "disable static libraries"
6498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
6508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $?
6528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
6538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_enable_tag tagname
6558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Verify that TAGNAME is valid, and either flag an error and exit, or
6568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# variable here.
6588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_enable_tag ()
6598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
6608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Global variable:
6618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tagname="$1"
6628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Validate tagname.
6688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case $tagname in
6698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *[!-_A-Za-z0-9,/]*)
6708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_error "invalid tag name: $tagname"
6718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
6728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  esac
6738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Don't test for the "default" C tag, as we know it's
6758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # there but not specially marked.
6768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case $tagname in
6778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    CC) ;;
6788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)
6798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	taglist="$taglist $tagname"
6818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Evaluate the configuration.  Be careful to quote the path
6838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# and the sed script, to avoid splitting on whitespace, but
6848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# also don't use non-portable quotes within backquotes within
6858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# quotes we have to do it in 2 steps:
6868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "$extractedcf"
6888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
6898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_error "ignoring unknown tag $tagname"
6908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
6918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
6928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  esac
6938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
6948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Parse options once, thoroughly.  This comes as soon as possible in
6968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the script to make things like `libtool --version' happen quickly.
6978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
6988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
6998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Shorthand for --mode=foo, only valid as the first argument
7008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case $1 in
7018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  clean|clea|cle|cl)
7028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode clean ${1+"$@"}; shift
7038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  compile|compil|compi|comp|com|co|c)
7058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode compile ${1+"$@"}; shift
7068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  execute|execut|execu|exec|exe|ex|e)
7088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode execute ${1+"$@"}; shift
7098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  finish|finis|fini|fin|fi|f)
7118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode finish ${1+"$@"}; shift
7128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  install|instal|insta|inst|ins|in|i)
7148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode install ${1+"$@"}; shift
7158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  link|lin|li|l)
7178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode link ${1+"$@"}; shift
7188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift; set dummy --mode uninstall ${1+"$@"}; shift
7218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
7228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  esac
7238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Parse non-mode specific arguments:
7258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  while test "$#" -gt 0; do
7268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    opt="$1"
7278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    shift
7288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $opt in
7308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --config)		func_config					;;
7318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --debug)		preserve_args="$preserve_args $opt"
7338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			func_echo "enabling shell trace mode"
7348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			opt_debug='set -x'
7358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			$opt_debug
7368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			execute_dlfiles="$execute_dlfiles $1"
7408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			shift
7418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --dry-run | -n)	opt_dry_run=:					;;
7448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --features)       func_features					;;
7458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --finish)		mode="finish"					;;
7468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			case $1 in
7498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  # Valid mode arguments:
7508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  clean)	;;
7518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  compile)	;;
7528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  execute)	;;
7538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  finish)	;;
7548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  install)	;;
7558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  link)		;;
7568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  relink)	;;
7578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  uninstall)	;;
7588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  # Catch anything else as an error
7608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  *) func_error "invalid argument for $opt"
7618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			     exit_cmd=exit
7628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			     break
7638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			     ;;
7648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		        esac
7658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			mode="$1"
7678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			shift
7688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --preserve-dup-deps)
7718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			opt_duplicate_deps=:				;;
7728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --quiet|--silent)	preserve_args="$preserve_args $opt"
7748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			opt_silent=:
7758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --verbose| -v)	preserve_args="$preserve_args $opt"
7788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			opt_silent=false
7798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			preserve_args="$preserve_args $opt $1"
7838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			func_enable_tag "$1"	# tagname is set here
7848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			shift
7858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Separate optargs to long options:
7888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -dlopen=*|--mode=*|--tag=*)
7898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			func_opt_split "$opt"
7908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			shift
7928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
7938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -\?|-h)		func_usage					;;
7958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --help)		opt_help=:					;;
7968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      --version)	func_version					;;
7978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
7988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)		nonopt="$opt"
8018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			break
8028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			;;
8038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
8048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  done
8058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case $host in
8088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *cygwin* | *mingw* | *pw32* | *cegcc*)
8098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # don't eliminate duplications in $postdeps and $predeps
8108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      opt_duplicate_compiler_generated_deps=:
8118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
8128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)
8138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
8158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  esac
8168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Having warned about all mis-specified options, bail out if
8188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # anything was wrong.
8198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  $exit_cmd $EXIT_FAILURE
8208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
8218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_check_version_match
8238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Ensure that we are using m4 macros, and libtool script from the same
8248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# release of libtool.
8258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_check_version_match ()
8268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
8278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test "$package_revision" != "$macro_revision"; then
8288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$VERSION" != "$macro_version"; then
8298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -z "$macro_version"; then
8308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        cat >&2 <<_LT_EOF
8318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: definition of this LT_INIT comes from an older release.
8338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: and run autoconf again.
8358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels_LT_EOF
8368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
8378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        cat >&2 <<_LT_EOF
8388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: and run autoconf again.
8428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels_LT_EOF
8438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
8448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
8458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      cat >&2 <<_LT_EOF
8468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$progname: of $PACKAGE $VERSION and run autoconf again.
8508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels_LT_EOF
8518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
8528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $EXIT_MISMATCH
8548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
8558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
8568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels## ----------- ##
8598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels##    Main.    ##
8608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels## ----------- ##
8618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$opt_help || {
8638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Sanity checks first:
8648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_check_version_match
8658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_fatal_configuration "not configured to build any kind of library"
8688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
8698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Darwin sucks
8748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  eval std_shrext=\"$shrext_cmds\"
8758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Only execute mode is allowed to have -dlopen flags.
8788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_error "unrecognized option \`-dlopen'"
8808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "$help" 1>&2
8818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $EXIT_FAILURE
8828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
8838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Change the help message to a mode-specific one.
8858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  generic_help="$help"
8868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  help="Try \`$progname --help --mode=$mode' for more information."
8878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
8888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_lalib_p file
8918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool `.la' library or `.lo' object file.
8928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out
8938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters.
8948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_lalib_p ()
8958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
8968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -f "$1" &&
8978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $SED -e 4q "$1" 2>/dev/null \
8988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_lalib_unsafe_p file
9028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool `.la' library or `.lo' object file.
9038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function implements the same check as func_lalib_p without
9048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# resorting to external programs.  To this end, it redirects stdin and
9058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# closes it afterwards, without saving the original file descriptor.
9068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# As a safety measure, use it only where a negative result would be
9078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# fatal anyway.  Works if `file' does not exist.
9088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_lalib_unsafe_p ()
9098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lalib_p=no
9118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for lalib_p_l in 1 2 3 4
9138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	do
9148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    read lalib_p_line
9158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$lalib_p_line" in
9168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
9188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
9198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exec 0<&5 5<&-
9208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
9218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test "$lalib_p" = yes
9228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_script_p file
9258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool wrapper script
9268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out
9278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters.
9288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_script_p ()
9298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_lalib_p "$1"
9318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_executable_p file
9348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool wrapper executable
9358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out
9368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters.
9378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_executable_p ()
9388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_ltwrapper_exec_suffix=
9408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $1 in
9418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.exe) ;;
9428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *) func_ltwrapper_exec_suffix=.exe ;;
9438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
9448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_scriptname file
9488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Assumes file is an ltwrapper_executable
9498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# uses $file to determine the appropriate filename for a
9508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# temporary ltwrapper_script.
9518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_scriptname ()
9528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_ltwrapper_scriptname_result=""
9548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if func_ltwrapper_executable_p "$1"; then
9558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_dirname_and_basename "$1" "" "."
9568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname '' '.exe' "$func_basename_result"
9578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
9598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_ltwrapper_p file
9628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# True iff FILE is a libtool wrapper script or wrapper executable
9638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This function is only a basic sanity check; it will hardly flush out
9648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# determined imposters.
9658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_ltwrapper_p ()
9668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_execute_cmds commands fail_cmd
9728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Execute tilde-delimited COMMANDS.
9738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If FAIL_CMD is given, eval that upon failure.
9748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# FAIL_CMD may read-access the current command in variable CMD!
9758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_execute_cmds ()
9768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
9788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    save_ifs=$IFS; IFS='~'
9798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for cmd in $1; do
9808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      IFS=$save_ifs
9818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval cmd=\"$cmd\"
9828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval "$cmd" "${2-:}"
9838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
9848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    IFS=$save_ifs
9858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
9868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
9888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_source file
9898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Source FILE, adding directory component if necessary.
9908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Note that it is not necessary on cygwin/mingw to append a dot to
9918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# `FILE.' does not work on cygwin managed mounts.
9948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_source ()
9958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
9968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
9978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $1 in
9988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    */* | *\\*)	. "$1" ;;
9998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)		. "./$1" ;;
10008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
10018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
10028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_infer_tag arg
10058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Infer tagged configuration to use if any are available and
10068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# if one wasn't chosen via the "--tag" command line option.
10078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Only attempt this if the compiler in the base compile
10088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# command doesn't match the default compiler.
10098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# arg is usually of the form 'gcc ...'
10108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_infer_tag ()
10118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
10128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
10138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$available_tags" && test -z "$tagname"; then
10148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      CC_quoted=
10158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for arg in $CC; do
10168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_quote_for_eval "$arg"
10178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
10198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $@ in
10208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Blanks in the command may have been stripped by the calling shell,
10218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # but not from the CC environment variable when configure was run.
10228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Blanks at the start of $base_compile will cause this to fail
10248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # if we don't check for them as well.
10258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
10268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for z in $available_tags; do
10278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Evaluate the configuration.
10298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    CC_quoted=
10318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for arg in $CC; do
10328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Double-quote args containing other shell metacharacters.
10338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_quote_for_eval "$arg"
10348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
10368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$@ " in
10378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # The compiler in the base compile command matches
10398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # the one in the tagged configuration.
10408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Assume this is the tagged configuration we want.
10418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      tagname=$z
10428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      break
10438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
10448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
10458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
10468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
10478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If $tagname still isn't set, then no tagged configuration
10488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# was found and let the user know that the "--tag" command
10498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# line option must be used.
10508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$tagname"; then
10518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_echo "unable to infer tagged configuration"
10528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "specify a tag with \`--tag'"
10538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#	else
10548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#	  func_verbose "using $tagname tagged configuration"
10558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
10568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
10578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
10588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
10598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
10608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_write_libtool_object output_name pic_name nonpic_name
10648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Create a libtool object file (analogous to a ".la" file),
10658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# but don't create it if we're doing a dry run.
10668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_write_libtool_object ()
10678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
10688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    write_libobj=${1}
10698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_libtool_libs" = yes; then
10708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      write_lobj=\'${2}\'
10718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
10728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      write_lobj=none
10738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
10748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_old_libs" = yes; then
10768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      write_oldobj=\'${3}\'
10778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
10788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      write_oldobj=none
10798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
10808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_dry_run || {
10828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      cat >${write_libobj}T <<EOF
10838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $write_libobj - a libtool object file
10848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
10868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Please DO NOT delete this file!
10878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# It is necessary for linking the library.
10888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Name of the PIC object.
10908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelspic_object=$write_lobj
10918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Name of the non-PIC object
10938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsnon_pic_object=$write_oldobj
10948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
10958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
10968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $MV "${write_libobj}T" "${write_libobj}"
10978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
10988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
10998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_compile arg...
11018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_compile ()
11028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
11038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
11048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Get the compilation command and the source file.
11058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    base_compile=
11068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    suppress_opt=yes
11088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    suppress_output=
11098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    arg_mode=normal
11108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libobj=
11118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    later=
11128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    pie_flag=
11138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for arg
11158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    do
11168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $arg_mode in
11178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      arg  )
11188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# do not "continue".  Instead, add this to base_compile
11198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	lastarg="$arg"
11208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg_mode=normal
11218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
11228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      target )
11248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libobj="$arg"
11258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg_mode=normal
11268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
11278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
11288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      normal )
11308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Accept any command-line options.
11318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $arg in
11328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-o)
11338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$libobj" && \
11348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "you cannot specify \`-o' more than once"
11358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  arg_mode=target
11368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
11378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
11388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-pie | -fpie | -fPIE)
11408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          pie_flag="$pie_flag $arg"
11418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
11428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
11438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-shared | -static | -prefer-pic | -prefer-non-pic)
11458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  later="$later $arg"
11468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
11478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
11488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-no-suppress)
11508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  suppress_opt=no
11518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
11528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
11538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-Xcompiler)
11558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
11568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue      #  The current "srcfile" will either be retained or
11578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;            #  replaced later.  I would guess that would be a bug.
11588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-Wc,*)
11608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_stripname '-Wc,' '' "$arg"
11618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  args=$func_stripname_result
11628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lastarg=
11638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  save_ifs="$IFS"; IFS=','
11648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for arg in $args; do
11658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    IFS="$save_ifs"
11668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_quote_for_eval "$arg"
11678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lastarg="$lastarg $func_quote_for_eval_result"
11688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
11698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  IFS="$save_ifs"
11708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_stripname ' ' '' "$lastarg"
11718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lastarg=$func_stripname_result
11728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add the arguments to base_compile.
11748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  base_compile="$base_compile $lastarg"
11758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
11768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
11778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
11798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Accept the current argument as the source file.
11808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # The previous "srcfile" becomes the current argument.
11818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  #
11828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lastarg="$srcfile"
11838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  srcfile="$arg"
11848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
11858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac  #  case $arg
11868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
11878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac    #  case $arg_mode
11888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Aesthetically quote the previous argument.
11908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_eval "$lastarg"
11918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      base_compile="$base_compile $func_quote_for_eval_result"
11928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done # for arg
11938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
11948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $arg_mode in
11958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    arg)
11968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_error "you must specify an argument for -Xcompile"
11978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
11988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    target)
11998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_error "you must specify a target with \`-o'"
12008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
12018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)
12028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Get the name of the library object.
12038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -z "$libobj" && {
12048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_basename "$srcfile"
12058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libobj="$func_basename_result"
12068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
12078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
12088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
12098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Recognize several different file suffixes.
12118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # If the user specifies -o file.o, it is replaced with file.lo
12128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $libobj in
12138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.[cCFSifmso] | \
12148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.ada | *.adb | *.ads | *.asm | \
12158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_xform "$libobj"
12188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      libobj=$func_xform_result
12198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
12208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
12218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $libobj in
12238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)
12258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_error "cannot determine name of library object from \`$libobj'"
12268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
12278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
12288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_infer_tag $base_compile
12308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for arg in $later; do
12328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $arg in
12338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -shared)
12348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test "$build_libtool_libs" != yes && \
12358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_configuration "can not build a shared library"
12368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_old_libs=no
12378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
12388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
12398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -static)
12418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_libtool_libs=no
12428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_old_libs=yes
12438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
12448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
12458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -prefer-pic)
12478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	pic_mode=yes
12488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
12498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
12508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -prefer-non-pic)
12528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	pic_mode=no
12538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
12548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
12558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
12568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
12578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_quote_for_eval "$libobj"
12598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test "X$libobj" != "X$func_quote_for_eval_result" \
12608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_dirname_and_basename "$obj" "/" ""
12638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    objname="$func_basename_result"
12648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    xdir="$func_dirname_result"
12658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lobj=${xdir}$objdir/$objname
12668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -z "$base_compile" && \
12688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "you must specify a compilation command"
12698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Delete any leftover library objects.
12718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_old_libs" = yes; then
12728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      removelist="$obj $lobj $libobj ${libobj}T"
12738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
12748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      removelist="$lobj $libobj ${libobj}T"
12758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
12768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # On Cygwin there's no "real" PIC flag so we must build both object types
12788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $host_os in
12798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    cygwin* | mingw* | pw32* | os2* | cegcc*)
12808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      pic_mode=default
12818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
12828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
12838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # non-PIC code in shared libraries is not supported
12858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      pic_mode=default
12868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
12878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Calculate the filename of the output object if compiler does
12898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # not support -o with -c
12908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$compiler_c_o" = no; then
12918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lockfile="$output_obj.lock"
12938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
12948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      output_obj=
12958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      need_locks=no
12968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lockfile=
12978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
12988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
12998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Lock this critical section if it is needed
13008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # We use this script file to make the link, it avoids creating a new file
13018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$need_locks" = yes; then
13028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_echo "Waiting for $lockfile to be removed"
13048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	sleep 2
13058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
13068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    elif test "$need_locks" = warn; then
13078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -f "$lockfile"; then
13088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
13098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*** ERROR, $lockfile exists and contains:
13108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels`cat $lockfile 2>/dev/null`
13118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis indicates that another process is trying to use the same
13138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemporary object file, and libtool could not work around it because
13148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together.  If you
13158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better
13168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better
13178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscompiler."
13188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || $RM $removelist
13208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_FAILURE
13218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      removelist="$removelist $output_obj"
13238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "$srcfile" > "$lockfile"
13248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
13258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_dry_run || $RM $removelist
13278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    removelist="$removelist $lockfile"
13288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$fix_srcfile_path"; then
13318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval srcfile=\"$fix_srcfile_path\"
13328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
13338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_quote_for_eval "$srcfile"
13348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    qsrcfile=$func_quote_for_eval_result
13358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Only build a PIC object if we are building libtool libraries.
13378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_libtool_libs" = yes; then
13388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Without this assignment, base_compile gets emptied.
13398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fbsd_hideous_sh_bug=$base_compile
13408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$pic_mode" != no; then
13428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	command="$base_compile $qsrcfile $pic_flag"
13438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
13448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Don't build PIC code
13458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	command="$base_compile $qsrcfile"
13468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_mkdir_p "$xdir$objdir"
13498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -z "$output_obj"; then
13518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Place PIC objects in $objdir
13528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	command="$command -o $lobj"
13538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval_locale "$command"	\
13568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$need_locks" = warn &&
13598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
13618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*** ERROR, $lockfile contains:
13628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels`cat $lockfile 2>/dev/null`
13638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbut it should contain:
13658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$srcfile
13668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis indicates that another process is trying to use the same
13688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemporary object file, and libtool could not work around it because
13698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together.  If you
13708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better
13718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better
13728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscompiler."
13738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || $RM $removelist
13758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_FAILURE
13768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Just move the object if needed, then go on to compile the next one
13798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval '$MV "$output_obj" "$lobj"' \
13818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Allow error messages only from the first compilation.
13858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$suppress_opt" = yes; then
13868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	suppress_output=' >/dev/null 2>&1'
13878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
13898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
13908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Only build a position-dependent object if we build old libraries.
13918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$build_old_libs" = yes; then
13928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$pic_mode" != yes; then
13938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Don't build PIC code
13948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	command="$base_compile $qsrcfile$pie_flag"
13958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
13968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	command="$base_compile $qsrcfile $pic_flag"
13978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
13988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$compiler_c_o" = yes; then
13998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	command="$command -o $obj"
14008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
14018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Suppress compiler output if we already did a PIC compilation.
14038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      command="$command$suppress_output"
14048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval_locale "$command" \
14058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$need_locks" = warn &&
14088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
14108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*** ERROR, $lockfile contains:
14118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels`cat $lockfile 2>/dev/null`
14128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbut it should contain:
14148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$srcfile
14158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis indicates that another process is trying to use the same
14178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstemporary object file, and libtool could not work around it because
14188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsyour compiler does not support \`-c' and \`-o' together.  If you
14198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrepeat this compilation, it may succeed, by chance, but you had better
14208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsavoid parallel builds (make -j) in this platform, or get a better
14218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscompiler."
14228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || $RM $removelist
14248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_FAILURE
14258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
14268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Just move the object if needed
14288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval '$MV "$output_obj" "$obj"' \
14308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
14328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
14338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_dry_run || {
14358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Unlock the critical section if it was locked
14388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$need_locks" != no; then
14398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	removelist=$lockfile
14408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $RM "$lockfile"
14418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
14428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
14438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $EXIT_SUCCESS
14458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
14468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$opt_help || {
14488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = compile && func_mode_compile ${1+"$@"}
14498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
14508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_help ()
14528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
14538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # We need to display help for each of the modes.
14548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $mode in
14558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      "")
14568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # Generic help is extracted from the usage comments
14578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # at the start of this file.
14588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_help
14598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
14608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      clean)
14628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO \
14638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRemove files from the build directory.
14668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRM is the name of the program to use to delete files associated with each FILE
14688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsto RM.
14708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf FILE is a libtool library, object or program, all the files associated
14728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelswith it are deleted. Otherwise, only FILE itself is deleted using RM."
14738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
14748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      compile)
14768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO \
14778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsCompile a source file into a libtool library object.
14808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis mode accepts the following additional options:
14828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -no-suppress      do not suppress compiler output for multiple passes
14858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -prefer-pic       try to building PIC objects only
14868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -prefer-non-pic   try to building non-PIC objects only
14878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -shared           do not build a \`.o' file suitable for static linking
14888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -static           only build a \`.o' file suitable for static linking
14898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
14918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfrom the given SOURCEFILE.
14928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe output file name is determined by removing the directory component from
14948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsSOURCEFILE, then substituting the C source code suffix \`.c' with the
14958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslibrary object suffix, \`.lo'."
14968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
14978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
14988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      execute)
14998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO \
15008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsAutomatically set library path, then run a program.
15038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis mode accepts the following additional options:
15058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -dlopen FILE      add the directory containing FILE to the library path
15078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThis mode sets the library path environment variable according to \`-dlopen'
15098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsflags.
15108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf any of the ARGS are libtool executable wrappers, then they are translated
15128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsinto their corresponding uninstalled binary, and any of their required library
15138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdirectories are added to the library path.
15148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThen, COMMAND is executed, with ARGS as arguments."
15168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
15178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      finish)
15198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO \
15208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsComplete the installation of libtool libraries.
15238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEach LIBDIR is a directory that contains libtool libraries.
15258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe commands that this mode executes may require superuser privileges.  Use
15278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsthe \`--dry-run' option if you just want to see what would be executed."
15288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
15298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      install)
15318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO \
15328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsInstall executables or libraries.
15358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsINSTALL-COMMAND is the installation command.  The first component should be
15378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelseither the \`install' or \`cp' program.
15388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe following components of INSTALL-COMMAND are treated specially:
15408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe rest of the components are interpreted as arguments to that command (only
15448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsBSD-compatible install options are recognized)."
15458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
15468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      link)
15488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO \
15498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsLink object files or libraries together to form another library, or to
15528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscreate an executable program.
15538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsLINK-COMMAND is a command using the C compiler that you would use to create
15558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsa program from several object files.
15568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsThe following components of LINK-COMMAND are treated specially:
15588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -all-static       do not do any dynamic linking at all
15608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -avoid-version    do not add a version suffix if possible
15618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -export-symbols SYMFILE
15658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    try to export only the symbols listed in SYMFILE
15668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -export-symbols-regex REGEX
15678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    try to export only the symbols matching REGEX
15688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -LLIBDIR          search LIBDIR for required installed libraries
15698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -lNAME            OUTPUT-FILE requires the installed library libNAME
15708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -module           build a library that can dlopened
15718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -no-fast-install  disable the fast-install mode
15728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -no-install       link a not-installable executable
15738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -no-undefined     declare that a library does not refer to external symbols
15748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -objectlist FILE  Use a list of object files found in FILE to specify objects
15768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -precious-files-regex REGEX
15778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    don't remove output files matching REGEX
15788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -release RELEASE  specify package release information
15798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -shared           only do dynamic linking of libtool libraries
15828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -shrext SUFFIX    override the standard shared library file extension
15838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -static           do not do any dynamic linking of uninstalled libtool libraries
15848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -static-libtool-libs
15858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    do not do any dynamic linking of libtool libraries
15868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -version-info CURRENT[:REVISION[:AGE]]
15878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    specify library version info [each variable defaults to 0]
15888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  -weak LIBNAME     declare that the target provides the LIBNAME interface
15898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsAll other options (arguments beginning with \`-') are ignored.
15918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEvery other argument is treated as a filename.  Files ending in \`.la' are
15938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstreated as uninstalled libtool libraries, other files are standard or library
15948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsobject files.
15958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
15968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsonly library objects (\`.lo' files) may be specified, and \`-rpath' is
15988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrequired, except when creating a convenience library.
15998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsusing \`ar' and \`ranlib', or on Windows using \`lib'.
16028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsis created, otherwise an executable program is created."
16058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
16068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      uninstall)
16088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO \
16098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRemove libraries from an installation directory.
16128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsRM is the name of the program to use to delete files associated with each FILE
16148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsto RM.
16168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsIf FILE is a libtool library, all the files associated with it are deleted.
16188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsOtherwise, only FILE itself is deleted using RM."
16198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
16208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
16228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_fatal_help "invalid operation mode \`$mode'"
16238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
16248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
16258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO
16278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "Try \`$progname --help' for more information about other modes."
16288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $?
16308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
16318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Now that we've collected a possible --mode arg, show help if necessary
16338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  $opt_help && func_mode_help
16348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_execute arg...
16378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_execute ()
16388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
16398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
16408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # The first argument is the command name.
16418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    cmd="$nonopt"
16428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -z "$cmd" && \
16438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "you must specify a COMMAND"
16448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Handle -dlopen flags immediately.
16468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for file in $execute_dlfiles; do
16478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -f "$file" \
16488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	|| func_fatal_help "\`$file' is not a file"
16498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dir=
16518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $file in
16528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.la)
16538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Check to see that this really is a libtool archive.
16548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_lalib_unsafe_p "$file" \
16558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Read the libtool library.
16588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlname=
16598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	library_names=
16608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_source "$file"
16618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Skip this library if it cannot be dlopened.
16638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$dlname"; then
16648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Warn if it was a shared library.
16658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$library_names" && \
16668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
16688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
16698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_dirname "$file" "" "."
16718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dir="$func_dirname_result"
16728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -f "$dir/$objdir/$dlname"; then
16748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dir="$dir/$objdir"
16758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
16768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test ! -f "$dir/$dlname"; then
16778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
16798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
16808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
16818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.lo)
16838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Just add the directory containing the .lo file.
16848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_dirname "$file" "" "."
16858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dir="$func_dirname_result"
16868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
16878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
16898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
16918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
16928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
16938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Get the absolute pathname.
16958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      absdir=`cd "$dir" && pwd`
16968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$absdir" && dir="$absdir"
16978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
16988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now add the directory to shlibpath_var.
16998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if eval "test -z \"\$$shlibpath_var\""; then
17008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "$shlibpath_var=\"\$dir\""
17018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
17028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
17048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
17058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # This variable tells wrapper scripts just to set shlibpath_var
17078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # rather than running their programs.
17088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libtool_execute_magic="$magic"
17098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Check if any of the arguments is a wrapper script.
17118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    args=
17128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for file
17138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    do
17148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $file in
17158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -*) ;;
17168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
17178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Do a test to see if this is really a libtool program.
17188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if func_ltwrapper_script_p "$file"; then
17198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source "$file"
17208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Transform arg to wrapped name.
17218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  file="$progdir/$program"
17228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif func_ltwrapper_executable_p "$file"; then
17238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_ltwrapper_scriptname "$file"
17248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source "$func_ltwrapper_scriptname_result"
17258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Transform arg to wrapped name.
17268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  file="$progdir/$program"
17278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
17288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
17298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
17308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Quote arguments (to preserve shell metacharacters).
17318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_eval "$file"
17328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      args="$args $func_quote_for_eval_result"
17338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
17348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "X$opt_dry_run" = Xfalse; then
17368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$shlibpath_var"; then
17378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Export the shlibpath_var.
17388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "export $shlibpath_var"
17398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
17408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Restore saved environment variables
17428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      do
17448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "if test \"\${save_$lt_var+set}\" = set; then
17458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                $lt_var=\$save_$lt_var; export $lt_var
17468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
17478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$lt_unset $lt_var
17488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi"
17498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
17508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now prepare to actually exec the command.
17528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exec_cmd="\$cmd$args"
17538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
17548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Display what would be done.
17558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$shlibpath_var"; then
17568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "export $shlibpath_var"
17588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
17598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "$cmd$args"
17608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exit $EXIT_SUCCESS
17618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
17628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
17638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = execute && func_mode_execute ${1+"$@"}
17658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_finish arg...
17688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_finish ()
17698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
17708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
17718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libdirs="$nonopt"
17728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    admincmds=
17738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for dir
17768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      do
17778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libdirs="$libdirs $dir"
17788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
17798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for libdir in $libdirs; do
17818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$finish_cmds"; then
17828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Do each command in the finish commands.
17838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels'"$cmd"'"'
17858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
17868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$finish_eval"; then
17878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Do the single finish_eval.
17888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval cmds=\"$finish_eval\"
17898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       $cmds"
17918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
17928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
17938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
17948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Exit here if they wanted silent mode.
17968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_silent && exit $EXIT_SUCCESS
17978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
17988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "X----------------------------------------------------------------------" | $Xsed
17998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "Libraries have been installed in:"
18008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for libdir in $libdirs; do
18018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "   $libdir"
18028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
18038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO
18048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "If you ever happen to want to link against installed libraries"
18058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "flag during linking and do at least one of the following:"
18088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$shlibpath_var"; then
18098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "     during execution"
18118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
18128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$runpath_var"; then
18138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "     during linking"
18158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
18168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$hardcode_libdir_flag_spec"; then
18178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      libdir=LIBDIR
18188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval flag=\"$hardcode_libdir_flag_spec\"
18198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "   - use the \`$flag' linker flag"
18218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
18228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$admincmds"; then
18238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "   - have your system administrator run these commands:$admincmds"
18248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
18258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -f /etc/ld.so.conf; then
18268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
18288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO
18298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "See any operating system documentation about shared libraries for"
18318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $host in
18328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      solaris2.[6789]|solaris2.1[0-9])
18338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "pages."
18358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
18368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
18378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
18398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
18408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO "X----------------------------------------------------------------------" | $Xsed
18418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $EXIT_SUCCESS
18428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
18438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = finish && func_mode_finish ${1+"$@"}
18458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_install arg...
18488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_install ()
18498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
18508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
18518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # There may be an optional sh(1) argument at the beginning of
18528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # install_prog (especially on Windows NT).
18538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       # Allow the use of GNU shtool's install command.
18558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Aesthetically quote it.
18578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_eval "$nonopt"
18588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      install_prog="$func_quote_for_eval_result "
18598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      arg=$1
18608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      shift
18618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
18628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      install_prog=
18638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      arg=$nonopt
18648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
18658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # The real first argument should be the name of the installation program.
18678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Aesthetically quote it.
18688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_quote_for_eval "$arg"
18698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    install_prog="$install_prog$func_quote_for_eval_result"
18708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # We need to accept at least all the BSD install flags.
18728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    dest=
18738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    files=
18748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    opts=
18758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    prev=
18768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    install_type=
18778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    isdir=no
18788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    stripme=
18798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for arg
18808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    do
18818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$dest"; then
18828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	files="$files $dest"
18838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dest=$arg
18848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
18858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
18868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
18878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $arg in
18888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -d) isdir=yes ;;
18898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -f)
18908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case " $install_prog " in
18918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*[\\\ /]cp\ *) ;;
18928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) prev=$arg ;;
18938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
18948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
18958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -g | -m | -o)
18968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=$arg
18978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
18988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -s)
18998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	stripme=" -s"
19008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
19018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
19028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -*)
19038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
19048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
19058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If the previous option needed an argument, then skip it.
19068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$prev"; then
19078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
19088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
19098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dest=$arg
19108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
19118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
19128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
19138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
19148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Aesthetically quote the argument.
19168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_eval "$arg"
19178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      install_prog="$install_prog $func_quote_for_eval_result"
19188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
19198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -z "$install_prog" && \
19218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "you must specify an install program"
19228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -n "$prev" && \
19248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "the \`$prev' option requires an argument"
19258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -z "$files"; then
19278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -z "$dest"; then
19288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_fatal_help "no file or destination specified"
19298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
19308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_fatal_help "you must specify a destination"
19318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
19328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
19338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Strip any trailing slash from the destination.
19358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_stripname '' '/' "$dest"
19368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    dest=$func_stripname_result
19378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Check to see that the destination is a directory.
19398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -d "$dest" && isdir=yes
19408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$isdir" = yes; then
19418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      destdir="$dest"
19428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      destname=
19438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
19448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_dirname_and_basename "$dest" "" "."
19458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      destdir="$func_dirname_result"
19468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      destname="$func_basename_result"
19478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Not a directory, so check to see that there is only one file specified.
19498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      set dummy $files; shift
19508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "$#" -gt 1 && \
19518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_fatal_help "\`$dest' is not a directory"
19528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
19538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $destdir in
19548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    [\\/]* | [A-Za-z]:[\\/]*) ;;
19558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)
19568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for file in $files; do
19578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $file in
19588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.lo) ;;
19598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
19608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_help "\`$destdir' must be an absolute directory name"
19618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
19628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
19638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
19648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
19658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
19668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # This variable tells wrapper scripts just to set variables rather
19688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # than running their programs.
19698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libtool_install_magic="$magic"
19708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    staticlibs=
19728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    future_libdirs=
19738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    current_libdirs=
19748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for file in $files; do
19758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Do each installation.
19778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $file in
19788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.$libext)
19798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Do the static libraries later.
19808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	staticlibs="$staticlibs $file"
19818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
19828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.la)
19848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Check to see that this really is a libtool archive.
19858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_lalib_unsafe_p "$file" \
19868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  || func_fatal_help "\`$file' is not a valid libtool archive"
19878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	library_names=
19898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	old_library=
19908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	relink_command=
19918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_source "$file"
19928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
19938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Add the libdir to current_libdirs if it is the destination.
19948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "X$destdir" = "X$libdir"; then
19958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$current_libdirs " in
19968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $libdir "*) ;;
19978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) current_libdirs="$current_libdirs $libdir" ;;
19988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
19998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
20008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Note the libdir as a future libdir.
20018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$future_libdirs " in
20028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $libdir "*) ;;
20038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) future_libdirs="$future_libdirs $libdir" ;;
20048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
20058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
20068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_dirname "$file" "/" ""
20088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dir="$func_dirname_result"
20098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dir="$dir$objdir"
20108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$relink_command"; then
20128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Determine the prefix the user has applied to our future dir.
20138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Don't allow the user to place us outside of our expected
20168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # location b/c this prevents finding dependent libraries that
20178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # are installed to the same prefix.
20188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # At present, this check doesn't affect windows .dll's that
20198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # are installed into $libdir/../bin (currently, that works fine)
20208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # but it's something to keep an eye on.
20218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test "$inst_prefix_dir" = "$destdir" && \
20228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$inst_prefix_dir"; then
20258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Stick the inst_prefix_dir data into the link command.
20268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
20288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
20308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_warning "relinking \`$file'"
20328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval "$relink_command" \
20338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
20358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# See the names of the shared library.
20378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	set dummy $library_names; shift
20388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$1"; then
20398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  realname="$1"
20408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  shift
20418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  srcname="$realname"
20438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$relink_command" && srcname="$realname"T
20448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Install the shared library and build the symlinks.
20468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      'exit $?'
20488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tstripme="$stripme"
20498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host_os in
20508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  cygwin* | mingw* | pw32* | cegcc*)
20518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $realname in
20528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *.dll.a)
20538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      tstripme=""
20548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
20558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
20568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
20578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
20588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$tstripme" && test -n "$striplib"; then
20598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
20608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
20618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$#" -gt 0; then
20638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Delete the old symlinks, and create new ones.
20648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Try `ln -sf' first, because the `ln' binary might depend on
20658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # so we also need to try rm && ln -s.
20678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for linkname
20688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    do
20698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test "$linkname" != "$realname" \
20708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
20728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
20738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Do each command in the postinstall commands.
20758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lib="$destdir/$realname"
20768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
20788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Install the pseudo-library for information purposes.
20808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_basename "$file"
20818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	name="$func_basename_result"
20828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	instname="$dir/$name"i
20838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Maybe install the static library, too.
20868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
20888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.lo)
20908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Install (i.e. copy) a libtool object.
20918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
20928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Figure out destination file name, if it wasn't already specified.
20938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$destname"; then
20948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile="$destdir/$destname"
20958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
20968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_basename "$file"
20978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile="$func_basename_result"
20988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile="$destdir/$destfile"
20998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
21008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Deduce the name of the destination old-style object file.
21028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $destfile in
21038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.lo)
21048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_lo2o "$destfile"
21058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  staticdest=$func_lo2o_result
21068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
21078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.$objext)
21088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  staticdest="$destfile"
21098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile=
21108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
21118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
21128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
21148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
21158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Install the libtool object if requested.
21178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$destfile" && \
21188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval "$install_prog $file $destfile" 'exit $?'
21198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Install the old object if enabled.
21218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$build_old_libs" = yes; then
21228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Deduce the name of the old-style object file.
21238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_lo2o "$file"
21248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  staticobj=$func_lo2o_result
21258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
21278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_SUCCESS
21288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
21298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
21318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Figure out destination file name, if it wasn't already specified.
21328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$destname"; then
21338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile="$destdir/$destname"
21348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
21358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_basename "$file"
21368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile="$func_basename_result"
21378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  destfile="$destdir/$destfile"
21388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
21398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If the file is missing, and there is a .exe on the end, strip it
21418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# because it is most likely a libtool script we actually want to
21428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# install
21438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	stripped_ext=""
21448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $file in
21458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.exe)
21468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test ! -f "$file"; then
21478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_stripname '' '.exe' "$file"
21488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      file=$func_stripname_result
21498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      stripped_ext=".exe"
21508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
21518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
21528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
21538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Do a test to see if this is really a libtool program.
21558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
21568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*cygwin* | *mingw*)
21578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if func_ltwrapper_executable_p "$file"; then
21588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_ltwrapper_scriptname "$file"
21598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      wrapper=$func_ltwrapper_scriptname_result
21608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
21618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_stripname '' '.exe' "$file"
21628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      wrapper=$func_stripname_result
21638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
21648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
21658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
21668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    wrapper=$file
21678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
21688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
21698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if func_ltwrapper_script_p "$wrapper"; then
21708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  notinst_deplibs=
21718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  relink_command=
21728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source "$wrapper"
21748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Check the variables that should have been set.
21768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -z "$generated_by_libtool_version" && \
21778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  finalize=yes
21808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for lib in $notinst_deplibs; do
21818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Check to see that each library is installed.
21828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    libdir=
21838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -f "$lib"; then
21848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_source "$lib"
21858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
21868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$libdir" && test ! -f "$libfile"; then
21888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_warning "\`$lib' has not been installed in \`$libdir'"
21898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      finalize=no
21908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
21918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
21928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  relink_command=
21948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source "$wrapper"
21958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
21968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  outputname=
21978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$fast_install" = no && test -n "$relink_command"; then
21988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
21998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$finalize" = yes; then
22008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        tmpdir=`func_mktempdir`
22018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_basename "$file$stripped_ext"
22028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		file="$func_basename_result"
22038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        outputname="$tmpdir/$file"
22048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        # Replace the output file specification.
22058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        $opt_silent || {
22088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	          func_quote_for_expand "$relink_command"
22098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  eval "func_echo $func_quote_for_expand_result"
22108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        }
22118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        if eval "$relink_command"; then :
22128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	          else
22138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_error "error: relink \`$file' with the above command before installing it"
22148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $opt_dry_run || ${RM}r "$tmpdir"
22158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  continue
22168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        fi
22178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        file="$outputname"
22188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
22198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        func_warning "cannot relink \`$file'"
22208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
22218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
22228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
22238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Install the binary that we compiled earlier.
22248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
22268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
22278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# remove .exe since cygwin /usr/bin/install will append another
22298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# one anyway
22308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $install_prog,$host in
22318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*/usr/bin/install*,*cygwin*)
22328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $file:$destfile in
22338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.exe:*.exe)
22348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # this is ok
22358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
22368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.exe:*)
22378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    destfile=$destfile.exe
22388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
22398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *:*.exe)
22408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '' '.exe' "$destfile"
22418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    destfile=$func_stripname_result
22428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
22438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
22448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
22458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
22468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || if test -n "$outputname"; then
22488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ${RM}r "$tmpdir"
22498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
22508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
22518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
22528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
22538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for file in $staticlibs; do
22558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_basename "$file"
22568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      name="$func_basename_result"
22578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Set up the ranlib parameters.
22598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      oldlib="$destdir/$name"
22608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$stripme" && test -n "$old_striplib"; then
22648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "$old_striplib $oldlib" 'exit $?'
22658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
22668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Do each command in the postinstall commands.
22688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
22708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -n "$future_libdirs" && \
22728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_warning "remember to run \`$progname --finish$future_libdirs'"
22738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$current_libdirs"; then
22758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Maybe just do a dry run.
22768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
22798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exit $EXIT_SUCCESS
22808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
22818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
22828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest "$mode" = install && func_mode_install ${1+"$@"}
22848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_generate_dlsyms outputname originator pic_p
22878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Extract symbols from dlprefiles and create ${outputname}S.o with
22888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# a dlpreopen symbol table.
22898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_generate_dlsyms ()
22908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
22918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
22928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_outputname="$1"
22938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_originator="$2"
22948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_pic_p="${3-no}"
22958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_dlsyms=
22978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
22988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	my_dlsyms="${my_outputname}S.c"
23018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
23028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_error "not configured to extract global symbols from dlpreopened files"
23038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
23048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
23058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$my_dlsyms"; then
23078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $my_dlsyms in
23088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      "") ;;
23098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.c)
23108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Discover the nlist of each of the dlfiles.
23118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	nlist="$output_objdir/${my_outputname}.nm"
23128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Parse the name list into a source file.
23168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_verbose "creating $output_objdir/$my_dlsyms"
23178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __cplusplus
23238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern \"C\" {
23248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
23258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* External symbol declarations for the compiler. */\
23278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
23288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$dlself" = yes; then
23308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_verbose "generating symbol list for \`$output'"
23318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add our own program objects to the symbol list.
23358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for progfile in $progfiles; do
23378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_verbose "extracting global C symbols from \`$progfile'"
23388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
23408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$exclude_expsyms"; then
23428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
23438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval '$MV "$nlist"T "$nlist"'
23458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
23468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
23478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$export_symbols_regex"; then
23498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
23508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval '$MV "$nlist"T "$nlist"'
23528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
23538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
23548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Prepare the list of exported symbols
23568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$export_symbols"; then
23578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    export_symbols="$output_objdir/$outputname.exp"
23588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
23598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $RM $export_symbols
23608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $host in
23628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *cygwin* | *mingw* | *cegcc* )
23638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        ;;
23668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
23678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
23688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
23698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
23708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval '$MV "$nlist"T "$nlist"'
23738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $host in
23748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        *cygwin | *mingw* | *cegcc* )
23758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	          ;;
23788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
23798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
23808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
23818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
23828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for dlprefile in $dlprefiles; do
23848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_verbose "extracting global C symbols from \`$dlprefile'"
23858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_basename "$dlprefile"
23868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  name="$func_basename_result"
23878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || {
23888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval '$ECHO ": $name " >> "$nlist"'
23898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  }
23918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
23928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || {
23948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Make sure we have at least an empty file.
23958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -f "$nlist" || : > "$nlist"
23968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
23978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$exclude_expsyms"; then
23988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $MV "$nlist"T "$nlist"
24008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
24018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Try sorting and uniquifying the output.
24038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if $GREP -v "^: " < "$nlist" |
24048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		sort -k 3
24068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
24078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		sort +2
24088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi |
24098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      uniq > "$nlist"S; then
24108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    :
24118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
24128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $GREP -v "^: " < "$nlist" > "$nlist"S
24138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
24148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -f "$nlist"S; then
24168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
24188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
24208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* The mapping between symbol names and symbols.  */
24248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstypedef struct {
24258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  const char *name;
24268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  void *address;
24278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} lt_dlsymlist;
24288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
24298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host in
24308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *cygwin* | *mingw* | *cegcc* )
24318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* DATA imports from DLLs on WIN32 con't be const, because
24338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   runtime relocations are performed -- see ld's documentation
24348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   on pseudo-relocs.  */"
24358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lt_dlsym_const= ;;
24368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *osf5*)
24378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    echo >> "$output_objdir/$my_dlsyms" "\
24388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* This system does not cope well with relocations in const data */"
24398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lt_dlsym_const= ;;
24408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
24418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lt_dlsym_const=const ;;
24428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
24438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsextern $lt_dlsym_const lt_dlsymlist
24468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_${my_prefix}_LTX_preloaded_symbols[];
24478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels$lt_dlsym_const lt_dlsymlist
24488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_${my_prefix}_LTX_preloaded_symbols[] =
24498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{\
24508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  { \"$my_originator\", (void *) 0 },"
24518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $need_lib_prefix in
24538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  no)
24548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
24568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
24578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
24598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
24608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  {0, (void *) 0}
24628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels};
24638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* This works around a problem in FreeBSD linker */
24658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef FREEBSD_WORKAROUND
24668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const void *lt_preloaded_setup() {
24678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return lt_${my_prefix}_LTX_preloaded_symbols;
24688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
24698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
24708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __cplusplus
24728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
24738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif\
24748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
24758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	} # !$opt_dry_run
24768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
24778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	pic_flag_for_symtable=
24788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case "$compile_command " in
24798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" -static "*) ;;
24808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
24818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host in
24828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # compiling the symbol table file with pic_flag works around
24838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # a FreeBSD bug that causes programs to crash when -lm is
24848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # linked before any other PIC object.  But we must not use
24858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # pic_flag when linking with -static.  The problem exists in
24868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-hpux*)
24908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    pic_flag_for_symtable=" $pic_flag"  ;;
24918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
24928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "X$my_pic_p" != Xno; then
24938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      pic_flag_for_symtable=" $pic_flag"
24948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
24958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
24968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
24978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
24988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
24998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	symtab_cflags=
25008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for arg in $LTCFLAGS; do
25018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $arg in
25028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  -pie | -fpie | -fPIE) ;;
25038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) symtab_cflags="$symtab_cflags $arg" ;;
25048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
25058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
25068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Now compile the dynamic symbol file.
25088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Clean up the generated files.
25118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
25128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Transform the symbol file into the correct name.
25148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	symfileobj="$output_objdir/${my_outputname}S.$objext"
25158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
25168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*cygwin* | *mingw* | *cegcc* )
25178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -f "$output_objdir/$my_outputname.def"; then
25188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
25218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
25248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
25258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
25268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
25298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
25308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
25318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
25328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
25348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
25358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
25368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # We keep going just in case the user didn't refer to
25378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # really was required.
25398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Nullify the symbol file.
25418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
25448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
25458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_win32_libid arg
25478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# return the library type of file 'arg'
25488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
25498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Need a lot of goo to handle *both* DLLs and import libs
25508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Has to be a shell function in order to 'eat' the argument
25518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# that is supplied when $file_magic_command is called.
25528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_win32_libid ()
25538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
25548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  $opt_debug
25558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  win32_libid_type="unknown"
25568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  win32_fileres=`file -L $1 2>/dev/null`
25578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case $win32_fileres in
25588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *ar\ archive\ import\ library*) # definitely import
25598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    win32_libid_type="x86 archive import"
25608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
25618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *ar\ archive*) # could be an import, or static
25628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      win32_nmres=`eval $NM -f posix -A $1 |
25658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$SED -n -e '
25668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    1,100{
25678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		/ I /{
25688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    s,.*,import,
25698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    p
25708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    q
25718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		}
25728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }'`
25738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $win32_nmres in
25748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      import*)  win32_libid_type="x86 archive import";;
25758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)        win32_libid_type="x86 archive static";;
25768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
25778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
25788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
25798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *DLL*)
25808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    win32_libid_type="x86 DLL"
25818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
25828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *executable*) # but shell scripts are "executable" too...
25838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $win32_fileres in
25848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *MS\ Windows\ PE\ Intel*)
25858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      win32_libid_type="x86 DLL"
25868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
25878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
25888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ;;
25898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  esac
25908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  $ECHO "$win32_libid_type"
25918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
25928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
25958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_extract_an_archive dir oldlib
25968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_extract_an_archive ()
25978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
25988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
25998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    f_ex_an_ar_dir="$1"; shift
26008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    f_ex_an_ar_oldlib="$1"
26018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     :
26048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
26058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
26078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
26088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_extract_archives gentop oldlib ...
26118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_extract_archives ()
26128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
26138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
26148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_gentop="$1"; shift
26158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_oldlibs=${1+"$@"}
26168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_oldobjs=""
26178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_xlib=""
26188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_xabs=""
26198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    my_xdir=""
26208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for my_xlib in $my_oldlibs; do
26228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Extract the objects.
26238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $my_xlib in
26248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) my_xabs=`pwd`"/$my_xlib" ;;
26268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
26278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_basename "$my_xlib"
26288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_xlib="$func_basename_result"
26298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_xlib_u=$my_xlib
26308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      while :; do
26318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        case " $extracted_archives " in
26328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" $my_xlib_u "*)
26338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_arith $extracted_serial + 1
26348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  extracted_serial=$func_arith_result
26358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) break ;;
26378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
26388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
26398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      extracted_archives="$extracted_archives $my_xlib_u"
26408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_xdir="$my_gentop/$my_xlib_u"
26418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_mkdir_p "$my_xdir"
26438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $host in
26458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *-darwin*)
26468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_verbose "Extracting $my_xabs"
26478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Do not bother doing anything if just a dry run
26488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || {
26498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin_orig_dir=`pwd`
26508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  cd $my_xdir || exit $?
26518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin_archive=$my_xabs
26528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin_curdir=`pwd`
26538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin_base_archive=`basename "$darwin_archive"`
26548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$darwin_arches"; then
26568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    darwin_arch=
26588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for darwin_arch in  $darwin_arches ; do
26608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cd "$darwin_curdir"
26658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done # $darwin_arches
26678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    darwin_file=
26708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    darwin_files=
26718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for darwin_file in $darwin_filelist; do
26728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $LIPO -create -output "$darwin_file" $darwin_files
26748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done # $darwin_filelist
26758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $RM -rf unfat-$$
26768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cd "$darwin_orig_dir"
26778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
26788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cd $darwin_orig_dir
26798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_extract_an_archive "$my_xdir" "$my_xabs"
26808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi # $darwin_arches
26818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	} # !$opt_dry_run
26828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
26838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
26848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_extract_an_archive "$my_xdir" "$my_xabs"
26858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
26868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
26878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
26898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_extract_archives_result="$my_oldobjs"
26918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
26928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
26958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper_part1 [arg=no]
26968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
26978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Emit the first part of a libtool wrapper script on stdout.
26988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# For more information, see the description associated with
26998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper(), below.
27008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_wrapper_part1 ()
27018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
27028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_emit_wrapper_part1_arg1=no
27038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$1" ; then
27048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_emit_wrapper_part1_arg1=$1
27058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
27068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
27088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#! $SHELL
27098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $output - temporary wrapper script for $objdir/$outputname
27118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
27138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The $output program cannot be directly executed until all the libtool
27148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# libraries that it depends on are installed.
27158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
27168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This wrapper script should never be moved out of the build directory.
27178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If it is, it will not operate correctly.
27188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Sed substitution that helps us do robust quoting.  It backslashifies
27208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# metacharacters that are still active within double-quoted strings.
27218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsXsed='${SED} -e 1s/^X//'
27228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelssed_quote_subst='$sed_quote_subst'
27238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Be Bourne compatible
27258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  emulate sh
27278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  NULLCMD=:
27288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # is contrary to our usage.  Disable this feature.
27308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  setopt NO_GLOB_SUBST
27328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse
27338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi
27358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsBIN_SH=xpg4; export BIN_SH # for Tru64
27368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsDUALCASE=1; export DUALCASE # for MKS sh
27378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The HP-UX ksh and POSIX shell print the target directory to stdout
27398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# if CDPATH is set.
27408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrelink_command=\"$relink_command\"
27438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# This environment variable determines our operation mode.
27458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test \"\$libtool_install_magic\" = \"$magic\"; then
27468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # install mode needs the following variables:
27478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  generated_by_libtool_version='$macro_version'
27488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  notinst_deplibs='$notinst_deplibs'
27498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelselse
27508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ECHO=\"$qecho\"
27538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    file=\"\$0\"
27548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Make sure echo works.
27558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test \"X\$1\" = X--no-reexec; then
27568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Discard the --no-reexec flag, and continue.
27578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      shift
27588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Yippee, \$ECHO works!
27608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      :
27618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
27628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Restart under the correct shell, and then maybe \$ECHO will work.
27638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
27658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi\
27668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
27678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
27688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Find the directory that this script lives in.
27708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Follow symbolic links until we get to the real thisdir.
27748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  while test -n \"\$file\"; do
27768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # If there was a directory component, then change thisdir.
27798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test \"x\$destdir\" != \"x\$file\"; then
27808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case \"\$destdir\" in
27818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *) thisdir=\"\$thisdir/\$destdir\" ;;
27838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
27848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
27858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  done
27898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
27908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
27918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_emit_wrapper_part1
27928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
27938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper_part2 [arg=no]
27948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
27958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Emit the second part of a libtool wrapper script on stdout.
27968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# For more information, see the description associated with
27978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper(), below.
27988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_wrapper_part2 ()
27998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
28008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_emit_wrapper_part2_arg1=no
28018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$1" ; then
28028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_emit_wrapper_part2_arg1=$1
28038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
28048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
28068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Usually 'no', except on cygwin/mingw when embedded into
28088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # the cwrapper.
28098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # special case for '.'
28128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test \"\$thisdir\" = \".\"; then
28138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      thisdir=\`pwd\`
28148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
28158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # remove .libs from thisdir
28168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case \"\$thisdir\" in
28178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $objdir )   thisdir=. ;;
28198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
28208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
28218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  # Try to get the absolute directory name.
28238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  absdir=\`cd \"\$thisdir\" && pwd\`
28248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
28268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$fast_install" = yes; then
28288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
28298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  program=lt-'$outputname'$exeext
28308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  progdir=\"\$thisdir/$objdir\"
28318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test ! -f \"\$progdir/\$program\" ||
28338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    file=\"\$\$-\$program\"
28378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test ! -d \"\$progdir\"; then
28398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $MKDIR \"\$progdir\"
28408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
28418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $RM \"\$progdir/\$file\"
28428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi"
28438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
28458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # relink executable if necessary
28478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n \"\$relink_command\"; then
28488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
28508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO \"\$relink_command_output\" >&2
28518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$RM \"\$progdir/\$file\"
28528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit 1
28538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
28548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
28558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    { $RM \"\$progdir/\$program\";
28588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $RM \"\$progdir/\$file\"
28608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi"
28618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
28628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
28638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  program='$outputname'
28648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  progdir=\"\$thisdir/$objdir\"
28658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
28668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
28678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
28698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test -f \"\$progdir/\$program\"; then"
28718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Export our shlibpath_var if we have one.
28738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
28758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Add our own library path to $shlibpath_var
28768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Some systems cannot cope with colon-terminated $shlibpath_var
28798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # The second colon is a workaround for a bug in BeOS R4 sed
28808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    export $shlibpath_var
28838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
28848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
28858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# fixup the dll searchpath if we need to.
28878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$dllsearchpath"; then
28888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
28898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Add the dll search path components to the executable PATH
28908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    PATH=$dllsearchpath:\$PATH
28918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
28928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
28938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
28948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
28958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Run the actual program with our arguments.
28978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
28988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
28998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Backslashes separate directories on plain windows
29008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*-*-mingw | *-*-os2* | *-cegcc*)
29018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
29028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
29048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
29058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
29068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
29078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "\
29088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
29108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
29118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
29128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$ECHO "\
29138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exit 1
29158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
29168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  else
29178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # The program doesn't exist.
29188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit 1
29228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
29238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi\
29248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels"
29258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
29268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_emit_wrapper_part2
29278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
29288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
29298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_wrapper [arg=no]
29308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
29318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Emit a libtool wrapper script on stdout.
29328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Don't directly open a file because we may want to
29338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# incorporate the script contents within a cygwin/mingw
29348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# wrapper executable.  Must ONLY be called from within
29358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_link because it depends on a number of variables
29368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# set therein.
29378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
29388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# variable will take.  If 'yes', then the emitted script
29408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# will assume that the directory in which it is stored is
29418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the $objdir directory.  This is a cygwin/mingw-specific
29428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# behavior.
29438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_wrapper ()
29448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
29458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_emit_wrapper_arg1=no
29468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$1" ; then
29478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_emit_wrapper_arg1=$1
29488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
29498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
29508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# split this up so that func_emit_cwrapperexe_src
29518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# can call each part independently.
29528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
29558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
29568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
29578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_to_host_path arg
29588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
29598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Convert paths to host format when used with build tools.
29608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Intended for use with "native" mingw (where libtool itself
29618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# is running under the msys shell), or in the following cross-
29628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# build environments:
29638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    $build          $host
29648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    mingw (msys)    mingw  [e.g. native]
29658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    cygwin          mingw
29668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    *nix + wine     mingw
29678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# where wine is equipped with the `winepath' executable.
29688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# In the native mingw case, the (msys) shell automatically
29698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# converts paths for any non-msys applications it launches,
29708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# but that facility isn't available from inside the cwrapper.
29718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Similar accommodations are necessary for $host mingw and
29728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $build cygwin.  Calling this function does no harm for other
29738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $host/$build combinations not listed above.
29748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
29758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ARG is the path (on $build) that should be converted to
29768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the proper representation for $host. The result is stored
29778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in $func_to_host_path_result.
29788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_to_host_path ()
29798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
29808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_to_host_path_result="$1"
29818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test -n "$1" ; then
29828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $host in
29838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *mingw* )
29848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        case $build in
29868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          *mingw* ) # actually, msys
29878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # awkward: cmd appends spaces to result
29888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              $SED -e "$lt_sed_naive_backslashify"`
29938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
29948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          *cygwin* )
29958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_path_tmp1=`cygpath -w "$1"`
29968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              $SED -e "$lt_sed_naive_backslashify"`
29988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
29998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          * )
30008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # Unfortunately, winepath does not exit with a non-zero
30018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # error code, so we are forced to check the contents of
30028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # stdout. On the other hand, if the command is not
30038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # found, the shell will set an exit code of 127 and print
30048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # *an error message* to stdout. So we must check for both
30058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # error code of zero AND non-empty stdout, which explains
30068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # the odd construction:
30078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                $SED -e "$lt_sed_naive_backslashify"`
30118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            else
30128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              # Allow warning below.
30138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              func_to_host_path_result=""
30148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            fi
30158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
30168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        esac
30178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        if test -z "$func_to_host_path_result" ; then
30188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_error "Could not determine host path corresponding to"
30198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_error "  '$1'"
30208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_error "Continuing, but uninstalled executables may not work."
30218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          # Fallback:
30228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_to_host_path_result="$1"
30238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        fi
30248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
30258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
30268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
30278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
30288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_to_host_path
30298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
30308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_to_host_pathlist arg
30318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
30328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Convert pathlists to host format when used with build tools.
30338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# See func_to_host_path(), above. This function supports the
30348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# following $build/$host combinations (but does no harm for
30358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# combinations not listed here):
30368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    $build          $host
30378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    mingw (msys)    mingw  [e.g. native]
30388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    cygwin          mingw
30398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#    *nix + wine     mingw
30408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
30418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Path separators are also converted from $build format to
30428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $host format. If ARG begins or ends with a path separator
30438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# character, it is preserved (but converted to $host format)
30448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# on output.
30458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
30468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ARG is a pathlist (on $build) that should be converted to
30478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the proper representation on $host. The result is stored
30488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in $func_to_host_pathlist_result.
30498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_to_host_pathlist ()
30508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
30518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_to_host_pathlist_result="$1"
30528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if test -n "$1" ; then
30538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $host in
30548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *mingw* )
30558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # Remove leading and trailing path separator characters from
30578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # ARG. msys behavior is inconsistent here, cygpath turns them
30588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # into '.;' and ';.', and winepath ignores them completely.
30598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_to_host_pathlist_tmp2="$1"
30608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # Once set for this call, this variable should not be
30618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # reassigned. It is used in tha fallback case.
30628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          $SED -e 's|^:*||' -e 's|:*$||'`
30648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        case $build in
30658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          *mingw* ) # Actually, msys.
30668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # Awkward: cmd appends spaces to result.
30678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              $SED -e "$lt_sed_naive_backslashify"`
30728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
30738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          *cygwin* )
30748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              $SED -e "$lt_sed_naive_backslashify"`
30778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
30788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          * )
30798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            # unfortunately, winepath doesn't convert pathlists
30808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_pathlist_result=""
30818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            func_to_host_pathlist_oldIFS=$IFS
30828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            IFS=:
30838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              IFS=$func_to_host_pathlist_oldIFS
30858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              if test -n "$func_to_host_pathlist_f" ; then
30868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                func_to_host_path "$func_to_host_pathlist_f"
30878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                if test -n "$func_to_host_path_result" ; then
30888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                  if test -z "$func_to_host_pathlist_result" ; then
30898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    func_to_host_pathlist_result="$func_to_host_path_result"
30908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                  else
30918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                  fi
30938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                fi
30948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              fi
30958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              IFS=:
30968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            done
30978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            IFS=$func_to_host_pathlist_oldIFS
30988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
30998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        esac
31008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        if test -z "$func_to_host_pathlist_result" ; then
31018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_error "Could not determine the host path(s) corresponding to"
31028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_error "  '$1'"
31038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_error "Continuing, but uninstalled executables may not work."
31048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          # Fallback. This may break if $1 contains DOS-style drive
31058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          # specifications. The fix is not to complicate the expression
31068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          # below, but for the user to provide a working wine installation
31078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          # with winepath so that path translation in the cross-to-mingw
31088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          # case works properly.
31098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        fi
31138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # Now, add the leading and trailing path separators back
31148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        case "$1" in
31158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
31178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        esac
31188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        case "$1" in
31198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            ;;
31218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        esac
31228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
31238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
31248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fi
31258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
31268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_to_host_pathlist
31278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_emit_cwrapperexe_src
31298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# emit the source code for a wrapper executable on stdout
31308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Must ONLY be called from within func_mode_link because
31318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# it depends on a number of variable set therein.
31328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_emit_cwrapperexe_src ()
31338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
31348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	cat <<EOF
31358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   The $output program cannot be directly executed until all the libtool
31408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   libraries that it depends on are installed.
31418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   This wrapper executable should never be moved out of the build directory.
31438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   If it is, it will not operate correctly.
31448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Currently, it simply execs the wrapper *script* "$SHELL $output",
31468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   but could eventually absorb all of the scripts functionality and
31478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   exec $objdir/$outputname directly.
31488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/
31498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
31508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
31518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <stdio.h>
31528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <stdlib.h>
31538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef _MSC_VER
31548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <direct.h>
31558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <process.h>
31568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <io.h>
31578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define setmode _setmode
31588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else
31598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <unistd.h>
31608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# include <stdint.h>
31618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifdef __CYGWIN__
31628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  include <io.h>
31638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  define HAVE_SETENV
31648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  ifdef __STRICT_ANSI__
31658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *realpath (const char *, char *);
31668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint putenv (char *);
31678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint setenv (const char *, const char *, int);
31688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  endif
31698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif
31708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
31718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <malloc.h>
31728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <stdarg.h>
31738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <assert.h>
31748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <string.h>
31758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <ctype.h>
31768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <errno.h>
31778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <fcntl.h>
31788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#include <sys/stat.h>
31798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined(PATH_MAX)
31818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LT_PATHMAX PATH_MAX
31828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#elif defined(MAXPATHLEN)
31838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LT_PATHMAX MAXPATHLEN
31848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else
31858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LT_PATHMAX 1024
31868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
31878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef S_IXOTH
31898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define S_IXOTH 0
31908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
31918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef S_IXGRP
31928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define S_IXGRP 0
31938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
31948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
31958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef _MSC_VER
31968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define S_IXUSR _S_IEXEC
31978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define stat _stat
31988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifndef _INTPTR_T_DEFINED
31998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  define intptr_t int
32008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif
32018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef DIR_SEPARATOR
32048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define DIR_SEPARATOR '/'
32058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define PATH_SEPARATOR ':'
32068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  defined (__OS2__)
32108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define HAVE_DOS_BASED_FILE_SYSTEM
32118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define FOPEN_WB "wb"
32128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifndef DIR_SEPARATOR_2
32138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  define DIR_SEPARATOR_2 '\\'
32148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif
32158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ifndef PATH_SEPARATOR_2
32168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#  define PATH_SEPARATOR_2 ';'
32178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# endif
32188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef DIR_SEPARATOR_2
32218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else /* DIR_SEPARATOR_2 */
32238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_DIR_SEPARATOR(ch) \
32248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif /* DIR_SEPARATOR_2 */
32268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef PATH_SEPARATOR_2
32288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else /* PATH_SEPARATOR_2 */
32308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif /* PATH_SEPARATOR_2 */
32328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef __CYGWIN__
32348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define FOPEN_WB "wb"
32358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef FOPEN_WB
32388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define FOPEN_WB "w"
32398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef _O_BINARY
32418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define _O_BINARY 0
32428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define XFREE(stale) do { \
32468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (stale) { free ((void *) stale); stale = 0; } \
32478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels} while (0)
32488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#undef LTWRAPPER_DEBUGPRINTF
32508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined DEBUGWRAPPER
32518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic void
32538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsltwrapper_debugprintf (const char *fmt, ...)
32548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
32558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    va_list args;
32568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    va_start (args, fmt);
32578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    (void) vfprintf (stderr, fmt, args);
32588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    va_end (args);
32598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
32608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else
32618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# define LTWRAPPER_DEBUGPRINTF(args)
32628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
32638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char *program_name = NULL;
32658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid *xmalloc (size_t num);
32678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *xstrdup (const char *string);
32688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char *base_name (const char *name);
32698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *find_executable (const char *wrapper);
32708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *chase_symlinks (const char *pathspec);
32718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint make_executable (const char *path);
32728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint check_executable (const char *path);
32738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *strendzap (char *str, const char *pat);
32748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_fatal (const char *message, ...);
32758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_setenv (const char *name, const char *value);
32768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *lt_extend_str (const char *orig_value, const char *add, int to_end);
32778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_opt_process_env_set (const char *arg);
32788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_opt_process_env_prepend (const char *arg);
32798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_opt_process_env_append (const char *arg);
32808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint lt_split_name_value (const char *arg, char** name, char** value);
32818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_update_exe_path (const char *name, const char *value);
32828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid lt_update_lib_path (const char *name, const char *value);
32838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *script_text_part1 =
32858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
32868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_emit_wrapper_part1 yes |
32888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        $SED -e 's/\([\\"]\)/\\\1/g' \
32898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	             -e 's/^/  "/' -e 's/$/\\n"/'
32908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    echo ";"
32918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<EOF
32928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
32938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *script_text_part2 =
32948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
32958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_emit_wrapper_part2 yes |
32968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        $SED -e 's/\([\\"]\)/\\\1/g' \
32978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	             -e 's/^/  "/' -e 's/$/\\n"/'
32988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    echo ";"
32998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<EOF
33018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * MAGIC_EXE = "$magic_exe";
33028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * LIB_PATH_VARNAME = "$shlibpath_var";
33038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              func_to_host_pathlist "$temp_rpath"
33078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cat <<EOF
33088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
33118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cat <<"EOF"
33128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * LIB_PATH_VALUE   = "";
33138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
33158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$dllsearchpath"; then
33178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              func_to_host_pathlist "$dllsearchpath:"
33188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cat <<EOF
33198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VARNAME = "PATH";
33208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
33238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cat <<"EOF"
33248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VARNAME = "";
33258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * EXE_PATH_VALUE   = "";
33268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
33288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$fast_install" = yes; then
33308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cat <<EOF
33318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
33348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cat <<EOF
33358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
33388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
33418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint
33638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmain (int argc, char *argv[])
33648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
33658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char **newargz;
33668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int  newargc;
33678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *tmp_pathspec;
33688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *actual_cwrapper_path;
33698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *actual_cwrapper_name;
33708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *target_name;
33718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *lt_argv_zero;
33728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  intptr_t rval = 127;
33738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int i;
33758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  program_name = (char *) xstrdup (base_name (argv[0]));
33778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* very simple arg parsing; don't want to rely on getopt */
33818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  for (i = 1; i < argc; i++)
33828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
33838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (strcmp (argv[i], dumpscript_opt) == 0)
33848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	{
33858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
33868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$host" in
33878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *mingw* | *cygwin* )
33888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# make stdout use "unix" line endings
33898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		echo "          setmode(1,_O_BINARY);"
33908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
33918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
33928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
33938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
33948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  printf ("%s", script_text_part1);
33958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  printf ("%s", script_text_part2);
33968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  return 0;
33978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	}
33988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
33998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  newargz = XMALLOC (char *, argc + 1);
34018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = find_executable (argv[0]);
34028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (tmp_pathspec == NULL)
34038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lt_fatal ("Couldn't find %s", argv[0]);
34048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  tmp_pathspec));
34068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  actual_cwrapper_path));
34108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (tmp_pathspec);
34118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* wrapper name transforms */
34168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strendzap (actual_cwrapper_name, ".exe");
34178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (actual_cwrapper_name);
34198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  actual_cwrapper_name = tmp_pathspec;
34208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = 0;
34218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* target_name transforms -- use actual target program name; might have lt- prefix */
34238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strendzap (target_name, ".exe");
34258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (target_name);
34278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  target_name = tmp_pathspec;
34288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = 0;
34298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  target_name));
34328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
34338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<EOF
34358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  newargz[0] =
34368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    XMALLOC (char, (strlen (actual_cwrapper_path) +
34378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strcpy (newargz[0], actual_cwrapper_path);
34398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strcat (newargz[0], "$objdir");
34408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strcat (newargz[0], "/");
34418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
34428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
34448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* stop here, and copy so we don't have to do this twice */
34458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = xstrdup (newargz[0]);
34468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strcat (newargz[0], actual_cwrapper_name);
34498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* DO want the lt- prefix here if it exists, so use target_name */
34518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (tmp_pathspec);
34538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = NULL;
34548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
34558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $host_os in
34578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      mingw*)
34588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
34598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  {
34608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    char* p;
34618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    while ((p = strchr (newargz[0], '\\')) != NULL)
34628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      {
34638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*p = '/';
34648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
34658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      {
34678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*p = '/';
34688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
34698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  }
34708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
34718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
34728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
34738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
34758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (target_name);
34768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (actual_cwrapper_path);
34778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (actual_cwrapper_name);
34788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
34848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  newargc=0;
34858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  for (i = 1; i < argc; i++)
34868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
34878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
34898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          if (argv[i][env_set_opt_len] == '=')
34908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            {
34918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              const char *p = argv[i] + env_set_opt_len + 1;
34928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              lt_opt_process_env_set (p);
34938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            }
34948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            {
34968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              lt_opt_process_env_set (argv[++i]); /* don't copy */
34978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            }
34988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          else
34998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            lt_fatal ("%s missing required argument", env_set_opt);
35008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          continue;
35018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
35028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
35048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          if (argv[i][env_prepend_opt_len] == '=')
35058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            {
35068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              const char *p = argv[i] + env_prepend_opt_len + 1;
35078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              lt_opt_process_env_prepend (p);
35088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            }
35098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            {
35118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            }
35138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          else
35148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            lt_fatal ("%s missing required argument", env_prepend_opt);
35158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          continue;
35168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
35178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
35198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          if (argv[i][env_append_opt_len] == '=')
35208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            {
35218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              const char *p = argv[i] + env_append_opt_len + 1;
35228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              lt_opt_process_env_append (p);
35238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            }
35248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            {
35268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels              lt_opt_process_env_append (argv[++i]); /* don't copy */
35278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            }
35288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          else
35298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            lt_fatal ("%s missing required argument", env_append_opt);
35308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          continue;
35318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
35328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
35348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             namespace, but it is not one of the ones we know about and
35368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             have already dealt with, above (inluding dump-script), then
35378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             report an error. Otherwise, targets might begin to believe
35388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             namespace. The first time any user complains about this, we'll
35408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels             or a configure.ac-settable value.
35428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels           */
35438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                    ltwrapper_option_prefix, argv[i]);
35458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
35468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      /* otherwise ... */
35478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      newargz[++newargc] = xstrdup (argv[i]);
35488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
35498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  newargz[++newargc] = NULL;
35508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  for (i = 0; i < newargc; i++)
35538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
35548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
35568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
35588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $host_os in
35608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      mingw*)
35618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		cat <<"EOF"
35628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* execv doesn't actually work on mingw as expected on unix */
35638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (rval == -1)
35658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
35668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      /* failed to start process */
35678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      return 127;
35698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
35708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return rval;
35718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
35728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
35738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *)
35748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		cat <<"EOF"
35758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  execv (lt_argv_zero, newargz);
35768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return rval; /* =127, but avoids unused variable warning */
35778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
35788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
35798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
35808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cat <<"EOF"
35828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
35838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid *
35858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsxmalloc (size_t num)
35868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
35878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  void *p = (void *) malloc (num);
35888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (!p)
35898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lt_fatal ("Memory exhausted");
35908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return p;
35928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
35938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
35948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *
35958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsxstrdup (const char *string)
35968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
35978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  string) : NULL;
35998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
36008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsconst char *
36028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbase_name (const char *name)
36038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
36048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  const char *base;
36058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* Skip over the disk name in MSDOS pathnames. */
36088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    name += 2;
36108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
36118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  for (base = name; *name; name++)
36138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if (IS_DIR_SEPARATOR (*name))
36148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      base = name + 1;
36158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return base;
36168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
36178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint
36198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscheck_executable (const char *path)
36208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
36218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  struct stat st;
36228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if ((!path) || (!*path))
36268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return 0;
36278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if ((stat (path, &st) >= 0)
36298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return 1;
36318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  else
36328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return 0;
36338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
36348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint
36368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsmake_executable (const char *path)
36378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
36388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int rval = 0;
36398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  struct stat st;
36408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if ((!path) || (!*path))
36448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return 0;
36458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (stat (path, &st) >= 0)
36478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
36488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
36508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return rval;
36518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
36528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels/* Searches for the full path of the wrapper.  Returns
36548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   newly allocated full path name if found, NULL otherwise
36558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels   Does not chase symlinks, even on platforms that support them.
36568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels*/
36578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *
36588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfind_executable (const char *wrapper)
36598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
36608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int has_slash = 0;
36618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  const char *p;
36628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  const char *p_next;
36638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* static buffer for getcwd */
36648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char tmp[LT_PATHMAX + 1];
36658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int tmp_len;
36668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *concat_name;
36678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if ((wrapper == NULL) || (*wrapper == '\0'))
36728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return NULL;
36738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* Absolute path? */
36758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
36788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      concat_name = xstrdup (wrapper);
36798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (check_executable (concat_name))
36808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	return concat_name;
36818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (concat_name);
36828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
36838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  else
36848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
36858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
36868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (IS_DIR_SEPARATOR (wrapper[0]))
36878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	{
36888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  concat_name = xstrdup (wrapper);
36898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if (check_executable (concat_name))
36908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    return concat_name;
36918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  XFREE (concat_name);
36928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	}
36938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
36958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
36968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
36978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  for (p = wrapper; *p; p++)
36988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if (*p == '/')
36998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      {
37008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	has_slash = 1;
37018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	break;
37028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
37038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (!has_slash)
37048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
37058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      /* no slashes; search PATH */
37068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      const char *path = getenv ("PATH");
37078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (path != NULL)
37088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	{
37098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for (p = path; *p; p = p_next)
37108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    {
37118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      const char *q;
37128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      size_t p_len;
37138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      for (q = p; *q; q++)
37148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if (IS_PATH_SEPARATOR (*q))
37158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  break;
37168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      p_len = q - p;
37178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      p_next = (*q == '\0' ? q : q + 1);
37188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if (p_len == 0)
37198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		{
37208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  /* empty path: current directory */
37218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    lt_fatal ("getcwd failed");
37238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  tmp_len = strlen (tmp);
37248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  concat_name =
37258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  memcpy (concat_name, tmp, tmp_len);
37278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  concat_name[tmp_len] = '/';
37288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  strcpy (concat_name + tmp_len + 1, wrapper);
37298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		}
37308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
37318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		{
37328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  concat_name =
37338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  memcpy (concat_name, p, p_len);
37358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  concat_name[p_len] = '/';
37368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  strcpy (concat_name + p_len + 1, wrapper);
37378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		}
37388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if (check_executable (concat_name))
37398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		return concat_name;
37408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      XFREE (concat_name);
37418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
37428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	}
37438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      /* not found in PATH; assume curdir */
37448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
37458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  /* Relative path | not found in path: prepend cwd */
37468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (getcwd (tmp, LT_PATHMAX) == NULL)
37478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lt_fatal ("getcwd failed");
37488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_len = strlen (tmp);
37498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  memcpy (concat_name, tmp, tmp_len);
37518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  concat_name[tmp_len] = '/';
37528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strcpy (concat_name + tmp_len + 1, wrapper);
37538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
37548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (check_executable (concat_name))
37558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return concat_name;
37568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (concat_name);
37578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return NULL;
37588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
37598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
37608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *
37618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschase_symlinks (const char *pathspec)
37628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
37638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifndef S_ISLNK
37648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return xstrdup (pathspec);
37658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else
37668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char buf[LT_PATHMAX];
37678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  struct stat s;
37688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *tmp_pathspec = xstrdup (pathspec);
37698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *p;
37708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int has_symlinks = 0;
37718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  while (strlen (tmp_pathspec) && !has_symlinks)
37728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
37738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			      tmp_pathspec));
37758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (lstat (tmp_pathspec, &s) == 0)
37768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	{
37778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if (S_ISLNK (s.st_mode) != 0)
37788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    {
37798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      has_symlinks = 1;
37808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      break;
37818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
37828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
37838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  /* search backwards for last DIR_SEPARATOR */
37848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    p--;
37878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    {
37898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      /* no more DIR_SEPARATORS left */
37908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      break;
37918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
37928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *p = '\0';
37938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	}
37948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
37958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	{
37968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  char *errstr = strerror (errno);
37978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	}
37998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
38008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (tmp_pathspec);
38018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (!has_symlinks)
38038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
38048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      return xstrdup (pathspec);
38058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
38068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  tmp_pathspec = realpath (pathspec, buf);
38088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (tmp_pathspec == 0)
38098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
38108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lt_fatal ("Could not follow symlinks for %s", pathspec);
38118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
38128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return xstrdup (tmp_pathspec);
38138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
38148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
38158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *
38178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstrendzap (char *str, const char *pat)
38188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
38198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  size_t len, patlen;
38208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  assert (str != NULL);
38228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  assert (pat != NULL);
38238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  len = strlen (str);
38258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  patlen = strlen (pat);
38268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (patlen <= len)
38288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
38298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      str += len - patlen;
38308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (strcmp (str, pat) == 0)
38318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*str = '\0';
38328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
38338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return str;
38348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
38358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsstatic void
38378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_error_core (int exit_status, const char *mode,
38388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       const char *message, va_list ap)
38398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
38408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fprintf (stderr, "%s: %s: ", program_name, mode);
38418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  vfprintf (stderr, message, ap);
38428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  fprintf (stderr, ".\n");
38438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (exit_status >= 0)
38458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit (exit_status);
38468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
38478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
38498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_fatal (const char *message, ...)
38508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
38518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  va_list ap;
38528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  va_start (ap, message);
38538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  va_end (ap);
38558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
38568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
38588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_setenv (const char *name, const char *value)
38598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
38608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          (name ? name : "<NULL>"),
38628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          (value ? value : "<NULL>")));
38638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  {
38648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#ifdef HAVE_SETENV
38658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    /* always make a copy, for consistency with !HAVE_SETENV */
38668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    char *str = xstrdup (value);
38678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    setenv (name, str, 1);
38688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#else
38698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    int len = strlen (name) + 1 + strlen (value) + 1;
38708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    char *str = XMALLOC (char, len);
38718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    sprintf (str, "%s=%s", name, value);
38728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if (putenv (str) != EXIT_SUCCESS)
38738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      {
38748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        XFREE (str);
38758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
38768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#endif
38778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  }
38788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
38798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
38808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelschar *
38818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_extend_str (const char *orig_value, const char *add, int to_end)
38828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
38838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *new_value;
38848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (orig_value && *orig_value)
38858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
38868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      int orig_value_len = strlen (orig_value);
38878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      int add_len = strlen (add);
38888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if (to_end)
38908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
38918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          strcpy (new_value, orig_value);
38928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          strcpy (new_value + orig_value_len, add);
38938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
38948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
38958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
38968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          strcpy (new_value, add);
38978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          strcpy (new_value + add_len, orig_value);
38988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
38998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
39008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  else
39018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
39028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      new_value = xstrdup (add);
39038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
39048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return new_value;
39058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
39068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsint
39088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_split_name_value (const char *arg, char** name, char** value)
39098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
39108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  const char *p;
39118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  int len;
39128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (!arg || !*arg)
39138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return 1;
39148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  p = strchr (arg, (int)'=');
39168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (!p)
39188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    return 1;
39198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *value = xstrdup (++p);
39218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  len = strlen (arg) - strlen (*value);
39238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  *name = XMALLOC (char, len);
39248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  strncpy (*name, arg, len-1);
39258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  (*name)[len - 1] = '\0';
39268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  return 0;
39288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
39298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
39318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_opt_process_env_set (const char *arg)
39328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
39338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *name = NULL;
39348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *value = NULL;
39358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (lt_split_name_value (arg, &name, &value) != 0)
39378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
39388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (name);
39398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (value);
39408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
39428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_setenv (name, value);
39448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (name);
39458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (value);
39468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
39478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
39498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_opt_process_env_prepend (const char *arg)
39508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
39518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *name = NULL;
39528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *value = NULL;
39538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *new_value = NULL;
39548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (lt_split_name_value (arg, &name, &value) != 0)
39568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
39578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (name);
39588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (value);
39598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
39618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  new_value = lt_extend_str (getenv (name), value, 0);
39638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_setenv (name, new_value);
39648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (new_value);
39658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (name);
39668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (value);
39678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
39688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
39708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_opt_process_env_append (const char *arg)
39718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
39728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *name = NULL;
39738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *value = NULL;
39748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  char *new_value = NULL;
39758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (lt_split_name_value (arg, &name, &value) != 0)
39778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
39788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (name);
39798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (value);
39808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
39828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  new_value = lt_extend_str (getenv (name), value, 1);
39848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  lt_setenv (name, new_value);
39858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (new_value);
39868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (name);
39878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  XFREE (value);
39888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
39898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
39918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_update_exe_path (const char *name, const char *value)
39928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
39938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          (name ? name : "<NULL>"),
39958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          (value ? value : "<NULL>")));
39968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
39978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (name && *name && value && *value)
39988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
39998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      char *new_value = lt_extend_str (getenv (name), value, 0);
40008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      /* some systems can't cope with a ':'-terminated path #' */
40018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      int len = strlen (new_value);
40028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        {
40048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          new_value[len-1] = '\0';
40058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        }
40068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lt_setenv (name, new_value);
40078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (new_value);
40088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
40098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
40108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsvoid
40128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslt_update_lib_path (const char *name, const char *value)
40138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
40148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          (name ? name : "<NULL>"),
40168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          (value ? value : "<NULL>")));
40178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  if (name && *name && value && *value)
40198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    {
40208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      char *new_value = lt_extend_str (getenv (name), value, 0);
40218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lt_setenv (name, new_value);
40228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      XFREE (new_value);
40238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    }
40248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
40258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
40288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
40298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# end: func_emit_cwrapperexe_src
40308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_link arg...
40328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_link ()
40338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
40348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
40358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $host in
40368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # It is impossible to link a dll without this setting, and
40388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # we shouldn't force the makefile maintainer to figure out
40398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # which system we are compiling for in order to pass an extra
40408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # flag for every libtool invocation.
40418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # allow_undefined=no
40428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # FIXME: Unfortunately, there are problems with the above when trying
40448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # to make a dll which has undefined symbols, in which case not
40458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # even a static library is built.  For now, we need to specify
40468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -no-undefined on the libtool link line when we can be certain
40478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # that all symbols are satisfied, otherwise we get a static library.
40488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      allow_undefined=yes
40498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
40508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)
40518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      allow_undefined=yes
40528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
40538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
40548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libtool_args=$nonopt
40558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    base_compile="$nonopt $@"
40568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    compile_command=$nonopt
40578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    finalize_command=$nonopt
40588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    compile_rpath=
40608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    finalize_rpath=
40618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    compile_shlibpath=
40628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    finalize_shlibpath=
40638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    convenience=
40648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    old_convenience=
40658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    deplibs=
40668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    old_deplibs=
40678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    compiler_flags=
40688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    linker_flags=
40698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    dllsearchpath=
40708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lib_search_path=`pwd`
40718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    inst_prefix_dir=
40728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    new_inherited_linker_flags=
40738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
40748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    avoid_version=no
40758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    dlfiles=
40768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    dlprefiles=
40778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    dlself=no
40788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    export_dynamic=no
40798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    export_symbols=
40808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    export_symbols_regex=
40818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    generated=
40828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libobjs=
40838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    ltlibs=
40848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    module=no
40858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    no_install=no
40868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    objs=
40878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    non_pic_objects=
40888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    precious_files_regex=
40898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    prefer_static_libs=no
40908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    preload=no
40918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    prev=
40928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    prevarg=
40938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    release=
40948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    rpath=
40958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    xrpath=
40968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    perm_rpath=
40978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    temp_rpath=
40988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    thread_safe=no
40998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    vinfo=
41008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    vinfo_number=no
41018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    weak_libs=
41028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    single_module="${wl}-single_module"
41038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_infer_tag $base_compile
41048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
41058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # We need to know -static, to get the right output filenames.
41068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for arg
41078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    do
41088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $arg in
41098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -shared)
41108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test "$build_libtool_libs" != yes && \
41118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_configuration "can not build a shared library"
41128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_old_libs=no
41138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	break
41148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
41158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -all-static | -static | -static-libtool-libs)
41168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $arg in
41178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-all-static)
41188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "complete static linking is impossible in this configuration"
41208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
41218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$link_static_flag"; then
41228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlopen_self=$dlopen_self_static
41238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
41248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prefer_static_libs=yes
41258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
41268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-static)
41278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlopen_self=$dlopen_self_static
41298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
41308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prefer_static_libs=built
41318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
41328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-static-libtool-libs)
41338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlopen_self=$dlopen_self_static
41358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
41368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prefer_static_libs=yes
41378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
41388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
41398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_libtool_libs=no
41408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_old_libs=yes
41418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	break
41428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
41438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
41448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
41458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
41468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # See if our shared archives depend on static archives.
41478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
41498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Go through the arguments, transforming them on the way.
41508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    while test "$#" -gt 0; do
41518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      arg="$1"
41528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      shift
41538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_quote_for_eval "$arg"
41548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      qarg=$func_quote_for_eval_unquoted_result
41558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_append libtool_args " $func_quote_for_eval_result"
41568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
41578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # If the previous option needs an argument, assign it.
41588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$prev"; then
41598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $prev in
41608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	output)
41618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append compile_command " @OUTPUT@"
41628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append finalize_command " @OUTPUT@"
41638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
41648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
41658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
41668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $prev in
41678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlfiles|dlprefiles)
41688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$preload" = no; then
41698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Add the symbol object into the linking commands.
41708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append compile_command " @SYMFILE@"
41718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append finalize_command " @SYMFILE@"
41728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    preload=yes
41738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
41748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $arg in
41758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.la | *.lo) ;;  # We handle these cases below.
41768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  force)
41778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$dlself" = no; then
41788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlself=needless
41798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      export_dynamic=yes
41808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
41818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    prev=
41828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
41838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
41848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  self)
41858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$prev" = dlprefiles; then
41868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlself=yes
41878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlself=yes
41898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
41908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlself=needless
41918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      export_dynamic=yes
41928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
41938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    prev=
41948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
41958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
41968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
41978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$prev" = dlfiles; then
41988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlfiles="$dlfiles $arg"
41998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
42008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlprefiles="$dlprefiles $arg"
42018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
42028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    prev=
42038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
42048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
42058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
42068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
42078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	expsyms)
42088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  export_symbols="$arg"
42098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -f "$arg" \
42108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    || func_fatal_error "symbol file \`$arg' does not exist"
42118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
42128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
42138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
42148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	expsyms_regex)
42158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  export_symbols_regex="$arg"
42168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
42178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
42188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
42198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	framework)
42208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host in
42218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *-*-darwin*)
42228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$deplibs " in
42238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*" $qarg.ltframework "*) ;;
42248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   ;;
42268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
42278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
42288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
42298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
42308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
42318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
42328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	inst_prefix)
42338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  inst_prefix_dir="$arg"
42348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
42358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
42368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
42378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	objectlist)
42388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -f "$arg"; then
42398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    save_arg=$arg
42408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    moreargs=
42418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for fil in `cat "$save_arg"`
42428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    do
42438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#	      moreargs="$moreargs $fil"
42448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      arg=$fil
42458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # A libtool-controlled object.
42468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Check to see that this really is a libtool object.
42488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if func_lalib_unsafe_p "$arg"; then
42498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		pic_object=
42508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		non_pic_object=
42518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Read the .lo file
42538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_source "$arg"
42548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test -z "$pic_object" ||
42568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   test -z "$non_pic_object" ||
42578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   test "$pic_object" = none &&
42588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   test "$non_pic_object" = none; then
42598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_fatal_error "cannot find name of object for \`$arg'"
42608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
42618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Extract subdirectory from the argument.
42638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_dirname "$arg" "/" ""
42648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		xdir="$func_dirname_result"
42658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test "$pic_object" != none; then
42678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # Prepend the subdirectory the object is found in.
42688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  pic_object="$xdir$pic_object"
42698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test "$prev" = dlfiles; then
42718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      dlfiles="$dlfiles $pic_object"
42738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      prev=
42748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      continue
42758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    else
42768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # If libtool objects are unsupported, then we need to preload.
42778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      prev=dlprefiles
42788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    fi
42798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
42808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # CHECK ME:  I think I busted this.  -Ossama
42828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test "$prev" = dlprefiles; then
42838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    # Preload the old-style object.
42848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    dlprefiles="$dlprefiles $pic_object"
42858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    prev=
42868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
42878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # A PIC object.
42898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_append libobjs " $pic_object"
42908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  arg="$pic_object"
42918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
42928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Non-PIC object.
42948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test "$non_pic_object" != none; then
42958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # Prepend the subdirectory the object is found in.
42968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  non_pic_object="$xdir$non_pic_object"
42978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
42988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # A standard non-PIC object
42998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_append non_pic_objects " $non_pic_object"
43008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test -z "$pic_object" || test "$pic_object" = none ; then
43018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    arg="$non_pic_object"
43028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
43038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
43048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # If the PIC object exists, use it instead.
43058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # $xdir was prepended to $pic_object above.
43068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  non_pic_object="$pic_object"
43078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_append non_pic_objects " $non_pic_object"
43088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
43098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
43108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Only an error if not doing a dry-run.
43118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if $opt_dry_run; then
43128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # Extract subdirectory from the argument.
43138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_dirname "$arg" "/" ""
43148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  xdir="$func_dirname_result"
43158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
43168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_lo2o "$arg"
43178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  pic_object=$xdir$objdir/$func_lo2o_result
43188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  non_pic_object=$xdir$func_lo2o_result
43198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_append libobjs " $pic_object"
43208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_append non_pic_objects " $non_pic_object"
43218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        else
43228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_fatal_error "\`$arg' is not a valid libtool object"
43238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
43248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
43258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
43268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
43278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "link input file \`$arg' does not exist"
43288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
43298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  arg=$save_arg
43308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	precious_regex)
43348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  precious_files_regex="$arg"
43358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	release)
43398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  release="-$arg"
43408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	rpath | xrpath)
43448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # We need an absolute path.
43458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $arg in
43468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
43488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "only absolute run-paths are allowed"
43498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
43508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
43518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$prev" = rpath; then
43528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$rpath " in
43538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $arg "*) ;;
43548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) rpath="$rpath $arg" ;;
43558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
43568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
43578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$xrpath " in
43588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $arg "*) ;;
43598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) xrpath="$xrpath $arg" ;;
43608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
43618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
43628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	shrext)
43668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  shrext_cmds="$arg"
43678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	weak)
43718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  weak_libs="$weak_libs $arg"
43728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	xcclinker)
43768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linker_flags="$linker_flags $qarg"
43778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compiler_flags="$compiler_flags $qarg"
43788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append compile_command " $qarg"
43808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append finalize_command " $qarg"
43818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	xcompiler)
43848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compiler_flags="$compiler_flags $qarg"
43858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append compile_command " $qarg"
43878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append finalize_command " $qarg"
43888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	xlinker)
43918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linker_flags="$linker_flags $qarg"
43928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compiler_flags="$compiler_flags $wl$qarg"
43938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
43948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append compile_command " $wl$qarg"
43958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append finalize_command " $wl$qarg"
43968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
43978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
43988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
43998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval "$prev=\"\$arg\""
44008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
44018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
44028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
44038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
44048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi # test -n "$prev"
44058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      prevarg="$arg"
44078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $arg in
44098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -all-static)
44108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$link_static_flag"; then
44118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # See comment for -static flag below, for more details.
44128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append compile_command " $link_static_flag"
44138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append finalize_command " $link_static_flag"
44148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
44158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -allow-undefined)
44198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# FIXME: remove this flag sometime in the future.
44208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -avoid-version)
44248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	avoid_version=yes
44258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -dlopen)
44298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=dlfiles
44308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -dlpreopen)
44348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=dlprefiles
44358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -export-dynamic)
44398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	export_dynamic=yes
44408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -export-symbols | -export-symbols-regex)
44448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
44478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "X$arg" = "X-export-symbols"; then
44488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=expsyms
44498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
44508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=expsyms_regex
44518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
44528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -framework)
44568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=framework
44578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -inst-prefix-dir)
44618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=inst_prefix
44628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # so, if we see these flags be careful not to treat them like -L
44678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -L[A-Z][A-Z]*:*)
44688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $with_gcc/$host in
44698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	no/*-*-irix* | /*-*-irix*)
44708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append compile_command " $arg"
44718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_append finalize_command " $arg"
44728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
44738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
44748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
44758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
44768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
44778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -L*)
44788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname '-L' '' "$arg"
44798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dir=$func_stripname_result
44808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$dir"; then
44818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$#" -gt 0; then
44828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "require no space between \`-L' and \`$1'"
44838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
44848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "need path for \`-L' option"
44858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
44868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
44878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# We need an absolute path.
44888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $dir in
44898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	[\\/]* | [A-Za-z]:[\\/]*) ;;
44908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
44918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  absdir=`cd "$dir" && pwd`
44928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -z "$absdir" && \
44938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dir="$absdir"
44958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
44968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
44978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case "$deplibs " in
44988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" -L$dir "*) ;;
44998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
45008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs="$deplibs -L$dir"
45018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lib_search_path="$lib_search_path $dir"
45028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
45038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
45048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
45058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case :$dllsearchpath: in
45088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *":$dir:"*) ;;
45098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ::) dllsearchpath=$dir;;
45108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) dllsearchpath="$dllsearchpath:$dir";;
45118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
45128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case :$dllsearchpath: in
45138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *":$testbindir:"*) ;;
45148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ::) dllsearchpath=$testbindir;;
45158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
45178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
45188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
45198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
45228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -l*)
45238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host in
45258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # These systems don't actually have a C or math library (as such)
45278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
45288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
45298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-os2*)
45308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # These systems don't actually have a C library (as such)
45318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$arg" = "X-lc" && continue
45328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
45338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Do not include libc due to us having libc/libc_r.
45358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$arg" = "X-lc" && continue
45368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
45378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-rhapsody* | *-*-darwin1.[012])
45388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Rhapsody C and math libraries are in the System framework
45398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$deplibs System.ltframework"
45408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
45418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
45428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-sco3.2v5* | *-*-sco5v6*)
45438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Causes problems with __ctype
45448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$arg" = "X-lc" && continue
45458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
45468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Compiler inserts libc in the correct place for threads to work
45488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$arg" = "X-lc" && continue
45498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
45508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
45518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif test "X$arg" = "X-lc_r"; then
45528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 case $host in
45538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   # Do not include libc_r directly, use -pthread flag.
45558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   continue
45568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   ;;
45578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 esac
45588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
45598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs="$deplibs $arg"
45608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
45638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -module)
45648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	module=yes
45658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
45688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # classes, name mangling, and exception handling.
45708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Darwin uses the -arch flag to determine output architecture.
45718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -model|-arch|-isysroot)
45728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compiler_flags="$compiler_flags $arg"
45738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_append compile_command " $arg"
45748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_append finalize_command " $arg"
45758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=xcompiler
45768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
45798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compiler_flags="$compiler_flags $arg"
45818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_append compile_command " $arg"
45828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_append finalize_command " $arg"
45838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case "$new_inherited_linker_flags " in
45848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $arg "*) ;;
45858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
45878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
45908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -multi_module)
45918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	single_module="${wl}-multi_module"
45928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
45958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -no-fast-install)
45968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fast_install=no
45978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
45988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
45998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -no-install)
46018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
46028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # The PATH hackery in wrapper scripts is required on Windows
46048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # and Darwin in order for the loader to find any dlls it needs.
46058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_warning "\`-no-install' is ignored for $host"
46068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_warning "assuming \`-no-fast-install' instead"
46078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fast_install=no
46088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
46098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) no_install=yes ;;
46108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
46118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -no-undefined)
46158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	allow_undefined=no
46168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -objectlist)
46208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=objectlist
46218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -o) prev=output ;;
46258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -precious-files-regex)
46278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=precious_regex
46288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -release)
46328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=release
46338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -rpath)
46378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=rpath
46388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -R)
46428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=xrpath
46438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -R*)
46478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname '-R' '' "$arg"
46488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dir=$func_stripname_result
46498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# We need an absolute path.
46508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $dir in
46518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	[\\/]* | [A-Za-z]:[\\/]*) ;;
46528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
46538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "only absolute run-paths are allowed"
46548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
46558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
46568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case "$xrpath " in
46578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" $dir "*) ;;
46588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) xrpath="$xrpath $dir" ;;
46598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
46608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -shared)
46648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# The effects of -shared are defined in a previous loop.
46658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -shrext)
46698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=shrext
46708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -static | -static-libtool-libs)
46748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# The effects of -static are defined in a previous loop.
46758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# We used to do the same as -all-static on platforms that
46768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# didn't have a PIC flag, but the assumption that the effects
46778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# would be equivalent was wrong.  It would break on at least
46788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Digital Unix and AIX.
46798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -thread-safe)
46838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	thread_safe=yes
46848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -version-info)
46888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=vinfo
46898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -version-number)
46938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=vinfo
46948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	vinfo_number=yes
46958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
46968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
46978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
46988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -weak)
46998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        prev=weak
47008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
47018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -Wc,*)
47048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname '-Wc,' '' "$arg"
47058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	args=$func_stripname_result
47068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg=
47078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	save_ifs="$IFS"; IFS=','
47088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for flag in $args; do
47098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  IFS="$save_ifs"
47108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_quote_for_eval "$flag"
47118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  arg="$arg $wl$func_quote_for_eval_result"
47128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
47148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	IFS="$save_ifs"
47158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname ' ' '' "$arg"
47168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg=$func_stripname_result
47178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -Wl,*)
47208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname '-Wl,' '' "$arg"
47218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	args=$func_stripname_result
47228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg=
47238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	save_ifs="$IFS"; IFS=','
47248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for flag in $args; do
47258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  IFS="$save_ifs"
47268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          func_quote_for_eval "$flag"
47278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  arg="$arg $wl$func_quote_for_eval_result"
47288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linker_flags="$linker_flags $func_quote_for_eval_result"
47308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
47318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	IFS="$save_ifs"
47328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname ' ' '' "$arg"
47338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg=$func_stripname_result
47348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -Xcompiler)
47378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=xcompiler
47388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
47398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -Xlinker)
47428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=xlinker
47438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
47448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -XCClinker)
47478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	prev=xcclinker
47488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
47498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -msg_* for osf cc
47528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -msg_*)
47538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_quote_for_eval "$arg"
47548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg="$func_quote_for_eval_result"
47558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # +DA*, +DD* enable 64-bit mode on the HP compiler
47618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -q* pass through compiler args for the IBM compiler
47628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -m*, -t[45]*, -txscale* pass through architecture-specific
47638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # compiler args for GCC
47648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -F/path gives path to uninstalled frameworks, gcc on darwin
47658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # @file GCC response files
47678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_quote_for_eval "$arg"
47708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg="$func_quote_for_eval_result"
47718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_append compile_command " $arg"
47728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_append finalize_command " $arg"
47738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        compiler_flags="$compiler_flags $arg"
47748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        continue
47758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
47768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Some other compiler flag.
47788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -* | +*)
47798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        func_quote_for_eval "$arg"
47808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg="$func_quote_for_eval_result"
47818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.$objext)
47848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# A standard object.
47858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	objs="$objs $arg"
47868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
47878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.lo)
47898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# A libtool-controlled object.
47908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Check to see that this really is a libtool object.
47928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if func_lalib_unsafe_p "$arg"; then
47938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  pic_object=
47948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  non_pic_object=
47958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Read the .lo file
47978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source "$arg"
47988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
47998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$pic_object" ||
48008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test -z "$non_pic_object" ||
48018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$pic_object" = none &&
48028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$non_pic_object" = none; then
48038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "cannot find name of object for \`$arg'"
48048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
48058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Extract subdirectory from the argument.
48078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_dirname "$arg" "/" ""
48088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  xdir="$func_dirname_result"
48098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$pic_object" != none; then
48118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Prepend the subdirectory the object is found in.
48128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    pic_object="$xdir$pic_object"
48138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$prev" = dlfiles; then
48158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		dlfiles="$dlfiles $pic_object"
48178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		prev=
48188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		continue
48198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
48208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# If libtool objects are unsupported, then we need to preload.
48218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		prev=dlprefiles
48228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
48238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
48248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # CHECK ME:  I think I busted this.  -Ossama
48268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$prev" = dlprefiles; then
48278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Preload the old-style object.
48288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlprefiles="$dlprefiles $pic_object"
48298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      prev=
48308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
48318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # A PIC object.
48338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append libobjs " $pic_object"
48348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    arg="$pic_object"
48358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
48368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Non-PIC object.
48388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$non_pic_object" != none; then
48398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Prepend the subdirectory the object is found in.
48408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    non_pic_object="$xdir$non_pic_object"
48418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # A standard non-PIC object
48438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append non_pic_objects " $non_pic_object"
48448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$pic_object" || test "$pic_object" = none ; then
48458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      arg="$non_pic_object"
48468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
48478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
48488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # If the PIC object exists, use it instead.
48498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # $xdir was prepended to $pic_object above.
48508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    non_pic_object="$pic_object"
48518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append non_pic_objects " $non_pic_object"
48528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
48538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
48548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Only an error if not doing a dry-run.
48558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if $opt_dry_run; then
48568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Extract subdirectory from the argument.
48578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_dirname "$arg" "/" ""
48588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    xdir="$func_dirname_result"
48598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_lo2o "$arg"
48618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    pic_object=$xdir$objdir/$func_lo2o_result
48628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    non_pic_object=$xdir$func_lo2o_result
48638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append libobjs " $pic_object"
48648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append non_pic_objects " $non_pic_object"
48658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
48668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "\`$arg' is not a valid libtool object"
48678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
48688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
48698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
48708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.$libext)
48728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# An archive.
48738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs="$deplibs $arg"
48748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	old_deplibs="$old_deplibs $arg"
48758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
48768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
48778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.la)
48798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# A libtool-controlled library.
48808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$prev" = dlfiles; then
48828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # This library was specified with -dlopen.
48838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dlfiles="$dlfiles $arg"
48848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
48858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif test "$prev" = dlprefiles; then
48868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # The library was specified with -dlpreopen.
48878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dlprefiles="$dlprefiles $arg"
48888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prev=
48898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
48908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs="$deplibs $arg"
48918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
48928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
48938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
48948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
48958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Some other compiler argument.
48968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
48978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Unknown arguments in both finalize_command and compile_command need
48988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# to be aesthetically quoted because they are evaled later.
48998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_quote_for_eval "$arg"
49008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	arg="$func_quote_for_eval_result"
49018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
49028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac # arg
49038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now actually substitute the argument into the commands.
49058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$arg"; then
49068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_append compile_command " $arg"
49078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_append finalize_command " $arg"
49088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
49098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done # argument parsing loop
49108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -n "$prev" && \
49128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "the \`$prevarg' option requires an argument"
49138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval arg=\"$export_dynamic_flag_spec\"
49168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_append compile_command " $arg"
49178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_append finalize_command " $arg"
49188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
49198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    oldlibs=
49218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # calculate the name of the file, without its directory
49228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_basename "$output"
49238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    outputname="$func_basename_result"
49248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libobjs_save="$libobjs"
49258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test -n "$shlibpath_var"; then
49278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # get the directories listed in $shlibpath_var
49288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    else
49308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      shlib_search_path=
49318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
49328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_dirname "$output" "/" ""
49368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    output_objdir="$func_dirname_result$objdir"
49378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Create the object directory.
49388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_mkdir_p "$output_objdir"
49398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Determine the type of output
49418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $output in
49428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    "")
49438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "you must specify an output file"
49448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
49458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.$libext) linkmode=oldlib ;;
49468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.lo | *.$objext) linkmode=obj ;;
49478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.la) linkmode=lib ;;
49488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *) linkmode=prog ;; # Anything else should be a program.
49498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
49508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    specialdeplibs=
49528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libs=
49548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Find all interdependent deplibs by searching for libraries
49558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # that are linked more than once (e.g. -la -lb -la)
49568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for deplib in $deplibs; do
49578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if $opt_duplicate_deps ; then
49588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case "$libs " in
49598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
49618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
49628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      libs="$libs $deplib"
49638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
49648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$linkmode" = lib; then
49668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Compute libraries that are listed more than once in $predeps
49698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # $postdeps and mark them as special (i.e., whose duplicates are
49708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # not to be eliminated).
49718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      pre_post_deps=
49728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if $opt_duplicate_compiler_generated_deps; then
49738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for pre_post_dep in $predeps $postdeps; do
49748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$pre_post_deps " in
49758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
49778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  pre_post_deps="$pre_post_deps $pre_post_dep"
49788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
49798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
49808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      pre_post_deps=
49818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
49828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    deplibs=
49848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    newdependency_libs=
49858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    newlib_search_path=
49868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    need_relink=no # whether we're linking any uninstalled libtool libraries
49878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    notinst_deplibs= # not-installed libtool libraries
49888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    notinst_path= # paths that contain not-installed libtool libraries
49898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
49908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $linkmode in
49918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lib)
49928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	passes="conv dlpreopen link"
49938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for file in $dlfiles $dlprefiles; do
49948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $file in
49958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.la) ;;
49968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
49978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
49998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
50008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
50018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
50028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    prog)
50038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compile_deplibs=
50048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	finalize_deplibs=
50058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	alldeplibs=no
50068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	newdlfiles=
50078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	newdlprefiles=
50088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	passes="conv scan dlopen dlpreopen link"
50098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
50108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *)  passes="conv"
50118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
50128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
50138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
50148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for pass in $passes; do
50158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # The preopen pass in lib mode reverses $deplibs; put it back here
50168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # so that -L comes before libs that need it for instance...
50178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$linkmode,$pass" = "lib,link"; then
50188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	## FIXME: Find the place where the list is rebuilt in the wrong
50198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	##        order, and fix it there properly
50208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        tmp_deplibs=
50218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for deplib in $deplibs; do
50228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_deplibs="$deplib $tmp_deplibs"
50238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
50248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs="$tmp_deplibs"
50258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
50268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
50278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$linkmode,$pass" = "lib,link" ||
50288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 test "$linkmode,$pass" = "prog,scan"; then
50298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libs="$deplibs"
50308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs=
50318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
50328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$linkmode" = prog; then
50338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $pass in
50348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlopen) libs="$dlfiles" ;;
50358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlpreopen) libs="$dlprefiles" ;;
50368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	link)
50378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  libs="$deplibs %DEPLIBS%"
50388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
50398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
50408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
50418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
50428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Collect and forward deplibs of preopened libtool libs
50448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for lib in $dlprefiles; do
50458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Ignore non-libtool-libs
50468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dependency_libs=
50478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $lib in
50488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.la)	func_source "$lib" ;;
50498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
50508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
50518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Collect preopened libtool deplibs, except any this library
50528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # has declared as weak libs
50538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for deplib in $dependency_libs; do
50548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $weak_libs " in
50568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $deplib_base "*) ;;
50578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) deplibs="$deplibs $deplib" ;;
50588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
50598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
50608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
50618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libs="$dlprefiles"
50628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
50638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$pass" = dlopen; then
50648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Collect dlpreopened libraries
50658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	save_deplibs="$deplibs"
50668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs=
50678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
50688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
50698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for deplib in $libs; do
50708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	lib=
50718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	found=no
50728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $deplib in
50738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode,$pass" = "prog,link"; then
50758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_deplibs="$deplib $compile_deplibs"
50768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_deplibs="$deplib $finalize_deplibs"
50778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
50788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compiler_flags="$compiler_flags $deplib"
50798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkmode" = lib ; then
50808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case "$new_inherited_linker_flags " in
50818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    *" $deplib "*) ;;
50828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
50848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
50858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
50868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
50878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
50888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-l*)
50898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "\`-l' is ignored for archives/objects"
50918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
50928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
50938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_stripname '-l' '' "$deplib"
50948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  name=$func_stripname_result
50958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode" = lib; then
50968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
50988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
51008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for searchdir in $searchdirs; do
51018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for search_ext in .la $std_shrext .so .a; do
51028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Search the libtool library
51038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      lib="$searchdir/lib${name}${search_ext}"
51048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -f "$lib"; then
51058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test "$search_ext" = ".la"; then
51068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  found=yes
51078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
51088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  found=no
51098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
51108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		break 2
51118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
51128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
51138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
51148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$found" != yes; then
51158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # deplib doesn't seem to be a libtool library
51168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkmode,$pass" = "prog,link"; then
51178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      compile_deplibs="$deplib $compile_deplibs"
51188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      finalize_deplibs="$deplib $finalize_deplibs"
51198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
51208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplib $deplibs"
51218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
51238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
51248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else # deplib is a libtool library
51258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # We need to do some special things here, and not later.
51278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case " $predeps $postdeps " in
51298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $deplib "*)
51308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if func_lalib_p "$lib"; then
51318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  library_names=
51328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  old_library=
51338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_source "$lib"
51348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  for l in $old_library $library_names; do
51358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    ll="$l"
51368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  done
51378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test "X$ll" = "X$old_library" ; then # only static version available
51388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    found=no
51398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    func_dirname "$lib" "" "."
51408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    ladir="$func_dirname_result"
51418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    lib=$ladir/$old_library
51428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    if test "$linkmode,$pass" = "prog,link"; then
51438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      compile_deplibs="$deplib $compile_deplibs"
51448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      finalize_deplibs="$deplib $finalize_deplibs"
51458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    else
51468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      deplibs="$deplib $deplibs"
51478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    fi
51498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    continue
51508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
51518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
51528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
51538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) ;;
51548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
51558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
51568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
51578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;; # -l
51588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.ltframework)
51598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode,$pass" = "prog,link"; then
51608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_deplibs="$deplib $compile_deplibs"
51618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_deplibs="$deplib $finalize_deplibs"
51628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
51638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$deplib $deplibs"
51648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkmode" = lib ; then
51658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case "$new_inherited_linker_flags " in
51668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    *" $deplib "*) ;;
51678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
51698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
51708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
51718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
51728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
51738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-L*)
51748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $linkmode in
51758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lib)
51768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$deplib $deplibs"
51778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "$pass" = conv && continue
51788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdependency_libs="$deplib $newdependency_libs"
51798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '-L' '' "$deplib"
51808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newlib_search_path="$newlib_search_path $func_stripname_result"
51818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
51828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prog)
51838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$pass" = conv; then
51848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplib $deplibs"
51858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      continue
51868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
51878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$pass" = scan; then
51888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplib $deplibs"
51898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
51908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      compile_deplibs="$deplib $compile_deplibs"
51918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      finalize_deplibs="$deplib $finalize_deplibs"
51928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
51938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '-L' '' "$deplib"
51948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newlib_search_path="$newlib_search_path $func_stripname_result"
51958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
51968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
51978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "\`-L' is ignored for archives/objects"
51988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
51998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac # linkmode
52008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
52018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;; # -L
52028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-R*)
52038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$pass" = link; then
52048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '-R' '' "$deplib"
52058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dir=$func_stripname_result
52068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Make sure the xrpath contains only unique directories.
52078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$xrpath " in
52088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $dir "*) ;;
52098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) xrpath="$xrpath $dir" ;;
52108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
52118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
52128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs="$deplib $deplibs"
52138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
52148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
52158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.la) lib="$deplib" ;;
52168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.$libext)
52178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$pass" = conv; then
52188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$deplib $deplibs"
52198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
52208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
52218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $linkmode in
52228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lib)
52238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Linking convenience modules into shared libraries is allowed,
52248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # but linking other static libraries is non-portable.
52258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $dlpreconveniencelibs " in
52268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $deplib "*) ;;
52278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
52288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      valid_a_lib=no
52298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $deplibs_check_method in
52308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		match_pattern*)
52318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  set dummy $deplibs_check_method; shift
52328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    | $EGREP "$match_pattern_regex" > /dev/null; then
52358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    valid_a_lib=yes
52368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
52378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
52388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		pass_all)
52398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  valid_a_lib=yes
52408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
52418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
52428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$valid_a_lib" != yes; then
52438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO
52448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** I have the capability to make that library automatically link in when"
52468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** you link to this library.  But I can only do this if you have a"
52478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** shared version of the library, which you do not appear to have"
52488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** that it is just a static archive that I should not use here."
52508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
52518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO
52528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** Warning: Linking the shared library $output against the"
52538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** static library $deplib is not portable!"
52548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		deplibs="$deplib $deplibs"
52558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
52568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
52578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
52588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
52598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
52608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  prog)
52618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$pass" != link; then
52628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplib $deplibs"
52638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
52648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      compile_deplibs="$deplib $compile_deplibs"
52658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      finalize_deplibs="$deplib $finalize_deplibs"
52668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
52678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
52688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
52698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac # linkmode
52708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;; # *.$libext
52718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*.lo | *.$objext)
52728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$pass" = conv; then
52738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$deplib $deplibs"
52748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  elif test "$linkmode" = prog; then
52758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # If there is no dlopen support or we're linking statically,
52778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # we need to preload.
52788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdlprefiles="$newdlprefiles $deplib"
52798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      compile_deplibs="$deplib $compile_deplibs"
52808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      finalize_deplibs="$deplib $finalize_deplibs"
52818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
52828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdlfiles="$newdlfiles $deplib"
52838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
52848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
52858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
52868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
52878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	%DEPLIBS%)
52888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  alldeplibs=yes
52898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
52908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
52918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac # case $deplib
52928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
52938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$found" = yes || test -f "$lib"; then :
52948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
52958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
52978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
52988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Check to see that this really is a libtool archive.
52998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_lalib_unsafe_p "$lib" \
53008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  || func_fatal_error "\`$lib' is not a valid libtool archive"
53018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_dirname "$lib" "" "."
53038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	ladir="$func_dirname_result"
53048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlname=
53068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlopen=
53078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dlpreopen=
53088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libdir=
53098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	library_names=
53108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	old_library=
53118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	inherited_linker_flags=
53128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If the library was installed with an old release of libtool,
53138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# it will not redefine variables installed, or shouldnotlink
53148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	installed=yes
53158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	shouldnotlink=no
53168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	avoidtemprpath=
53178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Read the .la file
53208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_source "$lib"
53218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Convert "-framework foo" to "foo.ltframework"
53238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$inherited_linker_flags"; then
53248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $new_inherited_linker_flags " in
53278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $tmp_inherited_linker_flag "*) ;;
53288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
53308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
53318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
53328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$linkmode,$pass" = "lib,link" ||
53348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   test "$linkmode,$pass" = "prog,scan" ||
53358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
53398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$pass" = conv; then
53418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Only check for convenience libraries
53428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs="$lib $deplibs"
53438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$libdir"; then
53448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$old_library"; then
53458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_fatal_error "cannot find name of link library for \`$lib'"
53468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
53478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # It is a libtool convenience library, so add in its objects.
53488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    convenience="$convenience $ladir/$objdir/$old_library"
53498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    tmp_libs=
53518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for deplib in $dependency_libs; do
53528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplib $deplibs"
53538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if $opt_duplicate_deps ; then
53548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case "$tmp_libs " in
53558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
53578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
53588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      tmp_libs="$tmp_libs $deplib"
53598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
53608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "\`$lib' is not a convenience library"
53628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
53638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
53648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # $pass = conv
53658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Get the name of the library we link against.
53688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	linklib=
53698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for l in $old_library $library_names; do
53708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linklib="$l"
53718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
53728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$linklib"; then
53738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "cannot find name of link library for \`$lib'"
53748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
53758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# This library was specified with -dlopen.
53778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$pass" = dlopen; then
53788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$libdir"; then
53798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
53818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$dlname" ||
53828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$dlopen_support" != yes ||
53838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$build_libtool_libs" = no; then
53848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # If there is no dlname, no dlopen support or we're linking
53858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # statically, we need to preload.  We also need to preload any
53868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # dependent libraries so libltdl's deplib preloader doesn't
53878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # bomb out in the load deplibs phase.
53888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlprefiles="$dlprefiles $lib $dependency_libs"
53898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
53908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlfiles="$newdlfiles $lib"
53918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
53928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
53938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # $pass = dlopen
53948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
53958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# We need an absolute path.
53968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $ladir in
53978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
53998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  abs_ladir=`cd "$ladir" && pwd`
54008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$abs_ladir"; then
54018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "cannot determine absolute directory name of \`$ladir'"
54028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "passing it literally to the linker, although it might fail"
54038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    abs_ladir="$ladir"
54048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
54068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
54078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_basename "$lib"
54088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	laname="$func_basename_result"
54098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Find the relevant object directory and library name.
54118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "X$installed" = Xyes; then
54128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "library \`$lib' was moved."
54148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dir="$ladir"
54158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    absdir="$abs_ladir"
54168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    libdir="$abs_ladir"
54178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
54188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dir="$libdir"
54198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    absdir="$libdir"
54208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
54238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dir="$ladir"
54258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    absdir="$abs_ladir"
54268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Remove this search path later
54278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    notinst_path="$notinst_path $abs_ladir"
54288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
54298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dir="$ladir/$objdir"
54308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    absdir="$abs_ladir/$objdir"
54318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Remove this search path later
54328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    notinst_path="$notinst_path $abs_ladir"
54338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # $installed = yes
54358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname 'lib' '.la' "$laname"
54368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	name=$func_stripname_result
54378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# This library was specified with -dlpreopen.
54398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$pass" = dlpreopen; then
54408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$libdir" && test "$linkmode" = prog; then
54418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # are required to link).
54458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$old_library"; then
54468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlprefiles="$newdlprefiles $dir/$old_library"
54478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Keep a list of preopened convenience libraries to check
54488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # that they are being used correctly in the link pass.
54498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test -z "$libdir" && \
54508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  elif test -n "$dlname"; then
54538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlprefiles="$newdlprefiles $dir/$dlname"
54548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
54558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlprefiles="$newdlprefiles $dir/$linklib"
54568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # $pass = dlpreopen
54588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$libdir"; then
54608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Link the convenience library
54618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode" = lib; then
54628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$dir/$old_library $deplibs"
54638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  elif test "$linkmode,$pass" = "prog,link"; then
54648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_deplibs="$dir/$old_library $compile_deplibs"
54658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
54678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$lib $deplibs" # used for prog,scan pass
54688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
54708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
54718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$linkmode" = prog && test "$pass" != link; then
54748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newlib_search_path="$newlib_search_path $ladir"
54758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs="$lib $deplibs"
54768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linkalldeplibs=no
54788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$build_libtool_libs" = no; then
54808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    linkalldeplibs=yes
54818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
54828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
54838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_libs=
54848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for deplib in $dependency_libs; do
54858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $deplib in
54868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -L*) func_stripname '-L' '' "$deplib"
54878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	         newlib_search_path="$newlib_search_path $func_stripname_result"
54888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 ;;
54898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
54908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Need to link against all dependency_libs?
54918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkalldeplibs" = yes; then
54928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplib $deplibs"
54938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
54948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Need to hardcode shared library paths
54958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # or/and link against static libraries
54968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdependency_libs="$deplib $newdependency_libs"
54978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
54988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if $opt_duplicate_deps ; then
54998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$tmp_libs " in
55008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
55018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
55028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
55038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    tmp_libs="$tmp_libs $deplib"
55048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done # for deplib
55058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  continue
55068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # $linkmode = prog...
55078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
55088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$linkmode,$pass" = "prog,link"; then
55098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$library_names" &&
55108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     { { test "$prefer_static_libs" = no ||
55118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       test -z "$old_library"; }; then
55138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # We need to hardcode the library path
55148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Make sure the rpath contains only unique directories.
55168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$temp_rpath:" in
55178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *"$absdir:"*) ;;
55188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) temp_rpath="$temp_rpath$absdir:" ;;
55198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
55208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
55218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
55228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Hardcode the library path.
55238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Skip directories that are in the system default run-time
55248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # search path.
55258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $sys_lib_dlsearch_path " in
55268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $absdir "*) ;;
55278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
55288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$compile_rpath " in
55298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $absdir "*) ;;
55308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) compile_rpath="$compile_rpath $absdir"
55318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
55328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
55338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
55348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $sys_lib_dlsearch_path " in
55358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $libdir "*) ;;
55368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
55378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$finalize_rpath " in
55388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $libdir "*) ;;
55398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) finalize_rpath="$finalize_rpath $libdir"
55408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
55418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
55428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
55438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi # $linkmode,$pass = prog,link...
55448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
55458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$alldeplibs" = yes &&
55468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     { test "$deplibs_check_method" = pass_all ||
55478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       { test "$build_libtool_libs" = yes &&
55488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 test -n "$library_names"; }; }; then
55498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # We only need to search for static libraries
55508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    continue
55518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
55528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
55538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
55548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	link_static=no # Whether the deplib will be linked statically
55558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	use_static_libs=$prefer_static_libs
55568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$use_static_libs" = built && test "$installed" = yes; then
55578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  use_static_libs=no
55588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
55598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$library_names" &&
55608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host in
55628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *cygwin* | *mingw* | *cegcc*)
55638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # No point in relinking DLLs because paths are not encoded
55648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      notinst_deplibs="$notinst_deplibs $lib"
55658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      need_relink=no
55668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
55678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
55688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$installed" = no; then
55698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      notinst_deplibs="$notinst_deplibs $lib"
55708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      need_relink=yes
55718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
55728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
55738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
55748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # This is a shared library
55758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
55768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Warn about portability, can't link against -module's on some
55778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # systems (darwin).  Don't bleat about dlopened modules though!
55788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dlopenmodule=""
55798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for dlpremoduletest in $dlprefiles; do
55808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "X$dlpremoduletest" = "X$lib"; then
55818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      dlopenmodule="$dlpremoduletest"
55828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      break
55838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
55848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
55858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO
55878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkmode" = prog; then
55888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
55908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
55928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** $linklib is not portable!"
55938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
55948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode" = lib &&
55958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$hardcode_into_libs" = yes; then
55968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Hardcode the library path.
55978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Skip directories that are in the system default run-time
55988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # search path.
55998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $sys_lib_dlsearch_path " in
56008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $absdir "*) ;;
56018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
56028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$compile_rpath " in
56038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $absdir "*) ;;
56048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) compile_rpath="$compile_rpath $absdir"
56058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
56068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
56078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
56088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $sys_lib_dlsearch_path " in
56098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $libdir "*) ;;
56108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
56118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$finalize_rpath " in
56128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $libdir "*) ;;
56138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) finalize_rpath="$finalize_rpath $libdir"
56148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
56158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
56168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
56178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
56188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
56198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$old_archive_from_expsyms_cmds"; then
56208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # figure out the soname
56218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    set dummy $library_names
56228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    shift
56238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    realname="$1"
56248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    shift
56258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    libname=`eval "\\$ECHO \"$libname_spec\""`
56268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # use dlname if we got it. it's perfectly good, no?
56278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$dlname"; then
56288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      soname="$dlname"
56298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    elif test -n "$soname_spec"; then
56308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # bleh windows
56318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $host in
56328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *cygwin* | mingw* | *cegcc*)
56338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        func_arith $current - $age
56348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		major=$func_arith_result
56358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		versuffix="-$major"
56368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
56378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
56388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval soname=\"$soname_spec\"
56398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
56408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      soname="$realname"
56418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
56428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
56438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Make a new name for the extract_expsyms_cmds to use
56448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    soroot="$soname"
56458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_basename "$soroot"
56468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    soname="$func_basename_result"
56478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname 'lib' '.dll' "$soname"
56488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newlib=libimp-$func_stripname_result.a
56498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
56508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # If the library has no export list, then create one now
56518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -f "$output_objdir/$soname-def"; then :
56528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
56538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_verbose "extracting exported symbol list from \`$soname'"
56548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
56568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
56578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Create $newlib
56588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -f "$output_objdir/$newlib"; then :; else
56598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_verbose "generating import library for \`$soname'"
56608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
56628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # make sure the library variables are pointing to the new library
56638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dir=$output_objdir
56648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    linklib=$newlib
56658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi # test -n "$old_archive_from_expsyms_cmds"
56668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
56678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode" = prog || test "$mode" != relink; then
56688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    add_shlibpath=
56698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    add_dir=
56708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    add=
56718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lib_linked=yes
56728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $hardcode_action in
56738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    immediate | unsupported)
56748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$hardcode_direct" = no; then
56758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="$dir/$linklib"
56768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case $host in
56778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    *-*-unixware7*) add_dir="-L$dir" ;;
56818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *-*-darwin* )
56828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    # if the lib is a (non-dlopened) module then we can not
56838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    # link against it, someone is ignoring the earlier warnings
56848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    if /usr/bin/file -L $add 2> /dev/null |
56858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			 $GREP ": [^:]* bundle" >/dev/null ; then
56868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      if test "X$dlopenmodule" != "X$lib"; then
56878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			if test -z "$old_library" ; then
56898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  $ECHO
56908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  $ECHO "*** And there doesn't seem to be a static archive available"
56918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  $ECHO "*** The link will probably fail, sorry"
56928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			else
56938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			  add="$dir/$old_library"
56948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			fi
56958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      elif test -n "$old_library"; then
56968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			add="$dir/$old_library"
56978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      fi
56988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    fi
56998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
57008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      elif test "$hardcode_minus_L" = no; then
57018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case $host in
57028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*-*-sunos*) add_shlibpath="$dir" ;;
57038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
57048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add_dir="-L$dir"
57058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="-l$name"
57068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      elif test "$hardcode_shlibpath_var" = no; then
57078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add_shlibpath="$dir"
57088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="-l$name"
57098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
57108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		lib_linked=no
57118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
57128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
57138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink)
57148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$hardcode_direct" = yes &&
57158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	         test "$hardcode_direct_absolute" = no; then
57168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="$dir/$linklib"
57178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      elif test "$hardcode_minus_L" = yes; then
57188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add_dir="-L$dir"
57198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Try looking first in the location we're being installed to.
57208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test -n "$inst_prefix_dir"; then
57218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  case $libdir in
57228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    [\\/]*)
57238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      ;;
57258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  esac
57268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
57278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="-l$name"
57288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      elif test "$hardcode_shlibpath_var" = yes; then
57298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add_shlibpath="$dir"
57308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="-l$name"
57318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
57328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		lib_linked=no
57338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
57348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
57358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) lib_linked=no ;;
57368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
57378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
57388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$lib_linked" != yes; then
57398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_fatal_configuration "unsupported hardcode properties"
57408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
57418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
57428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$add_shlibpath"; then
57438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case :$compile_shlibpath: in
57448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *":$add_shlibpath:"*) ;;
57458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
57478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
57488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkmode" = prog; then
57498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
57528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add" && deplibs="$add $deplibs"
57548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$hardcode_direct" != yes &&
57558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 test "$hardcode_minus_L" != yes &&
57568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 test "$hardcode_shlibpath_var" = yes; then
57578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case :$finalize_shlibpath: in
57588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*":$libdir:"*) ;;
57598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
57618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
57628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
57638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
57648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
57658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$linkmode" = prog || test "$mode" = relink; then
57668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    add_shlibpath=
57678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    add_dir=
57688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    add=
57698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Finalize command for both is simple: just hardcode it.
57708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$hardcode_direct" = yes &&
57718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       test "$hardcode_direct_absolute" = no; then
57728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      add="$libdir/$linklib"
57738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    elif test "$hardcode_minus_L" = yes; then
57748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      add_dir="-L$libdir"
57758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      add="-l$name"
57768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    elif test "$hardcode_shlibpath_var" = yes; then
57778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case :$finalize_shlibpath: in
57788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *":$libdir:"*) ;;
57798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
57818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      add="-l$name"
57828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    elif test "$hardcode_automatic" = yes; then
57838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$inst_prefix_dir" &&
57848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="$inst_prefix_dir$libdir/$linklib"
57868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
57878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		add="$libdir/$linklib"
57888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
57898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
57908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # We cannot seem to hardcode it, guess we'll fake it.
57918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      add_dir="-L$libdir"
57928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Try looking first in the location we're being installed to.
57938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$inst_prefix_dir"; then
57948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case $libdir in
57958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  [\\/]*)
57968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    ;;
57988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
57998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
58008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      add="-l$name"
58018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
58028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
58038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$linkmode" = prog; then
58048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
58078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$add" && deplibs="$add $deplibs"
58098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
58108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
58118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif test "$linkmode" = prog; then
58128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # is not unsupported.  This is valid on all known static and
58148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # shared platforms.
58158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$hardcode_direct" != unsupported; then
58168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test -n "$old_library" && linklib="$old_library"
58178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_deplibs="$dir/$linklib $compile_deplibs"
58188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
58208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
58238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif test "$build_libtool_libs" = yes; then
58248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Not a shared library
58258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$deplibs_check_method" != pass_all; then
58268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # We're trying link a shared library against a static one
58278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # but the system doesn't support it.
58288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
58298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Just print a warning and add the library to dependency_libs so
58308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # that the program can be linked against the static library.
58318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO
58328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** I have the capability to make that library automatically link in when"
58348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** shared version of the library, which you do not appear to have."
58368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$module" = yes; then
58378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** But as you try to build a module library, libtool will still create "
58388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** a static module, that should work as long as the dlopening application"
58398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -z "$global_symbol_pipe"; then
58418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO
58428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** not find such a program.  So, this module is probably useless."
58458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
58478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$build_old_libs" = no; then
58488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		build_libtool_libs=module
58498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		build_old_libs=yes
58508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
58518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		build_libtool_libs=no
58528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
58538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
58548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
58558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$dir/$old_library $deplibs"
58568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    link_static=yes
58578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
58588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # link shared/static library?
58598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
58608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$linkmode" = lib; then
58618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$dependency_libs" &&
58628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     { test "$hardcode_into_libs" != yes ||
58638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       test "$build_old_libs" = yes ||
58648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       test "$link_static" = yes; }; then
58658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Extract -R from dependency_libs
58668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    temp_deplibs=
58678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for libdir in $dependency_libs; do
58688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $libdir in
58698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      -R*) func_stripname '-R' '' "$libdir"
58708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	           temp_xrpath=$func_stripname_result
58718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   case " $xrpath " in
58728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   *" $temp_xrpath "*) ;;
58738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   *) xrpath="$xrpath $temp_xrpath";;
58748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   esac;;
58758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) temp_deplibs="$temp_deplibs $libdir";;
58768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
58778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
58788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dependency_libs="$temp_deplibs"
58798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
58808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
58818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newlib_search_path="$newlib_search_path $absdir"
58828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Link against this library
58838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # ... and its dependency_libs
58858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_libs=
58868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for deplib in $dependency_libs; do
58878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdependency_libs="$deplib $newdependency_libs"
58888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if $opt_duplicate_deps ; then
58898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$tmp_libs " in
58908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
58928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
58938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    tmp_libs="$tmp_libs $deplib"
58948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
58958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
58968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$link_all_deplibs" != no; then
58978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Add the search paths of all dependency libraries
58988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for deplib in $dependency_libs; do
58998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      path=
59008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $deplib in
59018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      -L*) path="$deplib" ;;
59028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *.la)
59038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        func_dirname "$deplib" "" "."
59048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		dir="$func_dirname_result"
59058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# We need an absolute path.
59068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case $dir in
59078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*)
59098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  absdir=`cd "$dir" && pwd`
59108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test -z "$absdir"; then
59118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    func_warning "cannot determine absolute directory name of \`$dir'"
59128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    absdir="$dir"
59138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
59148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ;;
59158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
59168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if $GREP "^installed=no" $deplib > /dev/null; then
59178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case $host in
59188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*-*-darwin*)
59198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  depdepl=
59208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test -n "$deplibrary_names" ; then
59228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    for tmp in $deplibrary_names ; do
59238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      depdepl=$tmp
59248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    done
59258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    if test -f "$absdir/$objdir/$depdepl" ; then
59268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      depdepl="$absdir/$objdir/$depdepl"
59278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                      if test -z "$darwin_install_name"; then
59298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels                      fi
59318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      path=
59348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    fi
59358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
59368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ;;
59378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*)
59388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  path="-L$absdir/$objdir"
59398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ;;
59408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
59418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
59428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  test -z "$libdir" && \
59448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  test "$absdir" != "$libdir" && \
59468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    func_warning "\`$deplib' seems to be moved"
59478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
59488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  path="-L$absdir"
59498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
59508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
59518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
59528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case " $deplibs " in
59538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $path "*) ;;
59548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) deplibs="$path $deplibs" ;;
59558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
59568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
59578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi # link_all_deplibs != no
59588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi # linkmode = lib
59598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done # for deplib in $libs
59608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$pass" = link; then
59618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$linkmode" = "prog"; then
59628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
59658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
59678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
59688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dependency_libs="$newdependency_libs"
59698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$pass" = dlpreopen; then
59708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Link the dlpreopened libraries before other libraries
59718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for deplib in $save_deplibs; do
59728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs="$deplib $deplibs"
59738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
59748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
59758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$pass" != dlopen; then
59768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$pass" != conv; then
59778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Make sure lib_search_path contains only unique directories.
59788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  lib_search_path=
59798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for dir in $newlib_search_path; do
59808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "$lib_search_path " in
59818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $dir "*) ;;
59828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) lib_search_path="$lib_search_path $dir" ;;
59838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
59848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
59858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newlib_search_path=
59868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
59878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
59888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$linkmode,$pass" != "prog,link"; then
59898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  vars="deplibs"
59908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
59918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  vars="compile_deplibs finalize_deplibs"
59928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
59938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for var in $vars dependency_libs; do
59948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add libraries to $var in reverse order
59958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval tmp_libs=\"\$$var\"
59968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  new_libs=
59978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for deplib in $tmp_libs; do
59988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # FIXME: Pedantically, this is the right thing to do, so
59998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    #        that some nasty dependency loop isn't accidentally
60008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    #        broken:
60018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    #new_libs="$deplib $new_libs"
60028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Pragmatically, this seems to cause very few problems in
60038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # practice:
60048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $deplib in
60058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -L*) new_libs="$deplib $new_libs" ;;
60068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -R*) ;;
60078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
60088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # And here is the reason: when a library appears more
60098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # than once as an explicit dependence of a library, or
60108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # is implicitly linked in more than once by the
60118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # compiler, it is considered special, and multiple
60128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # occurrences thereof are not removed.  Compare this
60138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # with having the same library being listed as a
60148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # dependency of multiple other libraries: in this case,
60158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # we know (pedantically, we assume) the library does not
60168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # need to be listed more than once, so we keep only the
60178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # last copy.  This is not always right, but it is rare
60188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # enough that we require users that really mean to play
60198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # such unportable linking tricks to link the library
60208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # using -Wl,-lname, so that libtool does not consider it
60218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # for duplicate removal.
60228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case " $specialdeplibs " in
60238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *)
60258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case " $new_libs " in
60268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*" $deplib "*) ;;
60278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*) new_libs="$deplib $new_libs" ;;
60288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
60298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
60308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
60318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
60328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
60338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
60348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_libs=
60358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for deplib in $new_libs; do
60368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $deplib in
60378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -L*)
60388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case " $tmp_libs " in
60398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $deplib "*) ;;
60408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) tmp_libs="$tmp_libs $deplib" ;;
60418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
60428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
60438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) tmp_libs="$tmp_libs $deplib" ;;
60448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
60458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
60468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval $var=\"$tmp_libs\"
60478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done # for var
60488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
60498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Last step: remove runtime libs from dependency_libs
60508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # (they stay in deplibs)
60518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      tmp_libs=
60528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for i in $dependency_libs ; do
60538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case " $predeps $postdeps $compiler_lib_search_path " in
60548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" $i "*)
60558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  i=""
60568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
60578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
60588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$i" ; then
60598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_libs="$tmp_libs $i"
60608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
60618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
60628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dependency_libs=$tmp_libs
60638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done # for pass
60648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$linkmode" = prog; then
60658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dlfiles="$newdlfiles"
60668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
60678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    if test "$linkmode" = prog || test "$linkmode" = lib; then
60688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dlprefiles="$newdlprefiles"
60698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    fi
60708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $linkmode in
60728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    oldlib)
60738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-dlopen' is ignored for archives"
60758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
60768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case " $deplibs" in
60788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *\ -l* | *\ -L*)
60798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
60818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$rpath" && \
60838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-rpath' is ignored for archives"
60848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$xrpath" && \
60868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-R' is ignored for archives"
60878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$vinfo" && \
60898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-version-info/-version-number' is ignored for archives"
60908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$release" && \
60928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-release' is ignored for archives"
60938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$export_symbols$export_symbols_regex" && \
60958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-export-symbols' is ignored for archives"
60968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
60978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now set the variables for building old libraries.
60988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      build_libtool_libs=no
60998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      oldlibs="$output"
61008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      objs="$objs$old_deplibs"
61018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
61028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    lib)
61048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Make sure we only generate libraries of the form `libNAME.la'.
61058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $outputname in
61068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      lib*)
61078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_stripname 'lib' '.la' "$outputname"
61088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	name=$func_stripname_result
61098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval shared_ext=\"$shrext_cmds\"
61108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval libname=\"$libname_spec\"
61118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
61128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
61138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test "$module" = no && \
61148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$need_lib_prefix" != no; then
61178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add the "lib" prefix for modules if required
61188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_stripname '' '.la' "$outputname"
61198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  name=$func_stripname_result
61208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval shared_ext=\"$shrext_cmds\"
61218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval libname=\"$libname_spec\"
61228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
61238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_stripname '' '.la' "$outputname"
61248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  libname=$func_stripname_result
61258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
61268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
61278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
61288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$objs"; then
61308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$deplibs_check_method" != pass_all; then
61318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
61338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO
61348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "*** objects $objs is not portable!"
61368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  libobjs="$libobjs $objs"
61378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
61388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
61398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "$dlself" != no && \
61418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-dlopen self' is ignored for libtool libraries"
61428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      set dummy $rpath
61448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      shift
61458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "$#" -gt 1 && \
61468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "ignoring multiple \`-rpath's for a libtool library"
61478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      install_libdir="$1"
61498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      oldlibs=
61518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -z "$rpath"; then
61528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$build_libtool_libs" = yes; then
61538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Building a libtool convenience library.
61548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Some compilers have problems with a `.al' extension so
61558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # convenience libraries should have the same extension an
61568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # archive normally would.
61578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  build_libtool_libs=convenience
61598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  build_old_libs=yes
61608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
61618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$vinfo" && \
61638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$release" && \
61668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_warning "\`-release' is ignored for convenience libraries"
61678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
61688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Parse the version information argument.
61708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	save_ifs="$IFS"; IFS=':'
61718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	set dummy $vinfo 0 0 0
61728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	shift
61738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	IFS="$save_ifs"
61748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$7" && \
61768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_help "too many parameters to \`-version-info'"
61778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# convert absolute version numbers to libtool ages
61798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# this retains compatibility with .la files and attempts
61808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# to make the code below a bit more comprehensible
61818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
61828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $vinfo_number in
61838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	yes)
61848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  number_major="$1"
61858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  number_minor="$2"
61868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  number_revision="$3"
61878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  #
61888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # There are really only two kinds -- those that
61898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # use the current revision as the major version
61908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # and those that subtract age and use age as
61918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # a minor version.  But, then there is irix
61928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # which has an extra 1 added just for fun
61938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  #
61948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $version_type in
61958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin|linux|osf|windows|none)
61968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $number_major + $number_minor
61978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    current=$func_arith_result
61988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    age="$number_minor"
61998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    revision="$number_revision"
62008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
62018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  freebsd-aout|freebsd-elf|sunos)
62028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    current="$number_major"
62038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    revision="$number_minor"
62048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    age="0"
62058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
62068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  irix|nonstopux)
62078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $number_major + $number_minor
62088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    current=$func_arith_result
62098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    age="$number_minor"
62108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    revision="$number_minor"
62118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lt_irix_increment=no
62128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
62138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
62148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
62158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
62168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
62178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	no)
62198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  current="$1"
62208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  revision="$2"
62218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  age="$3"
62228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
62248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Check that each of the things are valid numbers.
62268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $current in
62278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	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]) ;;
62288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
62298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_error "CURRENT \`$current' must be a nonnegative integer"
62308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "\`$vinfo' is not valid version information"
62318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
62338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $revision in
62358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	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]) ;;
62368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
62378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_error "REVISION \`$revision' must be a nonnegative integer"
62388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "\`$vinfo' is not valid version information"
62398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
62418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $age in
62438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	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]) ;;
62448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
62458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_error "AGE \`$age' must be a nonnegative integer"
62468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "\`$vinfo' is not valid version information"
62478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
62498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$age" -gt "$current"; then
62518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "\`$vinfo' is not valid version information"
62538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
62548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Calculate the version variables.
62568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	major=
62578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	versuffix=
62588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	verstring=
62598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $version_type in
62608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	none) ;;
62618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	darwin)
62638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Like Linux, but with the current version available in
62648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # verstring for coding it into the library header
62658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_arith $current - $age
62668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=.$func_arith_result
62678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix="$major.$age.$revision"
62688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Darwin ld doesn't like 0 for these options...
62698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_arith $current + 1
62708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  minor_current=$func_arith_result
62718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	freebsd-aout)
62768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=".$current"
62778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix=".$current.$revision";
62788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	freebsd-elf)
62818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=".$current"
62828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix=".$current"
62838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
62848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	irix | nonstopux)
62868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "X$lt_irix_increment" = "Xno"; then
62878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $current - $age
62888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
62898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $current - $age + 1
62908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
62918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=$func_arith_result
62928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $version_type in
62948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    nonstopux) verstring_prefix=nonstopux ;;
62958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)         verstring_prefix=sgi ;;
62968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
62978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  verstring="$verstring_prefix$major.$revision"
62988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
62998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add in all the interfaces that we are compatible with.
63008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  loop=$revision
63018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  while test "$loop" -ne 0; do
63028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $revision - $loop
63038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    iface=$func_arith_result
63048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $loop - 1
63058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    loop=$func_arith_result
63068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    verstring="$verstring_prefix$major.$iface:$verstring"
63078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
63088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Before this point, $major must not contain `.'.
63108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=.$major
63118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix="$major.$revision"
63128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	linux)
63158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_arith $current - $age
63168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=.$func_arith_result
63178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix="$major.$age.$revision"
63188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	osf)
63218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_arith $current - $age
63228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=.$func_arith_result
63238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix=".$current.$age.$revision"
63248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  verstring="$current.$age.$revision"
63258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add in all the interfaces that we are compatible with.
63278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  loop=$age
63288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  while test "$loop" -ne 0; do
63298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $current - $loop
63308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    iface=$func_arith_result
63318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $loop - 1
63328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    loop=$func_arith_result
63338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    verstring="$verstring:${iface}.0"
63348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
63358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Make executables depend on our current version.
63378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  verstring="$verstring:${current}.0"
63388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	qnx)
63418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=".$current"
63428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix=".$current"
63438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	sunos)
63468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=".$current"
63478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix=".$current.$revision"
63488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	windows)
63518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Use '-' rather than '.', since we only want one
63528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # extension on DOS 8.3 filesystems.
63538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_arith $current - $age
63548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=$func_arith_result
63558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix="-$major"
63568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
63598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_configuration "unknown library version type \`$version_type'"
63608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
63618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
63628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Clear the version info if we defaulted, and they specified a release.
63648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$vinfo" && test -n "$release"; then
63658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=
63668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $version_type in
63678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  darwin)
63688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # we can't check for "0.0" in archive_cmds due to quoting
63698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # problems, so we reset it completely
63708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    verstring=
63718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
63728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
63738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    verstring="0.0"
63748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
63758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
63768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$need_version" = no; then
63778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    versuffix=
63788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
63798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    versuffix=".0.0"
63808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
63818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
63828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Remove version info from name if versioning should be avoided
63848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$avoid_version" = yes && test "$need_version" = no; then
63858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  major=
63868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  versuffix=
63878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  verstring=""
63888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
63898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
63908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Check to see if the archive will have undefined symbols.
63918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$allow_undefined" = yes; then
63928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$allow_undefined_flag" = unsupported; then
63938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_warning "undefined symbols not allowed in $host shared libraries"
63948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    build_libtool_libs=no
63958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    build_old_libs=yes
63968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
63978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
63988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Don't allow undefined symbols.
63998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  allow_undefined_flag="$no_undefined_flag"
64008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
64018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
64038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_generate_dlsyms "$libname" "$libname" "yes"
64058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      libobjs="$libobjs $symfileobj"
64068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "X$libobjs" = "X " && libobjs=
64078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$mode" != relink; then
64098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Remove our outputs, but don't remove object files since they
64108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# may have been created when compiling PIC objects.
64118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	removelist=
64128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	tempremovelist=`$ECHO "$output_objdir/*"`
64138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for p in $tempremovelist; do
64148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $p in
64158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *.$objext | *.gcno)
64168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       ;;
64178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       if test "X$precious_files_regex" != "X"; then
64198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 then
64218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   continue
64228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		 fi
64238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       fi
64248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       removelist="$removelist $p"
64258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	       ;;
64268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) ;;
64278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
64288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
64298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$removelist" && \
64308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval "${RM}r \$removelist"
64318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
64328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now set the variables for building old libraries.
64348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Transform .lo files to .o files.
64388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
64408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Eliminate all temporary directories.
64428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      #for path in $notinst_path; do
64438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      #done
64478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$xrpath"; then
64498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If the user specified any rpath flags, then add them.
64508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	temp_xrpath=
64518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for libdir in $xrpath; do
64528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  temp_xrpath="$temp_xrpath -R$libdir"
64538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$finalize_rpath " in
64548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $libdir "*) ;;
64558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
64578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
64588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dependency_libs="$temp_xrpath $dependency_libs"
64608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
64618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
64628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Make sure dlfiles contains only unique files that won't be dlpreopened
64648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      old_dlfiles="$dlfiles"
64658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dlfiles=
64668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for lib in $old_dlfiles; do
64678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case " $dlprefiles $dlfiles " in
64688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" $lib "*) ;;
64698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) dlfiles="$dlfiles $lib" ;;
64708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
64718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
64728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Make sure dlprefiles contains only unique files
64748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      old_dlprefiles="$dlprefiles"
64758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dlprefiles=
64768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for lib in $old_dlprefiles; do
64778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case "$dlprefiles " in
64788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" $lib "*) ;;
64798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) dlprefiles="$dlprefiles $lib" ;;
64808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
64818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
64828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
64838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$build_libtool_libs" = yes; then
64848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$rpath"; then
64858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host in
64868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # these systems don't actually have a c library (as such)!
64888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
64898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-rhapsody* | *-*-darwin1.[012])
64908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Rhapsody C library is in the System framework
64918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    deplibs="$deplibs System.ltframework"
64928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
64938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-netbsd*)
64948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Don't link with libc until the a.out ld.so is fixed.
64958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
64968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Do not include libc due to us having libc/libc_r.
64988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
64998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-sco3.2v5* | *-*-sco5v6*)
65008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Causes problems with __ctype
65018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
65028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
65038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Compiler inserts libc in the correct place for threads to work
65048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
65058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
65068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Add libc to deplibs on all other systems if necessary.
65078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$build_libtool_need_lc" = "yes"; then
65088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      deplibs="$deplibs -lc"
65098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
65108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
65118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
65128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
65138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
65148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Transform deplibs into only deplibs that can be linked in shared.
65158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	name_save=$name
65168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libname_save=$libname
65178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	release_save=$release
65188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	versuffix_save=$versuffix
65198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	major_save=$major
65208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# I'm not sure if I'm treating the release correctly.  I think
65218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# release should show up in the -l (ie -lgmp5) so we don't want to
65228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# add it in twice.  Is that correct?
65238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	release=""
65248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	versuffix=""
65258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	major=""
65268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	newdeplibs=
65278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	droppeddeps=no
65288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $deplibs_check_method in
65298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	pass_all)
65308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Don't check for shared/static.  Everything works.
65318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # This might be a little naive.  We might want to check
65328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # whether the library exists or not.  But this is on
65338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # osf3 & osf4 and I'm not really sure... Just
65348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # implementing what was already the behavior.
65358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newdeplibs=$deplibs
65368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
65378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test_compile)
65388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # This code stresses the "libraries are programs" paradigm to its
65398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # limits. Maybe even breaks it.  We compile a program, linking it
65408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # against the deplibs as a proxy for the library.  Then we can check
65418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # whether they linked in statically or dynamically with ldd.
65428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || $RM conftest.c
65438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  cat > conftest.c <<EOF
65448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  int main() { return 0; }
65458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas EckelsEOF
65468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || $RM conftest
65478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ldd_output=`ldd conftest`
65498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for i in $deplibs; do
65508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $i in
65518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      -l*)
65528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_stripname -l '' "$i"
65538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		name=$func_stripname_result
65548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  case " $predeps $postdeps " in
65568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *" $i "*)
65578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    newdeplibs="$newdeplibs $i"
65588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    i=""
65598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    ;;
65608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  esac
65618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
65628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test -n "$i" ; then
65638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  libname=`eval "\\$ECHO \"$libname_spec\""`
65648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  set dummy $deplib_matches; shift
65668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  deplib_match=$1
65678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    newdeplibs="$newdeplibs $i"
65698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  else
65708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    droppeddeps=yes
65718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO
65728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO "*** I have the capability to make that library automatically link in when"
65748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO "*** shared version of the library, which I believe you do not have"
65768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
65798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
65808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
65818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *)
65828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		newdeplibs="$newdeplibs $i"
65838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
65848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
65858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
65868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
65878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Error occurred in the first compile.  Let's try to salvage
65888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # the situation: Compile a separate program for each library.
65898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for i in $deplibs; do
65908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $i in
65918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      -l*)
65928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_stripname -l '' "$i"
65938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		name=$func_stripname_result
65948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$opt_dry_run || $RM conftest
65958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ldd_output=`ldd conftest`
65978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    case " $predeps $postdeps " in
65998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    *" $i "*)
66008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      newdeplibs="$newdeplibs $i"
66018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      i=""
66028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      ;;
66038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    esac
66048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
66058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test -n "$i" ; then
66068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    libname=`eval "\\$ECHO \"$libname_spec\""`
66078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    set dummy $deplib_matches; shift
66098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    deplib_match=$1
66108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      newdeplibs="$newdeplibs $i"
66128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    else
66138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      droppeddeps=yes
66148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO
66158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO "*** I have the capability to make that library automatically link in when"
66178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO "*** shared version of the library, which you do not appear to have"
66198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    fi
66228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
66238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
66248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  droppeddeps=yes
66258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO
66268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** make it link in!  You will probably need to install it or some"
66288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** library that it depends on before this library will be fully"
66298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** functional.  Installing it before continuing would be even better."
66308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
66318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
66328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *)
66338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		newdeplibs="$newdeplibs $i"
66348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
66358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
66368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
66378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
66388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
66398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	file_magic*)
66408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  set dummy $deplibs_check_method; shift
66418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for a_deplib in $deplibs; do
66438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $a_deplib in
66448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -l*)
66458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_stripname -l '' "$a_deplib"
66468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      name=$func_stripname_result
66478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case " $predeps $postdeps " in
66498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*" $a_deplib "*)
66508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  newdeplibs="$newdeplibs $a_deplib"
66518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  a_deplib=""
66528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ;;
66538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
66548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
66558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$a_deplib" ; then
66568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		libname=`eval "\\$ECHO \"$libname_spec\""`
66578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  for potent_lib in $potential_libs; do
66608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # Follow soft links.
66618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      if ls -lLd "$potent_lib" 2>/dev/null |
66628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			 $GREP " -> " >/dev/null; then
66638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			continue
66648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      fi
66658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # The statement above tries to avoid entering an
66668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # endless loop below, in case of cyclic links.
66678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # We might still enter an endless loop, since a link
66688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # loop can be closed while we follow links,
66698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      # but so what?
66708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      potlib="$potent_lib"
66718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      while test -h "$potlib" 2>/dev/null; do
66728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			case $potliblink in
66748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			esac
66778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      done
66788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			 $SED -e 10q |
66808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			 $EGREP "$file_magic_regex" > /dev/null; then
66818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			newdeplibs="$newdeplibs $a_deplib"
66828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			a_deplib=""
66838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels			break 2
66848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      fi
66858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  done
66868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		done
66878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
66888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$a_deplib" ; then
66898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		droppeddeps=yes
66908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO
66918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** I have the capability to make that library automatically link in when"
66938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** you link to this library.  But I can only do this if you have a"
66948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** shared version of the library, which you do not appear to have"
66958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** because I did check the linker path looking for a file starting"
66968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test -z "$potlib" ; then
66978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
66998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** using a file magic. Last file checked: $potlib"
67018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
67028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
67038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
67048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
67058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Add a -L argument.
67068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdeplibs="$newdeplibs $a_deplib"
67078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
67088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
67098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done # Gone through all deplibs.
67108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
67118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	match_pattern*)
67128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  set dummy $deplibs_check_method; shift
67138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for a_deplib in $deplibs; do
67158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case $a_deplib in
67168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    -l*)
67178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_stripname -l '' "$a_deplib"
67188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      name=$func_stripname_result
67198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case " $predeps $postdeps " in
67218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*" $a_deplib "*)
67228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  newdeplibs="$newdeplibs $a_deplib"
67238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  a_deplib=""
67248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ;;
67258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
67268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
67278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$a_deplib" ; then
67288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		libname=`eval "\\$ECHO \"$libname_spec\""`
67298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  for potent_lib in $potential_libs; do
67328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    potlib="$potent_lib" # see symlink-check above in file_magic test
67338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		       $EGREP "$match_pattern_regex" > /dev/null; then
67358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      newdeplibs="$newdeplibs $a_deplib"
67368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      a_deplib=""
67378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		      break 2
67388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    fi
67398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  done
67408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		done
67418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
67428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$a_deplib" ; then
67438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		droppeddeps=yes
67448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO
67458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** I have the capability to make that library automatically link in when"
67478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** you link to this library.  But I can only do this if you have a"
67488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** shared version of the library, which you do not appear to have"
67498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$ECHO "*** because I did check the linker path looking for a file starting"
67508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test -z "$potlib" ; then
67518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
67538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
67568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
67578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
67588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *)
67598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Add a -L argument.
67608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdeplibs="$newdeplibs $a_deplib"
67618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
67628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
67638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done # Gone through all deplibs.
67648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
67658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	none | unknown | *)
67668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newdeplibs=""
67678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for i in $predeps $postdeps ; do
67718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # can't use Xsed below, because $i might contain '/'
67728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
67748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
67758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     $GREP . >/dev/null; then
67778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO
67788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "X$deplibs_check_method" = "Xnone"; then
67798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
67818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
67838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** All declared inter-library dependencies are being dropped."
67848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    droppeddeps=yes
67858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
67868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
67878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
67888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	versuffix=$versuffix_save
67898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	major=$major_save
67908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	release=$release_save
67918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libname=$libname_save
67928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	name=$name_save
67938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
67948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
67958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*-*-rhapsody* | *-*-darwin1.[012])
67968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # On Rhapsody replace the C library with the System framework
67978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
67998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
68008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
68018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$droppeddeps" = yes; then
68028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$module" = yes; then
68038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO
68048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
68058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
68068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** a static module, that should work as long as the dlopening"
68078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** application is linked with the -dlopen flag."
68088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$global_symbol_pipe"; then
68098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO
68108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** not find such a program.  So, this module is probably useless."
68138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
68158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$build_old_libs" = no; then
68168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      oldlibs="$output_objdir/$libname.$libext"
68178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      build_libtool_libs=module
68188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      build_old_libs=yes
68198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
68208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      build_libtool_libs=no
68218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
68228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
68238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** automatically added whenever a program is linked with this library"
68258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO "*** or is declared to -dlopen it."
68268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
68278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$allow_undefined" = no; then
68288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO
68298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** Since this library must not contain undefined symbols,"
68308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** because either the platform does not support them or"
68318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** it was explicitly requested with -no-undefined,"
68328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "*** libtool will only create a static version of it."
68338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$build_old_libs" = no; then
68348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		oldlibs="$output_objdir/$libname.$libext"
68358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		build_libtool_libs=module
68368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		build_old_libs=yes
68378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
68388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		build_libtool_libs=no
68398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
68408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
68418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
68428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
68438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Done checking deplibs!
68448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs=$newdeplibs
68458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
68468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $host in
68488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*-*-darwin*)
68498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
68538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
68548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
68558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # move library search paths that coincide with paths to not yet
68568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # installed libraries to the beginning of the library search list
68578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      new_libs=
68588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for path in $notinst_path; do
68598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case " $new_libs " in
68608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" -L$path/$objdir "*) ;;
68618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
68628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case " $deplibs " in
68638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" -L$path/$objdir "*)
68648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    new_libs="$new_libs -L$path/$objdir" ;;
68658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
68668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
68678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
68688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
68698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for deplib in $deplibs; do
68708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $deplib in
68718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-L*)
68728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case " $new_libs " in
68738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $deplib "*) ;;
68748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) new_libs="$new_libs $deplib" ;;
68758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
68768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
68778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) new_libs="$new_libs $deplib" ;;
68788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
68798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
68808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      deplibs="$new_libs"
68818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
68828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # All the library-specific variables (install_libdir is set above).
68838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      library_names=
68848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      old_library=
68858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dlname=
68868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
68878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Test again, we may have decided not to build it any more
68888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$build_libtool_libs" = yes; then
68898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$hardcode_into_libs" = yes; then
68908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Hardcode the library paths
68918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  hardcode_libdirs=
68928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dep_rpath=
68938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  rpath="$finalize_rpath"
68948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for libdir in $rpath; do
68968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$hardcode_libdir_flag_spec"; then
68978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$hardcode_libdir_separator"; then
68988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test -z "$hardcode_libdirs"; then
68998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  hardcode_libdirs="$libdir"
69008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
69018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # Just accumulate the unique libdirs.
69028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
69038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
69048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    ;;
69058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  *)
69068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    ;;
69088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  esac
69098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
69108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
69118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		eval flag=\"$hardcode_libdir_flag_spec\"
69128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		dep_rpath="$dep_rpath $flag"
69138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
69148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    elif test -n "$runpath_var"; then
69158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case "$perm_rpath " in
69168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *" $libdir "*) ;;
69178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) perm_rpath="$perm_rpath $libdir" ;;
69188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
69198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
69208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
69218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Substitute the hardcoded libdirs into the rpath.
69228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$hardcode_libdir_separator" &&
69238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test -n "$hardcode_libdirs"; then
69248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    libdir="$hardcode_libdirs"
69258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
69288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
69308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
69318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # We should set the runpath_var.
69338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rpath=
69348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for dir in $perm_rpath; do
69358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      rpath="$rpath$dir:"
69368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
69378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
69398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
69418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	shlibpath="$finalize_shlibpath"
69438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$shlibpath"; then
69458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
69478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Get the real and link names of the library.
69498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval shared_ext=\"$shrext_cmds\"
69508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval library_names=\"$library_names_spec\"
69518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	set dummy $library_names
69528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	shift
69538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	realname="$1"
69548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	shift
69558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$soname_spec"; then
69578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval soname=\"$soname_spec\"
69588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
69598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  soname="$realname"
69608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
69618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$dlname"; then
69628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dlname=$soname
69638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
69648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	lib="$output_objdir/$realname"
69668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	linknames=
69678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for link
69688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	do
69698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linknames="$linknames $link"
69708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
69718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Use standard objects if they are pic
69738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test "X$libobjs" = "X " && libobjs=
69758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	delfiles=
69778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  export_symbols="$output_objdir/$libname.uexp"
69808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  delfiles="$delfiles $export_symbols"
69818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
69828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
69838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	orig_export_symbols=
69848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host_os in
69858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	cygwin* | mingw* | cegcc*)
69868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # exporting using user supplied symfile
69888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # and it's NOT already a .def file. Must figure out
69908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # which of the given symbols are data symbols and tag
69918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # them as such. So, trigger use of export_symbols_cmds.
69928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # export_symbols gets reassigned inside the "prepare
69938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # the list of exported symbols" if statement, so the
69948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # include_expsyms logic still works.
69958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      orig_export_symbols="$export_symbols"
69968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      export_symbols=
69978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      always_export_symbols=yes
69988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
69998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
70008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
70018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
70028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Prepare the list of exported symbols
70048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -z "$export_symbols"; then
70058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
70068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_verbose "generating symbol list for \`$libname.la'"
70078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    export_symbols="$output_objdir/$libname.exp"
70088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || $RM $export_symbols
70098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cmds=$export_symbols_cmds
70108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    save_ifs="$IFS"; IFS='~'
70118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for cmd in $cmds; do
70128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      IFS="$save_ifs"
70138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval cmd=\"$cmd\"
70148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_len " $cmd"
70158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      len=$func_len_result
70168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_show_eval "$cmd" 'exit $?'
70188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		skipped_export=false
70198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
70208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# The command line is too long to execute in one step.
70218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_verbose "using reloadable object file for export list..."
70228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		skipped_export=:
70238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Break out early, otherwise skipped_export may be
70248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# set to false by a later but shorter cmd.
70258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		break
70268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
70278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
70288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    IFS="$save_ifs"
70298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
70338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
70348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
70358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tmp_export_symbols="$export_symbols"
70388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
70418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # The given exports_symbols file has to be filtered, so filter it.
70448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # 's' commands which not all seds can handle. GNU sed should be fine
70478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # though. Also, the filter scales superlinearly with the number of
70488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # global variables. join(1) would be nice here, but unfortunately
70498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # isn't a blessed tool.
70508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  export_symbols=$output_objdir/$libname.def
70538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
70558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	tmp_deplibs=
70578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for test_deplib in $deplibs; do
70588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case " $convenience " in
70598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $test_deplib "*) ;;
70608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *)
70618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    tmp_deplibs="$tmp_deplibs $test_deplib"
70628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
70638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
70648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
70658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	deplibs="$tmp_deplibs"
70668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$convenience"; then
70688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$whole_archive_flag_spec" &&
70698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "$compiler_needs_object" = yes &&
70708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test -z "$libobjs"; then
70718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # extract the archives, so we have objects to list.
70728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # TODO: could optimize this to just extract one archive.
70738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    whole_archive_flag_spec=
70748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
70758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$whole_archive_flag_spec"; then
70768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    save_libobjs=$libobjs
70778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$libobjs" = "X " && libobjs=
70798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
70808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    gentop="$output_objdir/${outputname}x"
70818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    generated="$generated $gentop"
70828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_extract_archives $gentop $convenience
70848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    libobjs="$libobjs $func_extract_archives_result"
70858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$libobjs" = "X " && libobjs=
70868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
70878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
70888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval flag=\"$thread_safe_flag_spec\"
70918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  linker_flags="$linker_flags $flag"
70928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
70938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Make a backup of the uninstalled library when relinking
70958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$mode" = relink; then
70968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
70988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
70998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Do each of the archive commands.
71008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$module" = yes && test -n "$module_cmds" ; then
71018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
71028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval test_cmds=\"$module_expsym_cmds\"
71038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cmds=$module_expsym_cmds
71048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
71058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval test_cmds=\"$module_cmds\"
71068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cmds=$module_cmds
71078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
71088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
71098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval test_cmds=\"$archive_expsym_cmds\"
71118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cmds=$archive_expsym_cmds
71128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
71138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval test_cmds=\"$archive_cmds\"
71148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cmds=$archive_cmds
71158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
71168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
71178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
71188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "X$skipped_export" != "X:" &&
71198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   func_len " $test_cmds" &&
71208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   len=$func_len_result &&
71218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  :
71238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
71248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # The command line is too long to link in one step, link piecewise
71258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # or, if using GNU ld and skipped_export is not :, use a linker
71268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # script.
71278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
71288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Save the value of $output and $libobjs because we want to
71298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # use them later.  If we have whole_archive_flag_spec, we
71308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # want to use save_libobjs as it was before
71318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # whole_archive_flag_spec was expanded, because we can't
71328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # assume the linker understands whole_archive_flag_spec.
71338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # This may have to be revisited, in case too many
71348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # convenience libraries get linked in and end up exceeding
71358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # the spec.
71368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    save_libobjs=$libobjs
71388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
71398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  save_output=$output
71408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
71428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Clear the reloadable object creation command queue and
71438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # initialize k to one.
71448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test_cmds=
71458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  concat_cmds=
71468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  objlist=
71478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  last_robj=
71488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  k=1
71498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
71508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    output=${output_objdir}/${output_la}.lnkscript
71528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_verbose "creating GNU ld script: $output"
71538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO 'INPUT (' > $output
71548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for obj in $save_libobjs
71558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    do
71568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "$obj" >> $output
71578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
71588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO ')' >> $output
71598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    delfiles="$delfiles $output"
71608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    output=${output_objdir}/${output_la}.lnk
71628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_verbose "creating linker input file list: $output"
71638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    : > $output
71648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    set x $save_libobjs
71658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    shift
71668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    firstobj=
71678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$compiler_needs_object" = yes; then
71688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      firstobj="$1 "
71698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      shift
71708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
71718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for obj
71728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    do
71738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "$obj" >> $output
71748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
71758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    delfiles="$delfiles $output"
71768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    output=$firstobj\"$file_list_spec$output\"
71778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
71788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$save_libobjs"; then
71798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_verbose "creating reloadable object files..."
71808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      output=$output_objdir/$output_la-${k}.$objext
71818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval test_cmds=\"$reload_cmds\"
71828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_len " $test_cmds"
71838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      len0=$func_len_result
71848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      len=$len0
71858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
71868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Loop over the list of objects to be linked.
71878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      for obj in $save_libobjs
71888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      do
71898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_len " $obj"
71908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_arith $len + $func_len_result
71918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		len=$func_arith_result
71928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test "X$objlist" = X ||
71938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		   test "$len" -lt "$max_cmd_len"; then
71948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_append objlist " $obj"
71958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		else
71968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # The command $test_cmds is almost too long, add a
71978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  # command to the queue.
71988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  if test "$k" -eq 1 ; then
71998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    # The first file doesn't have a previous command to add.
72008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
72018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  else
72028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    # All subsequent reloadable object files will link in
72038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    # the last one created.
72048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
72058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  fi
72068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  last_robj=$output_objdir/$output_la-${k}.$objext
72078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_arith $k + 1
72088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  k=$func_arith_result
72098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  output=$output_objdir/$output_la-${k}.$objext
72108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  objlist=$obj
72118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_len " $last_robj"
72128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_arith $len0 + $func_len_result
72138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  len=$func_arith_result
72148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
72158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      done
72168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Handle the remaining objects by creating one last
72178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # reloadable object file.  All subsequent reloadable object
72188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # files will link in the last one created.
72198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$last_robj"; then
72228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
72248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      delfiles="$delfiles $output"
72258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
72278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      output=
72288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
72298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if ${skipped_export-false}; then
72318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_verbose "generating symbol list for \`$libname.la'"
72328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      export_symbols="$output_objdir/$libname.exp"
72338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $opt_dry_run || $RM $export_symbols
72348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      libobjs=$output
72358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Append the command to create the export file.
72368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test -n "$last_robj"; then
72398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
72418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
72428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test -n "$save_libobjs" &&
72448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_verbose "creating a temporary reloadable object file: $output"
72458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Loop through the commands generated above and execute them.
72478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    save_ifs="$IFS"; IFS='~'
72488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for cmd in $concat_cmds; do
72498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      IFS="$save_ifs"
72508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $opt_silent || {
72518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_quote_for_expand "$cmd"
72528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  eval "func_echo $func_quote_for_expand_result"
72538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      }
72548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $opt_dry_run || eval "$cmd" || {
72558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		lt_exit=$?
72568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Restore the uninstalled library and exit
72588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		if test "$mode" = relink; then
72598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  ( cd "$output_objdir" && \
72608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $RM "${realname}T" && \
72618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		    $MV "${realname}U" "$realname" )
72628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		fi
72638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		exit $lt_exit
72658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      }
72668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
72678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    IFS="$save_ifs"
72688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
72738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
72748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          if ${skipped_export-false}; then
72768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      tmp_export_symbols="$export_symbols"
72788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
72818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$orig_export_symbols"; then
72838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # The given exports_symbols file has to be filtered, so filter it.
72848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # 's' commands which not all seds can handle. GNU sed should be fine
72878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # though. Also, the filter scales superlinearly with the number of
72888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # global variables. join(1) would be nice here, but unfortunately
72898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # isn't a blessed tool.
72908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      export_symbols=$output_objdir/$libname.def
72938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
72958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
72968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
72978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  libobjs=$output
72988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Restore the value of output.
72998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  output=$save_output
73008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
73028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
73038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test "X$libobjs" = "X " && libobjs=
73048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
73058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Expand the library linking commands again to reset the
73068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # value of $libobjs for piecewise linking.
73078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Do each of the archive commands.
73098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$module" = yes && test -n "$module_cmds" ; then
73108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cmds=$module_expsym_cmds
73128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
73138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cmds=$module_cmds
73148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
73158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
73168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cmds=$archive_expsym_cmds
73188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
73198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      cmds=$archive_cmds
73208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
73218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
73228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
73238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$delfiles"; then
73258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Append the command to remove temporary files to $cmds.
73268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval cmds=\"\$cmds~\$RM $delfiles\"
73278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
73288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Add any objects from preloaded convenience libraries
73308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$dlprefiles"; then
73318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  gentop="$output_objdir/${outputname}x"
73328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  generated="$generated $gentop"
73338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_extract_archives $gentop $dlprefiles
73358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  libobjs="$libobjs $func_extract_archives_result"
73368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test "X$libobjs" = "X " && libobjs=
73378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
73388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	save_ifs="$IFS"; IFS='~'
73408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for cmd in $cmds; do
73418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  IFS="$save_ifs"
73428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval cmd=\"$cmd\"
73438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_silent || {
73448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_quote_for_expand "$cmd"
73458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval "func_echo $func_quote_for_expand_result"
73468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  }
73478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || eval "$cmd" || {
73488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    lt_exit=$?
73498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Restore the uninstalled library and exit
73518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$mode" = relink; then
73528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ( cd "$output_objdir" && \
73538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        $RM "${realname}T" && \
73548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$MV "${realname}U" "$realname" )
73558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
73568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    exit $lt_exit
73588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  }
73598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
73608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	IFS="$save_ifs"
73618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Restore the uninstalled library and exit
73638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$mode" = relink; then
73648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
73658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$convenience"; then
73678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$whole_archive_flag_spec"; then
73688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_show_eval '${RM}r "$gentop"'
73698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
73708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
73718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  exit $EXIT_SUCCESS
73738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
73748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Create links to the real library.
73768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for linkname in $linknames; do
73778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$realname" != "$linkname"; then
73788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
73798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
73808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
73818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If -module or -export-dynamic was specified, set the dlname.
73838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$module" = yes || test "$export_dynamic" = yes; then
73848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # On all known operating systems, these are identical.
73858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  dlname="$soname"
73868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
73878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
73888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
73898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    obj)
73918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-dlopen' is ignored for objects"
73938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
73948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
73958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case " $deplibs" in
73968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *\ -l* | *\ -L*)
73978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-l' and \`-L' are ignored for objects" ;;
73988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
73998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$rpath" && \
74018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-rpath' is ignored for objects"
74028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$xrpath" && \
74048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-R' is ignored for objects"
74058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$vinfo" && \
74078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-version-info' is ignored for objects"
74088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$release" && \
74108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-release' is ignored for objects"
74118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $output in
74138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.lo)
74148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	test -n "$objs$old_deplibs" && \
74158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libobj=$output
74188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_lo2o "$libobj"
74198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	obj=$func_lo2o_result
74208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
74218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
74228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libobj=
74238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	obj="$output"
74248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
74258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
74268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Delete the old objects.
74288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $opt_dry_run || $RM $obj $libobj
74298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Objects from convenience libraries.  This assumes
74318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # single-version convenience libraries.  Whenever we create
74328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # different ones for PIC/non-PIC, this we'll have to duplicate
74338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # the extraction.
74348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      reload_conv_objs=
74358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      gentop=
74368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # reload_cmds runs $LD directly, so let us get rid of
74378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # -Wl from whole_archive_flag_spec and hope we can get by with
74388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # turning comma into space..
74398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      wl=
74408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$convenience"; then
74428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$whole_archive_flag_spec"; then
74438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
74468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  gentop="$output_objdir/${obj}x"
74478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  generated="$generated $gentop"
74488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_extract_archives $gentop $convenience
74508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
74528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
74538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Create the old-style object.
74558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
74568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      output="$obj"
74588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_execute_cmds "$reload_cmds" 'exit $?'
74598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Exit if we aren't doing a library object file.
74618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -z "$libobj"; then
74628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$gentop"; then
74638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval '${RM}r "$gentop"'
74648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
74658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_SUCCESS
74678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
74688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$build_libtool_libs" != yes; then
74708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$gentop"; then
74718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval '${RM}r "$gentop"'
74728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
74738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Create an invalid libtool object if no PIC, so that we don't
74758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# accidentally link it into a program.
74768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# $show "echo timestamp > $libobj"
74778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_SUCCESS
74798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
74808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$pic_flag" || test "$pic_mode" != default; then
74828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Only do commands if we really have different PIC objects.
74838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	reload_objs="$libobjs $reload_conv_objs"
74848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	output="$libobj"
74858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_execute_cmds "$reload_cmds" 'exit $?'
74868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
74878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$gentop"; then
74898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval '${RM}r "$gentop"'
74908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
74918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exit $EXIT_SUCCESS
74938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
74948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
74958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    prog)
74968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $host in
74978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*cygwin*) func_stripname '' '.exe' "$output"
74988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	          output=$func_stripname_result.exe;;
74998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
75008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$vinfo" && \
75018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-version-info' is ignored for programs"
75028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test -n "$release" && \
75048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`-release' is ignored for programs"
75058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "$preload" = yes \
75078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        && test "$dlopen_support" = unknown \
75088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	&& test "$dlopen_self" = unknown \
75098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	&& test "$dlopen_self_static" = unknown && \
75108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $host in
75138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *-*-rhapsody* | *-*-darwin1.[012])
75148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# On Rhapsody replace the C library is the System framework
75158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
75188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
75198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $host in
75218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *-*-darwin*)
75228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Don't allow lazy linking, it breaks C++ global constructors
75238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# But is supposedly fixed on 10.4 or later (yay!).
75248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$tagname" = CXX ; then
75258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    10.[0123])
75278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      compile_command="$compile_command ${wl}-bind_at_load"
75288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      finalize_command="$finalize_command ${wl}-bind_at_load"
75298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
75308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
75318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
75328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
75368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
75378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # move library search paths that coincide with paths to not yet
75408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # installed libraries to the beginning of the library search list
75418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      new_libs=
75428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for path in $notinst_path; do
75438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case " $new_libs " in
75448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*" -L$path/$objdir "*) ;;
75458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*)
75468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case " $compile_deplibs " in
75478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" -L$path/$objdir "*)
75488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    new_libs="$new_libs -L$path/$objdir" ;;
75498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
75508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
75518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
75528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
75538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for deplib in $compile_deplibs; do
75548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $deplib in
75558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	-L*)
75568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case " $new_libs " in
75578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $deplib "*) ;;
75588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) new_libs="$new_libs $deplib" ;;
75598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
75608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
75618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) new_libs="$new_libs $deplib" ;;
75628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
75638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
75648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      compile_deplibs="$new_libs"
75658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      compile_command="$compile_command $compile_deplibs"
75688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      finalize_command="$finalize_command $finalize_deplibs"
75698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$rpath$xrpath"; then
75718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# If the user specified any rpath flags, then add them.
75728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for libdir in $rpath $xrpath; do
75738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # This is the magic to use -rpath.
75748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$finalize_rpath " in
75758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $libdir "*) ;;
75768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
75788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
75798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
75808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
75818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now hardcode the library paths
75828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      rpath=
75838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      hardcode_libdirs=
75848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for libdir in $compile_rpath $finalize_rpath; do
75858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$hardcode_libdir_flag_spec"; then
75868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$hardcode_libdir_separator"; then
75878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$hardcode_libdirs"; then
75888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      hardcode_libdirs="$libdir"
75898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
75908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Just accumulate the unique libdirs.
75918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
75948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *)
75958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
75978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
75988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
75998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
76008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval flag=\"$hardcode_libdir_flag_spec\"
76018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rpath="$rpath $flag"
76028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
76038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif test -n "$runpath_var"; then
76048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$perm_rpath " in
76058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $libdir "*) ;;
76068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) perm_rpath="$perm_rpath $libdir" ;;
76078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
76088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
76098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
76108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case :$dllsearchpath: in
76138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *":$libdir:"*) ;;
76148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ::) dllsearchpath=$libdir;;
76158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) dllsearchpath="$dllsearchpath:$libdir";;
76168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
76178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case :$dllsearchpath: in
76188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *":$testbindir:"*) ;;
76198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ::) dllsearchpath=$testbindir;;
76208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
76228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
76238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
76248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
76258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Substitute the hardcoded libdirs into the rpath.
76268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$hardcode_libdir_separator" &&
76278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 test -n "$hardcode_libdirs"; then
76288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libdir="$hardcode_libdirs"
76298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval rpath=\" $hardcode_libdir_flag_spec\"
76308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
76318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      compile_rpath="$rpath"
76328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
76338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      rpath=
76348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      hardcode_libdirs=
76358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for libdir in $finalize_rpath; do
76368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$hardcode_libdir_flag_spec"; then
76378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$hardcode_libdir_separator"; then
76388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$hardcode_libdirs"; then
76398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      hardcode_libdirs="$libdir"
76408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
76418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Just accumulate the unique libdirs.
76428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
76458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *)
76468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
76488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
76498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
76508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
76518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval flag=\"$hardcode_libdir_flag_spec\"
76528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rpath="$rpath $flag"
76538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
76548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif test -n "$runpath_var"; then
76558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$finalize_perm_rpath " in
76568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $libdir "*) ;;
76578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
76598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
76608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
76618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Substitute the hardcoded libdirs into the rpath.
76628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$hardcode_libdir_separator" &&
76638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 test -n "$hardcode_libdirs"; then
76648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	libdir="$hardcode_libdirs"
76658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval rpath=\" $hardcode_libdir_flag_spec\"
76668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
76678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      finalize_rpath="$rpath"
76688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
76698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Transform all the library objects into standard objects.
76718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
76748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
76758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
76778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # template prelinking step
76788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$prelink_cmds"; then
76798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_execute_cmds "$prelink_cmds" 'exit $?'
76808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
76818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
76828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      wrappers_required=yes
76838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $host in
76848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *cygwin* | *mingw* )
76858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        if test "$build_libtool_libs" != yes; then
76868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          wrappers_required=no
76878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        fi
76888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
76898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *cegcc)
76908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        # Disable wrappers for cegcc, we are cross compiling anyway.
76918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        wrappers_required=no
76928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
76938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
76948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels          wrappers_required=no
76968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        fi
76978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels        ;;
76988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
76998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$wrappers_required" = no; then
77008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Replace the output file specification.
77018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	link_command="$compile_command$compile_rpath"
77038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# We have no uninstalled library dependencies, so finalize right now.
77058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit_status=0
77068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "$link_command" 'exit_status=$?'
77078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Delete the generated files.
77098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -f "$output_objdir/${outputname}S.${objext}"; then
77108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
77118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
77128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $exit_status
77148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
77158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
77198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$finalize_shlibpath"; then
77208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
77228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      compile_var=
77248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      finalize_var=
77258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$runpath_var"; then
77268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$perm_rpath"; then
77278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # We should set the runpath_var.
77288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  rpath=
77298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for dir in $perm_rpath; do
77308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rpath="$rpath$dir:"
77318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
77328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
77348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$finalize_perm_rpath"; then
77358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # We should set the runpath_var.
77368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  rpath=
77378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for dir in $finalize_perm_rpath; do
77388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rpath="$rpath$dir:"
77398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
77408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
77418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
77428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
77438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$no_install" = yes; then
77458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# We don't need to create a wrapper script.
77468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	link_command="$compile_var$compile_command$compile_rpath"
77478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Replace the output file specification.
77488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Delete the old output file.
77508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	$opt_dry_run || $RM $output
77518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Link the executable and exit
77528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "$link_command" 'exit $?'
77538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit $EXIT_SUCCESS
77548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
77558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$hardcode_action" = relink; then
77578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Fast installation is not supported
77588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	link_command="$compile_var$compile_command$compile_rpath"
77598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	relink_command="$finalize_var$finalize_command$finalize_rpath"
77608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "this platform does not like uninstalled shared libraries"
77628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_warning "\`$output' will be relinked during installation"
77638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
77648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$fast_install" != no; then
77658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  link_command="$finalize_var$compile_command$finalize_rpath"
77668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$fast_install" = yes; then
77678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
77698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # fast_install is set to needless
77708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command=
77718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
77728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
77738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  link_command="$compile_var$compile_command$compile_rpath"
77748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
77768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
77778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Replace the output file specification.
77798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Delete the old output files.
77828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval "$link_command" 'exit $?'
77858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Now create the wrapper script.
77878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_verbose "creating $output"
77888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
77898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Quote the relink command for shipping.
77908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$relink_command"; then
77918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Preserve any variables that may affect compiler behavior
77928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for var in $variables_saved_for_relink; do
77938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if eval test -z \"\${$var+set}\"; then
77948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  elif eval var_value=\$$var; test -z "$var_value"; then
77968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command="$var=; export $var; $relink_command"
77978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
77988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_quote_for_eval "$var_value"
77998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
78008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
78018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
78028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	relink_command="(cd `pwd`; $relink_command)"
78038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
78048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
78058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Quote $ECHO for shipping.
78078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $progpath in
78098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
78128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
78148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
78168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Only actually do things if not in dry run mode.
78188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $opt_dry_run || {
78198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# win32 will think the script is a binary if it has
78208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# a .exe suffix, so we strip it off here.
78218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $output in
78228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.exe) func_stripname '' '.exe' "$output"
78238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	         output=$func_stripname_result ;;
78248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
78258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# test for cygwin because mv fails w/o .exe extensions
78268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
78278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *cygwin*)
78288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    exeext=.exe
78298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '' '.exe' "$outputname"
78308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    outputname=$func_stripname_result ;;
78318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) exeext= ;;
78328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
78338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case $host in
78348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *cygwin* | *mingw* )
78358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_dirname_and_basename "$output" "" "."
78368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    output_name=$func_basename_result
78378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    output_path=$func_dirname_result
78388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    cwrapper="$output_path/$output_name.exe"
78408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $RM $cwrappersource $cwrapper
78418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_emit_cwrapperexe_src > $cwrappersource
78448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # The wrapper executable is built using the $host compiler,
78468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # because it contains $host paths and files. If cross-
78478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # compiling, it, like the target executable, must be
78488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # executed on the $host or under an emulation environment.
78498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
78508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $STRIP $cwrapper
78528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
78538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Now, create the wrapper script for func_source use:
78558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_ltwrapper_scriptname $cwrapper
78568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $RM $func_ltwrapper_scriptname_result
78578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $opt_dry_run || {
78598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # note: this script will not be executed, so do not chmod.
78608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "x$build" = "x$host" ; then
78618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      else
78638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
78658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    }
78668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
78678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  * )
78688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $RM $output
78698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_emit_wrapper no > $output
78728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    chmod +x $output
78738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  ;;
78748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
78758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
78768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      exit $EXIT_SUCCESS
78778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
78788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
78798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # See if we need to build an old-fashioned archive.
78818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for oldlib in $oldlibs; do
78828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
78838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$build_libtool_libs" = convenience; then
78848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	oldobjs="$libobjs_save $symfileobj"
78858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	addlibs="$convenience"
78868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	build_libtool_libs=no
78878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
78888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$build_libtool_libs" = module; then
78898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldobjs="$libobjs_save"
78908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  build_libtool_libs=no
78918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
78928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldobjs="$old_deplibs $non_pic_objects"
78938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$preload" = yes && test -f "$symfileobj"; then
78948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    oldobjs="$oldobjs $symfileobj"
78958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
78968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
78978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	addlibs="$old_convenience"
78988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
78998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$addlibs"; then
79018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	gentop="$output_objdir/${outputname}x"
79028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	generated="$generated $gentop"
79038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_extract_archives $gentop $addlibs
79058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	oldobjs="$oldobjs $func_extract_archives_result"
79068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
79078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Do each command in the archive commands.
79098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	cmds=$old_archive_from_new_cmds
79118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
79128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Add any objects from preloaded convenience libraries
79148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test -n "$dlprefiles"; then
79158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  gentop="$output_objdir/${outputname}x"
79168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  generated="$generated $gentop"
79178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_extract_archives $gentop $dlprefiles
79198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldobjs="$oldobjs $func_extract_archives_result"
79208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
79218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# POSIX demands no paths to be encoded in archives.  We have
79238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# to avoid creating archives with duplicate basenames if we
79248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# might have to extract them afterwards, e.g., when creating a
79258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# static archive out of a convenience library, or when linking
79268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# the entirety of a libtool archive into another (currently
79278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# not supported by libtool).
79288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if (for obj in $oldobjs
79298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    do
79308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_basename "$obj"
79318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      $ECHO "$func_basename_result"
79328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done | sort | sort -uc >/dev/null 2>&1); then
79338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  :
79348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
79358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO "copying selected object files to avoid basename conflicts..."
79368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  gentop="$output_objdir/${outputname}x"
79378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  generated="$generated $gentop"
79388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_mkdir_p "$gentop"
79398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  save_oldobjs=$oldobjs
79408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldobjs=
79418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  counter=1
79428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for obj in $save_oldobjs
79438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  do
79448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_basename "$obj"
79458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    objbase="$func_basename_result"
79468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case " $oldobjs " in
79478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    " ") oldobjs=$obj ;;
79488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *[\ /]"$objbase "*)
79498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      while :; do
79508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Make sure we don't pick an alternate name that also
79518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# overlaps.
79528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		newobj=lt$counter-$objbase
79538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_arith $counter + 1
79548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		counter=$func_arith_result
79558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		case " $oldobjs " in
79568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*[\ /]"$newobj "*) ;;
79578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		esac
79598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      done
79608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      oldobjs="$oldobjs $gentop/$newobj"
79628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      ;;
79638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) oldobjs="$oldobjs $obj" ;;
79648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
79658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
79668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
79678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	eval cmds=\"$old_archive_cmds\"
79688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
79698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_len " $cmds"
79708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	len=$func_len_result
79718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  cmds=$old_archive_cmds
79738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
79748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # the command line is too long to link in one step, link in parts
79758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_verbose "using piecewise archive linking..."
79768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  save_RANLIB=$RANLIB
79778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  RANLIB=:
79788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  objlist=
79798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  concat_cmds=
79808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  save_oldobjs=$oldobjs
79818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldobjs=
79828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Is there a better way of finding the last object in the list?
79838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for obj in $save_oldobjs
79848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  do
79858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    last_oldobj=$obj
79868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
79878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  eval test_cmds=\"$old_archive_cmds\"
79888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_len " $test_cmds"
79898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  len0=$func_len_result
79908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  len=$len0
79918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for obj in $save_oldobjs
79928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  do
79938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_len " $obj"
79948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_arith $len + $func_len_result
79958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    len=$func_arith_result
79968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_append objlist " $obj"
79978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$len" -lt "$max_cmd_len"; then
79988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      :
79998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
80008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # the above command should be used before it gets too long
80018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      oldobjs=$objlist
80028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      if test "$obj" = "$last_oldobj" ; then
80038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		RANLIB=$save_RANLIB
80048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      fi
80058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
80068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      objlist=
80088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      len=$len0
80098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
80108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
80118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  RANLIB=$save_RANLIB
80128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  oldobjs=$objlist
80138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "X$oldobjs" = "X" ; then
80148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval cmds=\"\$concat_cmds\"
80158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
80168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
80188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
80198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
80208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_execute_cmds "$cmds" 'exit $?'
80218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
80228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
80238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -n "$generated" && \
80248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval "${RM}r$generated"
80258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
80268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Now create the libtool archive.
80278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    case $output in
80288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    *.la)
80298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      old_library=
80308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "$build_old_libs" = yes && old_library="$libname.$libext"
80318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_verbose "creating $output"
80328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
80338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Preserve any variables that may affect compiler behavior
80348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      for var in $variables_saved_for_relink; do
80358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if eval test -z \"\${$var+set}\"; then
80368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	elif eval var_value=\$$var; test -z "$var_value"; then
80388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  relink_command="$var=; export $var; $relink_command"
80398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	else
80408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_quote_for_eval "$var_value"
80418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
80438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      done
80448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Quote the link command for shipping.
80458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$hardcode_automatic" = yes ; then
80488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	relink_command=
80498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
80508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
80518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Only create the output if not a dry run.
80528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      $opt_dry_run || {
80538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	for installed in no yes; do
80548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$installed" = yes; then
80558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -z "$install_libdir"; then
80568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      break
80578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
80588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    output="$output_objdir/$outputname"i
80598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # Replace all uninstalled libtool libraries with the installed ones
80608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdependency_libs=
80618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for deplib in $dependency_libs; do
80628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $deplib in
80638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *.la)
80648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_basename "$deplib"
80658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		name="$func_basename_result"
80668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		test -z "$libdir" && \
80688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		newdependency_libs="$newdependency_libs $libdir/$name"
80708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
80718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
80738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
80748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dependency_libs="$newdependency_libs"
80758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlfiles=
80768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
80778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for lib in $dlfiles; do
80788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $lib in
80798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *.la)
80808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	        func_basename "$lib"
80818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		name="$func_basename_result"
80828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		test -z "$libdir" && \
80848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_fatal_error "\`$lib' is not a valid libtool archive"
80858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		newdlfiles="$newdlfiles $libdir/$name"
80868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
80878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *) newdlfiles="$newdlfiles $lib" ;;
80888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
80898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
80908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlfiles="$newdlfiles"
80918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlprefiles=
80928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for lib in $dlprefiles; do
80938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $lib in
80948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      *.la)
80958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# Only pass preopened files to the pseudo-archive (for
80968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# eventual linking with the app. that links it) if we
80978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# didn't already link the preopened objects directly into
80988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		# the library:
80998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		func_basename "$lib"
81008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		name="$func_basename_result"
81018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
81028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		test -z "$libdir" && \
81038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		  func_fatal_error "\`$lib' is not a valid libtool archive"
81048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		newdlprefiles="$newdlprefiles $libdir/$name"
81058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		;;
81068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
81078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
81088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlprefiles="$newdlprefiles"
81098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  else
81108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlfiles=
81118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for lib in $dlfiles; do
81128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $lib in
81138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*) abs=`pwd`"/$lib" ;;
81158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
81168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdlfiles="$newdlfiles $abs"
81178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
81188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlfiles="$newdlfiles"
81198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    newdlprefiles=
81208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    for lib in $dlprefiles; do
81218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      case $lib in
81228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels		*) abs=`pwd`"/$lib" ;;
81248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      esac
81258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      newdlprefiles="$newdlprefiles $abs"
81268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    done
81278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    dlprefiles="$newdlprefiles"
81288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
81298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $RM $output
81308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # place dlname in correct position for cygwin
81318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  tdlname=$dlname
81328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $host,$output,$installed,$module,$dlname in
81338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
81358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  $ECHO > $output "\
81368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# $outputname - a libtool library file
81378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels#
81398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Please DO NOT delete this file!
81408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# It is necessary for linking the library.
81418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The name that we can dlopen(3).
81438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdlname='$tdlname'
81448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Names of this library.
81468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslibrary_names='$library_names'
81478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The name of the static archive.
81498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsold_library='$old_library'
81508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Linker flags that can not go in dependency_libs.
81528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsinherited_linker_flags='$new_inherited_linker_flags'
81538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Libraries that this one depends upon.
81558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdependency_libs='$dependency_libs'
81568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Names of additional weak libraries provided by this library
81588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsweak_library_names='$weak_libs'
81598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Version information for $libname.
81618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelscurrent=$current
81628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsage=$age
81638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrevision=$revision
81648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Is this an already installed library?
81668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsinstalled=$installed
81678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Should we warn about portability when linking against -modules?
81698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsshouldnotlink=$module
81708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Files to dlopen/dlpreopen
81728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdlopen='$dlfiles'
81738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsdlpreopen='$dlprefiles'
81748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Directory that this library needs to be installed in:
81768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelslibdir='$install_libdir'"
81778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test "$installed" = no && test "$need_relink" = yes; then
81788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    $ECHO >> $output "\
81798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsrelink_command=\"$relink_command\""
81808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
81818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	done
81828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      }
81838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Do a symbolic link so that the libtool archive can be found in
81858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # LD_LIBRARY_PATH before the program is installed.
81868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      ;;
81888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    esac
81898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $EXIT_SUCCESS
81908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
81918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ test "$mode" = link || test "$mode" = relink; } &&
81938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_mode_link ${1+"$@"}
81948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
81968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# func_mode_uninstall arg...
81978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfunc_mode_uninstall ()
81988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{
81998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    $opt_debug
82008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    RM="$nonopt"
82018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    files=
82028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    rmforce=
82038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit_status=0
82048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # This variable tells wrapper scripts just to set variables rather
82068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # than running their programs.
82078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    libtool_install_magic="$magic"
82088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for arg
82108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    do
82118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $arg in
82128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -f) RM="$RM $arg"; rmforce=yes ;;
82138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      -*) RM="$RM $arg" ;;
82148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *) files="$files $arg" ;;
82158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
82168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
82178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    test -z "$RM" && \
82198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_fatal_help "you must specify an RM program"
82208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    rmdirs=
82228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    origobjdir="$objdir"
82248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for file in $files; do
82258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_dirname "$file" "" "."
82268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      dir="$func_dirname_result"
82278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "X$dir" = X.; then
82288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	objdir="$origobjdir"
82298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      else
82308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	objdir="$dir/$origobjdir"
82318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
82328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_basename "$file"
82338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      name="$func_basename_result"
82348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      test "$mode" = uninstall && objdir="$dir"
82358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Remember objdir for removal later, being careful to avoid duplicates
82378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test "$mode" = clean; then
82388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	case " $rmdirs " in
82398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *" $objdir "*) ;;
82408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *) rmdirs="$rmdirs $objdir" ;;
82418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	esac
82428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
82438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      # Don't error if the file doesn't exist and rm -f was used.
82458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if { test -L "$file"; } >/dev/null 2>&1 ||
82468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 { test -h "$file"; } >/dev/null 2>&1 ||
82478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	 test -f "$file"; then
82488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	:
82498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      elif test -d "$file"; then
82508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	exit_status=1
82518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
82528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      elif test "$rmforce" = yes; then
82538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	continue
82548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
82558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      rmfiles="$file"
82578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      case $name in
82598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.la)
82608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Possibly a libtool archive, so verify it.
82618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if func_lalib_p "$file"; then
82628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source $dir/$name
82638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Delete the libtool libraries and symlinks.
82658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  for n in $library_names; do
82668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rmfiles="$rmfiles $objdir/$n"
82678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  done
82688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case "$mode" in
82718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  clean)
82728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    case "  $library_names " in
82738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # "  " in the beginning catches empty $dlname
82748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *" $dlname "*) ;;
82758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    esac
82778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
82798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  uninstall)
82808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$library_names"; then
82818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Do each command in the postuninstall commands.
82828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
82848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test -n "$old_library"; then
82868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      # Do each command in the old_postuninstall commands.
82878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
82898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # FIXME: should reinstall the best remaining shared library.
82908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
82918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
82928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
82938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
82948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *.lo)
82968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	# Possibly a libtool object, so verify it.
82978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if func_lalib_p "$file"; then
82988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
82998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Read the .lo file
83008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  func_source $dir/$name
83018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add PIC object to the list of files to remove.
83038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$pic_object" &&
83048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$pic_object" != none; then
83058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rmfiles="$rmfiles $dir/$pic_object"
83068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
83078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Add non-PIC object to the list of files to remove.
83098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if test -n "$non_pic_object" &&
83108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	     test "$non_pic_object" != none; then
83118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rmfiles="$rmfiles $dir/$non_pic_object"
83128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
83138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
83148e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
83158e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83168e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      *)
83178e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	if test "$mode" = clean ; then
83188e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  noexename=$name
83198e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  case $file in
83208e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  *.exe)
83218e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '' '.exe' "$file"
83228e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    file=$func_stripname_result
83238e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    func_stripname '' '.exe' "$name"
83248e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    noexename=$func_stripname_result
83258e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # $file with .exe has already been added to rmfiles,
83268e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # add $file without .exe
83278e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rmfiles="$rmfiles $file"
83288e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    ;;
83298e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  esac
83308e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  # Do a test to see if this is a libtool program.
83318e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  if func_ltwrapper_p "$file"; then
83328e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if func_ltwrapper_executable_p "$file"; then
83338e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_ltwrapper_scriptname "$file"
83348e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      relink_command=
83358e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_source $func_ltwrapper_scriptname_result
83368e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83378e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    else
83388e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      relink_command=
83398e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      func_source $dir/$noexename
83408e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
83418e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83428e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # note $name still contains .exe if it was in $file originally
83438e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    # as does the version of $file that was added into $rmfiles
83448e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83458e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "$fast_install" = yes && test -n "$relink_command"; then
83468e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      rmfiles="$rmfiles $objdir/lt-$name"
83478e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
83488e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    if test "X$noexename" != "X$name" ; then
83498e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83508e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	    fi
83518e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	  fi
83528e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	fi
83538e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	;;
83548e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      esac
83558e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      func_show_eval "$RM $rmfiles" 'exit_status=1'
83568e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
83578e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    objdir="$origobjdir"
83588e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83598e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    # Try to remove the ${objdir}s in the directories where we deleted files
83608e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    for dir in $rmdirs; do
83618e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      if test -d "$dir"; then
83628e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels	func_show_eval "rmdir $dir >/dev/null 2>&1"
83638e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels      fi
83648e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    done
83658e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83668e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    exit $exit_status
83678e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
83688e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83698e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels{ test "$mode" = uninstall || test "$mode" = clean; } &&
83708e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels    func_mode_uninstall ${1+"$@"}
83718e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83728e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest -z "$mode" && {
83738e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  help="$generic_help"
83748e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_fatal_help "you must specify a MODE"
83758e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels}
83768e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83778e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelstest -z "$exec_cmd" && \
83788e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  func_fatal_help "invalid operation mode \`$mode'"
83798e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83808e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsif test -n "$exec_cmd"; then
83818e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  eval exec "$exec_cmd"
83828e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels  exit $EXIT_FAILURE
83838e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsfi
83848e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83858e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsexit $exit_status
83868e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83878e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83888e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# The TAGs below are defined such that we never get into a situation
83898e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# in which we disable both kinds of libraries.  Given conflicting
83908e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# choices, we go for a static library, that is the most portable,
83918e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# since we can't tell whether shared libraries were disabled because
83928e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# the user asked for that or because the platform doesn't support
83938e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# them.  This is particularly important on AIX, because we don't
83948e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# support having both static and shared libraries enabled at the same
83958e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# time on that platform, so we default to a shared-only configuration.
83968e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# If a disable-shared tag is given, we'll fallback to a static-only
83978e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# configuration.  But we'll never go from static-only to shared-only.
83988e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
83998e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
84008e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbuild_libtool_libs=no
84018e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbuild_old_libs=yes
84028e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### END LIBTOOL TAG CONFIG: disable-shared
84038e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
84048e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### BEGIN LIBTOOL TAG CONFIG: disable-static
84058e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckelsbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
84068e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# ### END LIBTOOL TAG CONFIG: disable-static
84078e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
84088e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# Local Variables:
84098e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# mode:shell-script
84108e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# sh-indentation:2
84118e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# End:
84128e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels# vi:sw=2
84138e01cdce135d5d816f92d7bb83f9a930aa1b45aeLucas Eckels
8414