13aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Generated from ltmain.m4sh.
23aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ltmain.sh (GNU libtool) 2.2.6
43aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
53aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
73aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This is free software; see the source for copying conditions.  There is NO
83aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
93aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# GNU Libtool is free software; you can redistribute it and/or modify
113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# it under the terms of the GNU General Public License as published by
123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the Free Software Foundation; either version 2 of the License, or
133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# (at your option) any later version.
143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# As a special exception to the GNU General Public License,
163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# if you distribute this file as part of a program or library that
173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# is built using GNU Libtool, you may include this file under the
183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# same distribution terms that you use for the rest of that program.
193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# GNU Libtool is distributed in the hope that it will be useful, but
213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# WITHOUT ANY WARRANTY; without even the implied warranty of
223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# General Public License for more details.
243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# You should have received a copy of the GNU General Public License
263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# along with GNU Libtool; see the file COPYING.  If not, a copy
273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# can be downloaded from http://www.gnu.org/licenses/gpl.html,
283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# or obtained by writing to the Free Software Foundation, Inc.,
293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Usage: $progname [OPTION]... [MODE-ARG]...
323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Provide generalized library-building support services.
343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --config             show all configuration variables
363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --debug              enable verbose shell tracing
373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# -n, --dry-run            display commands without modifying any files
383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --features           display basic configuration information and exit
393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --mode=MODE          use operation mode MODE
403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --preserve-dup-deps  don't remove duplicate dependency libraries
413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --quiet, --silent    don't print informational messages
423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --tag=TAG            use configuration variables from tag TAG
433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# -v, --verbose            print informational messages (default)
443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#     --version            print version information
453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# -h, --help               print short or long help message
463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# MODE must be one of the following:
483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       clean              remove files from the build directory
503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       compile            compile a source file into a libtool object
513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       execute            automatically set library path, then run a program
523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       finish             complete the installation of libtool libraries
533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       install            install libraries or executables
543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       link               create a library or an executable
553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       uninstall          remove libraries from an installed directory
563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# MODE-ARGS vary depending on the MODE.
583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# When reporting a bug, please describe a test case to reproduce it and
613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# include the following information:
623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       host-triplet:	$host
643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       shell:		$SHELL
653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       compiler:		$LTCC
663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       compiler flags:		$LTCFLAGS
673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       linker:		$LD (gnu? $with_gnu_ld)
683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       $progname:		(GNU libtool) 2.2.6
693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       automake:		$automake_version
703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#       autoconf:		$autoconf_version
713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Report bugs to <bug-libtool@gnu.org>.
733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
743aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevPROGRAM=ltmain.sh
753aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevPACKAGE=libtool
763aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevVERSION=2.2.6
773aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevTIMESTAMP=""
783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevpackage_revision=1.3012
793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Be Bourne compatible
813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  emulate sh
833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  NULLCMD=:
843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # is contrary to our usage.  Disable this feature.
863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  alias -g '${1+"$@"}'='"$@"'
873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  setopt NO_GLOB_SUBST
883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevelse
893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfi
913aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevBIN_SH=xpg4; export BIN_SH # for Tru64
923aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevDUALCASE=1; export DUALCASE # for MKS sh
933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# NLS nuisances: We save the old values to restore during execute mode.
953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Only set LANG and LC_ALL to C if already set.
963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# These must not be set unconditionally because not all systems understand
973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# e.g. LANG=C (notably SCO).
983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_user_locale=
993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_safe_locale=
1003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdo
1023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  eval "if test \"\${$lt_var+set}\" = set; then
1033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          save_$lt_var=\$$lt_var
1043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          $lt_var=C
1053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  export $lt_var
1063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi"
1093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdone
1103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$lt_unset CDPATH
1123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${CP="cp -f"}
1183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${ECHO="echo"}
1193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${EGREP="/bin/grep -E"}
1203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${FGREP="/bin/grep -F"}
1213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${GREP="/bin/grep"}
1223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${LN_S="ln -s"}
1233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${MAKE="make"}
1243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${MKDIR="mkdir"}
1253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${MV="mv -f"}
1263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${RM="rm -f"}
1273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${SED="/bin/sed"}
1283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev: ${Xsed="$SED -e 1s/^X//"}
1303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Global variables:
1323aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEXIT_SUCCESS=0
1333aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEXIT_FAILURE=1
1343aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1353aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevexit_status=$EXIT_SUCCESS
1383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Make sure IFS has a sensible default
1403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_nl='
1413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev'
1423aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIFS=" 	$lt_nl"
1433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdirname="s,/[^/]*$,,"
1453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbasename="s,^.*/,,"
1463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_dirname_and_basename file append nondir_replacement
1483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# perform func_basename and func_dirname in a single function
1493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# call:
1503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#   dirname:  Compute the dirname of FILE.  If nonempty,
1513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#             add APPEND to the result, otherwise set result
1523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#             to NONDIR_REPLACEMENT.
1533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#             value returned in "$func_dirname_result"
1543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#   basename: Compute filename of FILE.
1553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#             value retuned in "$func_basename_result"
1563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Implementation must be kept synchronized with func_dirname
1573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# and func_basename. For efficiency, we do not delegate to
1583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# those functions but instead duplicate the functionality here.
1593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_dirname_and_basename ()
1603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
1613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Extract subdirectory from the argument.
1623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test "X$func_dirname_result" = "X${1}"; then
1643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_dirname_result="${3}"
1653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  else
1663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_dirname_result="$func_dirname_result${2}"
1673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
1683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
1703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Generated shell functions inserted here.
1723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# is ksh but when the shell is invoked as "sh" and the current value of
1753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the _XPG environment variable is not equal to 1 (one), the special
1763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# positional parameter $0, within a function call, is the name of the
1773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# function.
1783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevprogpath="$0"
1793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# The name of this program:
1813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# In the unlikely event $progname began with a '-', it would play havoc with
1823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_echo (imagine progname=-n), so we prepend ./ in that case:
1833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_dirname_and_basename "$progpath"
1843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevprogname=$func_basename_result
1853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcase $progname in
1863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -*) progname=./$progname ;;
1873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevesac
1883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
1893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Make sure we have an absolute path for reexecution:
1903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcase $progpath in
1913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  [\\/]*|[A-Za-z]:\\*) ;;
1923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *[\\/]*)
1933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     progdir=$func_dirname_result
1943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     progdir=`cd "$progdir" && pwd`
1953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     progpath="$progdir/$progname"
1963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     ;;
1973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *)
1983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     save_IFS="$IFS"
1993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     IFS=:
2003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     for progdir in $PATH; do
2013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       IFS="$save_IFS"
2023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       test -x "$progdir/$progname" && break
2033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     done
2043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     IFS="$save_IFS"
2053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     test -n "$progdir" || progdir=`pwd`
2063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     progpath="$progdir/$progname"
2073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     ;;
2083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevesac
2093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Sed substitution that helps us do robust quoting.  It backslashifies
2113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# metacharacters that are still active within double-quoted strings.
2123aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevXsed="${SED}"' -e 1s/^X//'
2133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevsed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Same as above, but do not quote variable references.
2163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdouble_quote_subst='s/\(["`\\]\)/\\\1/g'
2173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Re-`\' parameter expansions in output of double_quote_subst that were
2193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# in input to double_quote_subst, that '$' was protected from expansion.
2213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Since each input `\' is now two `\'s, look for any number of runs of
2223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbs='\\'
2243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbs2='\\\\'
2253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbs4='\\\\\\\\'
2263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdollar='\$'
2273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevsed_double_backslash="\
2283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  s/$bs4/&\\
2293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/g
2303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  s/^$bs2$dollar/$bs&/
2313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  s/\n//g"
2333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Standard options:
2353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_dry_run=false
2363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_help=false
2373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_quiet=false
2383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_verbose=false
2393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_warning=:
2403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_echo arg...
2423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message, along with the current mode
2433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# name if it has been set yet.
2443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_echo ()
2453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
2463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "$progname${mode+: }$mode: $*"
2473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
2483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_verbose arg...
2503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message in verbose mode only.
2513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_verbose ()
2523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
2533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_verbose && func_echo ${1+"$@"}
2543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # A bug in bash halts the script if the last line of a function
2563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # fails when set -e is in force, so we need another command to
2573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # work around that:
2583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    :
2593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
2603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_error arg...
2623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message to standard error.
2633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_error ()
2643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
2653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
2673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_warning arg...
2693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed warning message to standard error.
2703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_warning ()
2713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
2723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # bash bug again:
2753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    :
2763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
2773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_fatal_error arg...
2793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message to standard error, and exit.
2803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_fatal_error ()
2813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
2823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_error ${1+"$@"}
2833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $EXIT_FAILURE
2843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
2853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_fatal_help arg...
2873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message to standard error, followed by
2883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# a help hint, and exit.
2893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_fatal_help ()
2903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
2913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_error ${1+"$@"}
2923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_fatal_error "$help"
2933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
2943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevhelp="Try \`$progname --help' for more information."  ## default
2953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
2973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_grep expression filename
2983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Check whether EXPRESSION matches any line of FILENAME, without output.
2993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_grep ()
3003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
3013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $GREP "$1" "$2" >/dev/null 2>&1
3023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
3033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mkdir_p directory-path
3063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Make sure the entire path to DIRECTORY-PATH is available.
3073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mkdir_p ()
3083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
3093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_directory_path="$1"
3103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_dir_list=
3113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Protect directory names starting with `-'
3153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $my_directory_path in
3163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        -*) my_directory_path="./$my_directory_path" ;;
3173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
3183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # While some portion of DIR does not yet exist...
3203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      while test ! -d "$my_directory_path"; do
3213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # ...make a list in topmost first order.  Use a colon delimited
3223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# list incase some portion of path contains whitespace.
3233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        my_dir_list="$my_directory_path:$my_dir_list"
3243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # If the last portion added has no slash in it, the list is done
3263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        case $my_directory_path in */*) ;; *) break ;; esac
3273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # ...otherwise throw away the child directory and loop
3293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
3313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      save_mkdir_p_IFS="$IFS"; IFS=':'
3343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for my_dir in $my_dir_list; do
3353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	IFS="$save_mkdir_p_IFS"
3363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # mkdir can fail with a `File exist' error if two processes
3373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # try to create one of the directories concurrently.  Don't
3383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # stop in that case!
3393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $MKDIR "$my_dir" 2>/dev/null || :
3403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
3413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      IFS="$save_mkdir_p_IFS"
3423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Bail out if we (or some other process) failed to create a directory.
3443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -d "$my_directory_path" || \
3453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_fatal_error "Failed to create \`$1'"
3463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
3473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
3483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mktempdir [string]
3513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Make a temporary directory that won't clash with other running
3523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# libtool processes, and avoids race conditions if possible.  If
3533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# given, STRING is the basename for that directory.
3543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mktempdir ()
3553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
3563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_template="${TMPDIR-/tmp}/${1-$progname}"
3573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$opt_dry_run" = ":"; then
3593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Return a directory name, but don't create it in dry-run mode
3603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_tmpdir="${my_template}-$$"
3613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
3623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # If mktemp works, use that first and foremost
3643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
3653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test ! -d "$my_tmpdir"; then
3673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # Failing that, at least try and use $RANDOM to avoid a race
3683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        my_tmpdir="${my_template}-${RANDOM-0}$$"
3693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        save_mktempdir_umask=`umask`
3713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        umask 0077
3723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $MKDIR "$my_tmpdir"
3733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        umask $save_mktempdir_umask
3743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
3753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # If we're not in dry-run mode, bomb out on failure
3773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -d "$my_tmpdir" || \
3783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
3793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
3803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "X$my_tmpdir" | $Xsed
3823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
3833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
3853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_quote_for_eval arg
3863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Aesthetically quote ARG to be evaled later.
3873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# is double-quoted, suitable for a subsequent eval, whereas
3893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# which are still active within double quotes backslashified.
3913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_quote_for_eval ()
3923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
3933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $1 in
3943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *[\\\`\"\$]*)
3953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
3973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_quote_for_eval_unquoted_result="$1" ;;
3983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
3993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $func_quote_for_eval_unquoted_result in
4013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Double-quote args containing shell metacharacters to delay
4023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # word splitting, command substitution and and variable
4033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # expansion for a subsequent eval.
4043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Many Bourne shells cannot handle close brackets correctly
4053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # in scan sets, so we specify it separately.
4063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
4093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
4103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
4113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
4123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
4133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_quote_for_expand arg
4163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Aesthetically quote ARG to be evaled later; same as above,
4173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# but do not quote variable references.
4183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_quote_for_expand ()
4193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
4203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $1 in
4213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *[\\\`\"]*)
4223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	my_arg=`$ECHO "X$1" | $Xsed \
4233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
4243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
4253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        my_arg="$1" ;;
4263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
4273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $my_arg in
4293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Double-quote args containing shell metacharacters to delay
4303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # word splitting and command substitution for a subsequent eval.
4313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Many Bourne shells cannot handle close brackets correctly
4323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # in scan sets, so we specify it separately.
4333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        my_arg="\"$my_arg\""
4353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
4363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
4373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_quote_for_expand_result="$my_arg"
4393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
4403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_show_eval cmd [fail_exp]
4433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# is given, then evaluate it.
4463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_show_eval ()
4473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
4483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_cmd="$1"
4493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_fail_exp="${2-:}"
4503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ${opt_silent-false} || {
4523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_expand "$my_cmd"
4533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval "func_echo $func_quote_for_expand_result"
4543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
4553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if ${opt_dry_run-false}; then :; else
4573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval "$my_cmd"
4583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_status=$?
4593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$my_status" -eq 0; then :; else
4603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "(exit $my_status); $my_fail_exp"
4613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
4623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
4633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
4643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_show_eval_locale cmd [fail_exp]
4673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# is given, then evaluate it.  Use the saved locale for evaluation.
4703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_show_eval_locale ()
4713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
4723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_cmd="$1"
4733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_fail_exp="${2-:}"
4743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ${opt_silent-false} || {
4763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_expand "$my_cmd"
4773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval "func_echo $func_quote_for_expand_result"
4783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
4793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if ${opt_dry_run-false}; then :; else
4813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval "$lt_user_locale
4823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $my_cmd"
4833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_status=$?
4843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval "$lt_safe_locale"
4853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$my_status" -eq 0; then :; else
4863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "(exit $my_status); $my_fail_exp"
4873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
4883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
4893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
4903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
4953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_version
4963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo version message to standard output and exit.
4973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_version ()
4983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
4993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        s/^# //
5013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/^# *$//
5023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        p
5043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     }' < "$progpath"
5053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     exit $?
5063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
5073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_usage
5093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo short help message to standard output and exit.
5103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_usage ()
5113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
5123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $SED -n '/^# Usage:/,/# -h/ {
5133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        s/^# //
5143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/^# *$//
5153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/\$progname/'$progname'/
5163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	p
5173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }' < "$progpath"
5183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO
5193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "run \`$progname --help | more' for full usage"
5203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $?
5213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
5223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_help
5243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo long help message to standard output and exit.
5253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_help ()
5263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
5273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $SED -n '/^# Usage:/,/# Report bugs to/ {
5283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        s/^# //
5293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/^# *$//
5303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s*\$progname*'$progname'*
5313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s*\$host*'"$host"'*
5323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s*\$SHELL*'"$SHELL"'*
5333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s*\$LTCC*'"$LTCC"'*
5343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s*\$LD*'"$LD"'*
5363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	p
5403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     }' < "$progpath"
5413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $?
5423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
5433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_missing_arg argname
5453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message to standard error and set global
5463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# exit_cmd.
5473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_missing_arg ()
5483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
5493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_error "missing argument for $1"
5503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit_cmd=exit
5513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
5523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevexit_cmd=:
5543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Check that we have a working $ECHO.
5603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevif test "X$1" = X--no-reexec; then
5613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Discard the --no-reexec flag, and continue.
5623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  shift
5633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevelif test "X$1" = X--fallback-echo; then
5643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Avoid inline document here, it may be left over
5653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  :
5663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevelif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Yippee, $ECHO works!
5683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  :
5693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevelse
5703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Restart under the correct shell, and then maybe $ECHO will work.
5713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfi
5733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevif test "X$1" = X--fallback-echo; then
5753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # used as fallback echo
5763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  shift
5773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  cat <<EOF
5783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$*
5793aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
5803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  exit $EXIT_SUCCESS
5813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfi
5823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevmagic="%%%MAGIC variable%%%"
5843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevmagic_exe="%%%MAGIC EXE variable%%%"
5853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Global variables.
5873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $mode is unset
5883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevnonopt=
5893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevexecute_dlfiles=
5903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevpreserve_args=
5913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlo2o="s/\\.lo\$/.${objext}/"
5923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevo2lo="s/\\.${objext}\$/.lo/"
5933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevextracted_archives=
5943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevextracted_serial=0
5953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
5963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_dry_run=false
5973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_duplicate_deps=false
5983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_silent=false
5993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevopt_debug=:
6003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# If this variable is set in any of the actions, the command in it
6023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# will be execed at the end.  This prevents here-documents from being
6033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# left over by shells.
6043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevexec_cmd=
6053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_fatal_configuration arg...
6073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Echo program name prefixed message to standard error, followed by
6083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# a configuration failure hint, and exit.
6093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_fatal_configuration ()
6103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
6113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_error ${1+"$@"}
6123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_error "See the $PACKAGE documentation for more information."
6133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_fatal_error "Fatal configuration error."
6143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
6153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_config
6183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Display the configuration for all the tags in this script.
6193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_config ()
6203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
6213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    re_begincf='^# ### BEGIN LIBTOOL'
6223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    re_endcf='^# ### END LIBTOOL'
6233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Default configuration.
6253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Now print the configurations for the tags.
6283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for tagname in $taglist; do
6293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
6313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $?
6333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
6343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_features
6363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Display the features supported by this script.
6373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_features ()
6383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
6393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "host: $host"
6403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_libtool_libs" = yes; then
6413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "enable shared libraries"
6423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
6433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "disable shared libraries"
6443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
6453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_old_libs" = yes; then
6463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "enable static libraries"
6473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
6483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "disable static libraries"
6493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
6503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $?
6523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
6533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_enable_tag tagname
6553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Verify that TAGNAME is valid, and either flag an error and exit, or
6563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# variable here.
6583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_enable_tag ()
6593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
6603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Global variable:
6613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tagname="$1"
6623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Validate tagname.
6683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case $tagname in
6693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *[!-_A-Za-z0-9,/]*)
6703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_error "invalid tag name: $tagname"
6713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
6723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  esac
6733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Don't test for the "default" C tag, as we know it's
6753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # there but not specially marked.
6763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case $tagname in
6773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    CC) ;;
6783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)
6793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	taglist="$taglist $tagname"
6813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Evaluate the configuration.  Be careful to quote the path
6833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# and the sed script, to avoid splitting on whitespace, but
6843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# also don't use non-portable quotes within backquotes within
6853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# quotes we have to do it in 2 steps:
6863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "$extractedcf"
6883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
6893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_error "ignoring unknown tag $tagname"
6903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
6913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
6923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  esac
6933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
6943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Parse options once, thoroughly.  This comes as soon as possible in
6963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the script to make things like `libtool --version' happen quickly.
6973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
6983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
6993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Shorthand for --mode=foo, only valid as the first argument
7003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case $1 in
7013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  clean|clea|cle|cl)
7023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode clean ${1+"$@"}; shift
7033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  compile|compil|compi|comp|com|co|c)
7053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode compile ${1+"$@"}; shift
7063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  execute|execut|execu|exec|exe|ex|e)
7083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode execute ${1+"$@"}; shift
7093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  finish|finis|fini|fin|fi|f)
7113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode finish ${1+"$@"}; shift
7123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  install|instal|insta|inst|ins|in|i)
7143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode install ${1+"$@"}; shift
7153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  link|lin|li|l)
7173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode link ${1+"$@"}; shift
7183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift; set dummy --mode uninstall ${1+"$@"}; shift
7213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
7223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  esac
7233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Parse non-mode specific arguments:
7253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  while test "$#" -gt 0; do
7263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    opt="$1"
7273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    shift
7283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $opt in
7303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --config)		func_config					;;
7313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --debug)		preserve_args="$preserve_args $opt"
7333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			func_echo "enabling shell trace mode"
7343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			opt_debug='set -x'
7353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			$opt_debug
7363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			execute_dlfiles="$execute_dlfiles $1"
7403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			shift
7413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --dry-run | -n)	opt_dry_run=:					;;
7443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --features)       func_features					;;
7453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --finish)		mode="finish"					;;
7463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			case $1 in
7493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  # Valid mode arguments:
7503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  clean)	;;
7513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  compile)	;;
7523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  execute)	;;
7533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  finish)	;;
7543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  install)	;;
7553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  link)		;;
7563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  relink)	;;
7573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  uninstall)	;;
7583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  # Catch anything else as an error
7603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  *) func_error "invalid argument for $opt"
7613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			     exit_cmd=exit
7623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			     break
7633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			     ;;
7643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		        esac
7653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			mode="$1"
7673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			shift
7683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --preserve-dup-deps)
7713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			opt_duplicate_deps=:				;;
7723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --quiet|--silent)	preserve_args="$preserve_args $opt"
7743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			opt_silent=:
7753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --verbose| -v)	preserve_args="$preserve_args $opt"
7783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			opt_silent=false
7793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			preserve_args="$preserve_args $opt $1"
7833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			func_enable_tag "$1"	# tagname is set here
7843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			shift
7853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Separate optargs to long options:
7883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -dlopen=*|--mode=*|--tag=*)
7893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			func_opt_split "$opt"
7903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			shift
7923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
7933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -\?|-h)		func_usage					;;
7953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --help)		opt_help=:					;;
7963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      --version)	func_version					;;
7973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
7983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)		nonopt="$opt"
8013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			break
8023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			;;
8033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
8043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  done
8053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case $host in
8083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *cygwin* | *mingw* | *pw32* | *cegcc*)
8093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # don't eliminate duplications in $postdeps and $predeps
8103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      opt_duplicate_compiler_generated_deps=:
8113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
8123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)
8133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
8153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  esac
8163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Having warned about all mis-specified options, bail out if
8183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # anything was wrong.
8193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  $exit_cmd $EXIT_FAILURE
8203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
8213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_check_version_match
8233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Ensure that we are using m4 macros, and libtool script from the same
8243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# release of libtool.
8253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_check_version_match ()
8263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
8273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test "$package_revision" != "$macro_revision"; then
8283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$VERSION" != "$macro_version"; then
8293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -z "$macro_version"; then
8303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        cat >&2 <<_LT_EOF
8313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: definition of this LT_INIT comes from an older release.
8333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: and run autoconf again.
8353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev_LT_EOF
8363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
8373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        cat >&2 <<_LT_EOF
8383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: and run autoconf again.
8423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev_LT_EOF
8433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
8443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
8453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      cat >&2 <<_LT_EOF
8463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$progname: of $PACKAGE $VERSION and run autoconf again.
8503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev_LT_EOF
8513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
8523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $EXIT_MISMATCH
8543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
8553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
8563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev## ----------- ##
8593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev##    Main.    ##
8603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev## ----------- ##
8613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$opt_help || {
8633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Sanity checks first:
8643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_check_version_match
8653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_fatal_configuration "not configured to build any kind of library"
8683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
8693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Darwin sucks
8743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  eval std_shrext=\"$shrext_cmds\"
8753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Only execute mode is allowed to have -dlopen flags.
8783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_error "unrecognized option \`-dlopen'"
8803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "$help" 1>&2
8813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $EXIT_FAILURE
8823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
8833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Change the help message to a mode-specific one.
8853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  generic_help="$help"
8863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  help="Try \`$progname --help --mode=$mode' for more information."
8873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
8883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_lalib_p file
8913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# True iff FILE is a libtool `.la' library or `.lo' object file.
8923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This function is only a basic sanity check; it will hardly flush out
8933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# determined imposters.
8943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_lalib_p ()
8953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
8963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -f "$1" &&
8973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $SED -e 4q "$1" 2>/dev/null \
8983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_lalib_unsafe_p file
9023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# True iff FILE is a libtool `.la' library or `.lo' object file.
9033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This function implements the same check as func_lalib_p without
9043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# resorting to external programs.  To this end, it redirects stdin and
9053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# closes it afterwards, without saving the original file descriptor.
9063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# As a safety measure, use it only where a negative result would be
9073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# fatal anyway.  Works if `file' does not exist.
9083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_lalib_unsafe_p ()
9093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lalib_p=no
9113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for lalib_p_l in 1 2 3 4
9133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	do
9143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    read lalib_p_line
9153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$lalib_p_line" in
9163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
9183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
9193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exec 0<&5 5<&-
9203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
9213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test "$lalib_p" = yes
9223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_ltwrapper_script_p file
9253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# True iff FILE is a libtool wrapper script
9263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This function is only a basic sanity check; it will hardly flush out
9273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# determined imposters.
9283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_ltwrapper_script_p ()
9293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_lalib_p "$1"
9313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_ltwrapper_executable_p file
9343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# True iff FILE is a libtool wrapper executable
9353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This function is only a basic sanity check; it will hardly flush out
9363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# determined imposters.
9373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_ltwrapper_executable_p ()
9383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_ltwrapper_exec_suffix=
9403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $1 in
9413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.exe) ;;
9423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *) func_ltwrapper_exec_suffix=.exe ;;
9433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
9443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_ltwrapper_scriptname file
9483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Assumes file is an ltwrapper_executable
9493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# uses $file to determine the appropriate filename for a
9503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# temporary ltwrapper_script.
9513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_ltwrapper_scriptname ()
9523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_ltwrapper_scriptname_result=""
9543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if func_ltwrapper_executable_p "$1"; then
9553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_dirname_and_basename "$1" "" "."
9563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname '' '.exe' "$func_basename_result"
9573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
9593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_ltwrapper_p file
9623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# True iff FILE is a libtool wrapper script or wrapper executable
9633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This function is only a basic sanity check; it will hardly flush out
9643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# determined imposters.
9653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_ltwrapper_p ()
9663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_execute_cmds commands fail_cmd
9723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Execute tilde-delimited COMMANDS.
9733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# If FAIL_CMD is given, eval that upon failure.
9743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# FAIL_CMD may read-access the current command in variable CMD!
9753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_execute_cmds ()
9763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
9783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    save_ifs=$IFS; IFS='~'
9793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for cmd in $1; do
9803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      IFS=$save_ifs
9813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval cmd=\"$cmd\"
9823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval "$cmd" "${2-:}"
9833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
9843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    IFS=$save_ifs
9853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
9863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
9883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_source file
9893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Source FILE, adding directory component if necessary.
9903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Note that it is not necessary on cygwin/mingw to append a dot to
9913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# `FILE.' does not work on cygwin managed mounts.
9943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_source ()
9953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
9963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
9973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $1 in
9983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    */* | *\\*)	. "$1" ;;
9993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)		. "./$1" ;;
10003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
10013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
10023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_infer_tag arg
10053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Infer tagged configuration to use if any are available and
10063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# if one wasn't chosen via the "--tag" command line option.
10073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Only attempt this if the compiler in the base compile
10083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# command doesn't match the default compiler.
10093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# arg is usually of the form 'gcc ...'
10103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_infer_tag ()
10113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
10123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
10133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$available_tags" && test -z "$tagname"; then
10143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      CC_quoted=
10153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for arg in $CC; do
10163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_quote_for_eval "$arg"
10173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
10193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $@ in
10203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Blanks in the command may have been stripped by the calling shell,
10213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # but not from the CC environment variable when configure was run.
10223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Blanks at the start of $base_compile will cause this to fail
10243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # if we don't check for them as well.
10253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
10263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for z in $available_tags; do
10273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Evaluate the configuration.
10293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    CC_quoted=
10313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for arg in $CC; do
10323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Double-quote args containing other shell metacharacters.
10333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_quote_for_eval "$arg"
10343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
10363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$@ " in
10373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # The compiler in the base compile command matches
10393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # the one in the tagged configuration.
10403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Assume this is the tagged configuration we want.
10413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      tagname=$z
10423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      break
10433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
10443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
10453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
10463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
10473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If $tagname still isn't set, then no tagged configuration
10483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# was found and let the user know that the "--tag" command
10493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# line option must be used.
10503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$tagname"; then
10513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_echo "unable to infer tagged configuration"
10523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "specify a tag with \`--tag'"
10533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#	else
10543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#	  func_verbose "using $tagname tagged configuration"
10553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
10563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
10573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
10583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
10593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
10603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_write_libtool_object output_name pic_name nonpic_name
10643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Create a libtool object file (analogous to a ".la" file),
10653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# but don't create it if we're doing a dry run.
10663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_write_libtool_object ()
10673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
10683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    write_libobj=${1}
10693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_libtool_libs" = yes; then
10703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      write_lobj=\'${2}\'
10713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
10723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      write_lobj=none
10733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
10743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_old_libs" = yes; then
10763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      write_oldobj=\'${3}\'
10773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
10783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      write_oldobj=none
10793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
10803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_dry_run || {
10823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      cat >${write_libobj}T <<EOF
10833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $write_libobj - a libtool object file
10843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
10863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Please DO NOT delete this file!
10873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# It is necessary for linking the library.
10883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Name of the PIC object.
10903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevpic_object=$write_lobj
10913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Name of the non-PIC object
10933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevnon_pic_object=$write_oldobj
10943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
10953aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
10963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $MV "${write_libobj}T" "${write_libobj}"
10973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
10983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
10993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_compile arg...
11013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_compile ()
11023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
11033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
11043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Get the compilation command and the source file.
11053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    base_compile=
11063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    suppress_opt=yes
11083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    suppress_output=
11093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    arg_mode=normal
11103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libobj=
11113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    later=
11123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    pie_flag=
11133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for arg
11153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    do
11163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $arg_mode in
11173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      arg  )
11183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# do not "continue".  Instead, add this to base_compile
11193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	lastarg="$arg"
11203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg_mode=normal
11213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
11223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      target )
11243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libobj="$arg"
11253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg_mode=normal
11263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
11273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
11283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      normal )
11303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Accept any command-line options.
11313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $arg in
11323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-o)
11333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$libobj" && \
11343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "you cannot specify \`-o' more than once"
11353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  arg_mode=target
11363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
11373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
11383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-pie | -fpie | -fPIE)
11403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          pie_flag="$pie_flag $arg"
11413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
11423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
11433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-shared | -static | -prefer-pic | -prefer-non-pic)
11453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  later="$later $arg"
11463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
11473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
11483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-no-suppress)
11503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  suppress_opt=no
11513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
11523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
11533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-Xcompiler)
11553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
11563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue      #  The current "srcfile" will either be retained or
11573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;            #  replaced later.  I would guess that would be a bug.
11583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-Wc,*)
11603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_stripname '-Wc,' '' "$arg"
11613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  args=$func_stripname_result
11623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lastarg=
11633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  save_ifs="$IFS"; IFS=','
11643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for arg in $args; do
11653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    IFS="$save_ifs"
11663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_quote_for_eval "$arg"
11673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lastarg="$lastarg $func_quote_for_eval_result"
11683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
11693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  IFS="$save_ifs"
11703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_stripname ' ' '' "$lastarg"
11713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lastarg=$func_stripname_result
11723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add the arguments to base_compile.
11743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  base_compile="$base_compile $lastarg"
11753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
11763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
11773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
11793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Accept the current argument as the source file.
11803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # The previous "srcfile" becomes the current argument.
11813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  #
11823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lastarg="$srcfile"
11833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  srcfile="$arg"
11843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
11853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac  #  case $arg
11863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
11873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac    #  case $arg_mode
11883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Aesthetically quote the previous argument.
11903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_eval "$lastarg"
11913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      base_compile="$base_compile $func_quote_for_eval_result"
11923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done # for arg
11933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
11943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $arg_mode in
11953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    arg)
11963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_error "you must specify an argument for -Xcompile"
11973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
11983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    target)
11993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_error "you must specify a target with \`-o'"
12003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
12013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)
12023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Get the name of the library object.
12033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -z "$libobj" && {
12043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_basename "$srcfile"
12053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libobj="$func_basename_result"
12063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
12073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
12083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
12093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Recognize several different file suffixes.
12113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # If the user specifies -o file.o, it is replaced with file.lo
12123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $libobj in
12133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.[cCFSifmso] | \
12143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.ada | *.adb | *.ads | *.asm | \
12153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_xform "$libobj"
12183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      libobj=$func_xform_result
12193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
12203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
12213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $libobj in
12233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)
12253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_error "cannot determine name of library object from \`$libobj'"
12263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
12273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
12283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_infer_tag $base_compile
12303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for arg in $later; do
12323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $arg in
12333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -shared)
12343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test "$build_libtool_libs" != yes && \
12353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_configuration "can not build a shared library"
12363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_old_libs=no
12373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
12383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
12393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -static)
12413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_libtool_libs=no
12423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_old_libs=yes
12433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
12443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
12453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -prefer-pic)
12473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	pic_mode=yes
12483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
12493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
12503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -prefer-non-pic)
12523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	pic_mode=no
12533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
12543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
12553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
12563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
12573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_quote_for_eval "$libobj"
12593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test "X$libobj" != "X$func_quote_for_eval_result" \
12603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_dirname_and_basename "$obj" "/" ""
12633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    objname="$func_basename_result"
12643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    xdir="$func_dirname_result"
12653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lobj=${xdir}$objdir/$objname
12663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -z "$base_compile" && \
12683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "you must specify a compilation command"
12693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Delete any leftover library objects.
12713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_old_libs" = yes; then
12723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      removelist="$obj $lobj $libobj ${libobj}T"
12733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
12743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      removelist="$lobj $libobj ${libobj}T"
12753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
12763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # On Cygwin there's no "real" PIC flag so we must build both object types
12783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $host_os in
12793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    cygwin* | mingw* | pw32* | os2* | cegcc*)
12803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      pic_mode=default
12813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
12823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
12833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # non-PIC code in shared libraries is not supported
12853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      pic_mode=default
12863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
12873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Calculate the filename of the output object if compiler does
12893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # not support -o with -c
12903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$compiler_c_o" = no; then
12913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lockfile="$output_obj.lock"
12933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
12943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      output_obj=
12953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      need_locks=no
12963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lockfile=
12973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
12983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
12993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Lock this critical section if it is needed
13003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # We use this script file to make the link, it avoids creating a new file
13013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$need_locks" = yes; then
13023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_echo "Waiting for $lockfile to be removed"
13043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	sleep 2
13053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
13063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    elif test "$need_locks" = warn; then
13073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -f "$lockfile"; then
13083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
13093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev*** ERROR, $lockfile exists and contains:
13103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev`cat $lockfile 2>/dev/null`
13113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13123aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThis indicates that another process is trying to use the same
13133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtemporary object file, and libtool could not work around it because
13143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevyour compiler does not support \`-c' and \`-o' together.  If you
13153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrepeat this compilation, it may succeed, by chance, but you had better
13163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevavoid parallel builds (make -j) in this platform, or get a better
13173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcompiler."
13183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || $RM $removelist
13203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_FAILURE
13213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      removelist="$removelist $output_obj"
13233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "$srcfile" > "$lockfile"
13243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
13253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_dry_run || $RM $removelist
13273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    removelist="$removelist $lockfile"
13283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$fix_srcfile_path"; then
13313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval srcfile=\"$fix_srcfile_path\"
13323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
13333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_quote_for_eval "$srcfile"
13343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    qsrcfile=$func_quote_for_eval_result
13353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Only build a PIC object if we are building libtool libraries.
13373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_libtool_libs" = yes; then
13383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Without this assignment, base_compile gets emptied.
13393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fbsd_hideous_sh_bug=$base_compile
13403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$pic_mode" != no; then
13423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	command="$base_compile $qsrcfile $pic_flag"
13433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
13443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Don't build PIC code
13453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	command="$base_compile $qsrcfile"
13463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_mkdir_p "$xdir$objdir"
13493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -z "$output_obj"; then
13513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Place PIC objects in $objdir
13523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	command="$command -o $lobj"
13533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval_locale "$command"	\
13563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$need_locks" = warn &&
13593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
13613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev*** ERROR, $lockfile contains:
13623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev`cat $lockfile 2>/dev/null`
13633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbut it should contain:
13653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$srcfile
13663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13673aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThis indicates that another process is trying to use the same
13683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtemporary object file, and libtool could not work around it because
13693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevyour compiler does not support \`-c' and \`-o' together.  If you
13703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrepeat this compilation, it may succeed, by chance, but you had better
13713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevavoid parallel builds (make -j) in this platform, or get a better
13723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcompiler."
13733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || $RM $removelist
13753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_FAILURE
13763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Just move the object if needed, then go on to compile the next one
13793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval '$MV "$output_obj" "$lobj"' \
13813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Allow error messages only from the first compilation.
13853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$suppress_opt" = yes; then
13863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	suppress_output=' >/dev/null 2>&1'
13873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
13893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
13903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Only build a position-dependent object if we build old libraries.
13913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$build_old_libs" = yes; then
13923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$pic_mode" != yes; then
13933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Don't build PIC code
13943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	command="$base_compile $qsrcfile$pie_flag"
13953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
13963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	command="$base_compile $qsrcfile $pic_flag"
13973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
13983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$compiler_c_o" = yes; then
13993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	command="$command -o $obj"
14003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
14013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Suppress compiler output if we already did a PIC compilation.
14033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      command="$command$suppress_output"
14043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval_locale "$command" \
14053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$need_locks" = warn &&
14083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
14103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev*** ERROR, $lockfile contains:
14113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev`cat $lockfile 2>/dev/null`
14123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbut it should contain:
14143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$srcfile
14153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14163aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThis indicates that another process is trying to use the same
14173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtemporary object file, and libtool could not work around it because
14183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevyour compiler does not support \`-c' and \`-o' together.  If you
14193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrepeat this compilation, it may succeed, by chance, but you had better
14203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevavoid parallel builds (make -j) in this platform, or get a better
14213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcompiler."
14223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || $RM $removelist
14243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_FAILURE
14253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
14263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Just move the object if needed
14283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval '$MV "$output_obj" "$obj"' \
14303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
14323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
14333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_dry_run || {
14353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Unlock the critical section if it was locked
14383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$need_locks" != no; then
14393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	removelist=$lockfile
14403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $RM "$lockfile"
14413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
14423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
14433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $EXIT_SUCCESS
14453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
14463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$opt_help || {
14483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtest "$mode" = compile && func_mode_compile ${1+"$@"}
14493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
14503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_help ()
14523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
14533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # We need to display help for each of the modes.
14543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $mode in
14553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      "")
14563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # Generic help is extracted from the usage comments
14573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # at the start of this file.
14583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_help
14593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
14603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      clean)
14623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO \
14633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14653aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevRemove files from the build directory.
14663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14673aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevRM is the name of the program to use to delete files associated with each FILE
14683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevto RM.
14703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14713aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIf FILE is a libtool library, object or program, all the files associated
14723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevwith it are deleted. Otherwise, only FILE itself is deleted using RM."
14733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
14743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      compile)
14763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO \
14773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14793aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevCompile a source file into a libtool library object.
14803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14813aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThis mode accepts the following additional options:
14823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -no-suppress      do not suppress compiler output for multiple passes
14853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -prefer-pic       try to building PIC objects only
14863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -prefer-non-pic   try to building non-PIC objects only
14873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -shared           do not build a \`.o' file suitable for static linking
14883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -static           only build a \`.o' file suitable for static linking
14893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14903aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevCOMPILE-COMMAND is a command to be used in creating a \`standard' object file
14913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfrom the given SOURCEFILE.
14923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14933aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThe output file name is determined by removing the directory component from
14943aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevSOURCEFILE, then substituting the C source code suffix \`.c' with the
14953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlibrary object suffix, \`.lo'."
14963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
14973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
14983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      execute)
14993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO \
15003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15023aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevAutomatically set library path, then run a program.
15033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15043aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThis mode accepts the following additional options:
15053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -dlopen FILE      add the directory containing FILE to the library path
15073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15083aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThis mode sets the library path environment variable according to \`-dlopen'
15093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevflags.
15103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15113aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIf any of the ARGS are libtool executable wrappers, then they are translated
15123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevinto their corresponding uninstalled binary, and any of their required library
15133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdirectories are added to the library path.
15143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15153aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThen, COMMAND is executed, with ARGS as arguments."
15163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
15173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      finish)
15193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO \
15203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15223aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevComplete the installation of libtool libraries.
15233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15243aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEach LIBDIR is a directory that contains libtool libraries.
15253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15263aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThe commands that this mode executes may require superuser privileges.  Use
15273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevthe \`--dry-run' option if you just want to see what would be executed."
15283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
15293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      install)
15313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO \
15323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15343aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevInstall executables or libraries.
15353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15363aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevINSTALL-COMMAND is the installation command.  The first component should be
15373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulisheveither the \`install' or \`cp' program.
15383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15393aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThe following components of INSTALL-COMMAND are treated specially:
15403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15433aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThe rest of the components are interpreted as arguments to that command (only
15443aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevBSD-compatible install options are recognized)."
15453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
15463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      link)
15483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO \
15493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15513aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevLink object files or libraries together to form another library, or to
15523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcreate an executable program.
15533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15543aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevLINK-COMMAND is a command using the C compiler that you would use to create
15553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulisheva program from several object files.
15563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15573aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevThe following components of LINK-COMMAND are treated specially:
15583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -all-static       do not do any dynamic linking at all
15603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -avoid-version    do not add a version suffix if possible
15613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -export-symbols SYMFILE
15653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    try to export only the symbols listed in SYMFILE
15663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -export-symbols-regex REGEX
15673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    try to export only the symbols matching REGEX
15683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -LLIBDIR          search LIBDIR for required installed libraries
15693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -lNAME            OUTPUT-FILE requires the installed library libNAME
15703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -module           build a library that can dlopened
15713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -no-fast-install  disable the fast-install mode
15723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -no-install       link a not-installable executable
15733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -no-undefined     declare that a library does not refer to external symbols
15743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -objectlist FILE  Use a list of object files found in FILE to specify objects
15763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -precious-files-regex REGEX
15773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    don't remove output files matching REGEX
15783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -release RELEASE  specify package release information
15793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -shared           only do dynamic linking of libtool libraries
15823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -shrext SUFFIX    override the standard shared library file extension
15833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -static           do not do any dynamic linking of uninstalled libtool libraries
15843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -static-libtool-libs
15853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    do not do any dynamic linking of libtool libraries
15863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -version-info CURRENT[:REVISION[:AGE]]
15873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    specify library version info [each variable defaults to 0]
15883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  -weak LIBNAME     declare that the target provides the LIBNAME interface
15893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15903aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevAll other options (arguments beginning with \`-') are ignored.
15913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15923aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEvery other argument is treated as a filename.  Files ending in \`.la' are
15933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtreated as uninstalled libtool libraries, other files are standard or library
15943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevobject files.
15953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
15963aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIf the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevonly library objects (\`.lo' files) may be specified, and \`-rpath' is
15983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrequired, except when creating a convenience library.
15993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16003aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevusing \`ar' and \`ranlib', or on Windows using \`lib'.
16023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16033aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevis created, otherwise an executable program is created."
16053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
16063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      uninstall)
16083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO \
16093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16113aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevRemove libraries from an installation directory.
16123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16133aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevRM is the name of the program to use to delete files associated with each FILE
16143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevto RM.
16163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16173aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevIf FILE is a libtool library, all the files associated with it are deleted.
16183aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevOtherwise, only FILE itself is deleted using RM."
16193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
16203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
16223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_fatal_help "invalid operation mode \`$mode'"
16233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
16243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
16253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO
16273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "Try \`$progname --help' for more information about other modes."
16283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $?
16303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
16313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Now that we've collected a possible --mode arg, show help if necessary
16333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  $opt_help && func_mode_help
16343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_execute arg...
16373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_execute ()
16383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
16393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
16403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # The first argument is the command name.
16413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    cmd="$nonopt"
16423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -z "$cmd" && \
16433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "you must specify a COMMAND"
16443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Handle -dlopen flags immediately.
16463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for file in $execute_dlfiles; do
16473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -f "$file" \
16483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	|| func_fatal_help "\`$file' is not a file"
16493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dir=
16513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $file in
16523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.la)
16533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Check to see that this really is a libtool archive.
16543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_lalib_unsafe_p "$file" \
16553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Read the libtool library.
16583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlname=
16593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	library_names=
16603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_source "$file"
16613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Skip this library if it cannot be dlopened.
16633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$dlname"; then
16643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Warn if it was a shared library.
16653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$library_names" && \
16663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
16683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
16693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_dirname "$file" "" "."
16713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dir="$func_dirname_result"
16723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -f "$dir/$objdir/$dlname"; then
16743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dir="$dir/$objdir"
16753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
16763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test ! -f "$dir/$dlname"; then
16773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
16793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
16803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
16813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.lo)
16833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Just add the directory containing the .lo file.
16843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_dirname "$file" "" "."
16853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dir="$func_dirname_result"
16863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
16873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
16893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
16913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
16923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
16933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Get the absolute pathname.
16953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      absdir=`cd "$dir" && pwd`
16963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$absdir" && dir="$absdir"
16973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
16983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now add the directory to shlibpath_var.
16993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if eval "test -z \"\$$shlibpath_var\""; then
17003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "$shlibpath_var=\"\$dir\""
17013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
17023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
17043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
17053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # This variable tells wrapper scripts just to set shlibpath_var
17073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # rather than running their programs.
17083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libtool_execute_magic="$magic"
17093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Check if any of the arguments is a wrapper script.
17113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    args=
17123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for file
17133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    do
17143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $file in
17153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -*) ;;
17163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
17173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Do a test to see if this is really a libtool program.
17183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if func_ltwrapper_script_p "$file"; then
17193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source "$file"
17203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Transform arg to wrapped name.
17213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  file="$progdir/$program"
17223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif func_ltwrapper_executable_p "$file"; then
17233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_ltwrapper_scriptname "$file"
17243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source "$func_ltwrapper_scriptname_result"
17253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Transform arg to wrapped name.
17263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  file="$progdir/$program"
17273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
17283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
17293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
17303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Quote arguments (to preserve shell metacharacters).
17313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_eval "$file"
17323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      args="$args $func_quote_for_eval_result"
17333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
17343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "X$opt_dry_run" = Xfalse; then
17363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$shlibpath_var"; then
17373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Export the shlibpath_var.
17383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "export $shlibpath_var"
17393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
17403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Restore saved environment variables
17423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      do
17443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "if test \"\${save_$lt_var+set}\" = set; then
17453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                $lt_var=\$save_$lt_var; export $lt_var
17463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
17473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$lt_unset $lt_var
17483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi"
17493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
17503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now prepare to actually exec the command.
17523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exec_cmd="\$cmd$args"
17533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
17543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Display what would be done.
17553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$shlibpath_var"; then
17563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "export $shlibpath_var"
17583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
17593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "$cmd$args"
17603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exit $EXIT_SUCCESS
17613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
17623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
17633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtest "$mode" = execute && func_mode_execute ${1+"$@"}
17653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_finish arg...
17683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_finish ()
17693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
17703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
17713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libdirs="$nonopt"
17723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    admincmds=
17733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for dir
17763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      do
17773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libdirs="$libdirs $dir"
17783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
17793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for libdir in $libdirs; do
17813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$finish_cmds"; then
17823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Do each command in the finish commands.
17833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev'"$cmd"'"'
17853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
17863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$finish_eval"; then
17873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Do the single finish_eval.
17883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval cmds=\"$finish_eval\"
17893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       $cmds"
17913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
17923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
17933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
17943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Exit here if they wanted silent mode.
17963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_silent && exit $EXIT_SUCCESS
17973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
17983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "X----------------------------------------------------------------------" | $Xsed
17993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "Libraries have been installed in:"
18003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for libdir in $libdirs; do
18013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "   $libdir"
18023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
18033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO
18043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "If you ever happen to want to link against installed libraries"
18053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "flag during linking and do at least one of the following:"
18083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$shlibpath_var"; then
18093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "     during execution"
18113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
18123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$runpath_var"; then
18133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "     during linking"
18153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
18163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$hardcode_libdir_flag_spec"; then
18173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      libdir=LIBDIR
18183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval flag=\"$hardcode_libdir_flag_spec\"
18193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "   - use the \`$flag' linker flag"
18213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
18223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$admincmds"; then
18233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "   - have your system administrator run these commands:$admincmds"
18243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
18253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -f /etc/ld.so.conf; then
18263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
18283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO
18293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "See any operating system documentation about shared libraries for"
18313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $host in
18323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      solaris2.[6789]|solaris2.1[0-9])
18333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "pages."
18353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
18363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
18373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
18393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
18403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO "X----------------------------------------------------------------------" | $Xsed
18413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $EXIT_SUCCESS
18423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
18433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtest "$mode" = finish && func_mode_finish ${1+"$@"}
18453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_install arg...
18483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_install ()
18493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
18503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
18513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # There may be an optional sh(1) argument at the beginning of
18523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # install_prog (especially on Windows NT).
18533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       # Allow the use of GNU shtool's install command.
18553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Aesthetically quote it.
18573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_eval "$nonopt"
18583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      install_prog="$func_quote_for_eval_result "
18593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      arg=$1
18603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      shift
18613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
18623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      install_prog=
18633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      arg=$nonopt
18643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
18653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # The real first argument should be the name of the installation program.
18673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Aesthetically quote it.
18683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_quote_for_eval "$arg"
18693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    install_prog="$install_prog$func_quote_for_eval_result"
18703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # We need to accept at least all the BSD install flags.
18723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    dest=
18733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    files=
18743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    opts=
18753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    prev=
18763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    install_type=
18773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    isdir=no
18783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    stripme=
18793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for arg
18803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    do
18813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$dest"; then
18823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	files="$files $dest"
18833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dest=$arg
18843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
18853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
18863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
18873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $arg in
18883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -d) isdir=yes ;;
18893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -f)
18903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case " $install_prog " in
18913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*[\\\ /]cp\ *) ;;
18923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) prev=$arg ;;
18933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
18943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
18953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -g | -m | -o)
18963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=$arg
18973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
18983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -s)
18993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	stripme=" -s"
19003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
19013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
19023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -*)
19033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
19043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
19053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If the previous option needed an argument, then skip it.
19063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$prev"; then
19073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
19083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
19093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dest=$arg
19103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
19113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
19123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
19133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
19143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Aesthetically quote the argument.
19163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_eval "$arg"
19173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      install_prog="$install_prog $func_quote_for_eval_result"
19183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
19193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -z "$install_prog" && \
19213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "you must specify an install program"
19223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -n "$prev" && \
19243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "the \`$prev' option requires an argument"
19253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -z "$files"; then
19273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -z "$dest"; then
19283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_fatal_help "no file or destination specified"
19293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
19303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_fatal_help "you must specify a destination"
19313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
19323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
19333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Strip any trailing slash from the destination.
19353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_stripname '' '/' "$dest"
19363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    dest=$func_stripname_result
19373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Check to see that the destination is a directory.
19393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -d "$dest" && isdir=yes
19403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$isdir" = yes; then
19413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      destdir="$dest"
19423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      destname=
19433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
19443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_dirname_and_basename "$dest" "" "."
19453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      destdir="$func_dirname_result"
19463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      destname="$func_basename_result"
19473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Not a directory, so check to see that there is only one file specified.
19493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      set dummy $files; shift
19503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "$#" -gt 1 && \
19513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_fatal_help "\`$dest' is not a directory"
19523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
19533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $destdir in
19543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    [\\/]* | [A-Za-z]:[\\/]*) ;;
19553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)
19563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for file in $files; do
19573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $file in
19583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.lo) ;;
19593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
19603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_help "\`$destdir' must be an absolute directory name"
19613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
19623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
19633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
19643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
19653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
19663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # This variable tells wrapper scripts just to set variables rather
19683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # than running their programs.
19693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libtool_install_magic="$magic"
19703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    staticlibs=
19723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    future_libdirs=
19733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    current_libdirs=
19743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for file in $files; do
19753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Do each installation.
19773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $file in
19783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.$libext)
19793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Do the static libraries later.
19803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	staticlibs="$staticlibs $file"
19813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
19823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.la)
19843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Check to see that this really is a libtool archive.
19853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_lalib_unsafe_p "$file" \
19863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  || func_fatal_help "\`$file' is not a valid libtool archive"
19873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	library_names=
19893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	old_library=
19903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	relink_command=
19913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_source "$file"
19923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
19933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Add the libdir to current_libdirs if it is the destination.
19943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "X$destdir" = "X$libdir"; then
19953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$current_libdirs " in
19963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $libdir "*) ;;
19973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) current_libdirs="$current_libdirs $libdir" ;;
19983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
19993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
20003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Note the libdir as a future libdir.
20013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$future_libdirs " in
20023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $libdir "*) ;;
20033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) future_libdirs="$future_libdirs $libdir" ;;
20043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
20053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
20063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_dirname "$file" "/" ""
20083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dir="$func_dirname_result"
20093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dir="$dir$objdir"
20103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$relink_command"; then
20123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Determine the prefix the user has applied to our future dir.
20133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Don't allow the user to place us outside of our expected
20163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # location b/c this prevents finding dependent libraries that
20173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # are installed to the same prefix.
20183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # At present, this check doesn't affect windows .dll's that
20193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # are installed into $libdir/../bin (currently, that works fine)
20203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # but it's something to keep an eye on.
20213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test "$inst_prefix_dir" = "$destdir" && \
20223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$inst_prefix_dir"; then
20253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Stick the inst_prefix_dir data into the link command.
20263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
20283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
20303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_warning "relinking \`$file'"
20323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval "$relink_command" \
20333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
20353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# See the names of the shared library.
20373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	set dummy $library_names; shift
20383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$1"; then
20393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  realname="$1"
20403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  shift
20413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  srcname="$realname"
20433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$relink_command" && srcname="$realname"T
20443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Install the shared library and build the symlinks.
20463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      'exit $?'
20483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tstripme="$stripme"
20493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host_os in
20503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  cygwin* | mingw* | pw32* | cegcc*)
20513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $realname in
20523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *.dll.a)
20533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      tstripme=""
20543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
20553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
20563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
20573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
20583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$tstripme" && test -n "$striplib"; then
20593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
20603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
20613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$#" -gt 0; then
20633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Delete the old symlinks, and create new ones.
20643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Try `ln -sf' first, because the `ln' binary might depend on
20653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # so we also need to try rm && ln -s.
20673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for linkname
20683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    do
20693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test "$linkname" != "$realname" \
20703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
20723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
20733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Do each command in the postinstall commands.
20753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lib="$destdir/$realname"
20763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
20783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Install the pseudo-library for information purposes.
20803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_basename "$file"
20813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	name="$func_basename_result"
20823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	instname="$dir/$name"i
20833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Maybe install the static library, too.
20863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
20883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.lo)
20903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Install (i.e. copy) a libtool object.
20913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
20923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Figure out destination file name, if it wasn't already specified.
20933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$destname"; then
20943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile="$destdir/$destname"
20953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
20963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_basename "$file"
20973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile="$func_basename_result"
20983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile="$destdir/$destfile"
20993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
21003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Deduce the name of the destination old-style object file.
21023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $destfile in
21033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.lo)
21043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_lo2o "$destfile"
21053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  staticdest=$func_lo2o_result
21063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
21073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.$objext)
21083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  staticdest="$destfile"
21093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile=
21103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
21113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
21123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
21143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
21153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Install the libtool object if requested.
21173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$destfile" && \
21183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval "$install_prog $file $destfile" 'exit $?'
21193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Install the old object if enabled.
21213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$build_old_libs" = yes; then
21223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Deduce the name of the old-style object file.
21233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_lo2o "$file"
21243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  staticobj=$func_lo2o_result
21253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
21273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_SUCCESS
21283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
21293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
21313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Figure out destination file name, if it wasn't already specified.
21323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$destname"; then
21333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile="$destdir/$destname"
21343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
21353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_basename "$file"
21363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile="$func_basename_result"
21373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  destfile="$destdir/$destfile"
21383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
21393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If the file is missing, and there is a .exe on the end, strip it
21413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# because it is most likely a libtool script we actually want to
21423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# install
21433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	stripped_ext=""
21443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $file in
21453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.exe)
21463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test ! -f "$file"; then
21473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_stripname '' '.exe' "$file"
21483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      file=$func_stripname_result
21493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      stripped_ext=".exe"
21503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
21513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
21523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
21533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Do a test to see if this is really a libtool program.
21553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
21563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*cygwin* | *mingw*)
21573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if func_ltwrapper_executable_p "$file"; then
21583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_ltwrapper_scriptname "$file"
21593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      wrapper=$func_ltwrapper_scriptname_result
21603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
21613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_stripname '' '.exe' "$file"
21623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      wrapper=$func_stripname_result
21633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
21643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
21653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
21663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    wrapper=$file
21673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
21683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
21693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if func_ltwrapper_script_p "$wrapper"; then
21703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  notinst_deplibs=
21713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  relink_command=
21723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source "$wrapper"
21743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Check the variables that should have been set.
21763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -z "$generated_by_libtool_version" && \
21773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  finalize=yes
21803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for lib in $notinst_deplibs; do
21813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Check to see that each library is installed.
21823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    libdir=
21833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -f "$lib"; then
21843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_source "$lib"
21853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
21863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$libdir" && test ! -f "$libfile"; then
21883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_warning "\`$lib' has not been installed in \`$libdir'"
21893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      finalize=no
21903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
21913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
21923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  relink_command=
21943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source "$wrapper"
21953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
21963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  outputname=
21973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$fast_install" = no && test -n "$relink_command"; then
21983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
21993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$finalize" = yes; then
22003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        tmpdir=`func_mktempdir`
22013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_basename "$file$stripped_ext"
22023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		file="$func_basename_result"
22033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        outputname="$tmpdir/$file"
22043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        # Replace the output file specification.
22053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        $opt_silent || {
22083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	          func_quote_for_expand "$relink_command"
22093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  eval "func_echo $func_quote_for_expand_result"
22103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        }
22113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        if eval "$relink_command"; then :
22123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	          else
22133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_error "error: relink \`$file' with the above command before installing it"
22143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $opt_dry_run || ${RM}r "$tmpdir"
22153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  continue
22163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        fi
22173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        file="$outputname"
22183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
22193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        func_warning "cannot relink \`$file'"
22203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
22213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
22223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
22233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Install the binary that we compiled earlier.
22243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
22263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
22273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# remove .exe since cygwin /usr/bin/install will append another
22293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# one anyway
22303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $install_prog,$host in
22313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*/usr/bin/install*,*cygwin*)
22323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $file:$destfile in
22333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.exe:*.exe)
22343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # this is ok
22353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
22363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.exe:*)
22373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    destfile=$destfile.exe
22383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
22393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *:*.exe)
22403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '' '.exe' "$destfile"
22413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    destfile=$func_stripname_result
22423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
22433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
22443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
22453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
22463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || if test -n "$outputname"; then
22483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ${RM}r "$tmpdir"
22493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
22503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
22513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
22523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
22533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for file in $staticlibs; do
22553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_basename "$file"
22563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      name="$func_basename_result"
22573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Set up the ranlib parameters.
22593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      oldlib="$destdir/$name"
22603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$stripme" && test -n "$old_striplib"; then
22643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "$old_striplib $oldlib" 'exit $?'
22653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
22663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Do each command in the postinstall commands.
22683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
22703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -n "$future_libdirs" && \
22723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_warning "remember to run \`$progname --finish$future_libdirs'"
22733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$current_libdirs"; then
22753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Maybe just do a dry run.
22763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
22793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exit $EXIT_SUCCESS
22803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
22813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
22823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtest "$mode" = install && func_mode_install ${1+"$@"}
22843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_generate_dlsyms outputname originator pic_p
22873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Extract symbols from dlprefiles and create ${outputname}S.o with
22883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# a dlpreopen symbol table.
22893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_generate_dlsyms ()
22903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
22913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
22923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_outputname="$1"
22933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_originator="$2"
22943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_pic_p="${3-no}"
22953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_dlsyms=
22973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
22983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	my_dlsyms="${my_outputname}S.c"
23013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
23023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_error "not configured to extract global symbols from dlpreopened files"
23033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
23043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
23053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$my_dlsyms"; then
23073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $my_dlsyms in
23083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      "") ;;
23093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.c)
23103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Discover the nlist of each of the dlfiles.
23113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	nlist="$output_objdir/${my_outputname}.nm"
23123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Parse the name list into a source file.
23163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_verbose "creating $output_objdir/$my_dlsyms"
23173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef __cplusplus
23233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevextern \"C\" {
23243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
23253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* External symbol declarations for the compiler. */\
23273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
23283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$dlself" = yes; then
23303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_verbose "generating symbol list for \`$output'"
23313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add our own program objects to the symbol list.
23353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for progfile in $progfiles; do
23373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_verbose "extracting global C symbols from \`$progfile'"
23383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
23403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$exclude_expsyms"; then
23423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
23433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval '$MV "$nlist"T "$nlist"'
23453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
23463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
23473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$export_symbols_regex"; then
23493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
23503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval '$MV "$nlist"T "$nlist"'
23523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
23533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
23543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Prepare the list of exported symbols
23563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$export_symbols"; then
23573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    export_symbols="$output_objdir/$outputname.exp"
23583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
23593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $RM $export_symbols
23603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $host in
23623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *cygwin* | *mingw* | *cegcc* )
23633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        ;;
23663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
23673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
23683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
23693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
23703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval '$MV "$nlist"T "$nlist"'
23733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $host in
23743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        *cygwin | *mingw* | *cegcc* )
23753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	          ;;
23783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
23793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
23803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
23813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
23823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for dlprefile in $dlprefiles; do
23843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_verbose "extracting global C symbols from \`$dlprefile'"
23853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_basename "$dlprefile"
23863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  name="$func_basename_result"
23873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || {
23883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval '$ECHO ": $name " >> "$nlist"'
23893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  }
23913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
23923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || {
23943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Make sure we have at least an empty file.
23953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -f "$nlist" || : > "$nlist"
23963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
23973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$exclude_expsyms"; then
23983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $MV "$nlist"T "$nlist"
24003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
24013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Try sorting and uniquifying the output.
24033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if $GREP -v "^: " < "$nlist" |
24043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		sort -k 3
24063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
24073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		sort +2
24083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi |
24093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      uniq > "$nlist"S; then
24103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    :
24113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
24123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $GREP -v "^: " < "$nlist" > "$nlist"S
24133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
24143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -f "$nlist"S; then
24163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
24183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
24203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* The mapping between symbol names and symbols.  */
24243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtypedef struct {
24253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  const char *name;
24263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  void *address;
24273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} lt_dlsymlist;
24283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
24293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host in
24303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *cygwin* | *mingw* | *cegcc* )
24313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* DATA imports from DLLs on WIN32 con't be const, because
24333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   runtime relocations are performed -- see ld's documentation
24343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   on pseudo-relocs.  */"
24353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lt_dlsym_const= ;;
24363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *osf5*)
24373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    echo >> "$output_objdir/$my_dlsyms" "\
24383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* This system does not cope well with relocations in const data */"
24393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lt_dlsym_const= ;;
24403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
24413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lt_dlsym_const=const ;;
24423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
24433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevextern $lt_dlsym_const lt_dlsymlist
24463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_${my_prefix}_LTX_preloaded_symbols[];
24473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev$lt_dlsym_const lt_dlsymlist
24483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_${my_prefix}_LTX_preloaded_symbols[] =
24493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{\
24503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  { \"$my_originator\", (void *) 0 },"
24513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $need_lib_prefix in
24533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  no)
24543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
24563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
24573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
24593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
24603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  {0, (void *) 0}
24623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev};
24633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* This works around a problem in FreeBSD linker */
24653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef FREEBSD_WORKAROUND
24663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const void *lt_preloaded_setup() {
24673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return lt_${my_prefix}_LTX_preloaded_symbols;
24683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
24693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
24703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef __cplusplus
24723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
24733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif\
24743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
24753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	} # !$opt_dry_run
24763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
24773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	pic_flag_for_symtable=
24783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case "$compile_command " in
24793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" -static "*) ;;
24803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
24813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host in
24823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # compiling the symbol table file with pic_flag works around
24833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # a FreeBSD bug that causes programs to crash when -lm is
24843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # linked before any other PIC object.  But we must not use
24853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # pic_flag when linking with -static.  The problem exists in
24863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-hpux*)
24903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    pic_flag_for_symtable=" $pic_flag"  ;;
24913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
24923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "X$my_pic_p" != Xno; then
24933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      pic_flag_for_symtable=" $pic_flag"
24943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
24953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
24963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
24973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
24983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
24993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	symtab_cflags=
25003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for arg in $LTCFLAGS; do
25013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $arg in
25023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  -pie | -fpie | -fPIE) ;;
25033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) symtab_cflags="$symtab_cflags $arg" ;;
25043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
25053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
25063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Now compile the dynamic symbol file.
25083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Clean up the generated files.
25113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
25123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Transform the symbol file into the correct name.
25143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	symfileobj="$output_objdir/${my_outputname}S.$objext"
25153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
25163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*cygwin* | *mingw* | *cegcc* )
25173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -f "$output_objdir/$my_outputname.def"; then
25183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
25213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
25243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
25253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
25263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
25293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
25303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
25313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
25323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
25343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
25353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
25363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # We keep going just in case the user didn't refer to
25373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # really was required.
25393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Nullify the symbol file.
25413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
25443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
25453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_win32_libid arg
25473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# return the library type of file 'arg'
25483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
25493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Need a lot of goo to handle *both* DLLs and import libs
25503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Has to be a shell function in order to 'eat' the argument
25513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# that is supplied when $file_magic_command is called.
25523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_win32_libid ()
25533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
25543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  $opt_debug
25553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  win32_libid_type="unknown"
25563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  win32_fileres=`file -L $1 2>/dev/null`
25573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case $win32_fileres in
25583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *ar\ archive\ import\ library*) # definitely import
25593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    win32_libid_type="x86 archive import"
25603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
25613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *ar\ archive*) # could be an import, or static
25623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      win32_nmres=`eval $NM -f posix -A $1 |
25653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$SED -n -e '
25663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    1,100{
25673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		/ I /{
25683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    s,.*,import,
25693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    p
25703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    q
25713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		}
25723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }'`
25733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $win32_nmres in
25743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      import*)  win32_libid_type="x86 archive import";;
25753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)        win32_libid_type="x86 archive static";;
25763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
25773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
25783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
25793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *DLL*)
25803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    win32_libid_type="x86 DLL"
25813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
25823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *executable*) # but shell scripts are "executable" too...
25833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $win32_fileres in
25843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *MS\ Windows\ PE\ Intel*)
25853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      win32_libid_type="x86 DLL"
25863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
25873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
25883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ;;
25893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  esac
25903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  $ECHO "$win32_libid_type"
25913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
25923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
25953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_extract_an_archive dir oldlib
25963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_extract_an_archive ()
25973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
25983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
25993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    f_ex_an_ar_dir="$1"; shift
26003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    f_ex_an_ar_oldlib="$1"
26013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     :
26043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
26053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
26073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
26083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_extract_archives gentop oldlib ...
26113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_extract_archives ()
26123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
26133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
26143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_gentop="$1"; shift
26153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_oldlibs=${1+"$@"}
26163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_oldobjs=""
26173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_xlib=""
26183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_xabs=""
26193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    my_xdir=""
26203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for my_xlib in $my_oldlibs; do
26223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Extract the objects.
26233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $my_xlib in
26243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) my_xabs=`pwd`"/$my_xlib" ;;
26263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
26273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_basename "$my_xlib"
26283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_xlib="$func_basename_result"
26293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_xlib_u=$my_xlib
26303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      while :; do
26313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        case " $extracted_archives " in
26323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" $my_xlib_u "*)
26333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_arith $extracted_serial + 1
26343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  extracted_serial=$func_arith_result
26353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) break ;;
26373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
26383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
26393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      extracted_archives="$extracted_archives $my_xlib_u"
26403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_xdir="$my_gentop/$my_xlib_u"
26413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_mkdir_p "$my_xdir"
26433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $host in
26453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *-darwin*)
26463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_verbose "Extracting $my_xabs"
26473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Do not bother doing anything if just a dry run
26483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || {
26493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin_orig_dir=`pwd`
26503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  cd $my_xdir || exit $?
26513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin_archive=$my_xabs
26523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin_curdir=`pwd`
26533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin_base_archive=`basename "$darwin_archive"`
26543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$darwin_arches"; then
26563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    darwin_arch=
26583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for darwin_arch in  $darwin_arches ; do
26603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cd "$darwin_curdir"
26653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done # $darwin_arches
26673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    darwin_file=
26703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    darwin_files=
26713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for darwin_file in $darwin_filelist; do
26723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $LIPO -create -output "$darwin_file" $darwin_files
26743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done # $darwin_filelist
26753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $RM -rf unfat-$$
26763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cd "$darwin_orig_dir"
26773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
26783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cd $darwin_orig_dir
26793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_extract_an_archive "$my_xdir" "$my_xabs"
26803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi # $darwin_arches
26813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	} # !$opt_dry_run
26823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
26833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
26843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_extract_an_archive "$my_xdir" "$my_xabs"
26853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
26863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
26873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
26893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_extract_archives_result="$my_oldobjs"
26913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
26923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
26953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_emit_wrapper_part1 [arg=no]
26963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
26973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Emit the first part of a libtool wrapper script on stdout.
26983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# For more information, see the description associated with
26993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_emit_wrapper(), below.
27003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_emit_wrapper_part1 ()
27013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
27023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_emit_wrapper_part1_arg1=no
27033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$1" ; then
27043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_emit_wrapper_part1_arg1=$1
27053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
27063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
27083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#! $SHELL
27093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $output - temporary wrapper script for $objdir/$outputname
27113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
27133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# The $output program cannot be directly executed until all the libtool
27143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# libraries that it depends on are installed.
27153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
27163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This wrapper script should never be moved out of the build directory.
27173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# If it is, it will not operate correctly.
27183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Sed substitution that helps us do robust quoting.  It backslashifies
27203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# metacharacters that are still active within double-quoted strings.
27213aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevXsed='${SED} -e 1s/^X//'
27223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevsed_quote_subst='$sed_quote_subst'
27233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Be Bourne compatible
27253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  emulate sh
27273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  NULLCMD=:
27283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # is contrary to our usage.  Disable this feature.
27303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  setopt NO_GLOB_SUBST
27323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevelse
27333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfi
27353aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevBIN_SH=xpg4; export BIN_SH # for Tru64
27363aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevDUALCASE=1; export DUALCASE # for MKS sh
27373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# The HP-UX ksh and POSIX shell print the target directory to stdout
27393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# if CDPATH is set.
27403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrelink_command=\"$relink_command\"
27433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# This environment variable determines our operation mode.
27453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevif test \"\$libtool_install_magic\" = \"$magic\"; then
27463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # install mode needs the following variables:
27473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  generated_by_libtool_version='$macro_version'
27483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  notinst_deplibs='$notinst_deplibs'
27493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevelse
27503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ECHO=\"$qecho\"
27533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    file=\"\$0\"
27543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Make sure echo works.
27553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test \"X\$1\" = X--no-reexec; then
27563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Discard the --no-reexec flag, and continue.
27573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      shift
27583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Yippee, \$ECHO works!
27603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      :
27613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
27623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Restart under the correct shell, and then maybe \$ECHO will work.
27633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
27653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi\
27663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
27673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
27683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Find the directory that this script lives in.
27703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Follow symbolic links until we get to the real thisdir.
27743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  while test -n \"\$file\"; do
27763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # If there was a directory component, then change thisdir.
27793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test \"x\$destdir\" != \"x\$file\"; then
27803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case \"\$destdir\" in
27813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *) thisdir=\"\$thisdir/\$destdir\" ;;
27833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
27843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
27853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  done
27893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
27903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
27913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# end: func_emit_wrapper_part1
27923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
27933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_emit_wrapper_part2 [arg=no]
27943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
27953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Emit the second part of a libtool wrapper script on stdout.
27963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# For more information, see the description associated with
27973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_emit_wrapper(), below.
27983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_emit_wrapper_part2 ()
27993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
28003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_emit_wrapper_part2_arg1=no
28013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$1" ; then
28023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_emit_wrapper_part2_arg1=$1
28033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
28043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
28063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Usually 'no', except on cygwin/mingw when embedded into
28083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # the cwrapper.
28093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # special case for '.'
28123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test \"\$thisdir\" = \".\"; then
28133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      thisdir=\`pwd\`
28143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
28153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # remove .libs from thisdir
28163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case \"\$thisdir\" in
28173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $objdir )   thisdir=. ;;
28193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
28203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
28213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  # Try to get the absolute directory name.
28233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  absdir=\`cd \"\$thisdir\" && pwd\`
28243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
28263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$fast_install" = yes; then
28283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
28293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  program=lt-'$outputname'$exeext
28303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  progdir=\"\$thisdir/$objdir\"
28313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test ! -f \"\$progdir/\$program\" ||
28333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    file=\"\$\$-\$program\"
28373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test ! -d \"\$progdir\"; then
28393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $MKDIR \"\$progdir\"
28403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
28413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $RM \"\$progdir/\$file\"
28423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi"
28433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
28453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # relink executable if necessary
28473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n \"\$relink_command\"; then
28483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
28503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO \"\$relink_command_output\" >&2
28513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$RM \"\$progdir/\$file\"
28523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit 1
28533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
28543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
28553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    { $RM \"\$progdir/\$program\";
28583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $RM \"\$progdir/\$file\"
28603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi"
28613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
28623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
28633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  program='$outputname'
28643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  progdir=\"\$thisdir/$objdir\"
28653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
28663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
28673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
28693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test -f \"\$progdir/\$program\"; then"
28713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Export our shlibpath_var if we have one.
28733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
28753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Add our own library path to $shlibpath_var
28763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Some systems cannot cope with colon-terminated $shlibpath_var
28793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # The second colon is a workaround for a bug in BeOS R4 sed
28803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    export $shlibpath_var
28833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
28843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
28853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# fixup the dll searchpath if we need to.
28873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$dllsearchpath"; then
28883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
28893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Add the dll search path components to the executable PATH
28903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    PATH=$dllsearchpath:\$PATH
28913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
28923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
28933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
28943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
28953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Run the actual program with our arguments.
28973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
28983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
28993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Backslashes separate directories on plain windows
29003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*-*-mingw | *-*-os2* | *-cegcc*)
29013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
29023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
29043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
29053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
29063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
29073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "\
29083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
29103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
29113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
29123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$ECHO "\
29133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exit 1
29153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
29163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  else
29173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # The program doesn't exist.
29183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit 1
29223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
29233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfi\
29243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev"
29253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
29263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# end: func_emit_wrapper_part2
29273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
29283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
29293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_emit_wrapper [arg=no]
29303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
29313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Emit a libtool wrapper script on stdout.
29323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Don't directly open a file because we may want to
29333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# incorporate the script contents within a cygwin/mingw
29343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# wrapper executable.  Must ONLY be called from within
29353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_link because it depends on a number of variables
29363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# set therein.
29373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
29383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# variable will take.  If 'yes', then the emitted script
29403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# will assume that the directory in which it is stored is
29413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the $objdir directory.  This is a cygwin/mingw-specific
29423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# behavior.
29433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_emit_wrapper ()
29443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
29453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_emit_wrapper_arg1=no
29463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$1" ; then
29473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_emit_wrapper_arg1=$1
29483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
29493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
29503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# split this up so that func_emit_cwrapperexe_src
29513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# can call each part independently.
29523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
29553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
29563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
29573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_to_host_path arg
29583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
29593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Convert paths to host format when used with build tools.
29603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Intended for use with "native" mingw (where libtool itself
29613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# is running under the msys shell), or in the following cross-
29623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# build environments:
29633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    $build          $host
29643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    mingw (msys)    mingw  [e.g. native]
29653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    cygwin          mingw
29663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    *nix + wine     mingw
29673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# where wine is equipped with the `winepath' executable.
29683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# In the native mingw case, the (msys) shell automatically
29693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# converts paths for any non-msys applications it launches,
29703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# but that facility isn't available from inside the cwrapper.
29713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Similar accommodations are necessary for $host mingw and
29723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $build cygwin.  Calling this function does no harm for other
29733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $host/$build combinations not listed above.
29743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
29753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ARG is the path (on $build) that should be converted to
29763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the proper representation for $host. The result is stored
29773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# in $func_to_host_path_result.
29783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_to_host_path ()
29793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
29803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_to_host_path_result="$1"
29813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test -n "$1" ; then
29823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $host in
29833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *mingw* )
29843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        case $build in
29863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          *mingw* ) # actually, msys
29873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # awkward: cmd appends spaces to result
29883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              $SED -e "$lt_sed_naive_backslashify"`
29933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
29943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          *cygwin* )
29953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_path_tmp1=`cygpath -w "$1"`
29963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              $SED -e "$lt_sed_naive_backslashify"`
29983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
29993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          * )
30003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # Unfortunately, winepath does not exit with a non-zero
30013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # error code, so we are forced to check the contents of
30023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # stdout. On the other hand, if the command is not
30033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # found, the shell will set an exit code of 127 and print
30043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # *an error message* to stdout. So we must check for both
30053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # error code of zero AND non-empty stdout, which explains
30063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # the odd construction:
30073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                $SED -e "$lt_sed_naive_backslashify"`
30113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            else
30123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              # Allow warning below.
30133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              func_to_host_path_result=""
30143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            fi
30153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
30163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        esac
30173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        if test -z "$func_to_host_path_result" ; then
30183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_error "Could not determine host path corresponding to"
30193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_error "  '$1'"
30203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_error "Continuing, but uninstalled executables may not work."
30213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          # Fallback:
30223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_to_host_path_result="$1"
30233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        fi
30243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
30253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
30263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
30273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
30283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# end: func_to_host_path
30293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
30303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_to_host_pathlist arg
30313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
30323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Convert pathlists to host format when used with build tools.
30333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# See func_to_host_path(), above. This function supports the
30343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# following $build/$host combinations (but does no harm for
30353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# combinations not listed here):
30363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    $build          $host
30373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    mingw (msys)    mingw  [e.g. native]
30383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    cygwin          mingw
30393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#    *nix + wine     mingw
30403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
30413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Path separators are also converted from $build format to
30423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $host format. If ARG begins or ends with a path separator
30433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# character, it is preserved (but converted to $host format)
30443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# on output.
30453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
30463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ARG is a pathlist (on $build) that should be converted to
30473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the proper representation on $host. The result is stored
30483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# in $func_to_host_pathlist_result.
30493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_to_host_pathlist ()
30503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
30513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_to_host_pathlist_result="$1"
30523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if test -n "$1" ; then
30533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $host in
30543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *mingw* )
30553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # Remove leading and trailing path separator characters from
30573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # ARG. msys behavior is inconsistent here, cygpath turns them
30583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # into '.;' and ';.', and winepath ignores them completely.
30593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_to_host_pathlist_tmp2="$1"
30603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # Once set for this call, this variable should not be
30613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # reassigned. It is used in tha fallback case.
30623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          $SED -e 's|^:*||' -e 's|:*$||'`
30643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        case $build in
30653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          *mingw* ) # Actually, msys.
30663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # Awkward: cmd appends spaces to result.
30673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              $SED -e "$lt_sed_naive_backslashify"`
30723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
30733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          *cygwin* )
30743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              $SED -e "$lt_sed_naive_backslashify"`
30773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
30783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          * )
30793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            # unfortunately, winepath doesn't convert pathlists
30803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_pathlist_result=""
30813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            func_to_host_pathlist_oldIFS=$IFS
30823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            IFS=:
30833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              IFS=$func_to_host_pathlist_oldIFS
30853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              if test -n "$func_to_host_pathlist_f" ; then
30863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                func_to_host_path "$func_to_host_pathlist_f"
30873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                if test -n "$func_to_host_path_result" ; then
30883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                  if test -z "$func_to_host_pathlist_result" ; then
30893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    func_to_host_pathlist_result="$func_to_host_path_result"
30903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                  else
30913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                  fi
30933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                fi
30943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              fi
30953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              IFS=:
30963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            done
30973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            IFS=$func_to_host_pathlist_oldIFS
30983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
30993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        esac
31003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        if test -z "$func_to_host_pathlist_result" ; then
31013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_error "Could not determine the host path(s) corresponding to"
31023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_error "  '$1'"
31033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_error "Continuing, but uninstalled executables may not work."
31043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          # Fallback. This may break if $1 contains DOS-style drive
31053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          # specifications. The fix is not to complicate the expression
31063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          # below, but for the user to provide a working wine installation
31073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          # with winepath so that path translation in the cross-to-mingw
31083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          # case works properly.
31093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        fi
31133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # Now, add the leading and trailing path separators back
31143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        case "$1" in
31153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
31173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        esac
31183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        case "$1" in
31193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            ;;
31213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        esac
31223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
31233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
31243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fi
31253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
31263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# end: func_to_host_pathlist
31273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_emit_cwrapperexe_src
31293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# emit the source code for a wrapper executable on stdout
31303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Must ONLY be called from within func_mode_link because
31313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# it depends on a number of variable set therein.
31323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_emit_cwrapperexe_src ()
31333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
31343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	cat <<EOF
31353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   The $output program cannot be directly executed until all the libtool
31403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   libraries that it depends on are installed.
31413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   This wrapper executable should never be moved out of the build directory.
31433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   If it is, it will not operate correctly.
31443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   Currently, it simply execs the wrapper *script* "$SHELL $output",
31463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   but could eventually absorb all of the scripts functionality and
31473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   exec $objdir/$outputname directly.
31483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev*/
31493aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
31503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
31513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <stdio.h>
31523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <stdlib.h>
31533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef _MSC_VER
31543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# include <direct.h>
31553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# include <process.h>
31563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# include <io.h>
31573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define setmode _setmode
31583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else
31593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# include <unistd.h>
31603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# include <stdint.h>
31613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ifdef __CYGWIN__
31623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  include <io.h>
31633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  define HAVE_SETENV
31643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  ifdef __STRICT_ANSI__
31653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *realpath (const char *, char *);
31663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint putenv (char *);
31673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint setenv (const char *, const char *, int);
31683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  endif
31693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# endif
31703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
31713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <malloc.h>
31723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <stdarg.h>
31733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <assert.h>
31743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <string.h>
31753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <ctype.h>
31763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <errno.h>
31773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <fcntl.h>
31783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <sys/stat.h>
31793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#if defined(PATH_MAX)
31813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define LT_PATHMAX PATH_MAX
31823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#elif defined(MAXPATHLEN)
31833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define LT_PATHMAX MAXPATHLEN
31843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else
31853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define LT_PATHMAX 1024
31863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
31873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef S_IXOTH
31893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define S_IXOTH 0
31903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
31913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef S_IXGRP
31923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define S_IXGRP 0
31933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
31943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
31953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef _MSC_VER
31963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define S_IXUSR _S_IEXEC
31973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define stat _stat
31983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ifndef _INTPTR_T_DEFINED
31993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  define intptr_t int
32003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# endif
32013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef DIR_SEPARATOR
32043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define DIR_SEPARATOR '/'
32053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define PATH_SEPARATOR ':'
32063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  defined (__OS2__)
32103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define HAVE_DOS_BASED_FILE_SYSTEM
32113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define FOPEN_WB "wb"
32123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ifndef DIR_SEPARATOR_2
32133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  define DIR_SEPARATOR_2 '\\'
32143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# endif
32153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ifndef PATH_SEPARATOR_2
32163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#  define PATH_SEPARATOR_2 ';'
32173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# endif
32183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef DIR_SEPARATOR_2
32213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else /* DIR_SEPARATOR_2 */
32233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define IS_DIR_SEPARATOR(ch) \
32243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif /* DIR_SEPARATOR_2 */
32263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef PATH_SEPARATOR_2
32283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else /* PATH_SEPARATOR_2 */
32303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif /* PATH_SEPARATOR_2 */
32323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef __CYGWIN__
32343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define FOPEN_WB "wb"
32353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef FOPEN_WB
32383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define FOPEN_WB "w"
32393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef _O_BINARY
32413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define _O_BINARY 0
32423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#define XFREE(stale) do { \
32463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (stale) { free ((void *) stale); stale = 0; } \
32473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev} while (0)
32483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#undef LTWRAPPER_DEBUGPRINTF
32503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#if defined DEBUGWRAPPER
32513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic void
32533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevltwrapper_debugprintf (const char *fmt, ...)
32543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
32553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    va_list args;
32563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    va_start (args, fmt);
32573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    (void) vfprintf (stderr, fmt, args);
32583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    va_end (args);
32593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
32603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else
32613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# define LTWRAPPER_DEBUGPRINTF(args)
32623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
32633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char *program_name = NULL;
32653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid *xmalloc (size_t num);
32673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *xstrdup (const char *string);
32683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char *base_name (const char *name);
32693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *find_executable (const char *wrapper);
32703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *chase_symlinks (const char *pathspec);
32713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint make_executable (const char *path);
32723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint check_executable (const char *path);
32733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *strendzap (char *str, const char *pat);
32743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_fatal (const char *message, ...);
32753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_setenv (const char *name, const char *value);
32763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *lt_extend_str (const char *orig_value, const char *add, int to_end);
32773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_opt_process_env_set (const char *arg);
32783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_opt_process_env_prepend (const char *arg);
32793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_opt_process_env_append (const char *arg);
32803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint lt_split_name_value (const char *arg, char** name, char** value);
32813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_update_exe_path (const char *name, const char *value);
32823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid lt_update_lib_path (const char *name, const char *value);
32833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *script_text_part1 =
32853aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
32863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_emit_wrapper_part1 yes |
32883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        $SED -e 's/\([\\"]\)/\\\1/g' \
32893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	             -e 's/^/  "/' -e 's/$/\\n"/'
32903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    echo ";"
32913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<EOF
32923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
32933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *script_text_part2 =
32943aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
32953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_emit_wrapper_part2 yes |
32963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        $SED -e 's/\([\\"]\)/\\\1/g' \
32973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	             -e 's/^/  "/' -e 's/$/\\n"/'
32983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    echo ";"
32993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<EOF
33013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * MAGIC_EXE = "$magic_exe";
33023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * LIB_PATH_VARNAME = "$shlibpath_var";
33033aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              func_to_host_pathlist "$temp_rpath"
33073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cat <<EOF
33083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33093aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
33113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cat <<"EOF"
33123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * LIB_PATH_VALUE   = "";
33133aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
33153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$dllsearchpath"; then
33173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              func_to_host_pathlist "$dllsearchpath:"
33183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cat <<EOF
33193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * EXE_PATH_VARNAME = "PATH";
33203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33213aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
33233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cat <<"EOF"
33243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * EXE_PATH_VARNAME = "";
33253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * EXE_PATH_VALUE   = "";
33263aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
33283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$fast_install" = yes; then
33303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cat <<EOF
33313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33323aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
33343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cat <<EOF
33353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33363aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
33383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
33413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint
33633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevmain (int argc, char *argv[])
33643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
33653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char **newargz;
33663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int  newargc;
33673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *tmp_pathspec;
33683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *actual_cwrapper_path;
33693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *actual_cwrapper_name;
33703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *target_name;
33713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *lt_argv_zero;
33723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  intptr_t rval = 127;
33733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int i;
33753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  program_name = (char *) xstrdup (base_name (argv[0]));
33773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* very simple arg parsing; don't want to rely on getopt */
33813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  for (i = 1; i < argc; i++)
33823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
33833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (strcmp (argv[i], dumpscript_opt) == 0)
33843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	{
33853aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
33863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$host" in
33873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *mingw* | *cygwin* )
33883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# make stdout use "unix" line endings
33893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		echo "          setmode(1,_O_BINARY);"
33903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
33913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
33923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
33933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
33943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  printf ("%s", script_text_part1);
33953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  printf ("%s", script_text_part2);
33963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  return 0;
33973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	}
33983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
33993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  newargz = XMALLOC (char *, argc + 1);
34013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = find_executable (argv[0]);
34023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (tmp_pathspec == NULL)
34033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lt_fatal ("Couldn't find %s", argv[0]);
34043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  tmp_pathspec));
34063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  actual_cwrapper_path));
34103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (tmp_pathspec);
34113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* wrapper name transforms */
34163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strendzap (actual_cwrapper_name, ".exe");
34173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (actual_cwrapper_name);
34193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  actual_cwrapper_name = tmp_pathspec;
34203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = 0;
34213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* target_name transforms -- use actual target program name; might have lt- prefix */
34233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strendzap (target_name, ".exe");
34253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (target_name);
34273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  target_name = tmp_pathspec;
34283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = 0;
34293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  target_name));
34323aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
34333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<EOF
34353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  newargz[0] =
34363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    XMALLOC (char, (strlen (actual_cwrapper_path) +
34373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strcpy (newargz[0], actual_cwrapper_path);
34393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strcat (newargz[0], "$objdir");
34403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strcat (newargz[0], "/");
34413aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
34423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
34443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* stop here, and copy so we don't have to do this twice */
34453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = xstrdup (newargz[0]);
34463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strcat (newargz[0], actual_cwrapper_name);
34493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* DO want the lt- prefix here if it exists, so use target_name */
34513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (tmp_pathspec);
34533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = NULL;
34543aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
34553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $host_os in
34573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      mingw*)
34583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
34593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  {
34603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    char* p;
34613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    while ((p = strchr (newargz[0], '\\')) != NULL)
34623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      {
34633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*p = '/';
34643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
34653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      {
34673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*p = '/';
34683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
34693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  }
34703aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
34713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
34723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
34733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
34753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (target_name);
34763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (actual_cwrapper_path);
34773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (actual_cwrapper_name);
34783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
34843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  newargc=0;
34853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  for (i = 1; i < argc; i++)
34863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
34873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
34893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          if (argv[i][env_set_opt_len] == '=')
34903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            {
34913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              const char *p = argv[i] + env_set_opt_len + 1;
34923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              lt_opt_process_env_set (p);
34933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            }
34943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            {
34963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              lt_opt_process_env_set (argv[++i]); /* don't copy */
34973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            }
34983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          else
34993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            lt_fatal ("%s missing required argument", env_set_opt);
35003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          continue;
35013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
35023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
35043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          if (argv[i][env_prepend_opt_len] == '=')
35053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            {
35063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              const char *p = argv[i] + env_prepend_opt_len + 1;
35073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              lt_opt_process_env_prepend (p);
35083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            }
35093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            {
35113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            }
35133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          else
35143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            lt_fatal ("%s missing required argument", env_prepend_opt);
35153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          continue;
35163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
35173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
35193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          if (argv[i][env_append_opt_len] == '=')
35203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            {
35213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              const char *p = argv[i] + env_append_opt_len + 1;
35223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              lt_opt_process_env_append (p);
35233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            }
35243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            {
35263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev              lt_opt_process_env_append (argv[++i]); /* don't copy */
35273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            }
35283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          else
35293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            lt_fatal ("%s missing required argument", env_append_opt);
35303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          continue;
35313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
35323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
35343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             namespace, but it is not one of the ones we know about and
35363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             have already dealt with, above (inluding dump-script), then
35373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             report an error. Otherwise, targets might begin to believe
35383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             namespace. The first time any user complains about this, we'll
35403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev             or a configure.ac-settable value.
35423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev           */
35433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                    ltwrapper_option_prefix, argv[i]);
35453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
35463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      /* otherwise ... */
35473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      newargz[++newargc] = xstrdup (argv[i]);
35483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
35493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  newargz[++newargc] = NULL;
35503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  for (i = 0; i < newargc; i++)
35533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
35543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
35563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35573aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
35583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $host_os in
35603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      mingw*)
35613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		cat <<"EOF"
35623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* execv doesn't actually work on mingw as expected on unix */
35633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (rval == -1)
35653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
35663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      /* failed to start process */
35673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      return 127;
35693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
35703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return rval;
35713aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
35723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
35733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *)
35743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		cat <<"EOF"
35753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  execv (lt_argv_zero, newargz);
35763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return rval; /* =127, but avoids unused variable warning */
35773aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
35783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
35793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
35803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cat <<"EOF"
35823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
35833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid *
35853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevxmalloc (size_t num)
35863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
35873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  void *p = (void *) malloc (num);
35883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (!p)
35893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lt_fatal ("Memory exhausted");
35903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return p;
35923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
35933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
35943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *
35953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevxstrdup (const char *string)
35963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
35973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  string) : NULL;
35993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
36003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevconst char *
36023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbase_name (const char *name)
36033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
36043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  const char *base;
36053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* Skip over the disk name in MSDOS pathnames. */
36083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    name += 2;
36103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
36113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  for (base = name; *name; name++)
36133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if (IS_DIR_SEPARATOR (*name))
36143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      base = name + 1;
36153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return base;
36163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
36173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint
36193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcheck_executable (const char *path)
36203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
36213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  struct stat st;
36223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if ((!path) || (!*path))
36263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 0;
36273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if ((stat (path, &st) >= 0)
36293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 1;
36313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  else
36323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 0;
36333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
36343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint
36363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevmake_executable (const char *path)
36373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
36383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int rval = 0;
36393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  struct stat st;
36403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if ((!path) || (!*path))
36443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 0;
36453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (stat (path, &st) >= 0)
36473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
36483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
36503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return rval;
36513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
36523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/* Searches for the full path of the wrapper.  Returns
36543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   newly allocated full path name if found, NULL otherwise
36553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev   Does not chase symlinks, even on platforms that support them.
36563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev*/
36573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *
36583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfind_executable (const char *wrapper)
36593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
36603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int has_slash = 0;
36613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  const char *p;
36623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  const char *p_next;
36633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* static buffer for getcwd */
36643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char tmp[LT_PATHMAX + 1];
36653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int tmp_len;
36663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *concat_name;
36673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if ((wrapper == NULL) || (*wrapper == '\0'))
36723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return NULL;
36733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* Absolute path? */
36753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
36783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      concat_name = xstrdup (wrapper);
36793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (check_executable (concat_name))
36803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	return concat_name;
36813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (concat_name);
36823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
36833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  else
36843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
36853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
36863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (IS_DIR_SEPARATOR (wrapper[0]))
36873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	{
36883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  concat_name = xstrdup (wrapper);
36893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if (check_executable (concat_name))
36903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    return concat_name;
36913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  XFREE (concat_name);
36923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	}
36933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
36953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
36963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
36973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  for (p = wrapper; *p; p++)
36983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if (*p == '/')
36993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      {
37003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	has_slash = 1;
37013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	break;
37023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
37033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (!has_slash)
37043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
37053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      /* no slashes; search PATH */
37063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      const char *path = getenv ("PATH");
37073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (path != NULL)
37083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	{
37093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for (p = path; *p; p = p_next)
37103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    {
37113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      const char *q;
37123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      size_t p_len;
37133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      for (q = p; *q; q++)
37143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if (IS_PATH_SEPARATOR (*q))
37153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  break;
37163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      p_len = q - p;
37173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      p_next = (*q == '\0' ? q : q + 1);
37183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if (p_len == 0)
37193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		{
37203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  /* empty path: current directory */
37213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    lt_fatal ("getcwd failed");
37233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  tmp_len = strlen (tmp);
37243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  concat_name =
37253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  memcpy (concat_name, tmp, tmp_len);
37273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  concat_name[tmp_len] = '/';
37283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  strcpy (concat_name + tmp_len + 1, wrapper);
37293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		}
37303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
37313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		{
37323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  concat_name =
37333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  memcpy (concat_name, p, p_len);
37353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  concat_name[p_len] = '/';
37363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  strcpy (concat_name + p_len + 1, wrapper);
37373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		}
37383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if (check_executable (concat_name))
37393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		return concat_name;
37403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      XFREE (concat_name);
37413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
37423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	}
37433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      /* not found in PATH; assume curdir */
37443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
37453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  /* Relative path | not found in path: prepend cwd */
37463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (getcwd (tmp, LT_PATHMAX) == NULL)
37473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lt_fatal ("getcwd failed");
37483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_len = strlen (tmp);
37493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  memcpy (concat_name, tmp, tmp_len);
37513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  concat_name[tmp_len] = '/';
37523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strcpy (concat_name + tmp_len + 1, wrapper);
37533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
37543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (check_executable (concat_name))
37553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return concat_name;
37563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (concat_name);
37573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return NULL;
37583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
37593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
37603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *
37613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchase_symlinks (const char *pathspec)
37623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
37633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifndef S_ISLNK
37643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return xstrdup (pathspec);
37653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else
37663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char buf[LT_PATHMAX];
37673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  struct stat s;
37683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *tmp_pathspec = xstrdup (pathspec);
37693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *p;
37703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int has_symlinks = 0;
37713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  while (strlen (tmp_pathspec) && !has_symlinks)
37723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
37733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			      tmp_pathspec));
37753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (lstat (tmp_pathspec, &s) == 0)
37763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	{
37773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if (S_ISLNK (s.st_mode) != 0)
37783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    {
37793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      has_symlinks = 1;
37803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      break;
37813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
37823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
37833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  /* search backwards for last DIR_SEPARATOR */
37843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    p--;
37873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    {
37893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      /* no more DIR_SEPARATORS left */
37903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      break;
37913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
37923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *p = '\0';
37933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	}
37943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
37953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	{
37963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  char *errstr = strerror (errno);
37973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	}
37993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
38003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (tmp_pathspec);
38013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (!has_symlinks)
38033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
38043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      return xstrdup (pathspec);
38053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
38063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  tmp_pathspec = realpath (pathspec, buf);
38083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (tmp_pathspec == 0)
38093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
38103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lt_fatal ("Could not follow symlinks for %s", pathspec);
38113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
38123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return xstrdup (tmp_pathspec);
38133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
38143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
38153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *
38173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstrendzap (char *str, const char *pat)
38183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
38193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  size_t len, patlen;
38203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  assert (str != NULL);
38223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  assert (pat != NULL);
38233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  len = strlen (str);
38253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  patlen = strlen (pat);
38263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (patlen <= len)
38283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
38293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      str += len - patlen;
38303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (strcmp (str, pat) == 0)
38313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*str = '\0';
38323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
38333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return str;
38343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
38353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic void
38373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_error_core (int exit_status, const char *mode,
38383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       const char *message, va_list ap)
38393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
38403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fprintf (stderr, "%s: %s: ", program_name, mode);
38413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  vfprintf (stderr, message, ap);
38423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fprintf (stderr, ".\n");
38433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (exit_status >= 0)
38453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit (exit_status);
38463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
38473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
38493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_fatal (const char *message, ...)
38503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
38513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  va_list ap;
38523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  va_start (ap, message);
38533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  va_end (ap);
38553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
38563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
38583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_setenv (const char *name, const char *value)
38593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
38603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          (name ? name : "<NULL>"),
38623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          (value ? value : "<NULL>")));
38633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  {
38643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#ifdef HAVE_SETENV
38653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    /* always make a copy, for consistency with !HAVE_SETENV */
38663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    char *str = xstrdup (value);
38673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    setenv (name, str, 1);
38683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#else
38693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    int len = strlen (name) + 1 + strlen (value) + 1;
38703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    char *str = XMALLOC (char, len);
38713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    sprintf (str, "%s=%s", name, value);
38723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if (putenv (str) != EXIT_SUCCESS)
38733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      {
38743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        XFREE (str);
38753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
38763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#endif
38773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  }
38783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
38793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
38803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevchar *
38813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_extend_str (const char *orig_value, const char *add, int to_end)
38823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
38833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *new_value;
38843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (orig_value && *orig_value)
38853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
38863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      int orig_value_len = strlen (orig_value);
38873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      int add_len = strlen (add);
38883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if (to_end)
38903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
38913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          strcpy (new_value, orig_value);
38923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          strcpy (new_value + orig_value_len, add);
38933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
38943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
38953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
38963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          strcpy (new_value, add);
38973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          strcpy (new_value + add_len, orig_value);
38983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
38993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
39003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  else
39013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
39023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      new_value = xstrdup (add);
39033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
39043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return new_value;
39053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
39063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint
39083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_split_name_value (const char *arg, char** name, char** value)
39093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
39103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  const char *p;
39113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  int len;
39123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (!arg || !*arg)
39133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 1;
39143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  p = strchr (arg, (int)'=');
39163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (!p)
39183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 1;
39193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *value = xstrdup (++p);
39213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  len = strlen (arg) - strlen (*value);
39233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  *name = XMALLOC (char, len);
39243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  strncpy (*name, arg, len-1);
39253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  (*name)[len - 1] = '\0';
39263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  return 0;
39283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
39293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
39313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_opt_process_env_set (const char *arg)
39323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
39333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *name = NULL;
39343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *value = NULL;
39353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (lt_split_name_value (arg, &name, &value) != 0)
39373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
39383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (name);
39393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (value);
39403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
39423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_setenv (name, value);
39443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (name);
39453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (value);
39463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
39473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
39493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_opt_process_env_prepend (const char *arg)
39503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
39513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *name = NULL;
39523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *value = NULL;
39533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *new_value = NULL;
39543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (lt_split_name_value (arg, &name, &value) != 0)
39563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
39573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (name);
39583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (value);
39593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
39613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  new_value = lt_extend_str (getenv (name), value, 0);
39633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_setenv (name, new_value);
39643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (new_value);
39653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (name);
39663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (value);
39673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
39683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
39703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_opt_process_env_append (const char *arg)
39713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
39723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *name = NULL;
39733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *value = NULL;
39743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *new_value = NULL;
39753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (lt_split_name_value (arg, &name, &value) != 0)
39773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
39783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (name);
39793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (value);
39803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
39823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  new_value = lt_extend_str (getenv (name), value, 1);
39843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  lt_setenv (name, new_value);
39853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (new_value);
39863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (name);
39873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  XFREE (value);
39883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
39893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
39913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_update_exe_path (const char *name, const char *value)
39923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
39933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          (name ? name : "<NULL>"),
39953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          (value ? value : "<NULL>")));
39963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
39973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (name && *name && value && *value)
39983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
39993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      char *new_value = lt_extend_str (getenv (name), value, 0);
40003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      /* some systems can't cope with a ':'-terminated path #' */
40013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      int len = strlen (new_value);
40023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        {
40043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          new_value[len-1] = '\0';
40053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        }
40063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lt_setenv (name, new_value);
40073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (new_value);
40083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
40093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
40103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevvoid
40123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlt_update_lib_path (const char *name, const char *value)
40133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
40143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          (name ? name : "<NULL>"),
40163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          (value ? value : "<NULL>")));
40173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (name && *name && value && *value)
40193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    {
40203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      char *new_value = lt_extend_str (getenv (name), value, 0);
40213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lt_setenv (name, new_value);
40223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      XFREE (new_value);
40233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    }
40243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
40253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40273aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
40283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
40293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# end: func_emit_cwrapperexe_src
40303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_link arg...
40323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_link ()
40333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
40343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
40353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $host in
40363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # It is impossible to link a dll without this setting, and
40383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # we shouldn't force the makefile maintainer to figure out
40393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # which system we are compiling for in order to pass an extra
40403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # flag for every libtool invocation.
40413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # allow_undefined=no
40423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # FIXME: Unfortunately, there are problems with the above when trying
40443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # to make a dll which has undefined symbols, in which case not
40453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # even a static library is built.  For now, we need to specify
40463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -no-undefined on the libtool link line when we can be certain
40473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # that all symbols are satisfied, otherwise we get a static library.
40483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      allow_undefined=yes
40493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
40503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)
40513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      allow_undefined=yes
40523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
40533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
40543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libtool_args=$nonopt
40553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    base_compile="$nonopt $@"
40563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    compile_command=$nonopt
40573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    finalize_command=$nonopt
40583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    compile_rpath=
40603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    finalize_rpath=
40613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    compile_shlibpath=
40623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    finalize_shlibpath=
40633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    convenience=
40643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    old_convenience=
40653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    deplibs=
40663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    old_deplibs=
40673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    compiler_flags=
40683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    linker_flags=
40693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    dllsearchpath=
40703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lib_search_path=`pwd`
40713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    inst_prefix_dir=
40723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    new_inherited_linker_flags=
40733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
40743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    avoid_version=no
40753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    dlfiles=
40763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    dlprefiles=
40773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    dlself=no
40783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    export_dynamic=no
40793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    export_symbols=
40803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    export_symbols_regex=
40813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    generated=
40823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libobjs=
40833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    ltlibs=
40843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    module=no
40853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    no_install=no
40863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    objs=
40873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    non_pic_objects=
40883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    precious_files_regex=
40893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    prefer_static_libs=no
40903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    preload=no
40913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    prev=
40923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    prevarg=
40933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    release=
40943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    rpath=
40953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    xrpath=
40963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    perm_rpath=
40973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    temp_rpath=
40983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    thread_safe=no
40993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    vinfo=
41003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    vinfo_number=no
41013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    weak_libs=
41023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    single_module="${wl}-single_module"
41033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_infer_tag $base_compile
41043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
41053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # We need to know -static, to get the right output filenames.
41063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for arg
41073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    do
41083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $arg in
41093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -shared)
41103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test "$build_libtool_libs" != yes && \
41113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_configuration "can not build a shared library"
41123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_old_libs=no
41133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	break
41143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
41153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -all-static | -static | -static-libtool-libs)
41163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $arg in
41173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-all-static)
41183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "complete static linking is impossible in this configuration"
41203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
41213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$link_static_flag"; then
41223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlopen_self=$dlopen_self_static
41233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
41243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prefer_static_libs=yes
41253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
41263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-static)
41273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlopen_self=$dlopen_self_static
41293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
41303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prefer_static_libs=built
41313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
41323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-static-libtool-libs)
41333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlopen_self=$dlopen_self_static
41353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
41363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prefer_static_libs=yes
41373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
41383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
41393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_libtool_libs=no
41403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_old_libs=yes
41413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	break
41423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
41433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
41443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
41453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
41463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # See if our shared archives depend on static archives.
41473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
41493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Go through the arguments, transforming them on the way.
41503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    while test "$#" -gt 0; do
41513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      arg="$1"
41523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      shift
41533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_quote_for_eval "$arg"
41543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      qarg=$func_quote_for_eval_unquoted_result
41553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_append libtool_args " $func_quote_for_eval_result"
41563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
41573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # If the previous option needs an argument, assign it.
41583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$prev"; then
41593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $prev in
41603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	output)
41613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append compile_command " @OUTPUT@"
41623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append finalize_command " @OUTPUT@"
41633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
41643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
41653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
41663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $prev in
41673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlfiles|dlprefiles)
41683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$preload" = no; then
41693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Add the symbol object into the linking commands.
41703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append compile_command " @SYMFILE@"
41713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append finalize_command " @SYMFILE@"
41723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    preload=yes
41733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
41743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $arg in
41753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.la | *.lo) ;;  # We handle these cases below.
41763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  force)
41773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$dlself" = no; then
41783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlself=needless
41793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      export_dynamic=yes
41803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
41813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    prev=
41823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
41833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
41843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  self)
41853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$prev" = dlprefiles; then
41863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlself=yes
41873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlself=yes
41893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
41903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlself=needless
41913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      export_dynamic=yes
41923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
41933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    prev=
41943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
41953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
41963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
41973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$prev" = dlfiles; then
41983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlfiles="$dlfiles $arg"
41993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
42003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlprefiles="$dlprefiles $arg"
42013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
42023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    prev=
42033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
42043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
42053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
42063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
42073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	expsyms)
42083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  export_symbols="$arg"
42093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -f "$arg" \
42103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    || func_fatal_error "symbol file \`$arg' does not exist"
42113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
42123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
42133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
42143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	expsyms_regex)
42153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  export_symbols_regex="$arg"
42163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
42173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
42183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
42193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	framework)
42203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host in
42213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *-*-darwin*)
42223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$deplibs " in
42233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*" $qarg.ltframework "*) ;;
42243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   ;;
42263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
42273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
42283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
42293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
42303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
42313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
42323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	inst_prefix)
42333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  inst_prefix_dir="$arg"
42343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
42353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
42363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
42373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	objectlist)
42383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -f "$arg"; then
42393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    save_arg=$arg
42403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    moreargs=
42413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for fil in `cat "$save_arg"`
42423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    do
42433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#	      moreargs="$moreargs $fil"
42443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      arg=$fil
42453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # A libtool-controlled object.
42463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Check to see that this really is a libtool object.
42483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if func_lalib_unsafe_p "$arg"; then
42493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		pic_object=
42503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		non_pic_object=
42513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Read the .lo file
42533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_source "$arg"
42543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test -z "$pic_object" ||
42563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   test -z "$non_pic_object" ||
42573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   test "$pic_object" = none &&
42583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   test "$non_pic_object" = none; then
42593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_fatal_error "cannot find name of object for \`$arg'"
42603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
42613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Extract subdirectory from the argument.
42633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_dirname "$arg" "/" ""
42643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		xdir="$func_dirname_result"
42653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test "$pic_object" != none; then
42673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # Prepend the subdirectory the object is found in.
42683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  pic_object="$xdir$pic_object"
42693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test "$prev" = dlfiles; then
42713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      dlfiles="$dlfiles $pic_object"
42733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      prev=
42743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      continue
42753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    else
42763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # If libtool objects are unsupported, then we need to preload.
42773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      prev=dlprefiles
42783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    fi
42793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
42803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # CHECK ME:  I think I busted this.  -Ossama
42823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test "$prev" = dlprefiles; then
42833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    # Preload the old-style object.
42843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    dlprefiles="$dlprefiles $pic_object"
42853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    prev=
42863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
42873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # A PIC object.
42893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_append libobjs " $pic_object"
42903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  arg="$pic_object"
42913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
42923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Non-PIC object.
42943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test "$non_pic_object" != none; then
42953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # Prepend the subdirectory the object is found in.
42963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  non_pic_object="$xdir$non_pic_object"
42973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
42983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # A standard non-PIC object
42993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_append non_pic_objects " $non_pic_object"
43003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test -z "$pic_object" || test "$pic_object" = none ; then
43013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    arg="$non_pic_object"
43023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
43033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
43043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # If the PIC object exists, use it instead.
43053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # $xdir was prepended to $pic_object above.
43063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  non_pic_object="$pic_object"
43073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_append non_pic_objects " $non_pic_object"
43083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
43093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
43103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Only an error if not doing a dry-run.
43113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if $opt_dry_run; then
43123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # Extract subdirectory from the argument.
43133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_dirname "$arg" "/" ""
43143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  xdir="$func_dirname_result"
43153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
43163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_lo2o "$arg"
43173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  pic_object=$xdir$objdir/$func_lo2o_result
43183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  non_pic_object=$xdir$func_lo2o_result
43193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_append libobjs " $pic_object"
43203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_append non_pic_objects " $non_pic_object"
43213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        else
43223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_fatal_error "\`$arg' is not a valid libtool object"
43233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
43243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
43253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
43263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
43273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "link input file \`$arg' does not exist"
43283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
43293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  arg=$save_arg
43303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	precious_regex)
43343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  precious_files_regex="$arg"
43353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	release)
43393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  release="-$arg"
43403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	rpath | xrpath)
43443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # We need an absolute path.
43453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $arg in
43463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
43483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "only absolute run-paths are allowed"
43493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
43503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
43513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$prev" = rpath; then
43523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$rpath " in
43533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $arg "*) ;;
43543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) rpath="$rpath $arg" ;;
43553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
43563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
43573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$xrpath " in
43583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $arg "*) ;;
43593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) xrpath="$xrpath $arg" ;;
43603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
43613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
43623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	shrext)
43663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  shrext_cmds="$arg"
43673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	weak)
43713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  weak_libs="$weak_libs $arg"
43723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	xcclinker)
43763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linker_flags="$linker_flags $qarg"
43773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compiler_flags="$compiler_flags $qarg"
43783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append compile_command " $qarg"
43803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append finalize_command " $qarg"
43813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	xcompiler)
43843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compiler_flags="$compiler_flags $qarg"
43853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append compile_command " $qarg"
43873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append finalize_command " $qarg"
43883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	xlinker)
43913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linker_flags="$linker_flags $qarg"
43923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compiler_flags="$compiler_flags $wl$qarg"
43933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
43943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append compile_command " $wl$qarg"
43953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append finalize_command " $wl$qarg"
43963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
43973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
43983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
43993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval "$prev=\"\$arg\""
44003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
44013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
44023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
44033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
44043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi # test -n "$prev"
44053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      prevarg="$arg"
44073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $arg in
44093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -all-static)
44103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$link_static_flag"; then
44113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # See comment for -static flag below, for more details.
44123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append compile_command " $link_static_flag"
44133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append finalize_command " $link_static_flag"
44143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
44153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -allow-undefined)
44193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# FIXME: remove this flag sometime in the future.
44203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -avoid-version)
44243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	avoid_version=yes
44253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -dlopen)
44293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=dlfiles
44303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -dlpreopen)
44343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=dlprefiles
44353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -export-dynamic)
44393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	export_dynamic=yes
44403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -export-symbols | -export-symbols-regex)
44443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
44473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "X$arg" = "X-export-symbols"; then
44483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=expsyms
44493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
44503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=expsyms_regex
44513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
44523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -framework)
44563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=framework
44573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -inst-prefix-dir)
44613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=inst_prefix
44623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # so, if we see these flags be careful not to treat them like -L
44673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -L[A-Z][A-Z]*:*)
44683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $with_gcc/$host in
44693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	no/*-*-irix* | /*-*-irix*)
44703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append compile_command " $arg"
44713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_append finalize_command " $arg"
44723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
44733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
44743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
44753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
44763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
44773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -L*)
44783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname '-L' '' "$arg"
44793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dir=$func_stripname_result
44803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$dir"; then
44813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$#" -gt 0; then
44823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "require no space between \`-L' and \`$1'"
44833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
44843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "need path for \`-L' option"
44853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
44863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
44873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# We need an absolute path.
44883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $dir in
44893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	[\\/]* | [A-Za-z]:[\\/]*) ;;
44903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
44913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  absdir=`cd "$dir" && pwd`
44923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -z "$absdir" && \
44933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dir="$absdir"
44953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
44963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
44973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case "$deplibs " in
44983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" -L$dir "*) ;;
44993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
45003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs="$deplibs -L$dir"
45013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lib_search_path="$lib_search_path $dir"
45023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
45033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
45043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
45053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case :$dllsearchpath: in
45083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *":$dir:"*) ;;
45093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ::) dllsearchpath=$dir;;
45103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) dllsearchpath="$dllsearchpath:$dir";;
45113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
45123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case :$dllsearchpath: in
45133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *":$testbindir:"*) ;;
45143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ::) dllsearchpath=$testbindir;;
45153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
45173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
45183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
45193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
45223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -l*)
45233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host in
45253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # These systems don't actually have a C or math library (as such)
45273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
45283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
45293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-os2*)
45303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # These systems don't actually have a C library (as such)
45313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$arg" = "X-lc" && continue
45323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
45333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Do not include libc due to us having libc/libc_r.
45353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$arg" = "X-lc" && continue
45363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
45373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-rhapsody* | *-*-darwin1.[012])
45383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Rhapsody C and math libraries are in the System framework
45393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplibs System.ltframework"
45403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
45413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
45423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-sco3.2v5* | *-*-sco5v6*)
45433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Causes problems with __ctype
45443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$arg" = "X-lc" && continue
45453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
45463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Compiler inserts libc in the correct place for threads to work
45483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$arg" = "X-lc" && continue
45493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
45503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
45513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif test "X$arg" = "X-lc_r"; then
45523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 case $host in
45533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   # Do not include libc_r directly, use -pthread flag.
45553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   continue
45563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   ;;
45573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 esac
45583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
45593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs="$deplibs $arg"
45603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
45633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -module)
45643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	module=yes
45653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
45683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # classes, name mangling, and exception handling.
45703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Darwin uses the -arch flag to determine output architecture.
45713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -model|-arch|-isysroot)
45723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compiler_flags="$compiler_flags $arg"
45733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_append compile_command " $arg"
45743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_append finalize_command " $arg"
45753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=xcompiler
45763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
45793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compiler_flags="$compiler_flags $arg"
45813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_append compile_command " $arg"
45823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_append finalize_command " $arg"
45833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case "$new_inherited_linker_flags " in
45843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $arg "*) ;;
45853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
45873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
45903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -multi_module)
45913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	single_module="${wl}-multi_module"
45923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
45953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -no-fast-install)
45963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fast_install=no
45973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
45983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
45993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -no-install)
46013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
46023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # The PATH hackery in wrapper scripts is required on Windows
46043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # and Darwin in order for the loader to find any dlls it needs.
46053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_warning "\`-no-install' is ignored for $host"
46063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_warning "assuming \`-no-fast-install' instead"
46073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fast_install=no
46083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
46093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) no_install=yes ;;
46103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
46113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -no-undefined)
46153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	allow_undefined=no
46163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -objectlist)
46203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=objectlist
46213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -o) prev=output ;;
46253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -precious-files-regex)
46273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=precious_regex
46283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -release)
46323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=release
46333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -rpath)
46373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=rpath
46383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -R)
46423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=xrpath
46433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -R*)
46473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname '-R' '' "$arg"
46483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dir=$func_stripname_result
46493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# We need an absolute path.
46503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $dir in
46513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	[\\/]* | [A-Za-z]:[\\/]*) ;;
46523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
46533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "only absolute run-paths are allowed"
46543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
46553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
46563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case "$xrpath " in
46573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" $dir "*) ;;
46583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) xrpath="$xrpath $dir" ;;
46593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
46603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -shared)
46643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# The effects of -shared are defined in a previous loop.
46653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -shrext)
46693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=shrext
46703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -static | -static-libtool-libs)
46743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# The effects of -static are defined in a previous loop.
46753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# We used to do the same as -all-static on platforms that
46763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# didn't have a PIC flag, but the assumption that the effects
46773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# would be equivalent was wrong.  It would break on at least
46783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Digital Unix and AIX.
46793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -thread-safe)
46833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	thread_safe=yes
46843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -version-info)
46883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=vinfo
46893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -version-number)
46933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=vinfo
46943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	vinfo_number=yes
46953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
46963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
46973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
46983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -weak)
46993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        prev=weak
47003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
47013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -Wc,*)
47043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname '-Wc,' '' "$arg"
47053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	args=$func_stripname_result
47063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg=
47073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	save_ifs="$IFS"; IFS=','
47083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for flag in $args; do
47093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  IFS="$save_ifs"
47103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_quote_for_eval "$flag"
47113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  arg="$arg $wl$func_quote_for_eval_result"
47123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
47143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	IFS="$save_ifs"
47153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname ' ' '' "$arg"
47163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg=$func_stripname_result
47173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -Wl,*)
47203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname '-Wl,' '' "$arg"
47213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	args=$func_stripname_result
47223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg=
47233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	save_ifs="$IFS"; IFS=','
47243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for flag in $args; do
47253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  IFS="$save_ifs"
47263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          func_quote_for_eval "$flag"
47273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  arg="$arg $wl$func_quote_for_eval_result"
47283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linker_flags="$linker_flags $func_quote_for_eval_result"
47303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
47313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	IFS="$save_ifs"
47323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname ' ' '' "$arg"
47333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg=$func_stripname_result
47343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -Xcompiler)
47373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=xcompiler
47383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
47393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -Xlinker)
47423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=xlinker
47433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
47443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -XCClinker)
47473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	prev=xcclinker
47483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
47493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -msg_* for osf cc
47523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -msg_*)
47533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_quote_for_eval "$arg"
47543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg="$func_quote_for_eval_result"
47553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # +DA*, +DD* enable 64-bit mode on the HP compiler
47613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -q* pass through compiler args for the IBM compiler
47623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -m*, -t[45]*, -txscale* pass through architecture-specific
47633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # compiler args for GCC
47643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -F/path gives path to uninstalled frameworks, gcc on darwin
47653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # @file GCC response files
47673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_quote_for_eval "$arg"
47703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg="$func_quote_for_eval_result"
47713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_append compile_command " $arg"
47723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_append finalize_command " $arg"
47733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        compiler_flags="$compiler_flags $arg"
47743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        continue
47753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
47763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Some other compiler flag.
47783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -* | +*)
47793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        func_quote_for_eval "$arg"
47803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg="$func_quote_for_eval_result"
47813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.$objext)
47843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# A standard object.
47853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	objs="$objs $arg"
47863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
47873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.lo)
47893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# A libtool-controlled object.
47903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Check to see that this really is a libtool object.
47923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if func_lalib_unsafe_p "$arg"; then
47933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  pic_object=
47943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  non_pic_object=
47953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Read the .lo file
47973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source "$arg"
47983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
47993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$pic_object" ||
48003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test -z "$non_pic_object" ||
48013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$pic_object" = none &&
48023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$non_pic_object" = none; then
48033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "cannot find name of object for \`$arg'"
48043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
48053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Extract subdirectory from the argument.
48073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_dirname "$arg" "/" ""
48083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  xdir="$func_dirname_result"
48093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$pic_object" != none; then
48113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Prepend the subdirectory the object is found in.
48123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    pic_object="$xdir$pic_object"
48133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$prev" = dlfiles; then
48153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		dlfiles="$dlfiles $pic_object"
48173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		prev=
48183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		continue
48193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
48203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# If libtool objects are unsupported, then we need to preload.
48213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		prev=dlprefiles
48223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
48233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
48243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # CHECK ME:  I think I busted this.  -Ossama
48263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$prev" = dlprefiles; then
48273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Preload the old-style object.
48283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlprefiles="$dlprefiles $pic_object"
48293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      prev=
48303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
48313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # A PIC object.
48333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append libobjs " $pic_object"
48343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    arg="$pic_object"
48353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
48363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Non-PIC object.
48383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$non_pic_object" != none; then
48393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Prepend the subdirectory the object is found in.
48403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    non_pic_object="$xdir$non_pic_object"
48413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # A standard non-PIC object
48433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append non_pic_objects " $non_pic_object"
48443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$pic_object" || test "$pic_object" = none ; then
48453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      arg="$non_pic_object"
48463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
48473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
48483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # If the PIC object exists, use it instead.
48493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # $xdir was prepended to $pic_object above.
48503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    non_pic_object="$pic_object"
48513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append non_pic_objects " $non_pic_object"
48523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
48533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
48543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Only an error if not doing a dry-run.
48553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if $opt_dry_run; then
48563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Extract subdirectory from the argument.
48573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_dirname "$arg" "/" ""
48583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    xdir="$func_dirname_result"
48593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_lo2o "$arg"
48613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    pic_object=$xdir$objdir/$func_lo2o_result
48623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    non_pic_object=$xdir$func_lo2o_result
48633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append libobjs " $pic_object"
48643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append non_pic_objects " $non_pic_object"
48653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
48663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "\`$arg' is not a valid libtool object"
48673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
48683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
48693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
48703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.$libext)
48723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# An archive.
48733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs="$deplibs $arg"
48743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	old_deplibs="$old_deplibs $arg"
48753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
48763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
48773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.la)
48793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# A libtool-controlled library.
48803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$prev" = dlfiles; then
48823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # This library was specified with -dlopen.
48833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dlfiles="$dlfiles $arg"
48843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
48853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif test "$prev" = dlprefiles; then
48863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # The library was specified with -dlpreopen.
48873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dlprefiles="$dlprefiles $arg"
48883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prev=
48893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
48903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs="$deplibs $arg"
48913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
48923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
48933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
48943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
48953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Some other compiler argument.
48963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
48973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Unknown arguments in both finalize_command and compile_command need
48983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# to be aesthetically quoted because they are evaled later.
48993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_quote_for_eval "$arg"
49003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	arg="$func_quote_for_eval_result"
49013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
49023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac # arg
49033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now actually substitute the argument into the commands.
49053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$arg"; then
49063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_append compile_command " $arg"
49073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_append finalize_command " $arg"
49083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
49093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done # argument parsing loop
49103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -n "$prev" && \
49123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "the \`$prevarg' option requires an argument"
49133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval arg=\"$export_dynamic_flag_spec\"
49163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_append compile_command " $arg"
49173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_append finalize_command " $arg"
49183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
49193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    oldlibs=
49213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # calculate the name of the file, without its directory
49223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_basename "$output"
49233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    outputname="$func_basename_result"
49243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libobjs_save="$libobjs"
49253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test -n "$shlibpath_var"; then
49273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # get the directories listed in $shlibpath_var
49283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    else
49303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      shlib_search_path=
49313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
49323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_dirname "$output" "/" ""
49363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    output_objdir="$func_dirname_result$objdir"
49373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Create the object directory.
49383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_mkdir_p "$output_objdir"
49393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Determine the type of output
49413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $output in
49423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    "")
49433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "you must specify an output file"
49443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
49453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.$libext) linkmode=oldlib ;;
49463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.lo | *.$objext) linkmode=obj ;;
49473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.la) linkmode=lib ;;
49483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *) linkmode=prog ;; # Anything else should be a program.
49493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
49503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    specialdeplibs=
49523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libs=
49543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Find all interdependent deplibs by searching for libraries
49553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # that are linked more than once (e.g. -la -lb -la)
49563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for deplib in $deplibs; do
49573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if $opt_duplicate_deps ; then
49583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case "$libs " in
49593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
49613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
49623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      libs="$libs $deplib"
49633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
49643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$linkmode" = lib; then
49663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Compute libraries that are listed more than once in $predeps
49693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # $postdeps and mark them as special (i.e., whose duplicates are
49703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # not to be eliminated).
49713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      pre_post_deps=
49723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if $opt_duplicate_compiler_generated_deps; then
49733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for pre_post_dep in $predeps $postdeps; do
49743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$pre_post_deps " in
49753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
49773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  pre_post_deps="$pre_post_deps $pre_post_dep"
49783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
49793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
49803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      pre_post_deps=
49813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
49823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    deplibs=
49843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    newdependency_libs=
49853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    newlib_search_path=
49863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    need_relink=no # whether we're linking any uninstalled libtool libraries
49873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    notinst_deplibs= # not-installed libtool libraries
49883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    notinst_path= # paths that contain not-installed libtool libraries
49893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
49903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $linkmode in
49913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lib)
49923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	passes="conv dlpreopen link"
49933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for file in $dlfiles $dlprefiles; do
49943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $file in
49953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.la) ;;
49963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
49973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
49993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
50003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
50013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
50023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    prog)
50033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compile_deplibs=
50043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	finalize_deplibs=
50053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	alldeplibs=no
50063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	newdlfiles=
50073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	newdlprefiles=
50083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	passes="conv scan dlopen dlpreopen link"
50093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
50103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *)  passes="conv"
50113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
50123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
50133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
50143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for pass in $passes; do
50153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # The preopen pass in lib mode reverses $deplibs; put it back here
50163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # so that -L comes before libs that need it for instance...
50173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$linkmode,$pass" = "lib,link"; then
50183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	## FIXME: Find the place where the list is rebuilt in the wrong
50193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	##        order, and fix it there properly
50203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        tmp_deplibs=
50213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for deplib in $deplibs; do
50223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_deplibs="$deplib $tmp_deplibs"
50233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
50243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs="$tmp_deplibs"
50253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
50263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
50273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$linkmode,$pass" = "lib,link" ||
50283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 test "$linkmode,$pass" = "prog,scan"; then
50293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libs="$deplibs"
50303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs=
50313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
50323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$linkmode" = prog; then
50333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $pass in
50343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlopen) libs="$dlfiles" ;;
50353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlpreopen) libs="$dlprefiles" ;;
50363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
50373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
50383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
50393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Collect and forward deplibs of preopened libtool libs
50413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for lib in $dlprefiles; do
50423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Ignore non-libtool-libs
50433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dependency_libs=
50443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $lib in
50453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.la)	func_source "$lib" ;;
50463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
50473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
50483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Collect preopened libtool deplibs, except any this library
50493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # has declared as weak libs
50503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for deplib in $dependency_libs; do
50513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $weak_libs " in
50533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $deplib_base "*) ;;
50543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) deplibs="$deplibs $deplib" ;;
50553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
50563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
50573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
50583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libs="$dlprefiles"
50593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
50603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$pass" = dlopen; then
50613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Collect dlpreopened libraries
50623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	save_deplibs="$deplibs"
50633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs=
50643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
50653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
50663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for deplib in $libs; do
50673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	lib=
50683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	found=no
50693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $deplib in
50703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode,$pass" = "prog,link"; then
50723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_deplibs="$deplib $compile_deplibs"
50733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_deplibs="$deplib $finalize_deplibs"
50743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
50753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compiler_flags="$compiler_flags $deplib"
50763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkmode" = lib ; then
50773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case "$new_inherited_linker_flags " in
50783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    *" $deplib "*) ;;
50793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
50813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
50823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
50833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
50843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
50853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-l*)
50863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "\`-l' is ignored for archives/objects"
50883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
50893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
50903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_stripname '-l' '' "$deplib"
50913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  name=$func_stripname_result
50923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode" = lib; then
50933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
50953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
50973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for searchdir in $searchdirs; do
50983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for search_ext in .la $std_shrext .so .a; do
50993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Search the libtool library
51003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      lib="$searchdir/lib${name}${search_ext}"
51013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -f "$lib"; then
51023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test "$search_ext" = ".la"; then
51033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  found=yes
51043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
51053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  found=no
51063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
51073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		break 2
51083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
51093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
51103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
51113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$found" != yes; then
51123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # deplib doesn't seem to be a libtool library
51133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkmode,$pass" = "prog,link"; then
51143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      compile_deplibs="$deplib $compile_deplibs"
51153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      finalize_deplibs="$deplib $finalize_deplibs"
51163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
51173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      deplibs="$deplib $deplibs"
51183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
51203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
51213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else # deplib is a libtool library
51223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # We need to do some special things here, and not later.
51243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case " $predeps $postdeps " in
51263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $deplib "*)
51273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if func_lalib_p "$lib"; then
51283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  library_names=
51293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  old_library=
51303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_source "$lib"
51313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  for l in $old_library $library_names; do
51323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    ll="$l"
51333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  done
51343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test "X$ll" = "X$old_library" ; then # only static version available
51353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    found=no
51363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    func_dirname "$lib" "" "."
51373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    ladir="$func_dirname_result"
51383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    lib=$ladir/$old_library
51393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    if test "$linkmode,$pass" = "prog,link"; then
51403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      compile_deplibs="$deplib $compile_deplibs"
51413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      finalize_deplibs="$deplib $finalize_deplibs"
51423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    else
51433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      deplibs="$deplib $deplibs"
51443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    fi
51463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    continue
51473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
51483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
51493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
51503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) ;;
51513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
51523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
51533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
51543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;; # -l
51553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.ltframework)
51563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode,$pass" = "prog,link"; then
51573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_deplibs="$deplib $compile_deplibs"
51583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_deplibs="$deplib $finalize_deplibs"
51593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
51603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplib $deplibs"
51613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkmode" = lib ; then
51623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case "$new_inherited_linker_flags " in
51633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    *" $deplib "*) ;;
51643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
51663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
51673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
51683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
51693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
51703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-L*)
51713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $linkmode in
51723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lib)
51733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplib $deplibs"
51743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "$pass" = conv && continue
51753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdependency_libs="$deplib $newdependency_libs"
51763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '-L' '' "$deplib"
51773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newlib_search_path="$newlib_search_path $func_stripname_result"
51783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
51793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prog)
51803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$pass" = conv; then
51813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      deplibs="$deplib $deplibs"
51823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      continue
51833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
51843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$pass" = scan; then
51853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      deplibs="$deplib $deplibs"
51863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
51873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      compile_deplibs="$deplib $compile_deplibs"
51883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      finalize_deplibs="$deplib $finalize_deplibs"
51893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
51903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '-L' '' "$deplib"
51913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newlib_search_path="$newlib_search_path $func_stripname_result"
51923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
51933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
51943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "\`-L' is ignored for archives/objects"
51953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
51963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac # linkmode
51973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
51983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;; # -L
51993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-R*)
52003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$pass" = link; then
52013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '-R' '' "$deplib"
52023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dir=$func_stripname_result
52033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Make sure the xrpath contains only unique directories.
52043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$xrpath " in
52053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $dir "*) ;;
52063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) xrpath="$xrpath $dir" ;;
52073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
52083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
52093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs="$deplib $deplibs"
52103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
52113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
52123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.la) lib="$deplib" ;;
52133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.$libext)
52143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$pass" = conv; then
52153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplib $deplibs"
52163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
52173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
52183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $linkmode in
52193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lib)
52203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Linking convenience modules into shared libraries is allowed,
52213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # but linking other static libraries is non-portable.
52223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $dlpreconveniencelibs " in
52233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $deplib "*) ;;
52243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
52253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      valid_a_lib=no
52263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $deplibs_check_method in
52273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		match_pattern*)
52283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  set dummy $deplibs_check_method; shift
52293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    | $EGREP "$match_pattern_regex" > /dev/null; then
52323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    valid_a_lib=yes
52333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
52343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
52353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		pass_all)
52363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  valid_a_lib=yes
52373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
52383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
52393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$valid_a_lib" != yes; then
52403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO
52413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** I have the capability to make that library automatically link in when"
52433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** you link to this library.  But I can only do this if you have a"
52443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** shared version of the library, which you do not appear to have"
52453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** that it is just a static archive that I should not use here."
52473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
52483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO
52493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** Warning: Linking the shared library $output against the"
52503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** static library $deplib is not portable!"
52513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		deplibs="$deplib $deplibs"
52523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
52533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
52543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
52553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
52563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
52573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  prog)
52583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$pass" != link; then
52593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      deplibs="$deplib $deplibs"
52603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
52613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      compile_deplibs="$deplib $compile_deplibs"
52623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      finalize_deplibs="$deplib $finalize_deplibs"
52633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
52643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
52653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
52663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac # linkmode
52673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;; # *.$libext
52683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*.lo | *.$objext)
52693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$pass" = conv; then
52703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplib $deplibs"
52713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  elif test "$linkmode" = prog; then
52723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # If there is no dlopen support or we're linking statically,
52743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # we need to preload.
52753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdlprefiles="$newdlprefiles $deplib"
52763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      compile_deplibs="$deplib $compile_deplibs"
52773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      finalize_deplibs="$deplib $finalize_deplibs"
52783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
52793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdlfiles="$newdlfiles $deplib"
52803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
52813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
52823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
52833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
52843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	%DEPLIBS%)
52853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  alldeplibs=yes
52863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
52873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
52883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac # case $deplib
52893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
52903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$found" = yes || test -f "$lib"; then :
52913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
52923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
52943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
52953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Check to see that this really is a libtool archive.
52963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_lalib_unsafe_p "$lib" \
52973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  || func_fatal_error "\`$lib' is not a valid libtool archive"
52983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
52993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_dirname "$lib" "" "."
53003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	ladir="$func_dirname_result"
53013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlname=
53033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlopen=
53043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dlpreopen=
53053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libdir=
53063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	library_names=
53073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	old_library=
53083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	inherited_linker_flags=
53093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If the library was installed with an old release of libtool,
53103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# it will not redefine variables installed, or shouldnotlink
53113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	installed=yes
53123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	shouldnotlink=no
53133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	avoidtemprpath=
53143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Read the .la file
53173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_source "$lib"
53183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Convert "-framework foo" to "foo.ltframework"
53203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$inherited_linker_flags"; then
53213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $new_inherited_linker_flags " in
53243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $tmp_inherited_linker_flag "*) ;;
53253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
53273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
53283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
53293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$linkmode,$pass" = "lib,link" ||
53313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   test "$linkmode,$pass" = "prog,scan" ||
53323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
53363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$pass" = conv; then
53383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Only check for convenience libraries
53393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs="$lib $deplibs"
53403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$libdir"; then
53413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$old_library"; then
53423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_fatal_error "cannot find name of link library for \`$lib'"
53433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
53443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # It is a libtool convenience library, so add in its objects.
53453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    convenience="$convenience $ladir/$objdir/$old_library"
53463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "\`$lib' is not a convenience library"
53493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
53503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_libs=
53513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for deplib in $dependency_libs; do
53523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplib $deplibs"
53533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if $opt_duplicate_deps ; then
53543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$tmp_libs " in
53553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
53573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
53583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    tmp_libs="$tmp_libs $deplib"
53593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
53603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
53613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # $pass = conv
53623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Get the name of the library we link against.
53653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	linklib=
53663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for l in $old_library $library_names; do
53673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linklib="$l"
53683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
53693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$linklib"; then
53703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "cannot find name of link library for \`$lib'"
53713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
53723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# This library was specified with -dlopen.
53743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$pass" = dlopen; then
53753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$libdir"; then
53763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
53783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$dlname" ||
53793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$dlopen_support" != yes ||
53803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$build_libtool_libs" = no; then
53813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # If there is no dlname, no dlopen support or we're linking
53823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # statically, we need to preload.  We also need to preload any
53833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # dependent libraries so libltdl's deplib preloader doesn't
53843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # bomb out in the load deplibs phase.
53853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlprefiles="$dlprefiles $lib $dependency_libs"
53863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
53873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlfiles="$newdlfiles $lib"
53883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
53893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
53903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # $pass = dlopen
53913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
53923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# We need an absolute path.
53933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $ladir in
53943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
53963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  abs_ladir=`cd "$ladir" && pwd`
53973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$abs_ladir"; then
53983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "cannot determine absolute directory name of \`$ladir'"
53993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "passing it literally to the linker, although it might fail"
54003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    abs_ladir="$ladir"
54013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
54033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
54043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_basename "$lib"
54053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	laname="$func_basename_result"
54063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Find the relevant object directory and library name.
54083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "X$installed" = Xyes; then
54093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "library \`$lib' was moved."
54113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dir="$ladir"
54123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    absdir="$abs_ladir"
54133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    libdir="$abs_ladir"
54143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
54153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dir="$libdir"
54163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    absdir="$libdir"
54173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
54203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dir="$ladir"
54223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    absdir="$abs_ladir"
54233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Remove this search path later
54243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    notinst_path="$notinst_path $abs_ladir"
54253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
54263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dir="$ladir/$objdir"
54273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    absdir="$abs_ladir/$objdir"
54283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Remove this search path later
54293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    notinst_path="$notinst_path $abs_ladir"
54303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # $installed = yes
54323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname 'lib' '.la' "$laname"
54333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	name=$func_stripname_result
54343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# This library was specified with -dlpreopen.
54363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$pass" = dlpreopen; then
54373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$libdir" && test "$linkmode" = prog; then
54383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # are required to link).
54423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$old_library"; then
54433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlprefiles="$newdlprefiles $dir/$old_library"
54443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Keep a list of preopened convenience libraries to check
54453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # that they are being used correctly in the link pass.
54463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test -z "$libdir" && \
54473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  elif test -n "$dlname"; then
54503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlprefiles="$newdlprefiles $dir/$dlname"
54513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
54523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlprefiles="$newdlprefiles $dir/$linklib"
54533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # $pass = dlpreopen
54553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$libdir"; then
54573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Link the convenience library
54583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode" = lib; then
54593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$dir/$old_library $deplibs"
54603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  elif test "$linkmode,$pass" = "prog,link"; then
54613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_deplibs="$dir/$old_library $compile_deplibs"
54623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
54643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$lib $deplibs" # used for prog,scan pass
54653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
54673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
54683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$linkmode" = prog && test "$pass" != link; then
54713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newlib_search_path="$newlib_search_path $ladir"
54723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs="$lib $deplibs"
54733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linkalldeplibs=no
54753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$build_libtool_libs" = no; then
54773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    linkalldeplibs=yes
54783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
54793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
54803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_libs=
54813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for deplib in $dependency_libs; do
54823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $deplib in
54833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -L*) func_stripname '-L' '' "$deplib"
54843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	         newlib_search_path="$newlib_search_path $func_stripname_result"
54853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 ;;
54863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
54873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Need to link against all dependency_libs?
54883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkalldeplibs" = yes; then
54893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      deplibs="$deplib $deplibs"
54903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
54913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Need to hardcode shared library paths
54923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # or/and link against static libraries
54933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdependency_libs="$deplib $newdependency_libs"
54943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
54953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if $opt_duplicate_deps ; then
54963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$tmp_libs " in
54973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
54983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
54993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
55003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    tmp_libs="$tmp_libs $deplib"
55013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done # for deplib
55023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  continue
55033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # $linkmode = prog...
55043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
55053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$linkmode,$pass" = "prog,link"; then
55063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$library_names" &&
55073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     { { test "$prefer_static_libs" = no ||
55083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       test -z "$old_library"; }; then
55103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # We need to hardcode the library path
55113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Make sure the rpath contains only unique directories.
55133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$temp_rpath:" in
55143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *"$absdir:"*) ;;
55153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) temp_rpath="$temp_rpath$absdir:" ;;
55163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
55173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
55183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
55193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Hardcode the library path.
55203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Skip directories that are in the system default run-time
55213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # search path.
55223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $sys_lib_dlsearch_path " in
55233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $absdir "*) ;;
55243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
55253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$compile_rpath " in
55263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $absdir "*) ;;
55273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) compile_rpath="$compile_rpath $absdir"
55283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
55293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
55303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
55313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $sys_lib_dlsearch_path " in
55323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $libdir "*) ;;
55333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
55343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$finalize_rpath " in
55353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $libdir "*) ;;
55363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) finalize_rpath="$finalize_rpath $libdir"
55373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
55383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
55393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
55403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi # $linkmode,$pass = prog,link...
55413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
55423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$alldeplibs" = yes &&
55433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     { test "$deplibs_check_method" = pass_all ||
55443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       { test "$build_libtool_libs" = yes &&
55453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 test -n "$library_names"; }; }; then
55463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # We only need to search for static libraries
55473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    continue
55483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
55493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
55503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
55513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	link_static=no # Whether the deplib will be linked statically
55523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	use_static_libs=$prefer_static_libs
55533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$use_static_libs" = built && test "$installed" = yes; then
55543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  use_static_libs=no
55553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
55563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$library_names" &&
55573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host in
55593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *cygwin* | *mingw* | *cegcc*)
55603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # No point in relinking DLLs because paths are not encoded
55613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      notinst_deplibs="$notinst_deplibs $lib"
55623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      need_relink=no
55633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
55643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
55653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$installed" = no; then
55663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      notinst_deplibs="$notinst_deplibs $lib"
55673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      need_relink=yes
55683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
55693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
55703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
55713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # This is a shared library
55723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
55733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Warn about portability, can't link against -module's on some
55743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # systems (darwin).  Don't bleat about dlopened modules though!
55753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dlopenmodule=""
55763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for dlpremoduletest in $dlprefiles; do
55773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "X$dlpremoduletest" = "X$lib"; then
55783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      dlopenmodule="$dlpremoduletest"
55793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      break
55803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
55813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
55823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO
55843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkmode" = prog; then
55853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
55873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
55893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** $linklib is not portable!"
55903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
55913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode" = lib &&
55923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$hardcode_into_libs" = yes; then
55933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Hardcode the library path.
55943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Skip directories that are in the system default run-time
55953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # search path.
55963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $sys_lib_dlsearch_path " in
55973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $absdir "*) ;;
55983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
55993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$compile_rpath " in
56003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $absdir "*) ;;
56013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) compile_rpath="$compile_rpath $absdir"
56023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
56033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
56043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
56053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $sys_lib_dlsearch_path " in
56063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $libdir "*) ;;
56073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
56083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$finalize_rpath " in
56093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $libdir "*) ;;
56103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) finalize_rpath="$finalize_rpath $libdir"
56113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
56123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
56133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
56143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
56153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
56163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$old_archive_from_expsyms_cmds"; then
56173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # figure out the soname
56183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    set dummy $library_names
56193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    shift
56203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    realname="$1"
56213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    shift
56223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    libname=`eval "\\$ECHO \"$libname_spec\""`
56233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # use dlname if we got it. it's perfectly good, no?
56243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$dlname"; then
56253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      soname="$dlname"
56263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    elif test -n "$soname_spec"; then
56273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # bleh windows
56283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $host in
56293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *cygwin* | mingw* | *cegcc*)
56303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        func_arith $current - $age
56313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		major=$func_arith_result
56323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		versuffix="-$major"
56333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
56343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
56353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval soname=\"$soname_spec\"
56363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
56373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      soname="$realname"
56383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
56393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
56403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Make a new name for the extract_expsyms_cmds to use
56413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    soroot="$soname"
56423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_basename "$soroot"
56433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    soname="$func_basename_result"
56443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname 'lib' '.dll' "$soname"
56453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newlib=libimp-$func_stripname_result.a
56463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
56473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # If the library has no export list, then create one now
56483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -f "$output_objdir/$soname-def"; then :
56493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
56503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_verbose "extracting exported symbol list from \`$soname'"
56513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
56533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
56543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Create $newlib
56553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -f "$output_objdir/$newlib"; then :; else
56563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_verbose "generating import library for \`$soname'"
56573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
56593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # make sure the library variables are pointing to the new library
56603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dir=$output_objdir
56613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    linklib=$newlib
56623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi # test -n "$old_archive_from_expsyms_cmds"
56633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
56643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode" = prog || test "$mode" != relink; then
56653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    add_shlibpath=
56663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    add_dir=
56673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    add=
56683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lib_linked=yes
56693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $hardcode_action in
56703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    immediate | unsupported)
56713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$hardcode_direct" = no; then
56723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="$dir/$linklib"
56733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case $host in
56743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    *-*-unixware7*) add_dir="-L$dir" ;;
56783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *-*-darwin* )
56793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    # if the lib is a (non-dlopened) module then we can not
56803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    # link against it, someone is ignoring the earlier warnings
56813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    if /usr/bin/file -L $add 2> /dev/null |
56823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			 $GREP ": [^:]* bundle" >/dev/null ; then
56833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      if test "X$dlopenmodule" != "X$lib"; then
56843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			if test -z "$old_library" ; then
56863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  $ECHO
56873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  $ECHO "*** And there doesn't seem to be a static archive available"
56883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  $ECHO "*** The link will probably fail, sorry"
56893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			else
56903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			  add="$dir/$old_library"
56913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			fi
56923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      elif test -n "$old_library"; then
56933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			add="$dir/$old_library"
56943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      fi
56953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    fi
56963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
56973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      elif test "$hardcode_minus_L" = no; then
56983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case $host in
56993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*-*-sunos*) add_shlibpath="$dir" ;;
57003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
57013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add_dir="-L$dir"
57023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="-l$name"
57033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      elif test "$hardcode_shlibpath_var" = no; then
57043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add_shlibpath="$dir"
57053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="-l$name"
57063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
57073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		lib_linked=no
57083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
57093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
57103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink)
57113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$hardcode_direct" = yes &&
57123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	         test "$hardcode_direct_absolute" = no; then
57133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="$dir/$linklib"
57143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      elif test "$hardcode_minus_L" = yes; then
57153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add_dir="-L$dir"
57163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Try looking first in the location we're being installed to.
57173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test -n "$inst_prefix_dir"; then
57183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  case $libdir in
57193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    [\\/]*)
57203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      ;;
57223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  esac
57233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
57243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="-l$name"
57253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      elif test "$hardcode_shlibpath_var" = yes; then
57263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add_shlibpath="$dir"
57273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="-l$name"
57283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
57293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		lib_linked=no
57303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
57313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
57323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) lib_linked=no ;;
57333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
57343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
57353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$lib_linked" != yes; then
57363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_fatal_configuration "unsupported hardcode properties"
57373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
57383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
57393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$add_shlibpath"; then
57403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case :$compile_shlibpath: in
57413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *":$add_shlibpath:"*) ;;
57423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
57443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
57453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkmode" = prog; then
57463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
57493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add" && deplibs="$add $deplibs"
57513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$hardcode_direct" != yes &&
57523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 test "$hardcode_minus_L" != yes &&
57533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 test "$hardcode_shlibpath_var" = yes; then
57543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case :$finalize_shlibpath: in
57553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*":$libdir:"*) ;;
57563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
57583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
57593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
57603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
57613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
57623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$linkmode" = prog || test "$mode" = relink; then
57633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    add_shlibpath=
57643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    add_dir=
57653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    add=
57663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Finalize command for both is simple: just hardcode it.
57673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$hardcode_direct" = yes &&
57683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       test "$hardcode_direct_absolute" = no; then
57693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      add="$libdir/$linklib"
57703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    elif test "$hardcode_minus_L" = yes; then
57713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      add_dir="-L$libdir"
57723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      add="-l$name"
57733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    elif test "$hardcode_shlibpath_var" = yes; then
57743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case :$finalize_shlibpath: in
57753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *":$libdir:"*) ;;
57763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
57783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      add="-l$name"
57793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    elif test "$hardcode_automatic" = yes; then
57803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$inst_prefix_dir" &&
57813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="$inst_prefix_dir$libdir/$linklib"
57833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
57843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		add="$libdir/$linklib"
57853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
57863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
57873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # We cannot seem to hardcode it, guess we'll fake it.
57883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      add_dir="-L$libdir"
57893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Try looking first in the location we're being installed to.
57903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$inst_prefix_dir"; then
57913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case $libdir in
57923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  [\\/]*)
57933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    ;;
57953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
57963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
57973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      add="-l$name"
57983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
57993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
58003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$linkmode" = prog; then
58013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
58043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$add" && deplibs="$add $deplibs"
58063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
58073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
58083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif test "$linkmode" = prog; then
58093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # is not unsupported.  This is valid on all known static and
58113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # shared platforms.
58123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$hardcode_direct" != unsupported; then
58133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test -n "$old_library" && linklib="$old_library"
58143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_deplibs="$dir/$linklib $compile_deplibs"
58153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
58173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
58203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif test "$build_libtool_libs" = yes; then
58213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Not a shared library
58223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$deplibs_check_method" != pass_all; then
58233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # We're trying link a shared library against a static one
58243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # but the system doesn't support it.
58253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
58263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Just print a warning and add the library to dependency_libs so
58273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # that the program can be linked against the static library.
58283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO
58293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** I have the capability to make that library automatically link in when"
58313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** shared version of the library, which you do not appear to have."
58333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$module" = yes; then
58343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** But as you try to build a module library, libtool will still create "
58353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** a static module, that should work as long as the dlopening application"
58363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -z "$global_symbol_pipe"; then
58383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO
58393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** not find such a program.  So, this module is probably useless."
58423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
58443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$build_old_libs" = no; then
58453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		build_libtool_libs=module
58463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		build_old_libs=yes
58473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
58483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		build_libtool_libs=no
58493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
58503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
58513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
58523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$dir/$old_library $deplibs"
58533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    link_static=yes
58543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
58553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # link shared/static library?
58563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
58573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$linkmode" = lib; then
58583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$dependency_libs" &&
58593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     { test "$hardcode_into_libs" != yes ||
58603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       test "$build_old_libs" = yes ||
58613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       test "$link_static" = yes; }; then
58623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Extract -R from dependency_libs
58633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    temp_deplibs=
58643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for libdir in $dependency_libs; do
58653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $libdir in
58663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      -R*) func_stripname '-R' '' "$libdir"
58673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	           temp_xrpath=$func_stripname_result
58683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   case " $xrpath " in
58693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   *" $temp_xrpath "*) ;;
58703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   *) xrpath="$xrpath $temp_xrpath";;
58713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   esac;;
58723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) temp_deplibs="$temp_deplibs $libdir";;
58733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
58743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
58753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dependency_libs="$temp_deplibs"
58763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
58773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
58783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newlib_search_path="$newlib_search_path $absdir"
58793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Link against this library
58803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # ... and its dependency_libs
58823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_libs=
58833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for deplib in $dependency_libs; do
58843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdependency_libs="$deplib $newdependency_libs"
58853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if $opt_duplicate_deps ; then
58863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$tmp_libs " in
58873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
58893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
58903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    tmp_libs="$tmp_libs $deplib"
58913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
58923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
58933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$link_all_deplibs" != no; then
58943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Add the search paths of all dependency libraries
58953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for deplib in $dependency_libs; do
58963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $deplib in
58973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      -L*) path="$deplib" ;;
58983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *.la)
58993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        func_dirname "$deplib" "" "."
59003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		dir="$func_dirname_result"
59013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# We need an absolute path.
59023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case $dir in
59033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*)
59053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  absdir=`cd "$dir" && pwd`
59063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test -z "$absdir"; then
59073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    func_warning "cannot determine absolute directory name of \`$dir'"
59083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    absdir="$dir"
59093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
59103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ;;
59113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
59123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if $GREP "^installed=no" $deplib > /dev/null; then
59133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case $host in
59143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*-*-darwin*)
59153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  depdepl=
59163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test -n "$deplibrary_names" ; then
59183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    for tmp in $deplibrary_names ; do
59193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      depdepl=$tmp
59203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    done
59213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    if test -f "$absdir/$objdir/$depdepl" ; then
59223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      depdepl="$absdir/$objdir/$depdepl"
59233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                      if test -z "$darwin_install_name"; then
59253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev                      fi
59273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      path=
59303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    fi
59313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
59323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ;;
59333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*)
59343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  path="-L$absdir/$objdir"
59353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ;;
59363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
59373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
59383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  test -z "$libdir" && \
59403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  test "$absdir" != "$libdir" && \
59423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    func_warning "\`$deplib' seems to be moved"
59433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
59443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  path="-L$absdir"
59453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
59463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
59473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
59483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case " $deplibs " in
59493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $path "*) ;;
59503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) deplibs="$path $deplibs" ;;
59513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
59523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
59533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi # link_all_deplibs != no
59543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi # linkmode = lib
59553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done # for deplib in $libs
59563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$pass" = link; then
59573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$linkmode" = "prog"; then
59583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
59613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
59633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
59643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dependency_libs="$newdependency_libs"
59653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$pass" = dlpreopen; then
59663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Link the dlpreopened libraries before other libraries
59673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for deplib in $save_deplibs; do
59683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs="$deplib $deplibs"
59693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
59703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
59713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$pass" != dlopen; then
59723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$pass" != conv; then
59733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Make sure lib_search_path contains only unique directories.
59743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  lib_search_path=
59753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for dir in $newlib_search_path; do
59763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "$lib_search_path " in
59773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $dir "*) ;;
59783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) lib_search_path="$lib_search_path $dir" ;;
59793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
59803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
59813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newlib_search_path=
59823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
59833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
59843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$linkmode,$pass" != "prog,link"; then
59853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  vars="deplibs"
59863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
59873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  vars="compile_deplibs finalize_deplibs"
59883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
59893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for var in $vars dependency_libs; do
59903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add libraries to $var in reverse order
59913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval tmp_libs=\"\$$var\"
59923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  new_libs=
59933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for deplib in $tmp_libs; do
59943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # FIXME: Pedantically, this is the right thing to do, so
59953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    #        that some nasty dependency loop isn't accidentally
59963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    #        broken:
59973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    #new_libs="$deplib $new_libs"
59983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Pragmatically, this seems to cause very few problems in
59993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # practice:
60003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $deplib in
60013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -L*) new_libs="$deplib $new_libs" ;;
60023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -R*) ;;
60033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
60043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # And here is the reason: when a library appears more
60053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # than once as an explicit dependence of a library, or
60063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # is implicitly linked in more than once by the
60073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # compiler, it is considered special, and multiple
60083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # occurrences thereof are not removed.  Compare this
60093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # with having the same library being listed as a
60103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # dependency of multiple other libraries: in this case,
60113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # we know (pedantically, we assume) the library does not
60123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # need to be listed more than once, so we keep only the
60133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # last copy.  This is not always right, but it is rare
60143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # enough that we require users that really mean to play
60153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # such unportable linking tricks to link the library
60163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # using -Wl,-lname, so that libtool does not consider it
60173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # for duplicate removal.
60183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case " $specialdeplibs " in
60193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *)
60213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case " $new_libs " in
60223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*" $deplib "*) ;;
60233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*) new_libs="$deplib $new_libs" ;;
60243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
60253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
60263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
60273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
60283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
60293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
60303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_libs=
60313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for deplib in $new_libs; do
60323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $deplib in
60333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -L*)
60343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case " $tmp_libs " in
60353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $deplib "*) ;;
60363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) tmp_libs="$tmp_libs $deplib" ;;
60373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
60383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
60393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) tmp_libs="$tmp_libs $deplib" ;;
60403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
60413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
60423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval $var=\"$tmp_libs\"
60433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done # for var
60443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
60453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Last step: remove runtime libs from dependency_libs
60463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # (they stay in deplibs)
60473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      tmp_libs=
60483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for i in $dependency_libs ; do
60493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case " $predeps $postdeps $compiler_lib_search_path " in
60503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" $i "*)
60513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  i=""
60523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
60533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
60543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$i" ; then
60553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_libs="$tmp_libs $i"
60563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
60573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
60583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dependency_libs=$tmp_libs
60593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done # for pass
60603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$linkmode" = prog; then
60613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dlfiles="$newdlfiles"
60623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
60633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    if test "$linkmode" = prog || test "$linkmode" = lib; then
60643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dlprefiles="$newdlprefiles"
60653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fi
60663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $linkmode in
60683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    oldlib)
60693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-dlopen' is ignored for archives"
60713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
60723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case " $deplibs" in
60743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *\ -l* | *\ -L*)
60753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
60773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$rpath" && \
60793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-rpath' is ignored for archives"
60803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$xrpath" && \
60823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-R' is ignored for archives"
60833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$vinfo" && \
60853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-version-info/-version-number' is ignored for archives"
60863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$release" && \
60883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-release' is ignored for archives"
60893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$export_symbols$export_symbols_regex" && \
60913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-export-symbols' is ignored for archives"
60923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now set the variables for building old libraries.
60943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      build_libtool_libs=no
60953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      oldlibs="$output"
60963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      objs="$objs$old_deplibs"
60973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
60983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
60993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    lib)
61003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Make sure we only generate libraries of the form `libNAME.la'.
61013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $outputname in
61023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      lib*)
61033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_stripname 'lib' '.la' "$outputname"
61043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	name=$func_stripname_result
61053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval shared_ext=\"$shrext_cmds\"
61063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval libname=\"$libname_spec\"
61073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
61083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
61093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test "$module" = no && \
61103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$need_lib_prefix" != no; then
61133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add the "lib" prefix for modules if required
61143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_stripname '' '.la' "$outputname"
61153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  name=$func_stripname_result
61163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval shared_ext=\"$shrext_cmds\"
61173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval libname=\"$libname_spec\"
61183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
61193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_stripname '' '.la' "$outputname"
61203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  libname=$func_stripname_result
61213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
61223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
61233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
61243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$objs"; then
61263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$deplibs_check_method" != pass_all; then
61273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
61293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO
61303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "*** objects $objs is not portable!"
61323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  libobjs="$libobjs $objs"
61333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
61343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
61353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "$dlself" != no && \
61373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-dlopen self' is ignored for libtool libraries"
61383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      set dummy $rpath
61403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      shift
61413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "$#" -gt 1 && \
61423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "ignoring multiple \`-rpath's for a libtool library"
61433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      install_libdir="$1"
61453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      oldlibs=
61473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -z "$rpath"; then
61483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$build_libtool_libs" = yes; then
61493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Building a libtool convenience library.
61503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Some compilers have problems with a `.al' extension so
61513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # convenience libraries should have the same extension an
61523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # archive normally would.
61533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  build_libtool_libs=convenience
61553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  build_old_libs=yes
61563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
61573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$vinfo" && \
61593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$release" && \
61623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_warning "\`-release' is ignored for convenience libraries"
61633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
61643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Parse the version information argument.
61663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	save_ifs="$IFS"; IFS=':'
61673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	set dummy $vinfo 0 0 0
61683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	shift
61693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	IFS="$save_ifs"
61703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$7" && \
61723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_help "too many parameters to \`-version-info'"
61733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# convert absolute version numbers to libtool ages
61753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# this retains compatibility with .la files and attempts
61763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# to make the code below a bit more comprehensible
61773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
61783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $vinfo_number in
61793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	yes)
61803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  number_major="$1"
61813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  number_minor="$2"
61823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  number_revision="$3"
61833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  #
61843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # There are really only two kinds -- those that
61853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # use the current revision as the major version
61863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # and those that subtract age and use age as
61873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # a minor version.  But, then there is irix
61883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # which has an extra 1 added just for fun
61893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  #
61903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $version_type in
61913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin|linux|osf|windows|none)
61923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $number_major + $number_minor
61933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    current=$func_arith_result
61943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    age="$number_minor"
61953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    revision="$number_revision"
61963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
61973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  freebsd-aout|freebsd-elf|sunos)
61983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    current="$number_major"
61993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    revision="$number_minor"
62003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    age="0"
62013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
62023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  irix|nonstopux)
62033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $number_major + $number_minor
62043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    current=$func_arith_result
62053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    age="$number_minor"
62063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    revision="$number_minor"
62073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lt_irix_increment=no
62083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
62093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
62103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	no)
62123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  current="$1"
62133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  revision="$2"
62143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  age="$3"
62153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
62173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Check that each of the things are valid numbers.
62193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $current in
62203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	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]) ;;
62213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
62223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_error "CURRENT \`$current' must be a nonnegative integer"
62233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "\`$vinfo' is not valid version information"
62243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
62263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $revision in
62283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	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]) ;;
62293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
62303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_error "REVISION \`$revision' must be a nonnegative integer"
62313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "\`$vinfo' is not valid version information"
62323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
62343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $age in
62363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	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]) ;;
62373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
62383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_error "AGE \`$age' must be a nonnegative integer"
62393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "\`$vinfo' is not valid version information"
62403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
62423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$age" -gt "$current"; then
62443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "\`$vinfo' is not valid version information"
62463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
62473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Calculate the version variables.
62493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	major=
62503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	versuffix=
62513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	verstring=
62523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $version_type in
62533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	none) ;;
62543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	darwin)
62563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Like Linux, but with the current version available in
62573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # verstring for coding it into the library header
62583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_arith $current - $age
62593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=.$func_arith_result
62603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix="$major.$age.$revision"
62613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Darwin ld doesn't like 0 for these options...
62623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_arith $current + 1
62633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  minor_current=$func_arith_result
62643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	freebsd-aout)
62693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=".$current"
62703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix=".$current.$revision";
62713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	freebsd-elf)
62743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=".$current"
62753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix=".$current"
62763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
62773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	irix | nonstopux)
62793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "X$lt_irix_increment" = "Xno"; then
62803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $current - $age
62813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
62823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $current - $age + 1
62833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
62843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=$func_arith_result
62853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $version_type in
62873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    nonstopux) verstring_prefix=nonstopux ;;
62883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)         verstring_prefix=sgi ;;
62893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
62903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  verstring="$verstring_prefix$major.$revision"
62913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
62923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add in all the interfaces that we are compatible with.
62933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  loop=$revision
62943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  while test "$loop" -ne 0; do
62953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $revision - $loop
62963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    iface=$func_arith_result
62973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $loop - 1
62983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    loop=$func_arith_result
62993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    verstring="$verstring_prefix$major.$iface:$verstring"
63003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
63013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Before this point, $major must not contain `.'.
63033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=.$major
63043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix="$major.$revision"
63053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	linux)
63083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_arith $current - $age
63093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=.$func_arith_result
63103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix="$major.$age.$revision"
63113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	osf)
63143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_arith $current - $age
63153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=.$func_arith_result
63163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix=".$current.$age.$revision"
63173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  verstring="$current.$age.$revision"
63183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add in all the interfaces that we are compatible with.
63203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  loop=$age
63213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  while test "$loop" -ne 0; do
63223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $current - $loop
63233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    iface=$func_arith_result
63243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $loop - 1
63253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    loop=$func_arith_result
63263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    verstring="$verstring:${iface}.0"
63273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
63283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Make executables depend on our current version.
63303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  verstring="$verstring:${current}.0"
63313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	qnx)
63343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=".$current"
63353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix=".$current"
63363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	sunos)
63393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=".$current"
63403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix=".$current.$revision"
63413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	windows)
63443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Use '-' rather than '.', since we only want one
63453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # extension on DOS 8.3 filesystems.
63463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_arith $current - $age
63473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=$func_arith_result
63483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix="-$major"
63493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
63523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_configuration "unknown library version type \`$version_type'"
63533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
63543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
63553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Clear the version info if we defaulted, and they specified a release.
63573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$vinfo" && test -n "$release"; then
63583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=
63593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $version_type in
63603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  darwin)
63613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # we can't check for "0.0" in archive_cmds due to quoting
63623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # problems, so we reset it completely
63633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    verstring=
63643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
63653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
63663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    verstring="0.0"
63673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
63683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
63693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$need_version" = no; then
63703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    versuffix=
63713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
63723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    versuffix=".0.0"
63733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
63743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
63753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Remove version info from name if versioning should be avoided
63773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$avoid_version" = yes && test "$need_version" = no; then
63783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  major=
63793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  versuffix=
63803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  verstring=""
63813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
63823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Check to see if the archive will have undefined symbols.
63843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$allow_undefined" = yes; then
63853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$allow_undefined_flag" = unsupported; then
63863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_warning "undefined symbols not allowed in $host shared libraries"
63873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    build_libtool_libs=no
63883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    build_old_libs=yes
63893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
63903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
63913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Don't allow undefined symbols.
63923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  allow_undefined_flag="$no_undefined_flag"
63933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
63943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
63963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
63973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_generate_dlsyms "$libname" "$libname" "yes"
63983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      libobjs="$libobjs $symfileobj"
63993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "X$libobjs" = "X " && libobjs=
64003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$mode" != relink; then
64023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Remove our outputs, but don't remove object files since they
64033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# may have been created when compiling PIC objects.
64043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	removelist=
64053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	tempremovelist=`$ECHO "$output_objdir/*"`
64063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for p in $tempremovelist; do
64073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $p in
64083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *.$objext | *.gcno)
64093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       ;;
64103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       if test "X$precious_files_regex" != "X"; then
64123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 then
64143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   continue
64153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		 fi
64163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       fi
64173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       removelist="$removelist $p"
64183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	       ;;
64193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) ;;
64203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
64213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
64223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$removelist" && \
64233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval "${RM}r \$removelist"
64243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
64253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now set the variables for building old libraries.
64273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Transform .lo files to .o files.
64313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
64333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Eliminate all temporary directories.
64353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      #for path in $notinst_path; do
64363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      #done
64403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$xrpath"; then
64423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If the user specified any rpath flags, then add them.
64433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	temp_xrpath=
64443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for libdir in $xrpath; do
64453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  temp_xrpath="$temp_xrpath -R$libdir"
64463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$finalize_rpath " in
64473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $libdir "*) ;;
64483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
64503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
64513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dependency_libs="$temp_xrpath $dependency_libs"
64533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
64543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
64553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Make sure dlfiles contains only unique files that won't be dlpreopened
64573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      old_dlfiles="$dlfiles"
64583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dlfiles=
64593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for lib in $old_dlfiles; do
64603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case " $dlprefiles $dlfiles " in
64613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" $lib "*) ;;
64623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) dlfiles="$dlfiles $lib" ;;
64633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
64643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
64653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Make sure dlprefiles contains only unique files
64673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      old_dlprefiles="$dlprefiles"
64683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dlprefiles=
64693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for lib in $old_dlprefiles; do
64703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case "$dlprefiles " in
64713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" $lib "*) ;;
64723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) dlprefiles="$dlprefiles $lib" ;;
64733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
64743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
64753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
64763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$build_libtool_libs" = yes; then
64773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$rpath"; then
64783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host in
64793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # these systems don't actually have a c library (as such)!
64813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
64823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-rhapsody* | *-*-darwin1.[012])
64833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Rhapsody C library is in the System framework
64843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    deplibs="$deplibs System.ltframework"
64853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
64863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-netbsd*)
64873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Don't link with libc until the a.out ld.so is fixed.
64883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
64893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Do not include libc due to us having libc/libc_r.
64913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
64923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-sco3.2v5* | *-*-sco5v6*)
64933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Causes problems with __ctype
64943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
64953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
64963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Compiler inserts libc in the correct place for threads to work
64973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
64983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
64993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Add libc to deplibs on all other systems if necessary.
65003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$build_libtool_need_lc" = "yes"; then
65013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      deplibs="$deplibs -lc"
65023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
65033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
65043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
65053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
65063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
65073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Transform deplibs into only deplibs that can be linked in shared.
65083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	name_save=$name
65093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libname_save=$libname
65103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	release_save=$release
65113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	versuffix_save=$versuffix
65123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	major_save=$major
65133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# I'm not sure if I'm treating the release correctly.  I think
65143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# release should show up in the -l (ie -lgmp5) so we don't want to
65153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# add it in twice.  Is that correct?
65163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	release=""
65173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	versuffix=""
65183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	major=""
65193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	newdeplibs=
65203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	droppeddeps=no
65213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $deplibs_check_method in
65223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	pass_all)
65233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Don't check for shared/static.  Everything works.
65243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # This might be a little naive.  We might want to check
65253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # whether the library exists or not.  But this is on
65263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # osf3 & osf4 and I'm not really sure... Just
65273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # implementing what was already the behavior.
65283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newdeplibs=$deplibs
65293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
65303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test_compile)
65313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # This code stresses the "libraries are programs" paradigm to its
65323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # limits. Maybe even breaks it.  We compile a program, linking it
65333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # against the deplibs as a proxy for the library.  Then we can check
65343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # whether they linked in statically or dynamically with ldd.
65353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || $RM conftest.c
65363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  cat > conftest.c <<EOF
65373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  int main() { return 0; }
65383aa430dc5437a98734b36f996f9b17081a589143Yavor GoulishevEOF
65393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || $RM conftest
65403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ldd_output=`ldd conftest`
65423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for i in $deplibs; do
65433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $i in
65443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      -l*)
65453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_stripname -l '' "$i"
65463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		name=$func_stripname_result
65473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  case " $predeps $postdeps " in
65493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *" $i "*)
65503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    newdeplibs="$newdeplibs $i"
65513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    i=""
65523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    ;;
65533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  esac
65543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
65553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test -n "$i" ; then
65563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  libname=`eval "\\$ECHO \"$libname_spec\""`
65573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  set dummy $deplib_matches; shift
65593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  deplib_match=$1
65603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    newdeplibs="$newdeplibs $i"
65623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  else
65633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    droppeddeps=yes
65643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO
65653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO "*** I have the capability to make that library automatically link in when"
65673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO "*** shared version of the library, which I believe you do not have"
65693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
65723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
65733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
65743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *)
65753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		newdeplibs="$newdeplibs $i"
65763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
65773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
65783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
65793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
65803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Error occurred in the first compile.  Let's try to salvage
65813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # the situation: Compile a separate program for each library.
65823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for i in $deplibs; do
65833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $i in
65843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      -l*)
65853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_stripname -l '' "$i"
65863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		name=$func_stripname_result
65873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$opt_dry_run || $RM conftest
65883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ldd_output=`ldd conftest`
65903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    case " $predeps $postdeps " in
65923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    *" $i "*)
65933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      newdeplibs="$newdeplibs $i"
65943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      i=""
65953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      ;;
65963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    esac
65973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
65983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test -n "$i" ; then
65993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    libname=`eval "\\$ECHO \"$libname_spec\""`
66003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    set dummy $deplib_matches; shift
66023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    deplib_match=$1
66033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      newdeplibs="$newdeplibs $i"
66053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    else
66063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      droppeddeps=yes
66073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO
66083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO "*** I have the capability to make that library automatically link in when"
66103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO "*** shared version of the library, which you do not appear to have"
66123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    fi
66153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
66163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
66173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  droppeddeps=yes
66183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO
66193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** make it link in!  You will probably need to install it or some"
66213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** library that it depends on before this library will be fully"
66223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** functional.  Installing it before continuing would be even better."
66233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
66243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
66253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *)
66263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		newdeplibs="$newdeplibs $i"
66273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
66283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
66293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
66303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
66313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
66323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	file_magic*)
66333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  set dummy $deplibs_check_method; shift
66343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for a_deplib in $deplibs; do
66363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $a_deplib in
66373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -l*)
66383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_stripname -l '' "$a_deplib"
66393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      name=$func_stripname_result
66403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case " $predeps $postdeps " in
66423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*" $a_deplib "*)
66433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  newdeplibs="$newdeplibs $a_deplib"
66443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  a_deplib=""
66453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ;;
66463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
66473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
66483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$a_deplib" ; then
66493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		libname=`eval "\\$ECHO \"$libname_spec\""`
66503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  for potent_lib in $potential_libs; do
66533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # Follow soft links.
66543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      if ls -lLd "$potent_lib" 2>/dev/null |
66553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			 $GREP " -> " >/dev/null; then
66563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			continue
66573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      fi
66583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # The statement above tries to avoid entering an
66593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # endless loop below, in case of cyclic links.
66603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # We might still enter an endless loop, since a link
66613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # loop can be closed while we follow links,
66623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      # but so what?
66633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      potlib="$potent_lib"
66643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      while test -h "$potlib" 2>/dev/null; do
66653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			case $potliblink in
66673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			esac
66703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      done
66713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			 $SED -e 10q |
66733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			 $EGREP "$file_magic_regex" > /dev/null; then
66743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			newdeplibs="$newdeplibs $a_deplib"
66753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			a_deplib=""
66763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev			break 2
66773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      fi
66783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  done
66793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		done
66803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
66813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$a_deplib" ; then
66823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		droppeddeps=yes
66833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO
66843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** I have the capability to make that library automatically link in when"
66863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** you link to this library.  But I can only do this if you have a"
66873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** shared version of the library, which you do not appear to have"
66883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** because I did check the linker path looking for a file starting"
66893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test -z "$potlib" ; then
66903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
66923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** with $libname and none of the candidates passed a file format test"
66933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** using a file magic. Last file checked: $potlib"
66943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
66953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
66963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
66973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
66983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Add a -L argument.
66993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdeplibs="$newdeplibs $a_deplib"
67003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
67013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
67023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done # Gone through all deplibs.
67033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
67043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	match_pattern*)
67053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  set dummy $deplibs_check_method; shift
67063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for a_deplib in $deplibs; do
67083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case $a_deplib in
67093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    -l*)
67103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_stripname -l '' "$a_deplib"
67113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      name=$func_stripname_result
67123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case " $predeps $postdeps " in
67143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*" $a_deplib "*)
67153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  newdeplibs="$newdeplibs $a_deplib"
67163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  a_deplib=""
67173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ;;
67183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
67193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
67203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$a_deplib" ; then
67213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		libname=`eval "\\$ECHO \"$libname_spec\""`
67223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  for potent_lib in $potential_libs; do
67253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    potlib="$potent_lib" # see symlink-check above in file_magic test
67263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		       $EGREP "$match_pattern_regex" > /dev/null; then
67283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      newdeplibs="$newdeplibs $a_deplib"
67293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      a_deplib=""
67303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		      break 2
67313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    fi
67323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  done
67333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		done
67343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
67353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$a_deplib" ; then
67363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		droppeddeps=yes
67373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO
67383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** I have the capability to make that library automatically link in when"
67403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** you link to this library.  But I can only do this if you have a"
67413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** shared version of the library, which you do not appear to have"
67423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$ECHO "*** because I did check the linker path looking for a file starting"
67433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test -z "$potlib" ; then
67443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
67463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
67493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
67503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
67513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *)
67523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Add a -L argument.
67533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdeplibs="$newdeplibs $a_deplib"
67543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
67553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
67563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done # Gone through all deplibs.
67573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
67583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	none | unknown | *)
67593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newdeplibs=""
67603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for i in $predeps $postdeps ; do
67643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # can't use Xsed below, because $i might contain '/'
67653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
67673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
67683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     $GREP . >/dev/null; then
67703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO
67713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "X$deplibs_check_method" = "Xnone"; then
67723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
67743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
67763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** All declared inter-library dependencies are being dropped."
67773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    droppeddeps=yes
67783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
67793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
67803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
67813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	versuffix=$versuffix_save
67823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	major=$major_save
67833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	release=$release_save
67843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libname=$libname_save
67853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	name=$name_save
67863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
67873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
67883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*-*-rhapsody* | *-*-darwin1.[012])
67893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # On Rhapsody replace the C library with the System framework
67903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
67923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
67933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
67943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$droppeddeps" = yes; then
67953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$module" = yes; then
67963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO
67973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
67983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
67993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** a static module, that should work as long as the dlopening"
68003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** application is linked with the -dlopen flag."
68013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$global_symbol_pipe"; then
68023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO
68033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** not find such a program.  So, this module is probably useless."
68063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
68083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$build_old_libs" = no; then
68093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      oldlibs="$output_objdir/$libname.$libext"
68103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      build_libtool_libs=module
68113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      build_old_libs=yes
68123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
68133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      build_libtool_libs=no
68143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
68153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
68163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** automatically added whenever a program is linked with this library"
68183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO "*** or is declared to -dlopen it."
68193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
68203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$allow_undefined" = no; then
68213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO
68223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** Since this library must not contain undefined symbols,"
68233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** because either the platform does not support them or"
68243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** it was explicitly requested with -no-undefined,"
68253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "*** libtool will only create a static version of it."
68263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$build_old_libs" = no; then
68273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		oldlibs="$output_objdir/$libname.$libext"
68283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		build_libtool_libs=module
68293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		build_old_libs=yes
68303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
68313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		build_libtool_libs=no
68323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
68333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
68343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
68353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
68363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Done checking deplibs!
68373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs=$newdeplibs
68383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
68393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $host in
68413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*-*-darwin*)
68423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
68463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
68473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
68483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # move library search paths that coincide with paths to not yet
68493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # installed libraries to the beginning of the library search list
68503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      new_libs=
68513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for path in $notinst_path; do
68523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case " $new_libs " in
68533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" -L$path/$objdir "*) ;;
68543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
68553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case " $deplibs " in
68563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" -L$path/$objdir "*)
68573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    new_libs="$new_libs -L$path/$objdir" ;;
68583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
68593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
68603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
68613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
68623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for deplib in $deplibs; do
68633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $deplib in
68643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-L*)
68653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case " $new_libs " in
68663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $deplib "*) ;;
68673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) new_libs="$new_libs $deplib" ;;
68683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
68693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
68703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) new_libs="$new_libs $deplib" ;;
68713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
68723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
68733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      deplibs="$new_libs"
68743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
68753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # All the library-specific variables (install_libdir is set above).
68763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      library_names=
68773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      old_library=
68783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dlname=
68793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
68803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Test again, we may have decided not to build it any more
68813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$build_libtool_libs" = yes; then
68823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$hardcode_into_libs" = yes; then
68833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Hardcode the library paths
68843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  hardcode_libdirs=
68853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dep_rpath=
68863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  rpath="$finalize_rpath"
68873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for libdir in $rpath; do
68893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$hardcode_libdir_flag_spec"; then
68903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$hardcode_libdir_separator"; then
68913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test -z "$hardcode_libdirs"; then
68923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  hardcode_libdirs="$libdir"
68933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
68943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # Just accumulate the unique libdirs.
68953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
68963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
68973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    ;;
68983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  *)
68993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    ;;
69013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  esac
69023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
69033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
69043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		eval flag=\"$hardcode_libdir_flag_spec\"
69053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		dep_rpath="$dep_rpath $flag"
69063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
69073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    elif test -n "$runpath_var"; then
69083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case "$perm_rpath " in
69093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *" $libdir "*) ;;
69103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) perm_rpath="$perm_rpath $libdir" ;;
69113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
69123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
69133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
69143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Substitute the hardcoded libdirs into the rpath.
69153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$hardcode_libdir_separator" &&
69163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test -n "$hardcode_libdirs"; then
69173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    libdir="$hardcode_libdirs"
69183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
69213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
69233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
69243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # We should set the runpath_var.
69263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rpath=
69273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for dir in $perm_rpath; do
69283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      rpath="$rpath$dir:"
69293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
69303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
69323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
69343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	shlibpath="$finalize_shlibpath"
69363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$shlibpath"; then
69383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
69403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Get the real and link names of the library.
69423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval shared_ext=\"$shrext_cmds\"
69433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval library_names=\"$library_names_spec\"
69443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	set dummy $library_names
69453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	shift
69463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	realname="$1"
69473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	shift
69483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$soname_spec"; then
69503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval soname=\"$soname_spec\"
69513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
69523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  soname="$realname"
69533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
69543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$dlname"; then
69553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dlname=$soname
69563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
69573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	lib="$output_objdir/$realname"
69593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	linknames=
69603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for link
69613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	do
69623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linknames="$linknames $link"
69633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
69643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Use standard objects if they are pic
69663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test "X$libobjs" = "X " && libobjs=
69683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	delfiles=
69703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  export_symbols="$output_objdir/$libname.uexp"
69733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  delfiles="$delfiles $export_symbols"
69743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
69753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	orig_export_symbols=
69773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host_os in
69783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	cygwin* | mingw* | cegcc*)
69793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # exporting using user supplied symfile
69813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # and it's NOT already a .def file. Must figure out
69833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # which of the given symbols are data symbols and tag
69843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # them as such. So, trigger use of export_symbols_cmds.
69853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # export_symbols gets reassigned inside the "prepare
69863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # the list of exported symbols" if statement, so the
69873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # include_expsyms logic still works.
69883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      orig_export_symbols="$export_symbols"
69893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      export_symbols=
69903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      always_export_symbols=yes
69913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
69923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
69933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
69943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
69953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Prepare the list of exported symbols
69973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -z "$export_symbols"; then
69983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
69993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_verbose "generating symbol list for \`$libname.la'"
70003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    export_symbols="$output_objdir/$libname.exp"
70013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || $RM $export_symbols
70023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cmds=$export_symbols_cmds
70033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    save_ifs="$IFS"; IFS='~'
70043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for cmd in $cmds; do
70053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      IFS="$save_ifs"
70063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval cmd=\"$cmd\"
70073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_len " $cmd"
70083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      len=$func_len_result
70093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_show_eval "$cmd" 'exit $?'
70113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		skipped_export=false
70123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
70133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# The command line is too long to execute in one step.
70143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_verbose "using reloadable object file for export list..."
70153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		skipped_export=:
70163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Break out early, otherwise skipped_export may be
70173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# set to false by a later but shorter cmd.
70183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		break
70193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
70203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
70213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    IFS="$save_ifs"
70223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
70263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
70273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
70283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tmp_export_symbols="$export_symbols"
70313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
70343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # The given exports_symbols file has to be filtered, so filter it.
70373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # 's' commands which not all seds can handle. GNU sed should be fine
70403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # though. Also, the filter scales superlinearly with the number of
70413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # global variables. join(1) would be nice here, but unfortunately
70423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # isn't a blessed tool.
70433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  export_symbols=$output_objdir/$libname.def
70463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
70483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	tmp_deplibs=
70503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for test_deplib in $deplibs; do
70513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case " $convenience " in
70523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $test_deplib "*) ;;
70533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *)
70543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    tmp_deplibs="$tmp_deplibs $test_deplib"
70553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
70563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
70573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
70583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	deplibs="$tmp_deplibs"
70593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$convenience"; then
70613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$whole_archive_flag_spec" &&
70623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "$compiler_needs_object" = yes &&
70633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test -z "$libobjs"; then
70643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # extract the archives, so we have objects to list.
70653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # TODO: could optimize this to just extract one archive.
70663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    whole_archive_flag_spec=
70673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
70683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$whole_archive_flag_spec"; then
70693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    save_libobjs=$libobjs
70703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$libobjs" = "X " && libobjs=
70723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
70733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    gentop="$output_objdir/${outputname}x"
70743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    generated="$generated $gentop"
70753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_extract_archives $gentop $convenience
70773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    libobjs="$libobjs $func_extract_archives_result"
70783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$libobjs" = "X " && libobjs=
70793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
70803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
70813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval flag=\"$thread_safe_flag_spec\"
70843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  linker_flags="$linker_flags $flag"
70853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
70863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Make a backup of the uninstalled library when relinking
70883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$mode" = relink; then
70893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
70913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
70923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Do each of the archive commands.
70933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$module" = yes && test -n "$module_cmds" ; then
70943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
70953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval test_cmds=\"$module_expsym_cmds\"
70963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cmds=$module_expsym_cmds
70973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
70983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval test_cmds=\"$module_cmds\"
70993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cmds=$module_cmds
71003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
71013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
71023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval test_cmds=\"$archive_expsym_cmds\"
71043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cmds=$archive_expsym_cmds
71053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
71063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval test_cmds=\"$archive_cmds\"
71073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cmds=$archive_cmds
71083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
71093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
71103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
71113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "X$skipped_export" != "X:" &&
71123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   func_len " $test_cmds" &&
71133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   len=$func_len_result &&
71143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  :
71163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
71173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # The command line is too long to link in one step, link piecewise
71183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # or, if using GNU ld and skipped_export is not :, use a linker
71193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # script.
71203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
71213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Save the value of $output and $libobjs because we want to
71223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # use them later.  If we have whole_archive_flag_spec, we
71233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # want to use save_libobjs as it was before
71243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # whole_archive_flag_spec was expanded, because we can't
71253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # assume the linker understands whole_archive_flag_spec.
71263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # This may have to be revisited, in case too many
71273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # convenience libraries get linked in and end up exceeding
71283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # the spec.
71293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    save_libobjs=$libobjs
71313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
71323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  save_output=$output
71333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
71353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Clear the reloadable object creation command queue and
71363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # initialize k to one.
71373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test_cmds=
71383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  concat_cmds=
71393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  objlist=
71403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  last_robj=
71413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  k=1
71423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
71433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    output=${output_objdir}/${output_la}.lnkscript
71453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_verbose "creating GNU ld script: $output"
71463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO 'INPUT (' > $output
71473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for obj in $save_libobjs
71483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    do
71493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "$obj" >> $output
71503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
71513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO ')' >> $output
71523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    delfiles="$delfiles $output"
71533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    output=${output_objdir}/${output_la}.lnk
71553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_verbose "creating linker input file list: $output"
71563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    : > $output
71573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    set x $save_libobjs
71583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    shift
71593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    firstobj=
71603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$compiler_needs_object" = yes; then
71613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      firstobj="$1 "
71623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      shift
71633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
71643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for obj
71653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    do
71663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "$obj" >> $output
71673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
71683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    delfiles="$delfiles $output"
71693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    output=$firstobj\"$file_list_spec$output\"
71703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
71713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$save_libobjs"; then
71723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_verbose "creating reloadable object files..."
71733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      output=$output_objdir/$output_la-${k}.$objext
71743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval test_cmds=\"$reload_cmds\"
71753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_len " $test_cmds"
71763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      len0=$func_len_result
71773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      len=$len0
71783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
71793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Loop over the list of objects to be linked.
71803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      for obj in $save_libobjs
71813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      do
71823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_len " $obj"
71833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_arith $len + $func_len_result
71843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		len=$func_arith_result
71853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test "X$objlist" = X ||
71863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		   test "$len" -lt "$max_cmd_len"; then
71873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_append objlist " $obj"
71883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		else
71893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # The command $test_cmds is almost too long, add a
71903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  # command to the queue.
71913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  if test "$k" -eq 1 ; then
71923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    # The first file doesn't have a previous command to add.
71933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
71943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  else
71953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    # All subsequent reloadable object files will link in
71963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    # the last one created.
71973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
71983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  fi
71993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  last_robj=$output_objdir/$output_la-${k}.$objext
72003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_arith $k + 1
72013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  k=$func_arith_result
72023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  output=$output_objdir/$output_la-${k}.$objext
72033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  objlist=$obj
72043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_len " $last_robj"
72053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_arith $len0 + $func_len_result
72063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  len=$func_arith_result
72073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
72083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      done
72093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Handle the remaining objects by creating one last
72103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # reloadable object file.  All subsequent reloadable object
72113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # files will link in the last one created.
72123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$last_robj"; then
72153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
72173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      delfiles="$delfiles $output"
72183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
72203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      output=
72213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
72223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if ${skipped_export-false}; then
72243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_verbose "generating symbol list for \`$libname.la'"
72253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      export_symbols="$output_objdir/$libname.exp"
72263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $opt_dry_run || $RM $export_symbols
72273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      libobjs=$output
72283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Append the command to create the export file.
72293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test -n "$last_robj"; then
72323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
72343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
72353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test -n "$save_libobjs" &&
72373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_verbose "creating a temporary reloadable object file: $output"
72383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Loop through the commands generated above and execute them.
72403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    save_ifs="$IFS"; IFS='~'
72413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for cmd in $concat_cmds; do
72423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      IFS="$save_ifs"
72433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $opt_silent || {
72443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_quote_for_expand "$cmd"
72453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  eval "func_echo $func_quote_for_expand_result"
72463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      }
72473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $opt_dry_run || eval "$cmd" || {
72483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		lt_exit=$?
72493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Restore the uninstalled library and exit
72513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		if test "$mode" = relink; then
72523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  ( cd "$output_objdir" && \
72533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $RM "${realname}T" && \
72543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		    $MV "${realname}U" "$realname" )
72553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		fi
72563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		exit $lt_exit
72583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      }
72593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
72603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    IFS="$save_ifs"
72613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
72663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
72673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          if ${skipped_export-false}; then
72693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      tmp_export_symbols="$export_symbols"
72713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
72743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$orig_export_symbols"; then
72763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # The given exports_symbols file has to be filtered, so filter it.
72773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # 's' commands which not all seds can handle. GNU sed should be fine
72803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # though. Also, the filter scales superlinearly with the number of
72813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # global variables. join(1) would be nice here, but unfortunately
72823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # isn't a blessed tool.
72833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      export_symbols=$output_objdir/$libname.def
72863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
72883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
72893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  libobjs=$output
72913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Restore the value of output.
72923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  output=$save_output
72933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
72943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
72953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
72963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test "X$libobjs" = "X " && libobjs=
72973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
72983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Expand the library linking commands again to reset the
72993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # value of $libobjs for piecewise linking.
73003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Do each of the archive commands.
73023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$module" = yes && test -n "$module_cmds" ; then
73033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cmds=$module_expsym_cmds
73053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
73063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cmds=$module_cmds
73073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
73083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
73093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cmds=$archive_expsym_cmds
73113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
73123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      cmds=$archive_cmds
73133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
73143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
73153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
73163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$delfiles"; then
73183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Append the command to remove temporary files to $cmds.
73193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval cmds=\"\$cmds~\$RM $delfiles\"
73203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
73213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Add any objects from preloaded convenience libraries
73233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$dlprefiles"; then
73243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  gentop="$output_objdir/${outputname}x"
73253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  generated="$generated $gentop"
73263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_extract_archives $gentop $dlprefiles
73283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  libobjs="$libobjs $func_extract_archives_result"
73293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test "X$libobjs" = "X " && libobjs=
73303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
73313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	save_ifs="$IFS"; IFS='~'
73333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for cmd in $cmds; do
73343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  IFS="$save_ifs"
73353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval cmd=\"$cmd\"
73363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_silent || {
73373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_quote_for_expand "$cmd"
73383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval "func_echo $func_quote_for_expand_result"
73393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  }
73403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || eval "$cmd" || {
73413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    lt_exit=$?
73423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Restore the uninstalled library and exit
73443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$mode" = relink; then
73453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ( cd "$output_objdir" && \
73463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        $RM "${realname}T" && \
73473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$MV "${realname}U" "$realname" )
73483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
73493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    exit $lt_exit
73513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  }
73523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
73533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	IFS="$save_ifs"
73543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Restore the uninstalled library and exit
73563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$mode" = relink; then
73573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
73583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$convenience"; then
73603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$whole_archive_flag_spec"; then
73613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_show_eval '${RM}r "$gentop"'
73623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
73633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
73643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  exit $EXIT_SUCCESS
73663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
73673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Create links to the real library.
73693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for linkname in $linknames; do
73703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$realname" != "$linkname"; then
73713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
73723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
73733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
73743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If -module or -export-dynamic was specified, set the dlname.
73763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$module" = yes || test "$export_dynamic" = yes; then
73773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # On all known operating systems, these are identical.
73783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  dlname="$soname"
73793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
73803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
73813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
73823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    obj)
73843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-dlopen' is ignored for objects"
73863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
73873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case " $deplibs" in
73893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *\ -l* | *\ -L*)
73903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-l' and \`-L' are ignored for objects" ;;
73913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
73923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$rpath" && \
73943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-rpath' is ignored for objects"
73953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$xrpath" && \
73973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-R' is ignored for objects"
73983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
73993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$vinfo" && \
74003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-version-info' is ignored for objects"
74013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$release" && \
74033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-release' is ignored for objects"
74043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $output in
74063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.lo)
74073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	test -n "$objs$old_deplibs" && \
74083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libobj=$output
74113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_lo2o "$libobj"
74123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	obj=$func_lo2o_result
74133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
74143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
74153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libobj=
74163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	obj="$output"
74173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
74183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
74193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Delete the old objects.
74213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $opt_dry_run || $RM $obj $libobj
74223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Objects from convenience libraries.  This assumes
74243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # single-version convenience libraries.  Whenever we create
74253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # different ones for PIC/non-PIC, this we'll have to duplicate
74263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # the extraction.
74273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      reload_conv_objs=
74283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      gentop=
74293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # reload_cmds runs $LD directly, so let us get rid of
74303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # -Wl from whole_archive_flag_spec and hope we can get by with
74313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # turning comma into space..
74323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      wl=
74333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$convenience"; then
74353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$whole_archive_flag_spec"; then
74363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
74393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  gentop="$output_objdir/${obj}x"
74403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  generated="$generated $gentop"
74413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_extract_archives $gentop $convenience
74433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
74453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
74463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Create the old-style object.
74483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      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
74493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      output="$obj"
74513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_execute_cmds "$reload_cmds" 'exit $?'
74523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Exit if we aren't doing a library object file.
74543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -z "$libobj"; then
74553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$gentop"; then
74563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval '${RM}r "$gentop"'
74573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
74583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_SUCCESS
74603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
74613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$build_libtool_libs" != yes; then
74633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$gentop"; then
74643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval '${RM}r "$gentop"'
74653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
74663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Create an invalid libtool object if no PIC, so that we don't
74683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# accidentally link it into a program.
74693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# $show "echo timestamp > $libobj"
74703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_SUCCESS
74723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
74733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$pic_flag" || test "$pic_mode" != default; then
74753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Only do commands if we really have different PIC objects.
74763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	reload_objs="$libobjs $reload_conv_objs"
74773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	output="$libobj"
74783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_execute_cmds "$reload_cmds" 'exit $?'
74793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
74803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$gentop"; then
74823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval '${RM}r "$gentop"'
74833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
74843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exit $EXIT_SUCCESS
74863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
74873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    prog)
74893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $host in
74903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*cygwin*) func_stripname '' '.exe' "$output"
74913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	          output=$func_stripname_result.exe;;
74923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
74933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$vinfo" && \
74943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-version-info' is ignored for programs"
74953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test -n "$release" && \
74973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`-release' is ignored for programs"
74983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
74993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "$preload" = yes \
75003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        && test "$dlopen_support" = unknown \
75013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	&& test "$dlopen_self" = unknown \
75023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	&& test "$dlopen_self_static" = unknown && \
75033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $host in
75063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *-*-rhapsody* | *-*-darwin1.[012])
75073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# On Rhapsody replace the C library is the System framework
75083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
75113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
75123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $host in
75143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *-*-darwin*)
75153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Don't allow lazy linking, it breaks C++ global constructors
75163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# But is supposedly fixed on 10.4 or later (yay!).
75173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$tagname" = CXX ; then
75183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    10.[0123])
75203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      compile_command="$compile_command ${wl}-bind_at_load"
75213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      finalize_command="$finalize_command ${wl}-bind_at_load"
75223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
75233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
75243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
75253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
75293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
75303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # move library search paths that coincide with paths to not yet
75333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # installed libraries to the beginning of the library search list
75343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      new_libs=
75353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for path in $notinst_path; do
75363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case " $new_libs " in
75373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*" -L$path/$objdir "*) ;;
75383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*)
75393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case " $compile_deplibs " in
75403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" -L$path/$objdir "*)
75413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    new_libs="$new_libs -L$path/$objdir" ;;
75423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
75433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
75443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
75453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
75463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for deplib in $compile_deplibs; do
75473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $deplib in
75483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	-L*)
75493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case " $new_libs " in
75503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $deplib "*) ;;
75513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) new_libs="$new_libs $deplib" ;;
75523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
75533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
75543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) new_libs="$new_libs $deplib" ;;
75553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
75563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
75573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      compile_deplibs="$new_libs"
75583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      compile_command="$compile_command $compile_deplibs"
75613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      finalize_command="$finalize_command $finalize_deplibs"
75623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$rpath$xrpath"; then
75643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# If the user specified any rpath flags, then add them.
75653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for libdir in $rpath $xrpath; do
75663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # This is the magic to use -rpath.
75673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$finalize_rpath " in
75683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $libdir "*) ;;
75693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
75713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
75723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
75733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
75743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now hardcode the library paths
75753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      rpath=
75763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      hardcode_libdirs=
75773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for libdir in $compile_rpath $finalize_rpath; do
75783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$hardcode_libdir_flag_spec"; then
75793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$hardcode_libdir_separator"; then
75803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$hardcode_libdirs"; then
75813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      hardcode_libdirs="$libdir"
75823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
75833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Just accumulate the unique libdirs.
75843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
75873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *)
75883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
75903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
75913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
75923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
75933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval flag=\"$hardcode_libdir_flag_spec\"
75943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rpath="$rpath $flag"
75953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
75963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif test -n "$runpath_var"; then
75973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$perm_rpath " in
75983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $libdir "*) ;;
75993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) perm_rpath="$perm_rpath $libdir" ;;
76003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
76013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
76023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
76033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case :$dllsearchpath: in
76063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *":$libdir:"*) ;;
76073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ::) dllsearchpath=$libdir;;
76083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) dllsearchpath="$dllsearchpath:$libdir";;
76093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
76103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case :$dllsearchpath: in
76113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *":$testbindir:"*) ;;
76123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ::) dllsearchpath=$testbindir;;
76133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
76153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
76163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
76173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
76183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Substitute the hardcoded libdirs into the rpath.
76193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$hardcode_libdir_separator" &&
76203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 test -n "$hardcode_libdirs"; then
76213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libdir="$hardcode_libdirs"
76223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval rpath=\" $hardcode_libdir_flag_spec\"
76233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
76243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      compile_rpath="$rpath"
76253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
76263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      rpath=
76273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      hardcode_libdirs=
76283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for libdir in $finalize_rpath; do
76293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$hardcode_libdir_flag_spec"; then
76303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$hardcode_libdir_separator"; then
76313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$hardcode_libdirs"; then
76323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      hardcode_libdirs="$libdir"
76333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
76343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Just accumulate the unique libdirs.
76353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
76383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *)
76393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
76413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
76423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
76433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
76443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval flag=\"$hardcode_libdir_flag_spec\"
76453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rpath="$rpath $flag"
76463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
76473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif test -n "$runpath_var"; then
76483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$finalize_perm_rpath " in
76493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $libdir "*) ;;
76503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
76523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
76533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
76543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Substitute the hardcoded libdirs into the rpath.
76553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$hardcode_libdir_separator" &&
76563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 test -n "$hardcode_libdirs"; then
76573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	libdir="$hardcode_libdirs"
76583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval rpath=\" $hardcode_libdir_flag_spec\"
76593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
76603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      finalize_rpath="$rpath"
76613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
76623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Transform all the library objects into standard objects.
76643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
76673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
76683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
76703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # template prelinking step
76713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$prelink_cmds"; then
76723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_execute_cmds "$prelink_cmds" 'exit $?'
76733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
76743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
76753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      wrappers_required=yes
76763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $host in
76773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *cygwin* | *mingw* )
76783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        if test "$build_libtool_libs" != yes; then
76793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          wrappers_required=no
76803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        fi
76813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
76823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *cegcc)
76833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        # Disable wrappers for cegcc, we are cross compiling anyway.
76843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        wrappers_required=no
76853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
76863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
76873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev          wrappers_required=no
76893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        fi
76903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev        ;;
76913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
76923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$wrappers_required" = no; then
76933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Replace the output file specification.
76943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
76953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	link_command="$compile_command$compile_rpath"
76963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
76973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# We have no uninstalled library dependencies, so finalize right now.
76983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit_status=0
76993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "$link_command" 'exit_status=$?'
77003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Delete the generated files.
77023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -f "$output_objdir/${outputname}S.${objext}"; then
77033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
77043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
77053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $exit_status
77073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$finalize_shlibpath"; then
77133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      compile_var=
77173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      finalize_var=
77183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$runpath_var"; then
77193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$perm_rpath"; then
77203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # We should set the runpath_var.
77213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  rpath=
77223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for dir in $perm_rpath; do
77233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rpath="$rpath$dir:"
77243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
77253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
77273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$finalize_perm_rpath"; then
77283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # We should set the runpath_var.
77293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  rpath=
77303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for dir in $finalize_perm_rpath; do
77313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rpath="$rpath$dir:"
77323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
77333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
77343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
77353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$no_install" = yes; then
77383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# We don't need to create a wrapper script.
77393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	link_command="$compile_var$compile_command$compile_rpath"
77403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Replace the output file specification.
77413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Delete the old output file.
77433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	$opt_dry_run || $RM $output
77443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Link the executable and exit
77453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "$link_command" 'exit $?'
77463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit $EXIT_SUCCESS
77473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$hardcode_action" = relink; then
77503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Fast installation is not supported
77513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	link_command="$compile_var$compile_command$compile_rpath"
77523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	relink_command="$finalize_var$finalize_command$finalize_rpath"
77533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "this platform does not like uninstalled shared libraries"
77553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_warning "\`$output' will be relinked during installation"
77563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
77573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$fast_install" != no; then
77583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  link_command="$finalize_var$compile_command$finalize_rpath"
77593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$fast_install" = yes; then
77603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
77623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # fast_install is set to needless
77633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command=
77643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
77653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
77663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  link_command="$compile_var$compile_command$compile_rpath"
77673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
77693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Replace the output file specification.
77723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Delete the old output files.
77753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval "$link_command" 'exit $?'
77783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Now create the wrapper script.
77803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_verbose "creating $output"
77813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Quote the relink command for shipping.
77833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$relink_command"; then
77843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Preserve any variables that may affect compiler behavior
77853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for var in $variables_saved_for_relink; do
77863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if eval test -z \"\${$var+set}\"; then
77873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  elif eval var_value=\$$var; test -z "$var_value"; then
77893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command="$var=; export $var; $relink_command"
77903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
77913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_quote_for_eval "$var_value"
77923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
77933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
77943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
77953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	relink_command="(cd `pwd`; $relink_command)"
77963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
77973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
77983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
77993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Quote $ECHO for shipping.
78003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $progpath in
78023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
78053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
78073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
78093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Only actually do things if not in dry run mode.
78113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $opt_dry_run || {
78123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# win32 will think the script is a binary if it has
78133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# a .exe suffix, so we strip it off here.
78143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $output in
78153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.exe) func_stripname '' '.exe' "$output"
78163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	         output=$func_stripname_result ;;
78173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
78183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# test for cygwin because mv fails w/o .exe extensions
78193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
78203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *cygwin*)
78213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    exeext=.exe
78223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '' '.exe' "$outputname"
78233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    outputname=$func_stripname_result ;;
78243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) exeext= ;;
78253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
78263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case $host in
78273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *cygwin* | *mingw* )
78283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_dirname_and_basename "$output" "" "."
78293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    output_name=$func_basename_result
78303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    output_path=$func_dirname_result
78313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    cwrapper="$output_path/$output_name.exe"
78333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $RM $cwrappersource $cwrapper
78343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_emit_cwrapperexe_src > $cwrappersource
78373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # The wrapper executable is built using the $host compiler,
78393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # because it contains $host paths and files. If cross-
78403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # compiling, it, like the target executable, must be
78413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # executed on the $host or under an emulation environment.
78423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
78433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $STRIP $cwrapper
78453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
78463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Now, create the wrapper script for func_source use:
78483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_ltwrapper_scriptname $cwrapper
78493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $RM $func_ltwrapper_scriptname_result
78503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $opt_dry_run || {
78523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # note: this script will not be executed, so do not chmod.
78533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "x$build" = "x$host" ; then
78543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      else
78563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
78583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    }
78593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
78603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  * )
78613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $RM $output
78623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_emit_wrapper no > $output
78653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    chmod +x $output
78663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  ;;
78673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
78683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
78693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      exit $EXIT_SUCCESS
78703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
78713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
78723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # See if we need to build an old-fashioned archive.
78743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for oldlib in $oldlibs; do
78753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$build_libtool_libs" = convenience; then
78773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	oldobjs="$libobjs_save $symfileobj"
78783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	addlibs="$convenience"
78793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	build_libtool_libs=no
78803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
78813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$build_libtool_libs" = module; then
78823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldobjs="$libobjs_save"
78833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  build_libtool_libs=no
78843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
78853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldobjs="$old_deplibs $non_pic_objects"
78863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$preload" = yes && test -f "$symfileobj"; then
78873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    oldobjs="$oldobjs $symfileobj"
78883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
78893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
78903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	addlibs="$old_convenience"
78913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
78923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$addlibs"; then
78943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	gentop="$output_objdir/${outputname}x"
78953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	generated="$generated $gentop"
78963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
78973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_extract_archives $gentop $addlibs
78983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	oldobjs="$oldobjs $func_extract_archives_result"
78993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
79003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
79013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Do each command in the archive commands.
79023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	cmds=$old_archive_from_new_cmds
79043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
79053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
79063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Add any objects from preloaded convenience libraries
79073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test -n "$dlprefiles"; then
79083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  gentop="$output_objdir/${outputname}x"
79093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  generated="$generated $gentop"
79103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
79113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_extract_archives $gentop $dlprefiles
79123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldobjs="$oldobjs $func_extract_archives_result"
79133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
79143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
79153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# POSIX demands no paths to be encoded in archives.  We have
79163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# to avoid creating archives with duplicate basenames if we
79173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# might have to extract them afterwards, e.g., when creating a
79183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# static archive out of a convenience library, or when linking
79193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# the entirety of a libtool archive into another (currently
79203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# not supported by libtool).
79213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if (for obj in $oldobjs
79223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    do
79233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_basename "$obj"
79243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      $ECHO "$func_basename_result"
79253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done | sort | sort -uc >/dev/null 2>&1); then
79263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  :
79273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
79283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO "copying selected object files to avoid basename conflicts..."
79293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  gentop="$output_objdir/${outputname}x"
79303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  generated="$generated $gentop"
79313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_mkdir_p "$gentop"
79323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  save_oldobjs=$oldobjs
79333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldobjs=
79343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  counter=1
79353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for obj in $save_oldobjs
79363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  do
79373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_basename "$obj"
79383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    objbase="$func_basename_result"
79393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case " $oldobjs " in
79403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    " ") oldobjs=$obj ;;
79413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *[\ /]"$objbase "*)
79423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      while :; do
79433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Make sure we don't pick an alternate name that also
79443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# overlaps.
79453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		newobj=lt$counter-$objbase
79463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_arith $counter + 1
79473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		counter=$func_arith_result
79483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		case " $oldobjs " in
79493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*[\ /]"$newobj "*) ;;
79503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		esac
79523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      done
79533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      oldobjs="$oldobjs $gentop/$newobj"
79553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      ;;
79563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) oldobjs="$oldobjs $obj" ;;
79573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
79583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
79593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
79603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	eval cmds=\"$old_archive_cmds\"
79613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
79623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_len " $cmds"
79633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	len=$func_len_result
79643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  cmds=$old_archive_cmds
79663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
79673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # the command line is too long to link in one step, link in parts
79683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_verbose "using piecewise archive linking..."
79693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  save_RANLIB=$RANLIB
79703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  RANLIB=:
79713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  objlist=
79723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  concat_cmds=
79733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  save_oldobjs=$oldobjs
79743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldobjs=
79753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Is there a better way of finding the last object in the list?
79763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for obj in $save_oldobjs
79773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  do
79783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    last_oldobj=$obj
79793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
79803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  eval test_cmds=\"$old_archive_cmds\"
79813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_len " $test_cmds"
79823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  len0=$func_len_result
79833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  len=$len0
79843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for obj in $save_oldobjs
79853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  do
79863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_len " $obj"
79873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_arith $len + $func_len_result
79883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    len=$func_arith_result
79893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_append objlist " $obj"
79903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$len" -lt "$max_cmd_len"; then
79913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      :
79923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
79933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # the above command should be used before it gets too long
79943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      oldobjs=$objlist
79953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      if test "$obj" = "$last_oldobj" ; then
79963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		RANLIB=$save_RANLIB
79973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      fi
79983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
79993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      objlist=
80013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      len=$len0
80023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
80033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
80043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  RANLIB=$save_RANLIB
80053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  oldobjs=$objlist
80063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "X$oldobjs" = "X" ; then
80073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval cmds=\"\$concat_cmds\"
80083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
80093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
80113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
80123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
80133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_execute_cmds "$cmds" 'exit $?'
80143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
80153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
80163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -n "$generated" && \
80173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval "${RM}r$generated"
80183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
80193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Now create the libtool archive.
80203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    case $output in
80213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    *.la)
80223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      old_library=
80233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "$build_old_libs" = yes && old_library="$libname.$libext"
80243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_verbose "creating $output"
80253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
80263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Preserve any variables that may affect compiler behavior
80273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      for var in $variables_saved_for_relink; do
80283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if eval test -z \"\${$var+set}\"; then
80293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	elif eval var_value=\$$var; test -z "$var_value"; then
80313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  relink_command="$var=; export $var; $relink_command"
80323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	else
80333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_quote_for_eval "$var_value"
80343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
80363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      done
80373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Quote the link command for shipping.
80383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$hardcode_automatic" = yes ; then
80413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	relink_command=
80423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
80433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
80443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Only create the output if not a dry run.
80453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      $opt_dry_run || {
80463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	for installed in no yes; do
80473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$installed" = yes; then
80483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -z "$install_libdir"; then
80493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      break
80503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
80513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    output="$output_objdir/$outputname"i
80523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # Replace all uninstalled libtool libraries with the installed ones
80533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdependency_libs=
80543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for deplib in $dependency_libs; do
80553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $deplib in
80563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *.la)
80573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_basename "$deplib"
80583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		name="$func_basename_result"
80593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		test -z "$libdir" && \
80613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		newdependency_libs="$newdependency_libs $libdir/$name"
80633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
80643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
80663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
80673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dependency_libs="$newdependency_libs"
80683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlfiles=
80693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
80703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for lib in $dlfiles; do
80713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $lib in
80723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *.la)
80733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	        func_basename "$lib"
80743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		name="$func_basename_result"
80753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		test -z "$libdir" && \
80773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_fatal_error "\`$lib' is not a valid libtool archive"
80783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		newdlfiles="$newdlfiles $libdir/$name"
80793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
80803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *) newdlfiles="$newdlfiles $lib" ;;
80813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
80823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
80833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlfiles="$newdlfiles"
80843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlprefiles=
80853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for lib in $dlprefiles; do
80863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $lib in
80873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      *.la)
80883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# Only pass preopened files to the pseudo-archive (for
80893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# eventual linking with the app. that links it) if we
80903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# didn't already link the preopened objects directly into
80913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		# the library:
80923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		func_basename "$lib"
80933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		name="$func_basename_result"
80943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		test -z "$libdir" && \
80963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		  func_fatal_error "\`$lib' is not a valid libtool archive"
80973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		newdlprefiles="$newdlprefiles $libdir/$name"
80983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		;;
80993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
81003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
81013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlprefiles="$newdlprefiles"
81023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  else
81033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlfiles=
81043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for lib in $dlfiles; do
81053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $lib in
81063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*) abs=`pwd`"/$lib" ;;
81083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
81093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdlfiles="$newdlfiles $abs"
81103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
81113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlfiles="$newdlfiles"
81123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    newdlprefiles=
81133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    for lib in $dlprefiles; do
81143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      case $lib in
81153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev		*) abs=`pwd`"/$lib" ;;
81173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      esac
81183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      newdlprefiles="$newdlprefiles $abs"
81193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    done
81203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    dlprefiles="$newdlprefiles"
81213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
81223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $RM $output
81233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # place dlname in correct position for cygwin
81243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  tdlname=$dlname
81253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $host,$output,$installed,$module,$dlname in
81263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
81283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  $ECHO > $output "\
81293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# $outputname - a libtool library file
81303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#
81323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Please DO NOT delete this file!
81333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# It is necessary for linking the library.
81343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# The name that we can dlopen(3).
81363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdlname='$tdlname'
81373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Names of this library.
81393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlibrary_names='$library_names'
81403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# The name of the static archive.
81423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevold_library='$old_library'
81433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Linker flags that can not go in dependency_libs.
81453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevinherited_linker_flags='$new_inherited_linker_flags'
81463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Libraries that this one depends upon.
81483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdependency_libs='$dependency_libs'
81493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Names of additional weak libraries provided by this library
81513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevweak_library_names='$weak_libs'
81523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Version information for $libname.
81543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevcurrent=$current
81553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevage=$age
81563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrevision=$revision
81573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Is this an already installed library?
81593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevinstalled=$installed
81603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Should we warn about portability when linking against -modules?
81623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevshouldnotlink=$module
81633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Files to dlopen/dlpreopen
81653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdlopen='$dlfiles'
81663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevdlpreopen='$dlprefiles'
81673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Directory that this library needs to be installed in:
81693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevlibdir='$install_libdir'"
81703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test "$installed" = no && test "$need_relink" = yes; then
81713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    $ECHO >> $output "\
81723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevrelink_command=\"$relink_command\""
81733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
81743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	done
81753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      }
81763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Do a symbolic link so that the libtool archive can be found in
81783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # LD_LIBRARY_PATH before the program is installed.
81793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      ;;
81813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    esac
81823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $EXIT_SUCCESS
81833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
81843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{ test "$mode" = link || test "$mode" = relink; } &&
81863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_mode_link ${1+"$@"}
81873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# func_mode_uninstall arg...
81903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfunc_mode_uninstall ()
81913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
81923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    $opt_debug
81933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    RM="$nonopt"
81943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    files=
81953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    rmforce=
81963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit_status=0
81973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
81983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # This variable tells wrapper scripts just to set variables rather
81993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # than running their programs.
82003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    libtool_install_magic="$magic"
82013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for arg
82033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    do
82043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $arg in
82053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -f) RM="$RM $arg"; rmforce=yes ;;
82063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      -*) RM="$RM $arg" ;;
82073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *) files="$files $arg" ;;
82083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
82093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
82103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    test -z "$RM" && \
82123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_fatal_help "you must specify an RM program"
82133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    rmdirs=
82153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    origobjdir="$objdir"
82173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for file in $files; do
82183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_dirname "$file" "" "."
82193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      dir="$func_dirname_result"
82203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "X$dir" = X.; then
82213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	objdir="$origobjdir"
82223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      else
82233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	objdir="$dir/$origobjdir"
82243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
82253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_basename "$file"
82263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      name="$func_basename_result"
82273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      test "$mode" = uninstall && objdir="$dir"
82283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Remember objdir for removal later, being careful to avoid duplicates
82303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test "$mode" = clean; then
82313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	case " $rmdirs " in
82323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *" $objdir "*) ;;
82333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *) rmdirs="$rmdirs $objdir" ;;
82343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	esac
82353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
82363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      # Don't error if the file doesn't exist and rm -f was used.
82383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if { test -L "$file"; } >/dev/null 2>&1 ||
82393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 { test -h "$file"; } >/dev/null 2>&1 ||
82403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	 test -f "$file"; then
82413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	:
82423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      elif test -d "$file"; then
82433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	exit_status=1
82443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
82453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      elif test "$rmforce" = yes; then
82463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	continue
82473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
82483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      rmfiles="$file"
82503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      case $name in
82523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.la)
82533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Possibly a libtool archive, so verify it.
82543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if func_lalib_p "$file"; then
82553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source $dir/$name
82563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Delete the libtool libraries and symlinks.
82583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  for n in $library_names; do
82593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rmfiles="$rmfiles $objdir/$n"
82603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  done
82613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case "$mode" in
82643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  clean)
82653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    case "  $library_names " in
82663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # "  " in the beginning catches empty $dlname
82673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *" $dlname "*) ;;
82683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    esac
82703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
82723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  uninstall)
82733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$library_names"; then
82743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Do each command in the postuninstall commands.
82753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
82773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test -n "$old_library"; then
82793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      # Do each command in the old_postuninstall commands.
82803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
82823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # FIXME: should reinstall the best remaining shared library.
82833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
82843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
82853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
82863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
82873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *.lo)
82893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	# Possibly a libtool object, so verify it.
82903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if func_lalib_p "$file"; then
82913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Read the .lo file
82933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  func_source $dir/$name
82943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
82953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add PIC object to the list of files to remove.
82963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$pic_object" &&
82973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$pic_object" != none; then
82983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rmfiles="$rmfiles $dir/$pic_object"
82993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
83003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Add non-PIC object to the list of files to remove.
83023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if test -n "$non_pic_object" &&
83033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	     test "$non_pic_object" != none; then
83043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rmfiles="$rmfiles $dir/$non_pic_object"
83053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
83063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
83073aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
83083aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83093aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      *)
83103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	if test "$mode" = clean ; then
83113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  noexename=$name
83123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  case $file in
83133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  *.exe)
83143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '' '.exe' "$file"
83153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    file=$func_stripname_result
83163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    func_stripname '' '.exe' "$name"
83173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    noexename=$func_stripname_result
83183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # $file with .exe has already been added to rmfiles,
83193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # add $file without .exe
83203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rmfiles="$rmfiles $file"
83213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    ;;
83223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  esac
83233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  # Do a test to see if this is a libtool program.
83243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  if func_ltwrapper_p "$file"; then
83253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if func_ltwrapper_executable_p "$file"; then
83263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_ltwrapper_scriptname "$file"
83273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      relink_command=
83283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_source $func_ltwrapper_scriptname_result
83293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    else
83313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      relink_command=
83323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      func_source $dir/$noexename
83333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
83343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # note $name still contains .exe if it was in $file originally
83363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    # as does the version of $file that was added into $rmfiles
83373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "$fast_install" = yes && test -n "$relink_command"; then
83393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      rmfiles="$rmfiles $objdir/lt-$name"
83403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
83413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    if test "X$noexename" != "X$name" ; then
83423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	    fi
83443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	  fi
83453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	fi
83463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	;;
83473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      esac
83483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      func_show_eval "$RM $rmfiles" 'exit_status=1'
83493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
83503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    objdir="$origobjdir"
83513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    # Try to remove the ${objdir}s in the directories where we deleted files
83533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    for dir in $rmdirs; do
83543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      if test -d "$dir"; then
83553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev	func_show_eval "rmdir $dir >/dev/null 2>&1"
83563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev      fi
83573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    done
83583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit $exit_status
83603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
83613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{ test "$mode" = uninstall || test "$mode" = clean; } &&
83633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    func_mode_uninstall ${1+"$@"}
83643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtest -z "$mode" && {
83663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  help="$generic_help"
83673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_fatal_help "you must specify a MODE"
83683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
83693aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83703aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevtest -z "$exec_cmd" && \
83713aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  func_fatal_help "invalid operation mode \`$mode'"
83723aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83733aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevif test -n "$exec_cmd"; then
83743aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  eval exec "$exec_cmd"
83753aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  exit $EXIT_FAILURE
83763aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevfi
83773aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83783aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevexit $exit_status
83793aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83803aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83813aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# The TAGs below are defined such that we never get into a situation
83823aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# in which we disable both kinds of libraries.  Given conflicting
83833aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# choices, we go for a static library, that is the most portable,
83843aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# since we can't tell whether shared libraries were disabled because
83853aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# the user asked for that or because the platform doesn't support
83863aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# them.  This is particularly important on AIX, because we don't
83873aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# support having both static and shared libraries enabled at the same
83883aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# time on that platform, so we default to a shared-only configuration.
83893aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# If a disable-shared tag is given, we'll fallback to a static-only
83903aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# configuration.  But we'll never go from static-only to shared-only.
83913aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83923aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
83933aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbuild_libtool_libs=no
83943aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbuild_old_libs=yes
83953aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ### END LIBTOOL TAG CONFIG: disable-shared
83963aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
83973aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ### BEGIN LIBTOOL TAG CONFIG: disable-static
83983aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
83993aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# ### END LIBTOOL TAG CONFIG: disable-static
84003aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
84013aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# Local Variables:
84023aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# mode:shell-script
84033aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# sh-indentation:2
84043aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# End:
84053aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev# vi:sw=2
84063aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
8407