15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated from ltmain.m4sh.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ltmain.sh (GNU libtool) 2.2.6
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This is free software; see the source for copying conditions.  There is NO
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# GNU Libtool is free software; you can redistribute it and/or modify
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# it under the terms of the GNU General Public License as published by
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the Free Software Foundation; either version 2 of the License, or
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# (at your option) any later version.
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# As a special exception to the GNU General Public License,
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if you distribute this file as part of a program or library that
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is built using GNU Libtool, you may include this file under the
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# same distribution terms that you use for the rest of that program.
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# GNU Libtool is distributed in the hope that it will be useful, but
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# WITHOUT ANY WARRANTY; without even the implied warranty of
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# General Public License for more details.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# You should have received a copy of the GNU General Public License
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# along with GNU Libtool; see the file COPYING.  If not, a copy
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# can be downloaded from http://www.gnu.org/licenses/gpl.html,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# or obtained by writing to the Free Software Foundation, Inc.,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Usage: $progname [OPTION]... [MODE-ARG]...
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Provide generalized library-building support services.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --config             show all configuration variables
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --debug              enable verbose shell tracing
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -n, --dry-run            display commands without modifying any files
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --features           display basic configuration information and exit
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --mode=MODE          use operation mode MODE
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --preserve-dup-deps  don't remove duplicate dependency libraries
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --quiet, --silent    don't print informational messages
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --tag=TAG            use configuration variables from tag TAG
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -v, --verbose            print informational messages (default)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#     --version            print version information
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# -h, --help               print short or long help message
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MODE must be one of the following:
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       clean              remove files from the build directory
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       compile            compile a source file into a libtool object
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       execute            automatically set library path, then run a program
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       finish             complete the installation of libtool libraries
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       install            install libraries or executables
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       link               create a library or an executable
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       uninstall          remove libraries from an installed directory
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# MODE-ARGS vary depending on the MODE.
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# When reporting a bug, please describe a test case to reproduce it and
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include the following information:
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       host-triplet:	$host
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       shell:		$SHELL
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       compiler:		$LTCC
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       compiler flags:		$LTCFLAGS
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       linker:		$LD (gnu? $with_gnu_ld)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       $progname:		(GNU libtool) 2.2.6
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       automake:		$automake_version
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#       autoconf:		$autoconf_version
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Report bugs to <bug-libtool@gnu.org>.
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PROGRAM=ltmain.sh
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PACKAGE=libtool
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)VERSION=2.2.6
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TIMESTAMP=""
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package_revision=1.3012
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Be Bourne compatible
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  emulate sh
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NULLCMD=:
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # is contrary to our usage.  Disable this feature.
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  alias -g '${1+"$@"}'='"$@"'
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  setopt NO_GLOB_SUBST
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_SH=xpg4; export BIN_SH # for Tru64
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DUALCASE=1; export DUALCASE # for MKS sh
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# NLS nuisances: We save the old values to restore during execute mode.
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Only set LANG and LC_ALL to C if already set.
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# These must not be set unconditionally because not all systems understand
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# e.g. LANG=C (notably SCO).
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_user_locale=
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_safe_locale=
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)do
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  eval "if test \"\${$lt_var+set}\" = set; then
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          save_$lt_var=\$$lt_var
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $lt_var=C
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export $lt_var
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi"
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)done
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$lt_unset CDPATH
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${CP="cp -f"}
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${ECHO="echo"}
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${EGREP="/usr/bin/grep -E"}
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${FGREP="/usr/bin/grep -F"}
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${GREP="/usr/bin/grep"}
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${LN_S="ln -s"}
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${MAKE="make"}
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${MKDIR="mkdir"}
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${MV="mv -f"}
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${RM="rm -f"}
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${SED="/opt/local/bin/gsed"}
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${SHELL="${CONFIG_SHELL-/bin/sh}"}
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${Xsed="$SED -e 1s/^X//"}
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Global variables:
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_SUCCESS=0
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_FAILURE=1
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_MISMATCH=63  # $? = 63 is used to indicate version mismatch to missing.
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EXIT_SKIP=77	  # $? = 77 is used to indicate a skipped test to automake.
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit_status=$EXIT_SUCCESS
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure IFS has a sensible default
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_nl='
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IFS=" 	$lt_nl"
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dirname="s,/[^/]*$,,"
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)basename="s,^.*/,,"
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_dirname_and_basename file append nondir_replacement
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# perform func_basename and func_dirname in a single function
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# call:
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   dirname:  Compute the dirname of FILE.  If nonempty,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#             add APPEND to the result, otherwise set result
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#             to NONDIR_REPLACEMENT.
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#             value returned in "$func_dirname_result"
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#   basename: Compute filename of FILE.
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#             value retuned in "$func_basename_result"
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Implementation must be kept synchronized with func_dirname
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# and func_basename. For efficiency, we do not delegate to
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# those functions but instead duplicate the functionality here.
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_dirname_and_basename ()
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Extract subdirectory from the argument.
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"`
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test "X$func_dirname_result" = "X${1}"; then
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_dirname_result="${3}"
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_dirname_result="$func_dirname_result${2}"
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"`
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated shell functions inserted here.
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is ksh but when the shell is invoked as "sh" and the current value of
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the _XPG environment variable is not equal to 1 (one), the special
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# positional parameter $0, within a function call, is the name of the
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# function.
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)progpath="$0"
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of this program:
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# In the unlikely event $progname began with a '-', it would play havoc with
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_echo (imagine progname=-n), so we prepend ./ in that case:
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_dirname_and_basename "$progpath"
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)progname=$func_basename_result
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)case $progname in
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -*) progname=./$progname ;;
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)esac
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure we have an absolute path for reexecution:
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)case $progpath in
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  [\\/]*|[A-Za-z]:\\*) ;;
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *[\\/]*)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     progdir=$func_dirname_result
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     progdir=`cd "$progdir" && pwd`
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     progpath="$progdir/$progname"
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ;;
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *)
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     save_IFS="$IFS"
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     IFS=:
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     for progdir in $PATH; do
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       IFS="$save_IFS"
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       test -x "$progdir/$progname" && break
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     done
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     IFS="$save_IFS"
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     test -n "$progdir" || progdir=`pwd`
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     progpath="$progdir/$progname"
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ;;
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)esac
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Sed substitution that helps us do robust quoting.  It backslashifies
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# metacharacters that are still active within double-quoted strings.
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Xsed="${SED}"' -e 1s/^X//'
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Same as above, but do not quote variable references.
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)double_quote_subst='s/\(["`\\]\)/\\\1/g'
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Re-`\' parameter expansions in output of double_quote_subst that were
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# `\'-ed in input to the same.  If an odd number of `\' preceded a '$'
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in input to double_quote_subst, that '$' was protected from expansion.
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Since each input `\' is now two `\'s, look for any number of runs of
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# four `\'s followed by two `\'s and then a '$'.  `\' that '$'.
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bs='\\'
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bs2='\\\\'
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bs4='\\\\\\\\'
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dollar='\$'
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_double_backslash="\
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  s/$bs4/&\\
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/g
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  s/^$bs2$dollar/$bs&/
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  s/\n//g"
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Standard options:
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_dry_run=false
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_help=false
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_quiet=false
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_verbose=false
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_warning=:
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_echo arg...
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message, along with the current mode
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# name if it has been set yet.
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_echo ()
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "$progname${mode+: }$mode: $*"
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_verbose arg...
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message in verbose mode only.
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_verbose ()
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_verbose && func_echo ${1+"$@"}
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # A bug in bash halts the script if the last line of a function
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # fails when set -e is in force, so we need another command to
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # work around that:
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    :
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_error arg...
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error.
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_error ()
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_warning arg...
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed warning message to standard error.
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_warning ()
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # bash bug again:
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    :
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_error arg...
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, and exit.
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_error ()
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error ${1+"$@"}
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_FAILURE
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_help arg...
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, followed by
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a help hint, and exit.
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_help ()
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error ${1+"$@"}
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_fatal_error "$help"
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)help="Try \`$progname --help' for more information."  ## default
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_grep expression filename
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Check whether EXPRESSION matches any line of FILENAME, without output.
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_grep ()
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $GREP "$1" "$2" >/dev/null 2>&1
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mkdir_p directory-path
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make sure the entire path to DIRECTORY-PATH is available.
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mkdir_p ()
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_directory_path="$1"
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_dir_list=
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Protect directory names starting with `-'
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $my_directory_path in
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        -*) my_directory_path="./$my_directory_path" ;;
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # While some portion of DIR does not yet exist...
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      while test ! -d "$my_directory_path"; do
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # ...make a list in topmost first order.  Use a colon delimited
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# list incase some portion of path contains whitespace.
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        my_dir_list="$my_directory_path:$my_dir_list"
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # If the last portion added has no slash in it, the list is done
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case $my_directory_path in */*) ;; *) break ;; esac
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # ...otherwise throw away the child directory and loop
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"`
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'`
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      save_mkdir_p_IFS="$IFS"; IFS=':'
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for my_dir in $my_dir_list; do
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_mkdir_p_IFS"
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # mkdir can fail with a `File exist' error if two processes
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # try to create one of the directories concurrently.  Don't
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # stop in that case!
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $MKDIR "$my_dir" 2>/dev/null || :
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IFS="$save_mkdir_p_IFS"
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Bail out if we (or some other process) failed to create a directory.
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -d "$my_directory_path" || \
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_fatal_error "Failed to create \`$1'"
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mktempdir [string]
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Make a temporary directory that won't clash with other running
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# libtool processes, and avoids race conditions if possible.  If
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# given, STRING is the basename for that directory.
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mktempdir ()
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_template="${TMPDIR-/tmp}/${1-$progname}"
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$opt_dry_run" = ":"; then
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Return a directory name, but don't create it in dry-run mode
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_tmpdir="${my_template}-$$"
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # If mktemp works, use that first and foremost
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test ! -d "$my_tmpdir"; then
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Failing that, at least try and use $RANDOM to avoid a race
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        my_tmpdir="${my_template}-${RANDOM-0}$$"
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        save_mktempdir_umask=`umask`
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        umask 0077
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $MKDIR "$my_tmpdir"
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        umask $save_mktempdir_umask
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # If we're not in dry-run mode, bomb out on failure
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -d "$my_tmpdir" || \
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "X$my_tmpdir" | $Xsed
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_quote_for_eval arg
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Aesthetically quote ARG to be evaled later.
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is double-quoted, suitable for a subsequent eval, whereas
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# which are still active within double quotes backslashified.
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_quote_for_eval ()
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $1 in
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *[\\\`\"\$]*)
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;;
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval_unquoted_result="$1" ;;
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $func_quote_for_eval_unquoted_result in
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Double-quote args containing shell metacharacters to delay
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # word splitting, command substitution and and variable
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # expansion for a subsequent eval.
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Many Bourne shells cannot handle close brackets correctly
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # in scan sets, so we specify it separately.
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_quote_for_expand arg
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Aesthetically quote ARG to be evaled later; same as above,
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but do not quote variable references.
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_quote_for_expand ()
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $1 in
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *[\\\`\"]*)
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	my_arg=`$ECHO "X$1" | $Xsed \
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        my_arg="$1" ;;
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $my_arg in
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Double-quote args containing shell metacharacters to delay
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # word splitting and command substitution for a subsequent eval.
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Many Bourne shells cannot handle close brackets correctly
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # in scan sets, so we specify it separately.
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        my_arg="\"$my_arg\""
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_expand_result="$my_arg"
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_show_eval cmd [fail_exp]
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is given, then evaluate it.
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_show_eval ()
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_cmd="$1"
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_fail_exp="${2-:}"
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ${opt_silent-false} || {
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_expand "$my_cmd"
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval "func_echo $func_quote_for_expand_result"
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if ${opt_dry_run-false}; then :; else
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval "$my_cmd"
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_status=$?
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$my_status" -eq 0; then :; else
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "(exit $my_status); $my_fail_exp"
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_show_eval_locale cmd [fail_exp]
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Unless opt_silent is true, then output CMD.  Then, if opt_dryrun is
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# not true, evaluate CMD.  If the evaluation of CMD fails, and FAIL_EXP
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is given, then evaluate it.  Use the saved locale for evaluation.
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_show_eval_locale ()
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_cmd="$1"
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_fail_exp="${2-:}"
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ${opt_silent-false} || {
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_expand "$my_cmd"
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval "func_echo $func_quote_for_expand_result"
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if ${opt_dry_run-false}; then :; else
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval "$lt_user_locale
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $my_cmd"
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_status=$?
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval "$lt_safe_locale"
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$my_status" -eq 0; then :; else
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "(exit $my_status); $my_fail_exp"
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_version
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo version message to standard output and exit.
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_version ()
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / {
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s/^# //
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/^# *$//
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        p
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }' < "$progpath"
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     exit $?
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_usage
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo short help message to standard output and exit.
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_usage ()
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $SED -n '/^# Usage:/,/# -h/ {
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s/^# //
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/^# *$//
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/\$progname/'$progname'/
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	p
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }' < "$progpath"
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "run \`$progname --help | more' for full usage"
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_help
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo long help message to standard output and exit.
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_help ()
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $SED -n '/^# Usage:/,/# Report bugs to/ {
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        s/^# //
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/^# *$//
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s*\$progname*'$progname'*
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s*\$host*'"$host"'*
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s*\$SHELL*'"$SHELL"'*
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s*\$LTCC*'"$LTCC"'*
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s*\$LTCFLAGS*'"$LTCFLAGS"'*
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s*\$LD*'"$LD"'*
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/\$with_gnu_ld/'"$with_gnu_ld"'/
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	p
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     }' < "$progpath"
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_missing_arg argname
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error and set global
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# exit_cmd.
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_missing_arg ()
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error "missing argument for $1"
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit_cmd=exit
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit_cmd=:
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Check that we have a working $ECHO.
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "X$1" = X--no-reexec; then
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Discard the --no-reexec flag, and continue.
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shift
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)elif test "X$1" = X--fallback-echo; then
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Avoid inline document here, it may be left over
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  :
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Yippee, $ECHO works!
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  :
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Restart under the correct shell, and then maybe $ECHO will work.
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exec $SHELL "$progpath" --no-reexec ${1+"$@"}
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Same for EGREP, and just to be sure, do LTCC as well
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "x$EGREP" = x ; then
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EGREP=egrep
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "x$LTCC" = x ; then
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LTCC=${CC-gcc}
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "X$1" = X--fallback-echo; then
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # used as fallback echo
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shift
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cat <<EOF
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$*
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exit $EXIT_SUCCESS
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic="%%%MAGIC variable%%%"
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic_exe="%%%MAGIC EXE variable%%%"
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Global variables.
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $mode is unset
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)nonopt=
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)execute_dlfiles=
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)preserve_args=
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lo2o="s/\\.lo\$/.${objext}/"
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)o2lo="s/\\.${objext}\$/.lo/"
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_archives=
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_serial=0
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_dry_run=false
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_duplicate_deps=false
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_silent=false
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_debug=:
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If this variable is set in any of the actions, the command in it
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will be execed at the end.  This prevents here-documents from being
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# left over by shells.
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exec_cmd=
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_configuration arg...
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, followed by
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a configuration failure hint, and exit.
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_configuration ()
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error ${1+"$@"}
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error "See the $PACKAGE documentation for more information."
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_fatal_error "Fatal configuration error."
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_config
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the configuration for all the tags in this script.
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_config ()
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    re_begincf='^# ### BEGIN LIBTOOL'
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    re_endcf='^# ### END LIBTOOL'
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Default configuration.
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Now print the configurations for the tags.
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for tagname in $taglist; do
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_features
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the features supported by this script.
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_features ()
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "host: $host"
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_libtool_libs" = yes; then
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "enable shared libraries"
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "disable shared libraries"
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "enable static libraries"
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "disable static libraries"
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_enable_tag tagname
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Verify that TAGNAME is valid, and either flag an error and exit, or
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable here.
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_enable_tag ()
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Global variable:
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tagname="$1"
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Validate tagname.
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $tagname in
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *[!-_A-Za-z0-9,/]*)
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "invalid tag name: $tagname"
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Don't test for the "default" C tag, as we know it's
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # there but not specially marked.
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $tagname in
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CC) ;;
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	taglist="$taglist $tagname"
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Evaluate the configuration.  Be careful to quote the path
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# and the sed script, to avoid splitting on whitespace, but
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# also don't use non-portable quotes within backquotes within
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# quotes we have to do it in 2 steps:
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "$extractedcf"
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_error "ignoring unknown tag $tagname"
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Parse options once, thoroughly.  This comes as soon as possible in
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the script to make things like `libtool --version' happen quickly.
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Shorthand for --mode=foo, only valid as the first argument
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $1 in
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  clean|clea|cle|cl)
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode clean ${1+"$@"}; shift
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  compile|compil|compi|comp|com|co|c)
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode compile ${1+"$@"}; shift
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  execute|execut|execu|exec|exe|ex|e)
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode execute ${1+"$@"}; shift
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  finish|finis|fini|fin|fi|f)
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode finish ${1+"$@"}; shift
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  install|instal|insta|inst|ins|in|i)
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode install ${1+"$@"}; shift
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  link|lin|li|l)
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode link ${1+"$@"}; shift
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode uninstall ${1+"$@"}; shift
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Parse non-mode specific arguments:
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while test "$#" -gt 0; do
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    opt="$1"
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $opt in
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --config)		func_config					;;
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --debug)		preserve_args="$preserve_args $opt"
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			func_echo "enabling shell trace mode"
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_debug='set -x'
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			$opt_debug
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			execute_dlfiles="$execute_dlfiles $1"
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --dry-run | -n)	opt_dry_run=:					;;
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --features)       func_features					;;
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --finish)		mode="finish"					;;
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			case $1 in
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  # Valid mode arguments:
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  clean)	;;
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  compile)	;;
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  execute)	;;
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  finish)	;;
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  install)	;;
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  link)		;;
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  relink)	;;
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  uninstall)	;;
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  # Catch anything else as an error
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  *) func_error "invalid argument for $opt"
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     exit_cmd=exit
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     break
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     ;;
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		        esac
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			mode="$1"
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --preserve-dup-deps)
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_duplicate_deps=:				;;
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --quiet|--silent)	preserve_args="$preserve_args $opt"
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_silent=:
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --verbose| -v)	preserve_args="$preserve_args $opt"
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_silent=false
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			preserve_args="$preserve_args $opt $1"
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			func_enable_tag "$1"	# tagname is set here
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Separate optargs to long options:
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlopen=*|--mode=*|--tag=*)
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			func_opt_split "$opt"
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -\?|-h)		func_usage					;;
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --help)		opt_help=:					;;
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --version)	func_version					;;
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)		nonopt="$opt"
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			break
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  done
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $host in
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *cygwin* | *mingw* | *pw32* | *cegcc*)
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # don't eliminate duplications in $postdeps and $predeps
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      opt_duplicate_compiler_generated_deps=:
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Having warned about all mis-specified options, bail out if
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # anything was wrong.
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $exit_cmd $EXIT_FAILURE
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_check_version_match
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Ensure that we are using m4 macros, and libtool script from the same
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# release of libtool.
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_check_version_match ()
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test "$package_revision" != "$macro_revision"; then
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$VERSION" != "$macro_version"; then
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$macro_version"; then
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        cat >&2 <<_LT_EOF
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: definition of this LT_INIT comes from an older release.
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: and run autoconf again.
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        cat >&2 <<_LT_EOF
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: definition of this LT_INIT comes from $PACKAGE $macro_version.
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: and run autoconf again.
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cat >&2 <<_LT_EOF
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: of $PACKAGE $VERSION and run autoconf again.
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_MISMATCH
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ##
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)##    Main.    ##
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ##
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || {
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Sanity checks first:
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_check_version_match
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_fatal_configuration "not configured to build any kind of library"
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Darwin sucks
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  eval std_shrext=\"$shrext_cmds\"
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Only execute mode is allowed to have -dlopen flags.
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error "unrecognized option \`-dlopen'"
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "$help" 1>&2
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_FAILURE
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Change the help message to a mode-specific one.
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  generic_help="$help"
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  help="Try \`$progname --help --mode=$mode' for more information."
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_p file
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file.
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_p ()
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -f "$1" &&
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $SED -e 4q "$1" 2>/dev/null \
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_unsafe_p file
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file.
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function implements the same check as func_lalib_p without
9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# resorting to external programs.  To this end, it redirects stdin and
9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# closes it afterwards, without saving the original file descriptor.
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# As a safety measure, use it only where a negative result would be
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# fatal anyway.  Works if `file' does not exist.
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_unsafe_p ()
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lalib_p=no
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for lalib_p_l in 1 2 3 4
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	do
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    read lalib_p_line
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$lalib_p_line" in
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exec 0<&5 5<&-
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test "$lalib_p" = yes
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_script_p file
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_script_p ()
9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_lalib_p "$1"
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_executable_p file
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper executable
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_executable_p ()
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_ltwrapper_exec_suffix=
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $1 in
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.exe) ;;
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *) func_ltwrapper_exec_suffix=.exe ;;
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_scriptname file
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Assumes file is an ltwrapper_executable
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# uses $file to determine the appropriate filename for a
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# temporary ltwrapper_script.
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_scriptname ()
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_ltwrapper_scriptname_result=""
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if func_ltwrapper_executable_p "$1"; then
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname_and_basename "$1" "" "."
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '' '.exe' "$func_basename_result"
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_p file
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script or wrapper executable
9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_p ()
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_execute_cmds commands fail_cmd
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Execute tilde-delimited COMMANDS.
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If FAIL_CMD is given, eval that upon failure.
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FAIL_CMD may read-access the current command in variable CMD!
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_execute_cmds ()
9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    save_ifs=$IFS; IFS='~'
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for cmd in $1; do
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IFS=$save_ifs
9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval cmd=\"$cmd\"
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$cmd" "${2-:}"
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    IFS=$save_ifs
9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_source file
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Source FILE, adding directory component if necessary.
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Note that it is not necessary on cygwin/mingw to append a dot to
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior happens only for exec(3), not for open(2)!  Also, sourcing
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# `FILE.' does not work on cygwin managed mounts.
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_source ()
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $1 in
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */* | *\\*)	. "$1" ;;
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)		. "./$1" ;;
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_infer_tag arg
10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Infer tagged configuration to use if any are available and
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if one wasn't chosen via the "--tag" command line option.
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Only attempt this if the compiler in the base compile
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# command doesn't match the default compiler.
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# arg is usually of the form 'gcc ...'
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_infer_tag ()
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$available_tags" && test -z "$tagname"; then
10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CC_quoted=
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for arg in $CC; do
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval "$arg"
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $@ in
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Blanks in the command may have been stripped by the calling shell,
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # but not from the CC environment variable when configure was run.
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Blanks at the start of $base_compile will cause this to fail
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # if we don't check for them as well.
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for z in $available_tags; do
10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Evaluate the configuration.
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    CC_quoted=
10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for arg in $CC; do
10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Double-quote args containing other shell metacharacters.
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_quote_for_eval "$arg"
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$@ " in
10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # The compiler in the base compile command matches
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # the one in the tagged configuration.
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Assume this is the tagged configuration we want.
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tagname=$z
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If $tagname still isn't set, then no tagged configuration
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# was found and let the user know that the "--tag" command
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# line option must be used.
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$tagname"; then
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_echo "unable to infer tagged configuration"
10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "specify a tag with \`--tag'"
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#	else
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#	  func_verbose "using $tagname tagged configuration"
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_write_libtool_object output_name pic_name nonpic_name
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Create a libtool object file (analogous to a ".la" file),
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but don't create it if we're doing a dry run.
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_write_libtool_object ()
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    write_libobj=${1}
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_libtool_libs" = yes; then
10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_lobj=\'${2}\'
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_lobj=none
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_oldobj=\'${3}\'
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_oldobj=none
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_dry_run || {
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cat >${write_libobj}T <<EOF
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $write_libobj - a libtool object file
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file!
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library.
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the PIC object.
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pic_object=$write_lobj
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the non-PIC object
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)non_pic_object=$write_oldobj
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $MV "${write_libobj}T" "${write_libobj}"
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_compile arg...
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_compile ()
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Get the compilation command and the source file.
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    base_compile=
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    suppress_opt=yes
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    suppress_output=
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arg_mode=normal
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libobj=
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    later=
11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    pie_flag=
11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg_mode in
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg  )
11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# do not "continue".  Instead, add this to base_compile
11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lastarg="$arg"
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg_mode=normal
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      target )
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj="$arg"
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg_mode=normal
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      normal )
11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Accept any command-line options.
11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $arg in
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-o)
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$libobj" && \
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "you cannot specify \`-o' more than once"
11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg_mode=target
11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-pie | -fpie | -fPIE)
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          pie_flag="$pie_flag $arg"
11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-shared | -static | -prefer-pic | -prefer-non-pic)
11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  later="$later $arg"
11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-no-suppress)
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  suppress_opt=no
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-Xcompiler)
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue      #  The current "srcfile" will either be retained or
11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;            #  replaced later.  I would guess that would be a bug.
11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-Wc,*)
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '-Wc,' '' "$arg"
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  args=$func_stripname_result
11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lastarg=
11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_ifs="$IFS"; IFS=','
11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for arg in $args; do
11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    IFS="$save_ifs"
11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_quote_for_eval "$arg"
11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lastarg="$lastarg $func_quote_for_eval_result"
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname ' ' '' "$lastarg"
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lastarg=$func_stripname_result
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add the arguments to base_compile.
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  base_compile="$base_compile $lastarg"
11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Accept the current argument as the source file.
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The previous "srcfile" becomes the current argument.
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lastarg="$srcfile"
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  srcfile="$arg"
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac  #  case $arg
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac    #  case $arg_mode
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Aesthetically quote the previous argument.
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$lastarg"
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base_compile="$base_compile $func_quote_for_eval_result"
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # for arg
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $arg_mode in
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arg)
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "you must specify an argument for -Xcompile"
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    target)
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "you must specify a target with \`-o'"
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Get the name of the library object.
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -z "$libobj" && {
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$srcfile"
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj="$func_basename_result"
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Recognize several different file suffixes.
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # If the user specifies -o file.o, it is replaced with file.lo
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $libobj in
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.[cCFSifmso] | \
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.ada | *.adb | *.ads | *.asm | \
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_xform "$libobj"
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libobj=$func_xform_result
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $libobj in
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "cannot determine name of library object from \`$libobj'"
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_infer_tag $base_compile
12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg in $later; do
12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shared)
12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$build_libtool_libs" != yes && \
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_configuration "can not build a shared library"
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=no
12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -static)
12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_libtool_libs=no
12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=yes
12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -prefer-pic)
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pic_mode=yes
12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -prefer-non-pic)
12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pic_mode=no
12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_eval "$libobj"
12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test "X$libobj" != "X$func_quote_for_eval_result" \
12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_dirname_and_basename "$obj" "/" ""
12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objname="$func_basename_result"
12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xdir="$func_dirname_result"
12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lobj=${xdir}$objdir/$objname
12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$base_compile" && \
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify a compilation command"
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Delete any leftover library objects.
12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removelist="$obj $lobj $libobj ${libobj}T"
12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removelist="$lobj $libobj ${libobj}T"
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # On Cygwin there's no "real" PIC flag so we must build both object types
12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host_os in
12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cygwin* | mingw* | pw32* | os2* | cegcc*)
12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pic_mode=default
12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # non-PIC code in shared libraries is not supported
12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pic_mode=default
12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Calculate the filename of the output object if compiler does
12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # not support -o with -c
12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$compiler_c_o" = no; then
12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lockfile="$output_obj.lock"
13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output_obj=
13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      need_locks=no
13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lockfile=
13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Lock this critical section if it is needed
13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We use this script file to make the link, it avoids creating a new file
13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$need_locks" = yes; then
13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_echo "Waiting for $lockfile to be removed"
13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	sleep 2
13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    elif test "$need_locks" = warn; then
13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -f "$lockfile"; then
13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile exists and contains:
13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null`
13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same
13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together.  If you
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better
13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better
13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler."
13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $removelist
13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_FAILURE
13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removelist="$removelist $output_obj"
13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "$srcfile" > "$lockfile"
13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_dry_run || $RM $removelist
13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    removelist="$removelist $lockfile"
13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$fix_srcfile_path"; then
13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval srcfile=\"$fix_srcfile_path\"
13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_eval "$srcfile"
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    qsrcfile=$func_quote_for_eval_result
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Only build a PIC object if we are building libtool libraries.
13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_libtool_libs" = yes; then
13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Without this assignment, base_compile gets emptied.
13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fbsd_hideous_sh_bug=$base_compile
13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pic_mode" != no; then
13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile $pic_flag"
13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Don't build PIC code
13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile"
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_mkdir_p "$xdir$objdir"
13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$output_obj"; then
13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Place PIC objects in $objdir
13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$command -o $lobj"
13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval_locale "$command"	\
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$need_locks" = warn &&
13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains:
13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null`
13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain:
13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile
13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same
13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together.  If you
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better
13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better
13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler."
13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $removelist
13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_FAILURE
13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Just move the object if needed, then go on to compile the next one
13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '$MV "$output_obj" "$lobj"' \
13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Allow error messages only from the first compilation.
13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$suppress_opt" = yes; then
13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	suppress_output=' >/dev/null 2>&1'
13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Only build a position-dependent object if we build old libraries.
13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pic_mode" != yes; then
14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Don't build PIC code
14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile$pie_flag"
14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile $pic_flag"
14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$compiler_c_o" = yes; then
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$command -o $obj"
14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Suppress compiler output if we already did a PIC compilation.
14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      command="$command$suppress_output"
14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval_locale "$command" \
14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$need_locks" = warn &&
14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains:
14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null`
14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain:
14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile
14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same
14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because
14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together.  If you
14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better
14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better
14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler."
14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $removelist
14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_FAILURE
14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Just move the object if needed
14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '$MV "$output_obj" "$obj"' \
14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_dry_run || {
14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Unlock the critical section if it was locked
14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$need_locks" != no; then
14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	removelist=$lockfile
14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $RM "$lockfile"
14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || {
14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = compile && func_mode_compile ${1+"$@"}
14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_help ()
14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We need to display help for each of the modes.
14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $mode in
14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "")
14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Generic help is extracted from the usage comments
14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # at the start of this file.
14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_help
14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      clean)
14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove files from the build directory.
14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE
14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM.
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, object or program, all the files associated
14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)with it are deleted. Otherwise, only FILE itself is deleted using RM."
14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile)
14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO \
14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Compile a source file into a libtool library object.
14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options:
14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-suppress      do not suppress compiler output for multiple passes
14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -prefer-pic       try to building PIC objects only
14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -prefer-non-pic   try to building non-PIC objects only
14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -shared           do not build a \`.o' file suitable for static linking
14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -static           only build a \`.o' file suitable for static linking
14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)COMPILE-COMMAND is a command to be used in creating a \`standard' object file
14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from the given SOURCEFILE.
14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The output file name is determined by removing the directory component from
15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SOURCEFILE, then substituting the C source code suffix \`.c' with the
15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library object suffix, \`.lo'."
15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      execute)
15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Automatically set library path, then run a program.
15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options:
15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -dlopen FILE      add the directory containing FILE to the library path
15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode sets the library path environment variable according to \`-dlopen'
15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)flags.
15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If any of the ARGS are libtool executable wrappers, then they are translated
15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)into their corresponding uninstalled binary, and any of their required library
15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)directories are added to the library path.
15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Then, COMMAND is executed, with ARGS as arguments."
15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finish)
15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Complete the installation of libtool libraries.
15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Each LIBDIR is a directory that contains libtool libraries.
15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The commands that this mode executes may require superuser privileges.  Use
15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the \`--dry-run' option if you just want to see what would be executed."
15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install)
15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Install executables or libraries.
15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTALL-COMMAND is the installation command.  The first component should be
15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)either the \`install' or \`cp' program.
15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of INSTALL-COMMAND are treated specially:
15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The rest of the components are interpreted as arguments to that command (only
15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BSD-compatible install options are recognized)."
15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      link)
15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Link object files or libraries together to form another library, or to
15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)create an executable program.
15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LINK-COMMAND is a command using the C compiler that you would use to create
15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a program from several object files.
15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of LINK-COMMAND are treated specially:
15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -all-static       do not do any dynamic linking at all
15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -avoid-version    do not add a version suffix if possible
15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -export-symbols SYMFILE
15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    try to export only the symbols listed in SYMFILE
15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -export-symbols-regex REGEX
15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    try to export only the symbols matching REGEX
15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -LLIBDIR          search LIBDIR for required installed libraries
15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -lNAME            OUTPUT-FILE requires the installed library libNAME
15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -module           build a library that can dlopened
15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-fast-install  disable the fast-install mode
15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-install       link a not-installable executable
15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-undefined     declare that a library does not refer to external symbols
15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -objectlist FILE  Use a list of object files found in FILE to specify objects
15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -precious-files-regex REGEX
15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    don't remove output files matching REGEX
15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -release RELEASE  specify package release information
15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -shared           only do dynamic linking of libtool libraries
15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -shrext SUFFIX    override the standard shared library file extension
15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -static           do not do any dynamic linking of uninstalled libtool libraries
15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -static-libtool-libs
15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    do not do any dynamic linking of libtool libraries
15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -version-info CURRENT[:REVISION[:AGE]]
15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    specify library version info [each variable defaults to 0]
15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -weak LIBNAME     declare that the target provides the LIBNAME interface
15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)All other options (arguments beginning with \`-') are ignored.
15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Every other argument is treated as a filename.  Files ending in \`.la' are
16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)treated as uninstalled libtool libraries, other files are standard or library
16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)object files.
16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)only library objects (\`.lo' files) may be specified, and \`-rpath' is
16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)required, except when creating a convenience library.
16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using \`ar' and \`ranlib', or on Windows using \`lib'.
16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)is created, otherwise an executable program is created."
16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uninstall)
16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove libraries from an installation directory.
16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE
16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM.
16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, all the files associated with it are deleted.
16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Otherwise, only FILE itself is deleted using RM."
16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_fatal_help "invalid operation mode \`$mode'"
16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "Try \`$progname --help' for more information about other modes."
16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Now that we've collected a possible --mode arg, show help if necessary
16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $opt_help && func_mode_help
16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_execute arg...
16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_execute ()
16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The first argument is the command name.
16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cmd="$nonopt"
16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$cmd" && \
16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify a COMMAND"
16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Handle -dlopen flags immediately.
16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $execute_dlfiles; do
16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -f "$file" \
16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	|| func_fatal_help "\`$file' is not a file"
16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dir=
16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $file in
16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$file" \
16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Read the libtool library.
16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlname=
16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$file"
16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Skip this library if it cannot be dlopened.
16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$dlname"; then
16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Warn if it was a shared library.
16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$library_names" && \
16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$file" "" "."
16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$func_dirname_result"
16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -f "$dir/$objdir/$dlname"; then
16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dir="$dir/$objdir"
16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$dir/$dlname"; then
16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Just add the directory containing the .lo file.
16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$file" "" "."
16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$func_dirname_result"
16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Get the absolute pathname.
17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      absdir=`cd "$dir" && pwd`
17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$absdir" && dir="$absdir"
17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now add the directory to shlibpath_var.
17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if eval "test -z \"\$$shlibpath_var\""; then
17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "$shlibpath_var=\"\$dir\""
17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set shlibpath_var
17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # rather than running their programs.
17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_execute_magic="$magic"
17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Check if any of the arguments is a wrapper script.
17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    args=
17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file
17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $file in
17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*) ;;
17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do a test to see if this is really a libtool program.
17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_ltwrapper_script_p "$file"; then
17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$file"
17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Transform arg to wrapped name.
17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  file="$progdir/$program"
17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif func_ltwrapper_executable_p "$file"; then
17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_ltwrapper_scriptname "$file"
17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$func_ltwrapper_scriptname_result"
17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Transform arg to wrapped name.
17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  file="$progdir/$program"
17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote arguments (to preserve shell metacharacters).
17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$file"
17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      args="$args $func_quote_for_eval_result"
17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "X$opt_dry_run" = Xfalse; then
17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$shlibpath_var"; then
17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Export the shlibpath_var.
17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "export $shlibpath_var"
17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Restore saved environment variables
17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      do
17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "if test \"\${save_$lt_var+set}\" = set; then
17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                $lt_var=\$save_$lt_var; export $lt_var
17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$lt_unset $lt_var
17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi"
17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now prepare to actually exec the command.
17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec_cmd="\$cmd$args"
17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Display what would be done.
17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$shlibpath_var"; then
17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "export $shlibpath_var"
17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "$cmd$args"
17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = execute && func_mode_execute ${1+"$@"}
17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_finish arg...
17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_finish ()
17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libdirs="$nonopt"
17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    admincmds=
17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for dir
17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      do
17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdirs="$libdirs $dir"
17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for libdir in $libdirs; do
17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$finish_cmds"; then
17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do each command in the finish commands.
17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'"$cmd"'"'
17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$finish_eval"; then
17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do the single finish_eval.
17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval cmds=\"$finish_eval\"
17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       $cmds"
17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Exit here if they wanted silent mode.
18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_silent && exit $EXIT_SUCCESS
18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "X----------------------------------------------------------------------" | $Xsed
18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "Libraries have been installed in:"
18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for libdir in $libdirs; do
18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   $libdir"
18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "If you ever happen to want to link against installed libraries"
18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "flag during linking and do at least one of the following:"
18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$shlibpath_var"; then
18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "     during execution"
18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$runpath_var"; then
18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "     during linking"
18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$hardcode_libdir_flag_spec"; then
18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libdir=LIBDIR
18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval flag=\"$hardcode_libdir_flag_spec\"
18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - use the \`$flag' linker flag"
18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$admincmds"; then
18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - have your system administrator run these commands:$admincmds"
18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -f /etc/ld.so.conf; then
18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "See any operating system documentation about shared libraries for"
18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      solaris2.[6789]|solaris2.1[0-9])
18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "pages."
18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "X----------------------------------------------------------------------" | $Xsed
18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = finish && func_mode_finish ${1+"$@"}
18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_install arg...
18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_install ()
18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # There may be an optional sh(1) argument at the beginning of
18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # install_prog (especially on Windows NT).
18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       # Allow the use of GNU shtool's install command.
18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Aesthetically quote it.
18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$nonopt"
18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_prog="$func_quote_for_eval_result "
18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg=$1
18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_prog=
18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg=$nonopt
18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The real first argument should be the name of the installation program.
18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Aesthetically quote it.
18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_eval "$arg"
18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    install_prog="$install_prog$func_quote_for_eval_result"
18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We need to accept at least all the BSD install flags.
18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dest=
18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    files=
18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    opts=
18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prev=
18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    install_type=
18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    isdir=no
18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    stripme=
18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dest"; then
18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	files="$files $dest"
18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dest=$arg
18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -d) isdir=yes ;;
18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -f)
18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $install_prog " in
18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*[\\\ /]cp\ *) ;;
18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) prev=$arg ;;
19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -g | -m | -o)
19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=$arg
19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -s)
19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	stripme=" -s"
19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*)
19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the previous option needed an argument, then skip it.
19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$prev"; then
19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dest=$arg
19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Aesthetically quote the argument.
19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$arg"
19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_prog="$install_prog $func_quote_for_eval_result"
19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$install_prog" && \
19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an install program"
19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$prev" && \
19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "the \`$prev' option requires an argument"
19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -z "$files"; then
19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$dest"; then
19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_help "no file or destination specified"
19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_help "you must specify a destination"
19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Strip any trailing slash from the destination.
19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_stripname '' '/' "$dest"
19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dest=$func_stripname_result
19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Check to see that the destination is a directory.
19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -d "$dest" && isdir=yes
19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$isdir" = yes; then
19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destdir="$dest"
19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destname=
19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_dirname_and_basename "$dest" "" "."
19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destdir="$func_dirname_result"
19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destname="$func_basename_result"
19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Not a directory, so check to see that there is only one file specified.
19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set dummy $files; shift
19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$#" -gt 1 && \
19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_help "\`$dest' is not a directory"
19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $destdir in
19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    [\\/]* | [A-Za-z]:[\\/]*) ;;
19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for file in $files; do
19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $file in
19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo) ;;
19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "\`$destdir' must be an absolute directory name"
19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set variables rather
19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # than running their programs.
19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_install_magic="$magic"
19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    staticlibs=
19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    future_libdirs=
19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    current_libdirs=
19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $files; do
19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do each installation.
19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $file in
19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.$libext)
19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do the static libraries later.
19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	staticlibs="$staticlibs $file"
19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$file" \
19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_help "\`$file' is not a valid libtool archive"
19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_library=
19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command=
19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$file"
19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Add the libdir to current_libdirs if it is the destination.
20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$destdir" = "X$libdir"; then
20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$current_libdirs " in
20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) current_libdirs="$current_libdirs $libdir" ;;
20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Note the libdir as a future libdir.
20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$future_libdirs " in
20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) future_libdirs="$future_libdirs $libdir" ;;
20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$file" "/" ""
20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$func_dirname_result"
20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$dir$objdir"
20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$relink_command"; then
20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Determine the prefix the user has applied to our future dir.
20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Don't allow the user to place us outside of our expected
20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # location b/c this prevents finding dependent libraries that
20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are installed to the same prefix.
20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # At present, this check doesn't affect windows .dll's that
20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are installed into $libdir/../bin (currently, that works fine)
20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # but it's something to keep an eye on.
20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$inst_prefix_dir" = "$destdir" && \
20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$inst_prefix_dir"; then
20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Stick the inst_prefix_dir data into the link command.
20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "relinking \`$file'"
20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$relink_command" \
20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# See the names of the shared library.
20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $library_names; shift
20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1"; then
20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  realname="$1"
20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  shift
20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  srcname="$realname"
20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$relink_command" && srcname="$realname"T
20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Install the shared library and build the symlinks.
20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      'exit $?'
20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tstripme="$stripme"
20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host_os in
20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cygwin* | mingw* | pw32* | cegcc*)
20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $realname in
20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *.dll.a)
20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tstripme=""
20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$tstripme" && test -n "$striplib"; then
20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$#" -gt 0; then
20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Delete the old symlinks, and create new ones.
20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Try `ln -sf' first, because the `ln' binary might depend on
20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # so we also need to try rm && ln -s.
20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for linkname
20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test "$linkname" != "$realname" \
20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do each command in the postinstall commands.
20825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib="$destdir/$realname"
20835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
20855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install the pseudo-library for information purposes.
20875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$file"
20885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name="$func_basename_result"
20895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	instname="$dir/$name"i
20905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Maybe install the static library, too.
20935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
20955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
20975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install (i.e. copy) a libtool object.
20985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Figure out destination file name, if it wasn't already specified.
21005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$destname"; then
21015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destname"
21025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
21035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_basename "$file"
21045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$func_basename_result"
21055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destfile"
21065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
21075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Deduce the name of the destination old-style object file.
21095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $destfile in
21105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo)
21115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_lo2o "$destfile"
21125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  staticdest=$func_lo2o_result
21135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
21145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.$objext)
21155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  staticdest="$destfile"
21165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile=
21175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
21185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
21195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
21215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
21225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install the libtool object if requested.
21245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$destfile" && \
21255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$install_prog $file $destfile" 'exit $?'
21265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install the old object if enabled.
21285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_old_libs" = yes; then
21295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Deduce the name of the old-style object file.
21305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_lo2o "$file"
21315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  staticobj=$func_lo2o_result
21325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
21345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
21355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
21365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
21385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Figure out destination file name, if it wasn't already specified.
21395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$destname"; then
21405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destname"
21415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
21425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_basename "$file"
21435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$func_basename_result"
21445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destfile"
21455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
21465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the file is missing, and there is a .exe on the end, strip it
21485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# because it is most likely a libtool script we actually want to
21495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# install
21505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	stripped_ext=""
21515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $file in
21525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe)
21535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test ! -f "$file"; then
21545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname '' '.exe' "$file"
21555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      file=$func_stripname_result
21565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      stripped_ext=".exe"
21575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
21595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
21605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do a test to see if this is really a libtool program.
21625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
21635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*cygwin* | *mingw*)
21645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if func_ltwrapper_executable_p "$file"; then
21655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_ltwrapper_scriptname "$file"
21665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      wrapper=$func_ltwrapper_scriptname_result
21675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
21685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname '' '.exe' "$file"
21695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      wrapper=$func_stripname_result
21705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
21725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
21735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    wrapper=$file
21745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
21755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
21765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_ltwrapper_script_p "$wrapper"; then
21775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  notinst_deplibs=
21785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command=
21795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$wrapper"
21815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Check the variables that should have been set.
21835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -z "$generated_by_libtool_version" && \
21845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize=yes
21875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for lib in $notinst_deplibs; do
21885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Check to see that each library is installed.
21895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir=
21905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$lib"; then
21915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source "$lib"
21925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$libdir" && test ! -f "$libfile"; then
21955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_warning "\`$lib' has not been installed in \`$libdir'"
21965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize=no
21975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
21995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command=
22015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$wrapper"
22025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  outputname=
22045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$fast_install" = no && test -n "$relink_command"; then
22055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
22065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$finalize" = yes; then
22075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        tmpdir=`func_mktempdir`
22085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$file$stripped_ext"
22095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		file="$func_basename_result"
22105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        outputname="$tmpdir/$file"
22115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        # Replace the output file specification.
22125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $opt_silent || {
22155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          func_quote_for_expand "$relink_command"
22165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval "func_echo $func_quote_for_expand_result"
22175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        }
22185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        if eval "$relink_command"; then :
22195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          else
22205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_error "error: relink \`$file' with the above command before installing it"
22215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $opt_dry_run || ${RM}r "$tmpdir"
22225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  continue
22235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        fi
22245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        file="$outputname"
22255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
22265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_warning "cannot relink \`$file'"
22275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
22285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
22295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
22305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Install the binary that we compiled earlier.
22315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
22335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
22345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# remove .exe since cygwin /usr/bin/install will append another
22365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# one anyway
22375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $install_prog,$host in
22385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*/usr/bin/install*,*cygwin*)
22395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file:$destfile in
22405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe:*.exe)
22415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # this is ok
22425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
22435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe:*)
22445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    destfile=$destfile.exe
22455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
22465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *:*.exe)
22475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$destfile"
22485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    destfile=$func_stripname_result
22495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
22505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
22515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
22525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
22535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || if test -n "$outputname"; then
22555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ${RM}r "$tmpdir"
22565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
22575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
22585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
22595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
22605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $staticlibs; do
22625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$file"
22635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      name="$func_basename_result"
22645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Set up the ranlib parameters.
22665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlib="$destdir/$name"
22675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$stripme" && test -n "$old_striplib"; then
22715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$old_striplib $oldlib" 'exit $?'
22725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
22735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do each command in the postinstall commands.
22755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
22775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$future_libdirs" && \
22795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_warning "remember to run \`$progname --finish$future_libdirs'"
22805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$current_libdirs"; then
22825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Maybe just do a dry run.
22835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
22865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
22875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
22885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
22895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = install && func_mode_install ${1+"$@"}
22915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_generate_dlsyms outputname originator pic_p
22945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Extract symbols from dlprefiles and create ${outputname}S.o with
22955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a dlpreopen symbol table.
22965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_generate_dlsyms ()
22975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
22985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
22995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_outputname="$1"
23005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_originator="$2"
23015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_pic_p="${3-no}"
23025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
23035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_dlsyms=
23045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
23065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	my_dlsyms="${my_outputname}S.c"
23085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
23095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_error "not configured to extract global symbols from dlpreopened files"
23105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
23115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
23125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$my_dlsyms"; then
23145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $my_dlsyms in
23155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "") ;;
23165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.c)
23175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Discover the nlist of each of the dlfiles.
23185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	nlist="$output_objdir/${my_outputname}.nm"
23195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Parse the name list into a source file.
23235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_verbose "creating $output_objdir/$my_dlsyms"
23245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
23305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern \"C\" {
23315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
23325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* External symbol declarations for the compiler. */\
23345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
23355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$dlself" = yes; then
23375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "generating symbol list for \`$output'"
23385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add our own program objects to the symbol list.
23425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for progfile in $progfiles; do
23445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "extracting global C symbols from \`$progfile'"
23455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
23475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$exclude_expsyms"; then
23495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$MV "$nlist"T "$nlist"'
23525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
23545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols_regex"; then
23565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$MV "$nlist"T "$nlist"'
23595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
23615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Prepare the list of exported symbols
23635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$export_symbols"; then
23645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    export_symbols="$output_objdir/$outputname.exp"
23655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $RM $export_symbols
23675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
23695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *cygwin* | *mingw* | *cegcc* )
23705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        ;;
23735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
23745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
23765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$MV "$nlist"T "$nlist"'
23805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
23815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        *cygwin | *mingw* | *cegcc* )
23825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          ;;
23855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
23865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
23885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
23895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for dlprefile in $dlprefiles; do
23915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "extracting global C symbols from \`$dlprefile'"
23925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_basename "$dlprefile"
23935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name="$func_basename_result"
23945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || {
23955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval '$ECHO ": $name " >> "$nlist"'
23965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  }
23985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
23995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || {
24015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make sure we have at least an empty file.
24025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -f "$nlist" || : > "$nlist"
24035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$exclude_expsyms"; then
24055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
24065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $MV "$nlist"T "$nlist"
24075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
24085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Try sorting and uniquifying the output.
24105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $GREP -v "^: " < "$nlist" |
24115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		sort -k 3
24135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
24145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		sort +2
24155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi |
24165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      uniq > "$nlist"S; then
24175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    :
24185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
24195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $GREP -v "^: " < "$nlist" > "$nlist"S
24205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
24215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -f "$nlist"S; then
24235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
24255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
24275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The mapping between symbol names and symbols.  */
24315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct {
24325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *name;
24335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void *address;
24345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} lt_dlsymlist;
24355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
24365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
24375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* | *cegcc* )
24385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* DATA imports from DLLs on WIN32 con't be const, because
24405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   runtime relocations are performed -- see ld's documentation
24415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   on pseudo-relocs.  */"
24425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_dlsym_const= ;;
24435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *osf5*)
24445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    echo >> "$output_objdir/$my_dlsyms" "\
24455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This system does not cope well with relocations in const data */"
24465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_dlsym_const= ;;
24475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
24485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_dlsym_const=const ;;
24495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
24505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern $lt_dlsym_const lt_dlsymlist
24535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[];
24545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$lt_dlsym_const lt_dlsymlist
24555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[] =
24565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){\
24575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { \"$my_originator\", (void *) 0 },"
24585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $need_lib_prefix in
24605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  no)
24615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
24635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
24645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
24665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
24675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {0, (void *) 0}
24695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
24705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This works around a problem in FreeBSD linker */
24725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef FREEBSD_WORKAROUND
24735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const void *lt_preloaded_setup() {
24745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return lt_${my_prefix}_LTX_preloaded_symbols;
24755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
24765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
24775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
24795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
24805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif\
24815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
24825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	} # !$opt_dry_run
24835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pic_flag_for_symtable=
24855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$compile_command " in
24865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -static "*) ;;
24875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
24885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
24895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # compiling the symbol table file with pic_flag works around
24905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # a FreeBSD bug that causes programs to crash when -lm is
24915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # linked before any other PIC object.  But we must not use
24925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # pic_flag when linking with -static.  The problem exists in
24935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-hpux*)
24975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_flag_for_symtable=" $pic_flag"  ;;
24985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
24995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$my_pic_p" != Xno; then
25005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      pic_flag_for_symtable=" $pic_flag"
25015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
25025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
25035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
25045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
25055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
25065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	symtab_cflags=
25075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for arg in $LTCFLAGS; do
25085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $arg in
25095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  -pie | -fpie | -fPIE) ;;
25105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) symtab_cflags="$symtab_cflags $arg" ;;
25115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
25125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
25135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Now compile the dynamic symbol file.
25155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Clean up the generated files.
25185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
25195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform the symbol file into the correct name.
25215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	symfileobj="$output_objdir/${my_outputname}S.$objext"
25225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
25235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*cygwin* | *mingw* | *cegcc* )
25245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -f "$output_objdir/$my_outputname.def"; then
25255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
25285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
25315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
25325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
25335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
25365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
25375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
25385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
25395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
25415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
25425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
25435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # We keep going just in case the user didn't refer to
25445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # really was required.
25465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Nullify the symbol file.
25485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
25515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
25525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_win32_libid arg
25545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# return the library type of file 'arg'
25555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
25565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Need a lot of goo to handle *both* DLLs and import libs
25575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Has to be a shell function in order to 'eat' the argument
25585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that is supplied when $file_magic_command is called.
25595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_win32_libid ()
25605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
25615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $opt_debug
25625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  win32_libid_type="unknown"
25635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  win32_fileres=`file -L $1 2>/dev/null`
25645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $win32_fileres in
25655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *ar\ archive\ import\ library*) # definitely import
25665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win32_libid_type="x86 archive import"
25675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *ar\ archive*) # could be an import, or static
25695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      win32_nmres=`eval $NM -f posix -A $1 |
25725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$SED -n -e '
25735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    1,100{
25745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		/ I /{
25755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    s,.*,import,
25765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    p
25775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    q
25785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		}
25795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }'`
25805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $win32_nmres in
25815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      import*)  win32_libid_type="x86 archive import";;
25825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)        win32_libid_type="x86 archive static";;
25835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
25845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
25855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *DLL*)
25875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win32_libid_type="x86 DLL"
25885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *executable*) # but shell scripts are "executable" too...
25905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $win32_fileres in
25915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *MS\ Windows\ PE\ Intel*)
25925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      win32_libid_type="x86 DLL"
25935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
25945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
25955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
25975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $ECHO "$win32_libid_type"
25985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
25995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_an_archive dir oldlib
26035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_an_archive ()
26045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
26055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
26065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    f_ex_an_ar_dir="$1"; shift
26075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    f_ex_an_ar_oldlib="$1"
26085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     :
26115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
26125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
26145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
26155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_archives gentop oldlib ...
26185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_archives ()
26195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
26205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
26215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_gentop="$1"; shift
26225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_oldlibs=${1+"$@"}
26235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_oldobjs=""
26245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_xlib=""
26255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_xabs=""
26265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_xdir=""
26275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for my_xlib in $my_oldlibs; do
26295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Extract the objects.
26305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $my_xlib in
26315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) my_xabs=`pwd`"/$my_xlib" ;;
26335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
26345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$my_xlib"
26355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_xlib="$func_basename_result"
26365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_xlib_u=$my_xlib
26375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      while :; do
26385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case " $extracted_archives " in
26395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $my_xlib_u "*)
26405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $extracted_serial + 1
26415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  extracted_serial=$func_arith_result
26425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) break ;;
26445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
26455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
26465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      extracted_archives="$extracted_archives $my_xlib_u"
26475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_xdir="$my_gentop/$my_xlib_u"
26485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_mkdir_p "$my_xdir"
26505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
26525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *-darwin*)
26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_verbose "Extracting $my_xabs"
26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do not bother doing anything if just a dry run
26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || {
26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_orig_dir=`pwd`
26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cd $my_xdir || exit $?
26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_archive=$my_xabs
26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_curdir=`pwd`
26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_base_archive=`basename "$darwin_archive"`
26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$darwin_arches"; then
26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_arch=
26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for darwin_arch in  $darwin_arches ; do
26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cd "$darwin_curdir"
26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done # $darwin_arches
26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_file=
26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_files=
26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for darwin_file in $darwin_filelist; do
26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $LIPO -create -output "$darwin_file" $darwin_files
26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done # $darwin_filelist
26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM -rf unfat-$$
26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cd "$darwin_orig_dir"
26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cd $darwin_orig_dir
26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_extract_an_archive "$my_xdir" "$my_xabs"
26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # $darwin_arches
26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	} # !$opt_dry_run
26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_extract_an_archive "$my_xdir" "$my_xabs"
26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_extract_archives_result="$my_oldobjs"
26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part1 [arg=no]
27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the first part of a libtool wrapper script on stdout.
27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with
27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below.
27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part1 ()
27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part1_arg1=no
27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1" ; then
27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_emit_wrapper_part1_arg1=$1
27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#! $SHELL
27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $output - temporary wrapper script for $objdir/$outputname
27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The $output program cannot be directly executed until all the libtool
27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# libraries that it depends on are installed.
27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This wrapper script should never be moved out of the build directory.
27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If it is, it will not operate correctly.
27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Sed substitution that helps us do robust quoting.  It backslashifies
27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# metacharacters that are still active within double-quoted strings.
27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Xsed='${SED} -e 1s/^X//'
27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_quote_subst='$sed_quote_subst'
27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Be Bourne compatible
27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  emulate sh
27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NULLCMD=:
27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # is contrary to our usage.  Disable this feature.
27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  setopt NO_GLOB_SUBST
27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else
27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_SH=xpg4; export BIN_SH # for Tru64
27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DUALCASE=1; export DUALCASE # for MKS sh
27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The HP-UX ksh and POSIX shell print the target directory to stdout
27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if CDPATH is set.
27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\"
27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This environment variable determines our operation mode.
27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test \"\$libtool_install_magic\" = \"$magic\"; then
27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # install mode needs the following variables:
27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  generated_by_libtool_version='$macro_version'
27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  notinst_deplibs='$notinst_deplibs'
27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else
27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ECHO=\"$qecho\"
27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\"\$0\"
27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Make sure echo works.
27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"X\$1\" = X--no-reexec; then
27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Discard the --no-reexec flag, and continue.
27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Yippee, \$ECHO works!
27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      :
27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Restart under the correct shell, and then maybe \$ECHO will work.
27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi\
27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Find the directory that this script lives in.
27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Follow symbolic links until we get to the real thisdir.
27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while test -n \"\$file\"; do
27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # If there was a directory component, then change thisdir.
27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"x\$destdir\" != \"x\$file\"; then
27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case \"\$destdir\" in
27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *) thisdir=\"\$thisdir/\$destdir\" ;;
27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  done
27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part1
27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part2 [arg=no]
28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the second part of a libtool wrapper script on stdout.
28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with
28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below.
28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part2 ()
28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part2_arg1=no
28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1" ; then
28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_emit_wrapper_part2_arg1=$1
28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Usually 'no', except on cygwin/mingw when embedded into
28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # the cwrapper.
28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # special case for '.'
28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"\$thisdir\" = \".\"; then
28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      thisdir=\`pwd\`
28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # remove .libs from thisdir
28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case \"\$thisdir\" in
28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $objdir )   thisdir=. ;;
28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Try to get the absolute directory name.
28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  absdir=\`cd \"\$thisdir\" && pwd\`
28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$fast_install" = yes; then
28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  program=lt-'$outputname'$exeext
28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  progdir=\"\$thisdir/$objdir\"
28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test ! -f \"\$progdir/\$program\" ||
28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\"\$\$-\$program\"
28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test ! -d \"\$progdir\"; then
28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $MKDIR \"\$progdir\"
28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $RM \"\$progdir/\$file\"
28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi"
28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # relink executable if necessary
28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n \"\$relink_command\"; then
28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO \"\$relink_command_output\" >&2
28585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$RM \"\$progdir/\$file\"
28595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit 1
28605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { $RM \"\$progdir/\$program\";
28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $RM \"\$progdir/\$file\"
28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi"
28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  program='$outputname'
28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  progdir=\"\$thisdir/$objdir\"
28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -f \"\$progdir/\$program\"; then"
28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Export our shlibpath_var if we have one.
28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Add our own library path to $shlibpath_var
28835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Some systems cannot cope with colon-terminated $shlibpath_var
28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The second colon is a workaround for a bug in BeOS R4 sed
28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export $shlibpath_var
28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# fixup the dll searchpath if we need to.
28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$dllsearchpath"; then
28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Add the dll search path components to the executable PATH
28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PATH=$dllsearchpath:\$PATH
28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"\$libtool_execute_magic\" != \"$magic\"; then
29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Run the actual program with our arguments.
29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Backslashes separate directories on plain windows
29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-mingw | *-*-os2* | *-cegcc*)
29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit 1
29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The program doesn't exist.
29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit 1
29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi\
29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part2
29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper [arg=no]
29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit a libtool wrapper script on stdout.
29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Don't directly open a file because we may want to
29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# incorporate the script contents within a cygwin/mingw
29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# wrapper executable.  Must ONLY be called from within
29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link because it depends on a number of variables
29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# set therein.
29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable will take.  If 'yes', then the emitted script
29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will assume that the directory in which it is stored is
29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the $objdir directory.  This is a cygwin/mingw-specific
29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior.
29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper ()
29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_arg1=no
29535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1" ; then
29545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_emit_wrapper_arg1=$1
29555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
29565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# split this up so that func_emit_cwrapperexe_src
29585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# can call each part independently.
29595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
29625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_path arg
29655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert paths to host format when used with build tools.
29675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Intended for use with "native" mingw (where libtool itself
29685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is running under the msys shell), or in the following cross-
29695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# build environments:
29705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    $build          $host
29715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    mingw (msys)    mingw  [e.g. native]
29725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    cygwin          mingw
29735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    *nix + wine     mingw
29745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# where wine is equipped with the `winepath' executable.
29755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# In the native mingw case, the (msys) shell automatically
29765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# converts paths for any non-msys applications it launches,
29775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but that facility isn't available from inside the cwrapper.
29785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Similar accommodations are necessary for $host mingw and
29795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build cygwin.  Calling this function does no harm for other
29805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host/$build combinations not listed above.
29815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the path (on $build) that should be converted to
29835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation for $host. The result is stored
29845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_path_result.
29855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_path ()
29865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
29875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_to_host_path_result="$1"
29885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -n "$1" ; then
29895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
29905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *mingw* )
29915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case $build in
29935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *mingw* ) # actually, msys
29945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # awkward: cmd appends spaces to result
29955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
30005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *cygwin* )
30025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_tmp1=`cygpath -w "$1"`
30035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
30055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          * )
30075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # Unfortunately, winepath does not exit with a non-zero
30085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # error code, so we are forced to check the contents of
30095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # stdout. On the other hand, if the command is not
30105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # found, the shell will set an exit code of 127 and print
30115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # *an error message* to stdout. So we must check for both
30125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # error code of zero AND non-empty stdout, which explains
30135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # the odd construction:
30145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                $SED -e "$lt_sed_naive_backslashify"`
30185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            else
30195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              # Allow warning below.
30205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_path_result=""
30215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            fi
30225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
30245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test -z "$func_to_host_path_result" ; then
30255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Could not determine host path corresponding to"
30265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "  '$1'"
30275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Continuing, but uninstalled executables may not work."
30285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # Fallback:
30295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_to_host_path_result="$1"
30305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
30315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
30325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
30335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
30345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
30355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_path
30365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_pathlist arg
30385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
30395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert pathlists to host format when used with build tools.
30405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# See func_to_host_path(), above. This function supports the
30415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# following $build/$host combinations (but does no harm for
30425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# combinations not listed here):
30435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    $build          $host
30445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    mingw (msys)    mingw  [e.g. native]
30455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    cygwin          mingw
30465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    *nix + wine     mingw
30475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
30485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Path separators are also converted from $build format to
30495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host format. If ARG begins or ends with a path separator
30505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# character, it is preserved (but converted to $host format)
30515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# on output.
30525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
30535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is a pathlist (on $build) that should be converted to
30545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation on $host. The result is stored
30555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_pathlist_result.
30565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_pathlist ()
30575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
30585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_to_host_pathlist_result="$1"
30595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -n "$1" ; then
30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *mingw* )
30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Remove leading and trailing path separator characters from
30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # ARG. msys behavior is inconsistent here, cygpath turns them
30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # into '.;' and ';.', and winepath ignores them completely.
30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_to_host_pathlist_tmp2="$1"
30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Once set for this call, this variable should not be
30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # reassigned. It is used in tha fallback case.
30695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $SED -e 's|^:*||' -e 's|:*$||'`
30715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case $build in
30725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *mingw* ) # Actually, msys.
30735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # Awkward: cmd appends spaces to result.
30745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
30795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *cygwin* )
30815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
30845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          * )
30865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # unfortunately, winepath doesn't convert pathlists
30875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_result=""
30885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_oldIFS=$IFS
30895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            IFS=:
30905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              IFS=$func_to_host_pathlist_oldIFS
30925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              if test -n "$func_to_host_pathlist_f" ; then
30935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                func_to_host_path "$func_to_host_pathlist_f"
30945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                if test -n "$func_to_host_path_result" ; then
30955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  if test -z "$func_to_host_pathlist_result" ; then
30965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    func_to_host_pathlist_result="$func_to_host_path_result"
30975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  else
30985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  fi
31005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                fi
31015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              fi
31025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              IFS=:
31035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            done
31045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            IFS=$func_to_host_pathlist_oldIFS
31055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
31065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
31075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test -z "$func_to_host_pathlist_result" ; then
31085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Could not determine the host path(s) corresponding to"
31095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "  '$1'"
31105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Continuing, but uninstalled executables may not work."
31115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # Fallback. This may break if $1 contains DOS-style drive
31125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # specifications. The fix is not to complicate the expression
31135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # below, but for the user to provide a working wine installation
31145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # with winepath so that path translation in the cross-to-mingw
31155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # case works properly.
31165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
31205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Now, add the leading and trailing path separators back
31215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case "$1" in
31225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
31245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
31255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case "$1" in
31265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
31285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
31295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
31305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
31315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
31325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
31335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_pathlist
31345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_cwrapperexe_src
31365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# emit the source code for a wrapper executable on stdout
31375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Must ONLY be called from within func_mode_link because
31385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# it depends on a number of variable set therein.
31395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_cwrapperexe_src ()
31405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
31415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cat <<EOF
31425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   The $output program cannot be directly executed until all the libtool
31475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   libraries that it depends on are installed.
31485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   This wrapper executable should never be moved out of the build directory.
31505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   If it is, it will not operate correctly.
31515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Currently, it simply execs the wrapper *script* "$SHELL $output",
31535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   but could eventually absorb all of the scripts functionality and
31545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   exec $objdir/$outputname directly.
31555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
31565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
31575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
31585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h>
31595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h>
31605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER
31615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <direct.h>
31625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <process.h>
31635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <io.h>
31645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define setmode _setmode
31655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
31665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <unistd.h>
31675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stdint.h>
31685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __CYGWIN__
31695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <io.h>
31705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HAVE_SETENV
31715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef __STRICT_ANSI__
31725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *realpath (const char *, char *);
31735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int putenv (char *);
31745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int setenv (const char *, const char *, int);
31755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
31765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
31775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <malloc.h>
31795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h>
31805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <assert.h>
31815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h>
31825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ctype.h>
31835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h>
31845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fcntl.h>
31855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/stat.h>
31865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(PATH_MAX)
31885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX PATH_MAX
31895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(MAXPATHLEN)
31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX MAXPATHLEN
31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX 1024
31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXOTH
31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXOTH 0
31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXGRP
31995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXGRP 0
32005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER
32035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXUSR _S_IEXEC
32045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define stat _stat
32055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef _INTPTR_T_DEFINED
32065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define intptr_t int
32075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
32085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR
32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DIR_SEPARATOR '/'
32125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PATH_SEPARATOR ':'
32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  defined (__OS2__)
32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_DOS_BASED_FILE_SYSTEM
32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb"
32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef DIR_SEPARATOR_2
32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define DIR_SEPARATOR_2 '\\'
32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef PATH_SEPARATOR_2
32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define PATH_SEPARATOR_2 ';'
32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR_2
32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* DIR_SEPARATOR_2 */
32305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) \
32315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* DIR_SEPARATOR_2 */
32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PATH_SEPARATOR_2
32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* PATH_SEPARATOR_2 */
32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PATH_SEPARATOR_2 */
32395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __CYGWIN__
32415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb"
32425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef FOPEN_WB
32455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "w"
32465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _O_BINARY
32485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define _O_BINARY 0
32495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XFREE(stale) do { \
32535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (stale) { free ((void *) stale); stale = 0; } \
32545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} while (0)
32555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef LTWRAPPER_DEBUGPRINTF
32575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined DEBUGWRAPPER
32585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void
32605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ltwrapper_debugprintf (const char *fmt, ...)
32615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
32625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    va_list args;
32635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    va_start (args, fmt);
32645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (void) vfprintf (stderr, fmt, args);
32655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    va_end (args);
32665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
32675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
32685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args)
32695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *program_name = NULL;
32725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void *xmalloc (size_t num);
32745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *xstrdup (const char *string);
32755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *base_name (const char *name);
32765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *find_executable (const char *wrapper);
32775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *chase_symlinks (const char *pathspec);
32785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int make_executable (const char *path);
32795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int check_executable (const char *path);
32805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *strendzap (char *str, const char *pat);
32815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_fatal (const char *message, ...);
32825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_setenv (const char *name, const char *value);
32835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *lt_extend_str (const char *orig_value, const char *add, int to_end);
32845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_set (const char *arg);
32855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_prepend (const char *arg);
32865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_append (const char *arg);
32875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int lt_split_name_value (const char *arg, char** name, char** value);
32885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_exe_path (const char *name, const char *value);
32895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_lib_path (const char *name, const char *value);
32905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part1 =
32925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
32935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_wrapper_part1 yes |
32955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $SED -e 's/\([\\"]\)/\\\1/g' \
32965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	             -e 's/^/  "/' -e 's/$/\\n"/'
32975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    echo ";"
32985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<EOF
32995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part2 =
33015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_wrapper_part2 yes |
33035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $SED -e 's/\([\\"]\)/\\\1/g' \
33045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	             -e 's/^/  "/' -e 's/$/\\n"/'
33055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    echo ";"
33065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<EOF
33085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * MAGIC_EXE = "$magic_exe";
33095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VARNAME = "$shlibpath_var";
33105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_pathlist "$temp_rpath"
33145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
33185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<"EOF"
33195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE   = "";
33205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
33225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$dllsearchpath"; then
33245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_pathlist "$dllsearchpath:"
33255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = "PATH";
33275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
33305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<"EOF"
33315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = "";
33325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE   = "";
33335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
33355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$fast_install" = yes; then
33375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
33415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
33455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
33485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
33705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)main (int argc, char *argv[])
33715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
33725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char **newargz;
33735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int  newargc;
33745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *tmp_pathspec;
33755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *actual_cwrapper_path;
33765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *actual_cwrapper_name;
33775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *target_name;
33785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *lt_argv_zero;
33795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  intptr_t rval = 127;
33805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int i;
33825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  program_name = (char *) xstrdup (base_name (argv[0]));
33845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* very simple arg parsing; don't want to rely on getopt */
33885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (i = 1; i < argc; i++)
33895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
33905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strcmp (argv[i], dumpscript_opt) == 0)
33915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
33925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$host" in
33945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *mingw* | *cygwin* )
33955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# make stdout use "unix" line endings
33965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		echo "          setmode(1,_O_BINARY);"
33975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
33985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
33995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  printf ("%s", script_text_part1);
34025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  printf ("%s", script_text_part2);
34035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  return 0;
34045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
34055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
34065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargz = XMALLOC (char *, argc + 1);
34085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = find_executable (argv[0]);
34095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (tmp_pathspec == NULL)
34105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lt_fatal ("Couldn't find %s", argv[0]);
34115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  tmp_pathspec));
34135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  actual_cwrapper_path));
34175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (tmp_pathspec);
34185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* wrapper name transforms */
34235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strendzap (actual_cwrapper_name, ".exe");
34245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (actual_cwrapper_name);
34265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  actual_cwrapper_name = tmp_pathspec;
34275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = 0;
34285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* target_name transforms -- use actual target program name; might have lt- prefix */
34305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strendzap (target_name, ".exe");
34325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (target_name);
34345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  target_name = tmp_pathspec;
34355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = 0;
34365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  target_name));
34395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<EOF
34425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargz[0] =
34435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XMALLOC (char, (strlen (actual_cwrapper_path) +
34445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcpy (newargz[0], actual_cwrapper_path);
34465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcat (newargz[0], "$objdir");
34475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcat (newargz[0], "/");
34485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* stop here, and copy so we don't have to do this twice */
34525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = xstrdup (newargz[0]);
34535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcat (newargz[0], actual_cwrapper_name);
34565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* DO want the lt- prefix here if it exists, so use target_name */
34585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (tmp_pathspec);
34605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = NULL;
34615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $host_os in
34645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      mingw*)
34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
34675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char* p;
34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    while ((p = strchr (newargz[0], '\\')) != NULL)
34695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
34705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*p = '/';
34715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
34725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
34745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*p = '/';
34755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
34765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
34775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
34795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
34805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (target_name);
34835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (actual_cwrapper_path);
34845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (actual_cwrapper_name);
34855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargc=0;
34925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (i = 1; i < argc; i++)
34935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
34945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
34965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if (argv[i][env_set_opt_len] == '=')
34975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *p = argv[i] + env_set_opt_len + 1;
34995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_set (p);
35005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
35025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_set (argv[++i]); /* don't copy */
35045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else
35065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_fatal ("%s missing required argument", env_set_opt);
35075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          continue;
35085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
35115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if (argv[i][env_prepend_opt_len] == '=')
35125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *p = argv[i] + env_prepend_opt_len + 1;
35145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_prepend (p);
35155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else
35215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_fatal ("%s missing required argument", env_prepend_opt);
35225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          continue;
35235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
35265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if (argv[i][env_append_opt_len] == '=')
35275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *p = argv[i] + env_append_opt_len + 1;
35295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_append (p);
35305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_append (argv[++i]); /* don't copy */
35345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else
35365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_fatal ("%s missing required argument", env_append_opt);
35375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          continue;
35385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
35415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             namespace, but it is not one of the ones we know about and
35435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             have already dealt with, above (inluding dump-script), then
35445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             report an error. Otherwise, targets might begin to believe
35455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             namespace. The first time any user complains about this, we'll
35475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             or a configure.ac-settable value.
35495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           */
35505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    ltwrapper_option_prefix, argv[i]);
35525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* otherwise ... */
35545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      newargz[++newargc] = xstrdup (argv[i]);
35555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
35565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargz[++newargc] = NULL;
35575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (i = 0; i < newargc; i++)
35605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
35615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
35635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
35655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $host_os in
35675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      mingw*)
35685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		cat <<"EOF"
35695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* execv doesn't actually work on mingw as expected on unix */
35705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (rval == -1)
35725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
35735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* failed to start process */
35745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return 127;
35765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
35775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rval;
35785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
35795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
35805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
35815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		cat <<"EOF"
35825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  execv (lt_argv_zero, newargz);
35835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rval; /* =127, but avoids unused variable warning */
35845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
35855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
35865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
35875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
35895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
35905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void *
35925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xmalloc (size_t num)
35935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
35945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void *p = (void *) malloc (num);
35955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!p)
35965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lt_fatal ("Memory exhausted");
35975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return p;
35995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
36025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xstrdup (const char *string)
36035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
36055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  string) : NULL;
36065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *
36095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base_name (const char *name)
36105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *base;
36125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Skip over the disk name in MSDOS pathnames. */
36155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    name += 2;
36175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
36185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (base = name; *name; name++)
36205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (IS_DIR_SEPARATOR (*name))
36215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base = name + 1;
36225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return base;
36235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
36265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)check_executable (const char *path)
36275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct stat st;
36295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((!path) || (!*path))
36335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
36345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((stat (path, &st) >= 0)
36365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
36385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
36395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
36405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
36435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make_executable (const char *path)
36445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rval = 0;
36465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct stat st;
36475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((!path) || (!*path))
36515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
36525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (stat (path, &st) >= 0)
36545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
36555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
36575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rval;
36585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Searches for the full path of the wrapper.  Returns
36615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   newly allocated full path name if found, NULL otherwise
36625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Does not chase symlinks, even on platforms that support them.
36635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
36645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
36655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)find_executable (const char *wrapper)
36665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int has_slash = 0;
36685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *p;
36695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *p_next;
36705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* static buffer for getcwd */
36715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char tmp[LT_PATHMAX + 1];
36725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int tmp_len;
36735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *concat_name;
36745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((wrapper == NULL) || (*wrapper == '\0'))
36795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
36805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Absolute path? */
36825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
36855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      concat_name = xstrdup (wrapper);
36865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (check_executable (concat_name))
36875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	return concat_name;
36885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (concat_name);
36895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
36905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
36915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
36925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
36935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (IS_DIR_SEPARATOR (wrapper[0]))
36945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
36955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  concat_name = xstrdup (wrapper);
36965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if (check_executable (concat_name))
36975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    return concat_name;
36985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  XFREE (concat_name);
36995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
37005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
37015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
37025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
37035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (p = wrapper; *p; p++)
37055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (*p == '/')
37065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
37075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	has_slash = 1;
37085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	break;
37095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
37105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_slash)
37115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
37125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* no slashes; search PATH */
37135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const char *path = getenv ("PATH");
37145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (path != NULL)
37155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
37165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for (p = path; *p; p = p_next)
37175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    {
37185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      const char *q;
37195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      size_t p_len;
37205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      for (q = p; *q; q++)
37215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if (IS_PATH_SEPARATOR (*q))
37225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  break;
37235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      p_len = q - p;
37245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      p_next = (*q == '\0' ? q : q + 1);
37255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if (p_len == 0)
37265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		{
37275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  /* empty path: current directory */
37285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    lt_fatal ("getcwd failed");
37305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  tmp_len = strlen (tmp);
37315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name =
37325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  memcpy (concat_name, tmp, tmp_len);
37345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name[tmp_len] = '/';
37355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  strcpy (concat_name + tmp_len + 1, wrapper);
37365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		}
37375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
37385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		{
37395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name =
37405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  memcpy (concat_name, p, p_len);
37425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name[p_len] = '/';
37435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  strcpy (concat_name + p_len + 1, wrapper);
37445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		}
37455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if (check_executable (concat_name))
37465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		return concat_name;
37475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      XFREE (concat_name);
37485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
37495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
37505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* not found in PATH; assume curdir */
37515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
37525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Relative path | not found in path: prepend cwd */
37535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (getcwd (tmp, LT_PATHMAX) == NULL)
37545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lt_fatal ("getcwd failed");
37555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_len = strlen (tmp);
37565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  memcpy (concat_name, tmp, tmp_len);
37585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  concat_name[tmp_len] = '/';
37595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcpy (concat_name + tmp_len + 1, wrapper);
37605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (check_executable (concat_name))
37625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return concat_name;
37635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (concat_name);
37645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
37655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
37665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
37685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chase_symlinks (const char *pathspec)
37695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
37705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_ISLNK
37715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return xstrdup (pathspec);
37725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
37735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char buf[LT_PATHMAX];
37745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct stat s;
37755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *tmp_pathspec = xstrdup (pathspec);
37765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *p;
37775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int has_symlinks = 0;
37785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while (strlen (tmp_pathspec) && !has_symlinks)
37795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
37805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			      tmp_pathspec));
37825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (lstat (tmp_pathspec, &s) == 0)
37835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
37845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if (S_ISLNK (s.st_mode) != 0)
37855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    {
37865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      has_symlinks = 1;
37875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break;
37885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
37895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  /* search backwards for last DIR_SEPARATOR */
37915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    p--;
37945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    {
37965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      /* no more DIR_SEPARATORS left */
37975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break;
37985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
37995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *p = '\0';
38005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
38015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
38025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
38035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  char *errstr = strerror (errno);
38045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
38055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
38065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (tmp_pathspec);
38085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_symlinks)
38105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return xstrdup (pathspec);
38125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = realpath (pathspec, buf);
38155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (tmp_pathspec == 0)
38165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("Could not follow symlinks for %s", pathspec);
38185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return xstrdup (tmp_pathspec);
38205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
38215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
38245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strendzap (char *str, const char *pat)
38255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t len, patlen;
38275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  assert (str != NULL);
38295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  assert (pat != NULL);
38305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  len = strlen (str);
38325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  patlen = strlen (pat);
38335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (patlen <= len)
38355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      str += len - patlen;
38375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strcmp (str, pat) == 0)
38385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*str = '\0';
38395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return str;
38415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void
38445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_error_core (int exit_status, const char *mode,
38455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       const char *message, va_list ap)
38465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fprintf (stderr, "%s: %s: ", program_name, mode);
38485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  vfprintf (stderr, message, ap);
38495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fprintf (stderr, ".\n");
38505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (exit_status >= 0)
38525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit (exit_status);
38535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
38565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_fatal (const char *message, ...)
38575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  va_list ap;
38595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  va_start (ap, message);
38605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  va_end (ap);
38625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
38655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_setenv (const char *name, const char *value)
38665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (name ? name : "<NULL>"),
38695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (value ? value : "<NULL>")));
38705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
38715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SETENV
38725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* always make a copy, for consistency with !HAVE_SETENV */
38735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *str = xstrdup (value);
38745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    setenv (name, str, 1);
38755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
38765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int len = strlen (name) + 1 + strlen (value) + 1;
38775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *str = XMALLOC (char, len);
38785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    sprintf (str, "%s=%s", name, value);
38795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (putenv (str) != EXIT_SUCCESS)
38805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
38815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        XFREE (str);
38825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
38835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
38845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
38855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
38885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_extend_str (const char *orig_value, const char *add, int to_end)
38895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *new_value;
38915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (orig_value && *orig_value)
38925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int orig_value_len = strlen (orig_value);
38945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int add_len = strlen (add);
38955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (to_end)
38975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
38985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value, orig_value);
38995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value + orig_value_len, add);
39005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
39015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
39025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
39035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value, add);
39045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value + add_len, orig_value);
39055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
39065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
39085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_value = xstrdup (add);
39105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return new_value;
39125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
39155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_split_name_value (const char *arg, char** name, char** value)
39165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *p;
39185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int len;
39195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!arg || !*arg)
39205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
39215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p = strchr (arg, (int)'=');
39235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!p)
39255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
39265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *value = xstrdup (++p);
39285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  len = strlen (arg) - strlen (*value);
39305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *name = XMALLOC (char, len);
39315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strncpy (*name, arg, len-1);
39325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (*name)[len - 1] = '\0';
39335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
39355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_set (const char *arg)
39395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *name = NULL;
39415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *value = NULL;
39425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (lt_split_name_value (arg, &name, &value) != 0)
39445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (name);
39465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (value);
39475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv (name, value);
39515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (name);
39525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (value);
39535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_prepend (const char *arg)
39575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *name = NULL;
39595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *value = NULL;
39605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *new_value = NULL;
39615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (lt_split_name_value (arg, &name, &value) != 0)
39635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (name);
39655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (value);
39665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  new_value = lt_extend_str (getenv (name), value, 0);
39705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv (name, new_value);
39715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (new_value);
39725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (name);
39735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (value);
39745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_append (const char *arg)
39785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *name = NULL;
39805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *value = NULL;
39815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *new_value = NULL;
39825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (lt_split_name_value (arg, &name, &value) != 0)
39845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (name);
39865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (value);
39875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  new_value = lt_extend_str (getenv (name), value, 1);
39915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv (name, new_value);
39925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (new_value);
39935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (name);
39945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (value);
39955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_exe_path (const char *name, const char *value)
39995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
40005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
40015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (name ? name : "<NULL>"),
40025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (value ? value : "<NULL>")));
40035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (name && *name && value && *value)
40055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
40065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      char *new_value = lt_extend_str (getenv (name), value, 0);
40075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* some systems can't cope with a ':'-terminated path #' */
40085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int len = strlen (new_value);
40095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
40115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          new_value[len-1] = '\0';
40125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
40135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_setenv (name, new_value);
40145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (new_value);
40155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
40165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
40175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
40195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_lib_path (const char *name, const char *value)
40205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
40215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (name ? name : "<NULL>"),
40235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (value ? value : "<NULL>")));
40245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (name && *name && value && *value)
40265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
40275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      char *new_value = lt_extend_str (getenv (name), value, 0);
40285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_setenv (name, new_value);
40295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (new_value);
40305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
40315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
40325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
40355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
40365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_cwrapperexe_src
40375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link arg...
40395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_link ()
40405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
40415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
40425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
40435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # It is impossible to link a dll without this setting, and
40455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # we shouldn't force the makefile maintainer to figure out
40465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # which system we are compiling for in order to pass an extra
40475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # flag for every libtool invocation.
40485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # allow_undefined=no
40495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # FIXME: Unfortunately, there are problems with the above when trying
40515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # to make a dll which has undefined symbols, in which case not
40525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # even a static library is built.  For now, we need to specify
40535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -no-undefined on the libtool link line when we can be certain
40545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # that all symbols are satisfied, otherwise we get a static library.
40555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      allow_undefined=yes
40565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
40575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
40585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      allow_undefined=yes
40595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
40605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
40615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_args=$nonopt
40625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    base_compile="$nonopt $@"
40635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compile_command=$nonopt
40645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    finalize_command=$nonopt
40655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compile_rpath=
40675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    finalize_rpath=
40685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compile_shlibpath=
40695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    finalize_shlibpath=
40705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    convenience=
40715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    old_convenience=
40725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deplibs=
40735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    old_deplibs=
40745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compiler_flags=
40755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    linker_flags=
40765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dllsearchpath=
40775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib_search_path=`pwd`
40785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    inst_prefix_dir=
40795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    new_inherited_linker_flags=
40805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    avoid_version=no
40825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dlfiles=
40835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dlprefiles=
40845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dlself=no
40855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export_dynamic=no
40865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export_symbols=
40875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export_symbols_regex=
40885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    generated=
40895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libobjs=
40905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ltlibs=
40915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    module=no
40925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    no_install=no
40935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objs=
40945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    non_pic_objects=
40955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    precious_files_regex=
40965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prefer_static_libs=no
40975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    preload=no
40985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prev=
40995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prevarg=
41005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    release=
41015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rpath=
41025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xrpath=
41035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    perm_rpath=
41045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    temp_rpath=
41055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    thread_safe=no
41065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    vinfo=
41075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    vinfo_number=no
41085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    weak_libs=
41095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    single_module="${wl}-single_module"
41105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_infer_tag $base_compile
41115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We need to know -static, to get the right output filenames.
41135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
41145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
41155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
41165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shared)
41175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$build_libtool_libs" != yes && \
41185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_configuration "can not build a shared library"
41195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=no
41205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	break
41215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
41225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -all-static | -static | -static-libtool-libs)
41235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $arg in
41245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-all-static)
41255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "complete static linking is impossible in this configuration"
41275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$link_static_flag"; then
41295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlopen_self=$dlopen_self_static
41305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prefer_static_libs=yes
41325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-static)
41345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlopen_self=$dlopen_self_static
41365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prefer_static_libs=built
41385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-static-libtool-libs)
41405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlopen_self=$dlopen_self_static
41425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prefer_static_libs=yes
41445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
41465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_libtool_libs=no
41475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=yes
41485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	break
41495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
41505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
41515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
41525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # See if our shared archives depend on static archives.
41545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Go through the arguments, transforming them on the way.
41575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    while test "$#" -gt 0; do
41585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg="$1"
41595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
41605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$arg"
41615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      qarg=$func_quote_for_eval_unquoted_result
41625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_append libtool_args " $func_quote_for_eval_result"
41635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # If the previous option needs an argument, assign it.
41655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$prev"; then
41665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $prev in
41675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	output)
41685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " @OUTPUT@"
41695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " @OUTPUT@"
41705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
41725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $prev in
41745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlfiles|dlprefiles)
41755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$preload" = no; then
41765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add the symbol object into the linking commands.
41775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append compile_command " @SYMFILE@"
41785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append finalize_command " @SYMFILE@"
41795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    preload=yes
41805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $arg in
41825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la | *.lo) ;;  # We handle these cases below.
41835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  force)
41845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$dlself" = no; then
41855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=needless
41865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_dynamic=yes
41875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
41885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    prev=
41895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
41905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
41915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  self)
41925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlprefiles; then
41935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=yes
41945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=yes
41965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
41975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=needless
41985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_dynamic=yes
41995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
42005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    prev=
42015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
42025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
42035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
42045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlfiles; then
42055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlfiles="$dlfiles $arg"
42065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
42075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlprefiles="$dlprefiles $arg"
42085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
42095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    prev=
42105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
42115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
42125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
42135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	expsyms)
42155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols="$arg"
42165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -f "$arg" \
42175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    || func_fatal_error "symbol file \`$arg' does not exist"
42185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	expsyms_regex)
42225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols_regex="$arg"
42235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	framework)
42275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
42285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *-*-darwin*)
42295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$deplibs " in
42305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $qarg.ltframework "*) ;;
42315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   ;;
42335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
42345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
42355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
42365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	inst_prefix)
42405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  inst_prefix_dir="$arg"
42415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objectlist)
42455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -f "$arg"; then
42465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_arg=$arg
42475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    moreargs=
42485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for fil in `cat "$save_arg"`
42495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
42505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#	      moreargs="$moreargs $fil"
42515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      arg=$fil
42525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # A libtool-controlled object.
42535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Check to see that this really is a libtool object.
42555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if func_lalib_unsafe_p "$arg"; then
42565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		pic_object=
42575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		non_pic_object=
42585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Read the .lo file
42605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_source "$arg"
42615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$pic_object" ||
42635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test -z "$non_pic_object" ||
42645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test "$pic_object" = none &&
42655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test "$non_pic_object" = none; then
42665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "cannot find name of object for \`$arg'"
42675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
42685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Extract subdirectory from the argument.
42705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_dirname "$arg" "/" ""
42715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xdir="$func_dirname_result"
42725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$pic_object" != none; then
42745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Prepend the subdirectory the object is found in.
42755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  pic_object="$xdir$pic_object"
42765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$prev" = dlfiles; then
42785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      dlfiles="$dlfiles $pic_object"
42805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      prev=
42815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      continue
42825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
42835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # If libtool objects are unsupported, then we need to preload.
42845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      prev=dlprefiles
42855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
42865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
42875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # CHECK ME:  I think I busted this.  -Ossama
42895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$prev" = dlprefiles; then
42905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # Preload the old-style object.
42915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    dlprefiles="$dlprefiles $pic_object"
42925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    prev=
42935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
42945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # A PIC object.
42965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append libobjs " $pic_object"
42975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  arg="$pic_object"
42985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
42995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Non-PIC object.
43015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$non_pic_object" != none; then
43025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Prepend the subdirectory the object is found in.
43035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  non_pic_object="$xdir$non_pic_object"
43045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # A standard non-PIC object
43065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append non_pic_objects " $non_pic_object"
43075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$pic_object" || test "$pic_object" = none ; then
43085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    arg="$non_pic_object"
43095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
43105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
43115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # If the PIC object exists, use it instead.
43125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # $xdir was prepended to $pic_object above.
43135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  non_pic_object="$pic_object"
43145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append non_pic_objects " $non_pic_object"
43155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
43165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
43175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Only an error if not doing a dry-run.
43185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $opt_dry_run; then
43195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Extract subdirectory from the argument.
43205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_dirname "$arg" "/" ""
43215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  xdir="$func_dirname_result"
43225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_lo2o "$arg"
43245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  pic_object=$xdir$objdir/$func_lo2o_result
43255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  non_pic_object=$xdir$func_lo2o_result
43265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append libobjs " $pic_object"
43275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append non_pic_objects " $non_pic_object"
43285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        else
43295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$arg' is not a valid libtool object"
43305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
43315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
43325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
43335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
43345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "link input file \`$arg' does not exist"
43355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
43365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg=$save_arg
43375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	precious_regex)
43415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  precious_files_regex="$arg"
43425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release)
43465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  release="-$arg"
43475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rpath | xrpath)
43515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # We need an absolute path.
43525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $arg in
43535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
43555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "only absolute run-paths are allowed"
43565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
43575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
43585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$prev" = rpath; then
43595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$rpath " in
43605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $arg "*) ;;
43615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) rpath="$rpath $arg" ;;
43625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
43635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
43645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$xrpath " in
43655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $arg "*) ;;
43665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) xrpath="$xrpath $arg" ;;
43675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
43685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
43695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shrext)
43735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  shrext_cmds="$arg"
43745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	weak)
43785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  weak_libs="$weak_libs $arg"
43795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	xcclinker)
43835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $qarg"
43845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $qarg"
43855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $qarg"
43875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $qarg"
43885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	xcompiler)
43915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $qarg"
43925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $qarg"
43945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $qarg"
43955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	xlinker)
43985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $qarg"
43995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $wl$qarg"
44005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
44015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $wl$qarg"
44025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $wl$qarg"
44035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
44045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
44055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
44065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval "$prev=\"\$arg\""
44075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
44085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
44095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
44105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
44115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi # test -n "$prev"
44125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      prevarg="$arg"
44145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
44165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -all-static)
44175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$link_static_flag"; then
44185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # See comment for -static flag below, for more details.
44195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $link_static_flag"
44205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $link_static_flag"
44215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -allow-undefined)
44265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# FIXME: remove this flag sometime in the future.
44275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -avoid-version)
44315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	avoid_version=yes
44325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlopen)
44365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=dlfiles
44375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlpreopen)
44415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=dlprefiles
44425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -export-dynamic)
44465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	export_dynamic=yes
44475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -export-symbols | -export-symbols-regex)
44515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$arg" = "X-export-symbols"; then
44555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=expsyms
44565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
44575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=expsyms_regex
44585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -framework)
44635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=framework
44645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -inst-prefix-dir)
44685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=inst_prefix
44695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # so, if we see these flags be careful not to treat them like -L
44745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -L[A-Z][A-Z]*:*)
44755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $with_gcc/$host in
44765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	no/*-*-irix* | /*-*-irix*)
44775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $arg"
44785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $arg"
44795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
44805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
44815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -L*)
44855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-L' '' "$arg"
44865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir=$func_stripname_result
44875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$dir"; then
44885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$#" -gt 0; then
44895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "require no space between \`-L' and \`$1'"
44905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
44915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "need path for \`-L' option"
44925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
44935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
44955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $dir in
44965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) ;;
44975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
44985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  absdir=`cd "$dir" && pwd`
44995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -z "$absdir" && \
45005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
45015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dir="$absdir"
45025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
45035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$deplibs " in
45055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -L$dir "*) ;;
45065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
45075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplibs -L$dir"
45085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib_search_path="$lib_search_path $dir"
45095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
45105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
45125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
45155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$dir:"*) ;;
45165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$dir;;
45175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$dir";;
45185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
45195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
45205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$testbindir:"*) ;;
45215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$testbindir;;
45225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
45245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
45255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -l*)
45305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
45325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # These systems don't actually have a C or math library (as such)
45345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
45355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-os2*)
45375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # These systems don't actually have a C library (as such)
45385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Do not include libc due to us having libc/libc_r.
45425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-rhapsody* | *-*-darwin1.[012])
45455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Rhapsody C and math libraries are in the System framework
45465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplibs System.ltframework"
45475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
45485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sco3.2v5* | *-*-sco5v6*)
45505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Causes problems with __ctype
45515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Compiler inserts libc in the correct place for threads to work
45555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
45585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "X$arg" = "X-lc_r"; then
45595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 case $host in
45605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   # Do not include libc_r directly, use -pthread flag.
45625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   continue
45635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   ;;
45645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 esac
45655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
45665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$deplibs $arg"
45675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -module)
45715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	module=yes
45725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # classes, name mangling, and exception handling.
45775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Darwin uses the -arch flag to determine output architecture.
45785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -model|-arch|-isysroot)
45795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compiler_flags="$compiler_flags $arg"
45805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append compile_command " $arg"
45815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append finalize_command " $arg"
45825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xcompiler
45835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compiler_flags="$compiler_flags $arg"
45885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append compile_command " $arg"
45895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append finalize_command " $arg"
45905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$new_inherited_linker_flags " in
45915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $arg "*) ;;
45925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -multi_module)
45985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	single_module="${wl}-multi_module"
45995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -no-fast-install)
46035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fast_install=no
46045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -no-install)
46085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
46095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The PATH hackery in wrapper scripts is required on Windows
46115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # and Darwin in order for the loader to find any dlls it needs.
46125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-no-install' is ignored for $host"
46135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "assuming \`-no-fast-install' instead"
46145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fast_install=no
46155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
46165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) no_install=yes ;;
46175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
46185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -no-undefined)
46225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	allow_undefined=no
46235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -objectlist)
46275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=objectlist
46285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -o) prev=output ;;
46325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -precious-files-regex)
46345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=precious_regex
46355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -release)
46395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=release
46405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -rpath)
46445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=rpath
46455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -R)
46495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xrpath
46505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -R*)
46545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-R' '' "$arg"
46555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir=$func_stripname_result
46565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
46575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $dir in
46585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) ;;
46595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
46605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "only absolute run-paths are allowed"
46615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
46625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
46635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$xrpath " in
46645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $dir "*) ;;
46655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) xrpath="$xrpath $dir" ;;
46665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
46675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shared)
46715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# The effects of -shared are defined in a previous loop.
46725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shrext)
46765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=shrext
46775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -static | -static-libtool-libs)
46815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# The effects of -static are defined in a previous loop.
46825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We used to do the same as -all-static on platforms that
46835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# didn't have a PIC flag, but the assumption that the effects
46845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# would be equivalent was wrong.  It would break on at least
46855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Digital Unix and AIX.
46865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -thread-safe)
46905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	thread_safe=yes
46915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -version-info)
46955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=vinfo
46965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -version-number)
47005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=vinfo
47015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	vinfo_number=yes
47025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -weak)
47065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        prev=weak
47075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Wc,*)
47115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-Wc,' '' "$arg"
47125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	args=$func_stripname_result
47135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=
47145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=','
47155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for flag in $args; do
47165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
47175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_quote_for_eval "$flag"
47185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg="$arg $wl$func_quote_for_eval_result"
47195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
47215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
47225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname ' ' '' "$arg"
47235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=$func_stripname_result
47245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Wl,*)
47275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-Wl,' '' "$arg"
47285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	args=$func_stripname_result
47295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=
47305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=','
47315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for flag in $args; do
47325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
47335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_quote_for_eval "$flag"
47345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg="$arg $wl$func_quote_for_eval_result"
47355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $func_quote_for_eval_result"
47375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
47385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
47395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname ' ' '' "$arg"
47405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=$func_stripname_result
47415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Xcompiler)
47445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xcompiler
47455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Xlinker)
47495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xlinker
47505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -XCClinker)
47545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xcclinker
47555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -msg_* for osf cc
47595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -msg_*)
47605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_quote_for_eval "$arg"
47615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
47625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # +DA*, +DD* enable 64-bit mode on the HP compiler
47685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -q* pass through compiler args for the IBM compiler
47695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -m*, -t[45]*, -txscale* pass through architecture-specific
47705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # compiler args for GCC
47715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -F/path gives path to uninstalled frameworks, gcc on darwin
47725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # @file GCC response files
47745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval "$arg"
47775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
47785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_append compile_command " $arg"
47795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_append finalize_command " $arg"
47805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        compiler_flags="$compiler_flags $arg"
47815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        continue
47825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
47835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Some other compiler flag.
47855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -* | +*)
47865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval "$arg"
47875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
47885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.$objext)
47915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# A standard object.
47925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objs="$objs $arg"
47935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
47965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# A libtool-controlled object.
47975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool object.
47995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_unsafe_p "$arg"; then
48005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  pic_object=
48015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  non_pic_object=
48025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Read the .lo file
48045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$arg"
48055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$pic_object" ||
48075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test -z "$non_pic_object" ||
48085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$pic_object" = none &&
48095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$non_pic_object" = none; then
48105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot find name of object for \`$arg'"
48115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Extract subdirectory from the argument.
48145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_dirname "$arg" "/" ""
48155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  xdir="$func_dirname_result"
48165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pic_object" != none; then
48185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Prepend the subdirectory the object is found in.
48195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_object="$xdir$pic_object"
48205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlfiles; then
48225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dlfiles="$dlfiles $pic_object"
48245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		prev=
48255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		continue
48265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
48275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# If libtool objects are unsupported, then we need to preload.
48285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		prev=dlprefiles
48295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
48305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
48315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # CHECK ME:  I think I busted this.  -Ossama
48335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlprefiles; then
48345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Preload the old-style object.
48355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlprefiles="$dlprefiles $pic_object"
48365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      prev=
48375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
48385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # A PIC object.
48405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append libobjs " $pic_object"
48415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    arg="$pic_object"
48425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Non-PIC object.
48455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$non_pic_object" != none; then
48465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Prepend the subdirectory the object is found in.
48475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    non_pic_object="$xdir$non_pic_object"
48485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # A standard non-PIC object
48505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append non_pic_objects " $non_pic_object"
48515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$pic_object" || test "$pic_object" = none ; then
48525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      arg="$non_pic_object"
48535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
48545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
48555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If the PIC object exists, use it instead.
48565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # $xdir was prepended to $pic_object above.
48575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    non_pic_object="$pic_object"
48585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append non_pic_objects " $non_pic_object"
48595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
48615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Only an error if not doing a dry-run.
48625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $opt_dry_run; then
48635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Extract subdirectory from the argument.
48645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_dirname "$arg" "/" ""
48655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    xdir="$func_dirname_result"
48665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_lo2o "$arg"
48685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_object=$xdir$objdir/$func_lo2o_result
48695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    non_pic_object=$xdir$func_lo2o_result
48705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append libobjs " $pic_object"
48715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append non_pic_objects " $non_pic_object"
48725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
48735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "\`$arg' is not a valid libtool object"
48745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
48765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
48775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.$libext)
48795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# An archive.
48805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$deplibs $arg"
48815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_deplibs="$old_deplibs $arg"
48825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
48835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
48845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
48865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# A libtool-controlled library.
48875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$prev" = dlfiles; then
48895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This library was specified with -dlopen.
48905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlfiles="$dlfiles $arg"
48915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
48925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$prev" = dlprefiles; then
48935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The library was specified with -dlpreopen.
48945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlprefiles="$dlprefiles $arg"
48955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
48965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
48975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplibs $arg"
48985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
48995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
49005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
49015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Some other compiler argument.
49035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
49045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Unknown arguments in both finalize_command and compile_command need
49055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to be aesthetically quoted because they are evaled later.
49065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_quote_for_eval "$arg"
49075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
49085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
49095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac # arg
49105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now actually substitute the argument into the commands.
49125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$arg"; then
49135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append compile_command " $arg"
49145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append finalize_command " $arg"
49155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
49165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # argument parsing loop
49175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$prev" && \
49195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "the \`$prevarg' option requires an argument"
49205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval arg=\"$export_dynamic_flag_spec\"
49235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_append compile_command " $arg"
49245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_append finalize_command " $arg"
49255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
49265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    oldlibs=
49285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # calculate the name of the file, without its directory
49295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_basename "$output"
49305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    outputname="$func_basename_result"
49315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libobjs_save="$libobjs"
49325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$shlibpath_var"; then
49345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # get the directories listed in $shlibpath_var
49355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
49375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shlib_search_path=
49385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
49395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_dirname "$output" "/" ""
49435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    output_objdir="$func_dirname_result$objdir"
49445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Create the object directory.
49455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mkdir_p "$output_objdir"
49465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Determine the type of output
49485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $output in
49495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "")
49505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an output file"
49515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
49525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.$libext) linkmode=oldlib ;;
49535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.lo | *.$objext) linkmode=obj ;;
49545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.la) linkmode=lib ;;
49555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *) linkmode=prog ;; # Anything else should be a program.
49565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
49575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    specialdeplibs=
49595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libs=
49615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Find all interdependent deplibs by searching for libraries
49625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # that are linked more than once (e.g. -la -lb -la)
49635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for deplib in $deplibs; do
49645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if $opt_duplicate_deps ; then
49655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$libs " in
49665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
49685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
49695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libs="$libs $deplib"
49705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
49715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = lib; then
49735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Compute libraries that are listed more than once in $predeps
49765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # $postdeps and mark them as special (i.e., whose duplicates are
49775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # not to be eliminated).
49785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pre_post_deps=
49795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if $opt_duplicate_compiler_generated_deps; then
49805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for pre_post_dep in $predeps $postdeps; do
49815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$pre_post_deps " in
49825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
49845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  pre_post_deps="$pre_post_deps $pre_post_dep"
49855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
49865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
49875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pre_post_deps=
49885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
49895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deplibs=
49915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    newdependency_libs=
49925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    newlib_search_path=
49935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    need_relink=no # whether we're linking any uninstalled libtool libraries
49945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    notinst_deplibs= # not-installed libtool libraries
49955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    notinst_path= # paths that contain not-installed libtool libraries
49965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $linkmode in
49985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib)
49995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	passes="conv dlpreopen link"
50005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for file in $dlfiles $dlprefiles; do
50015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file in
50025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la) ;;
50035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
50045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
50055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
50065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
50075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
50095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prog)
50105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_deplibs=
50115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_deplibs=
50125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	alldeplibs=no
50135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	newdlfiles=
50145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	newdlprefiles=
50155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	passes="conv scan dlopen dlpreopen link"
50165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
50175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)  passes="conv"
50185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
50195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
50205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for pass in $passes; do
50225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # The preopen pass in lib mode reverses $deplibs; put it back here
50235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # so that -L comes before libs that need it for instance...
50245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,link"; then
50255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	## FIXME: Find the place where the list is rebuilt in the wrong
50265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	##        order, and fix it there properly
50275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        tmp_deplibs=
50285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for deplib in $deplibs; do
50295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_deplibs="$deplib $tmp_deplibs"
50305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$tmp_deplibs"
50325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,link" ||
50355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test "$linkmode,$pass" = "prog,scan"; then
50365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libs="$deplibs"
50375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=
50385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode" = prog; then
50405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $pass in
50415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlopen) libs="$dlfiles" ;;
50425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlpreopen) libs="$dlprefiles" ;;
50435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
50445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
50455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Collect and forward deplibs of preopened libtool libs
50485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for lib in $dlprefiles; do
50495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Ignore non-libtool-libs
50505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dependency_libs=
50515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $lib in
50525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la)	func_source "$lib" ;;
50535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
50545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Collect preopened libtool deplibs, except any this library
50565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # has declared as weak libs
50575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
50585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $weak_libs " in
50605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $deplib_base "*) ;;
50615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) deplibs="$deplibs $deplib" ;;
50625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
50635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
50645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libs="$dlprefiles"
50665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = dlopen; then
50685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Collect dlpreopened libraries
50695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_deplibs="$deplibs"
50705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=
50715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $libs; do
50745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lib=
50755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	found=no
50765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
50775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode,$pass" = "prog,link"; then
50795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$deplib $compile_deplibs"
50805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$deplib $finalize_deplibs"
50815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
50825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compiler_flags="$compiler_flags $deplib"
50835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = lib ; then
50845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$new_inherited_linker_flags " in
50855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $deplib "*) ;;
50865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
50885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
50895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
50915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
50925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-l*)
50935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`-l' is ignored for archives/objects"
50955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
50965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '-l' '' "$deplib"
50985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name=$func_stripname_result
50995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib; then
51005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
51015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
51025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
51035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for searchdir in $searchdirs; do
51055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for search_ext in .la $std_shrext .so .a; do
51065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Search the libtool library
51075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      lib="$searchdir/lib${name}${search_ext}"
51085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -f "$lib"; then
51095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$search_ext" = ".la"; then
51105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  found=yes
51115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
51125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  found=no
51135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
51145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		break 2
51155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
51165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
51175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
51185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$found" != yes; then
51195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # deplib doesn't seem to be a libtool library
51205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode,$pass" = "prog,link"; then
51215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
51225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
51235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
51245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
51285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else # deplib is a libtool library
51295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We need to do some special things here, and not later.
51315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $predeps $postdeps " in
51335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*)
51345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if func_lalib_p "$lib"; then
51355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  library_names=
51365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  old_library=
51375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_source "$lib"
51385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for l in $old_library $library_names; do
51395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ll="$l"
51405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
51415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "X$ll" = "X$old_library" ; then # only static version available
51425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    found=no
51435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_dirname "$lib" "" "."
51445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ladir="$func_dirname_result"
51455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    lib=$ladir/$old_library
51465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test "$linkmode,$pass" = "prog,link"; then
51475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      compile_deplibs="$deplib $compile_deplibs"
51485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      finalize_deplibs="$deplib $finalize_deplibs"
51495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
51505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      deplibs="$deplib $deplibs"
51515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
51535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    continue
51545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
51555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
51565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
51575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) ;;
51585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
51595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # -l
51625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.ltframework)
51635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode,$pass" = "prog,link"; then
51645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$deplib $compile_deplibs"
51655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$deplib $finalize_deplibs"
51665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
51675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
51685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = lib ; then
51695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$new_inherited_linker_flags " in
51705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $deplib "*) ;;
51715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
51735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
51765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
51775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
51785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $linkmode in
51795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib)
51805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
51815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "$pass" = conv && continue
51825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs="$deplib $newdependency_libs"
51835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-L' '' "$deplib"
51845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib_search_path="$newlib_search_path $func_stripname_result"
51855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prog)
51875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = conv; then
51885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      continue
51905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = scan; then
51925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
51945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
51955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
51965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-L' '' "$deplib"
51985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib_search_path="$newlib_search_path $func_stripname_result"
51995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
52015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`-L' is ignored for archives/objects"
52025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac # linkmode
52045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # -L
52065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-R*)
52075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = link; then
52085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-R' '' "$deplib"
52095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir=$func_stripname_result
52105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Make sure the xrpath contains only unique directories.
52115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$xrpath " in
52125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dir "*) ;;
52135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) xrpath="$xrpath $dir" ;;
52145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
52155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplib $deplibs"
52175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.la) lib="$deplib" ;;
52205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.$libext)
52215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = conv; then
52225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
52235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $linkmode in
52265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib)
52275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Linking convenience modules into shared libraries is allowed,
52285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # but linking other static libraries is non-portable.
52295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $dlpreconveniencelibs " in
52305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $deplib "*) ;;
52315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
52325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      valid_a_lib=no
52335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplibs_check_method in
52345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		match_pattern*)
52355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  set dummy $deplibs_check_method; shift
52365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    | $EGREP "$match_pattern_regex" > /dev/null; then
52395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    valid_a_lib=yes
52405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
52415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
52425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		pass_all)
52435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  valid_a_lib=yes
52445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
52455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
52465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$valid_a_lib" != yes; then
52475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
52485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
52505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
52515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
52525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** that it is just a static archive that I should not use here."
52545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
52555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
52565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: Linking the shared library $output against the"
52575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** static library $deplib is not portable!"
52585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		deplibs="$deplib $deplibs"
52595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
52605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
52615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
52625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prog)
52655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" != link; then
52665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
52675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
52685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
52695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
52705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
52715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac # linkmode
52745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # *.$libext
52755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo | *.$objext)
52765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = conv; then
52775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
52785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode" = prog; then
52795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # If there is no dlopen support or we're linking statically,
52815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # we need to preload.
52825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlprefiles="$newdlprefiles $deplib"
52835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
52845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
52855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
52865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlfiles="$newdlfiles $deplib"
52875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
52885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	%DEPLIBS%)
52925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  alldeplibs=yes
52935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac # case $deplib
52965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$found" = yes || test -f "$lib"; then :
52985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
52995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
53005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
53035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$lib" \
53045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_error "\`$lib' is not a valid libtool archive"
53055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$lib" "" "."
53075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	ladir="$func_dirname_result"
53085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlname=
53105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlopen=
53115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlpreopen=
53125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir=
53135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
53145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_library=
53155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	inherited_linker_flags=
53165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the library was installed with an old release of libtool,
53175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# it will not redefine variables installed, or shouldnotlink
53185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	installed=yes
53195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shouldnotlink=no
53205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	avoidtemprpath=
53215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Read the .la file
53245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$lib"
53255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Convert "-framework foo" to "foo.ltframework"
53275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$inherited_linker_flags"; then
53285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $new_inherited_linker_flags " in
53315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $tmp_inherited_linker_flag "*) ;;
53325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
53345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
53355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" = "lib,link" ||
53385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   test "$linkmode,$pass" = "prog,scan" ||
53395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = conv; then
53455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Only check for convenience libraries
53465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$lib $deplibs"
53475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir"; then
53485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$old_library"; then
53495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_fatal_error "cannot find name of link library for \`$lib'"
53505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
53515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # It is a libtool convenience library, so add in its objects.
53525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    convenience="$convenience $ladir/$objdir/$old_library"
53535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "\`$lib' is not a convenience library"
53565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
53585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
53595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
53605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
53615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
53625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
53645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
53655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
53665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
53675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
53685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = conv
53695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Get the name of the library we link against.
53725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linklib=
53735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for l in $old_library $library_names; do
53745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linklib="$l"
53755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
53765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$linklib"; then
53775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot find name of link library for \`$lib'"
53785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# This library was specified with -dlopen.
53815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = dlopen; then
53825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir"; then
53835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$dlname" ||
53865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$dlopen_support" != yes ||
53875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$build_libtool_libs" = no; then
53885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If there is no dlname, no dlopen support or we're linking
53895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # statically, we need to preload.  We also need to preload any
53905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # dependent libraries so libltdl's deplib preloader doesn't
53915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # bomb out in the load deplibs phase.
53925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$dlprefiles $lib $dependency_libs"
53935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
53945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles="$newdlfiles $lib"
53955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
53975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = dlopen
53985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
54005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $ladir in
54015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
54025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
54035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  abs_ladir=`cd "$ladir" && pwd`
54045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$abs_ladir"; then
54055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "cannot determine absolute directory name of \`$ladir'"
54065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "passing it literally to the linker, although it might fail"
54075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    abs_ladir="$ladir"
54085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
54105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
54115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$lib"
54125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	laname="$func_basename_result"
54135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Find the relevant object directory and library name.
54155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$installed" = Xyes; then
54165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "library \`$lib' was moved."
54185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir"
54195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir"
54205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir="$abs_ladir"
54215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$libdir"
54235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$libdir"
54245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
54275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir"
54295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir"
54305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Remove this search path later
54315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    notinst_path="$notinst_path $abs_ladir"
54325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir/$objdir"
54345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir/$objdir"
54355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Remove this search path later
54365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    notinst_path="$notinst_path $abs_ladir"
54375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $installed = yes
54395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname 'lib' '.la' "$laname"
54405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$func_stripname_result
54415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# This library was specified with -dlpreopen.
54435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = dlpreopen; then
54445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir" && test "$linkmode" = prog; then
54455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are required to link).
54495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$old_library"; then
54505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$old_library"
54515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Keep a list of preopened convenience libraries to check
54525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # that they are being used correctly in the link pass.
54535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -z "$libdir" && \
54545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test -n "$dlname"; then
54575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$dlname"
54585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$linklib"
54605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = dlpreopen
54625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$libdir"; then
54645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Link the convenience library
54655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib; then
54665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$dir/$old_library $deplibs"
54675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode,$pass" = "prog,link"; then
54685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$dir/$old_library $compile_deplibs"
54695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$lib $deplibs" # used for prog,scan pass
54725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
54745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
54755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = prog && test "$pass" != link; then
54785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path="$newlib_search_path $ladir"
54795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$lib $deplibs"
54805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linkalldeplibs=no
54825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$build_libtool_libs" = no; then
54845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    linkalldeplibs=yes
54855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
54885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
54895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
54905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*) func_stripname '-L' '' "$deplib"
54915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         newlib_search_path="$newlib_search_path $func_stripname_result"
54925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 ;;
54935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
54945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Need to link against all dependency_libs?
54955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkalldeplibs" = yes; then
54965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
54975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
54985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Need to hardcode shared library paths
54995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # or/and link against static libraries
55005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdependency_libs="$deplib $newdependency_libs"
55015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
55035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
55045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
55055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
55085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # for deplib
55095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
55105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $linkmode = prog...
55115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" = "prog,link"; then
55135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$library_names" &&
55145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { { test "$prefer_static_libs" = no ||
55155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test -z "$old_library"; }; then
55175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We need to hardcode the library path
55185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Make sure the rpath contains only unique directories.
55205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$temp_rpath:" in
55215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$absdir:"*) ;;
55225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) temp_rpath="$temp_rpath$absdir:" ;;
55235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Hardcode the library path.
55275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Skip directories that are in the system default run-time
55285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # search path.
55295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $absdir "*) ;;
55315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$compile_rpath " in
55335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $absdir "*) ;;
55345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_rpath="$compile_rpath $absdir"
55355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
55375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
55385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $libdir "*) ;;
55405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$finalize_rpath " in
55425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
55435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_rpath="$finalize_rpath $libdir"
55445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
55465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
55475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # $linkmode,$pass = prog,link...
55485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$alldeplibs" = yes &&
55505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { test "$deplibs_check_method" = pass_all ||
55515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       { test "$build_libtool_libs" = yes &&
55525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test -n "$library_names"; }; }; then
55535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We only need to search for static libraries
55545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
55555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
55565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
55575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_static=no # Whether the deplib will be linked statically
55595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	use_static_libs=$prefer_static_libs
55605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$use_static_libs" = built && test "$installed" = yes; then
55615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  use_static_libs=no
55625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
55635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$library_names" &&
55645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
55665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* | *cegcc*)
55675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # No point in relinking DLLs because paths are not encoded
55685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      notinst_deplibs="$notinst_deplibs $lib"
55695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      need_relink=no
55705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
55715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
55725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$installed" = no; then
55735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      notinst_deplibs="$notinst_deplibs $lib"
55745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      need_relink=yes
55755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
55775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
55785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This is a shared library
55795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Warn about portability, can't link against -module's on some
55815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # systems (darwin).  Don't bleat about dlopened modules though!
55825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlopenmodule=""
55835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dlpremoduletest in $dlprefiles; do
55845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$dlpremoduletest" = "X$lib"; then
55855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlopenmodule="$dlpremoduletest"
55865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
55875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
55895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
55915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
55925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
55945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** $linklib is not portable!"
55975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
55985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib &&
55995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$hardcode_into_libs" = yes; then
56005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Hardcode the library path.
56015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Skip directories that are in the system default run-time
56025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # search path.
56035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
56045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $absdir "*) ;;
56055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
56065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$compile_rpath " in
56075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $absdir "*) ;;
56085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_rpath="$compile_rpath $absdir"
56095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
56115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
56125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
56135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $libdir "*) ;;
56145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
56155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$finalize_rpath " in
56165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
56175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_rpath="$finalize_rpath $libdir"
56185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
56205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
56215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
56225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$old_archive_from_expsyms_cmds"; then
56245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # figure out the soname
56255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    set dummy $library_names
56265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
56275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    realname="$1"
56285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
56295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libname=`eval "\\$ECHO \"$libname_spec\""`
56305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # use dlname if we got it. it's perfectly good, no?
56315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$dlname"; then
56325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      soname="$dlname"
56335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test -n "$soname_spec"; then
56345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # bleh windows
56355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
56365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *cygwin* | mingw* | *cegcc*)
56375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_arith $current - $age
56385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		major=$func_arith_result
56395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		versuffix="-$major"
56405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
56415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval soname=\"$soname_spec\"
56435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
56445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      soname="$realname"
56455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Make a new name for the extract_expsyms_cmds to use
56485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    soroot="$soname"
56495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_basename "$soroot"
56505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    soname="$func_basename_result"
56515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname 'lib' '.dll' "$soname"
56525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib=libimp-$func_stripname_result.a
56535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If the library has no export list, then create one now
56555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$output_objdir/$soname-def"; then :
56565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
56575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "extracting exported symbol list from \`$soname'"
56585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Create $newlib
56625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$output_objdir/$newlib"; then :; else
56635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "generating import library for \`$soname'"
56645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # make sure the library variables are pointing to the new library
56675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir=$output_objdir
56685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    linklib=$newlib
56695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # test -n "$old_archive_from_expsyms_cmds"
56705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = prog || test "$mode" != relink; then
56725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_shlibpath=
56735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_dir=
56745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add=
56755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lib_linked=yes
56765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $hardcode_action in
56775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    immediate | unsupported)
56785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" = no; then
56795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$dir/$linklib"
56805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
56815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *-*-unixware7*) add_dir="-L$dir" ;;
56855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-darwin* )
56865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # if the lib is a (non-dlopened) module then we can not
56875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # link against it, someone is ignoring the earlier warnings
56885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if /usr/bin/file -L $add 2> /dev/null |
56895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $GREP ": [^:]* bundle" >/dev/null ; then
56905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if test "X$dlopenmodule" != "X$lib"; then
56915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			if test -z "$old_library" ; then
56935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO
56945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO "*** And there doesn't seem to be a static archive available"
56955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO "*** The link will probably fail, sorry"
56965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			else
56975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  add="$dir/$old_library"
56985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			fi
56995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      elif test -n "$old_library"; then
57005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			add="$dir/$old_library"
57015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
57025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
57035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_minus_L" = no; then
57055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
57065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*-*-sunos*) add_shlibpath="$dir" ;;
57075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_dir="-L$dir"
57095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_shlibpath_var" = no; then
57115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_shlibpath="$dir"
57125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lib_linked=no
57155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
57175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink)
57185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" = yes &&
57195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         test "$hardcode_direct_absolute" = no; then
57205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$dir/$linklib"
57215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_minus_L" = yes; then
57225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_dir="-L$dir"
57235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Try looking first in the location we're being installed to.
57245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -n "$inst_prefix_dir"; then
57255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case $libdir in
57265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    [\\/]*)
57275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      ;;
57295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
57305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
57315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_shlibpath_var" = yes; then
57335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_shlibpath="$dir"
57345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lib_linked=no
57375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
57395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) lib_linked=no ;;
57405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
57415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$lib_linked" != yes; then
57435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_fatal_configuration "unsupported hardcode properties"
57445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$add_shlibpath"; then
57475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case :$compile_shlibpath: in
57485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *":$add_shlibpath:"*) ;;
57495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
57515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
57535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
57565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && deplibs="$add $deplibs"
57585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" != yes &&
57595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test "$hardcode_minus_L" != yes &&
57605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test "$hardcode_shlibpath_var" = yes; then
57615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case :$finalize_shlibpath: in
57625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*":$libdir:"*) ;;
57635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
57685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = prog || test "$mode" = relink; then
57705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_shlibpath=
57715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_dir=
57725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add=
57735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Finalize command for both is simple: just hardcode it.
57745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$hardcode_direct" = yes &&
57755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$hardcode_direct_absolute" = no; then
57765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="$libdir/$linklib"
57775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_minus_L" = yes; then
57785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add_dir="-L$libdir"
57795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_shlibpath_var" = yes; then
57815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case :$finalize_shlibpath: in
57825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *":$libdir:"*) ;;
57835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
57855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_automatic" = yes; then
57875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$inst_prefix_dir" &&
57885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$inst_prefix_dir$libdir/$linklib"
57905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$libdir/$linklib"
57925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
57945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # We cannot seem to hardcode it, guess we'll fake it.
57955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add_dir="-L$libdir"
57965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Try looking first in the location we're being installed to.
57975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$inst_prefix_dir"; then
57985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $libdir in
57995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  [\\/]*)
58005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
58015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
58025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
58035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
58055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
58085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
58115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && deplibs="$add $deplibs"
58135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$linkmode" = prog; then
58165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # is not unsupported.  This is valid on all known static and
58185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # shared platforms.
58195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$hardcode_direct" != unsupported; then
58205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$old_library" && linklib="$old_library"
58215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$dir/$linklib $compile_deplibs"
58225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
58245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$build_libtool_libs" = yes; then
58285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Not a shared library
58295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$deplibs_check_method" != pass_all; then
58305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We're trying link a shared library against a static one
58315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # but the system doesn't support it.
58325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Just print a warning and add the library to dependency_libs so
58345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # that the program can be linked against the static library.
58355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
58365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** I have the capability to make that library automatically link in when"
58385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** shared version of the library, which you do not appear to have."
58405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$module" = yes; then
58415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** But as you try to build a module library, libtool will still create "
58425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** a static module, that should work as long as the dlopening application"
58435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -z "$global_symbol_pipe"; then
58455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
58465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** not find such a program.  So, this module is probably useless."
58495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_old_libs" = no; then
58525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=module
58535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_old_libs=yes
58545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
58555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=no
58565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
58595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$dir/$old_library $deplibs"
58605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    link_static=yes
58615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # link shared/static library?
58635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = lib; then
58655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$dependency_libs" &&
58665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { test "$hardcode_into_libs" != yes ||
58675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$build_old_libs" = yes ||
58685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$link_static" = yes; }; then
58695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Extract -R from dependency_libs
58705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    temp_deplibs=
58715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for libdir in $dependency_libs; do
58725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $libdir in
58735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -R*) func_stripname '-R' '' "$libdir"
58745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	           temp_xrpath=$func_stripname_result
58755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   case " $xrpath " in
58765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   *" $temp_xrpath "*) ;;
58775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   *) xrpath="$xrpath $temp_xrpath";;
58785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   esac;;
58795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) temp_deplibs="$temp_deplibs $libdir";;
58805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
58815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
58825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dependency_libs="$temp_deplibs"
58835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path="$newlib_search_path $absdir"
58865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Link against this library
58875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # ... and its dependency_libs
58895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
58905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
58915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs="$deplib $newdependency_libs"
58925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
58935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
58945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
58965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
58985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
58995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$link_all_deplibs" != no; then
59015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add the search paths of all dependency libraries
59025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for deplib in $dependency_libs; do
59035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplib in
59045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -L*) path="$deplib" ;;
59055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
59065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_dirname "$deplib" "" "."
59075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dir="$func_dirname_result"
59085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# We need an absolute path.
59095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $dir in
59105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*)
59125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  absdir=`cd "$dir" && pwd`
59135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$absdir"; then
59145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_warning "cannot determine absolute directory name of \`$dir'"
59155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    absdir="$dir"
59165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
59175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
59195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $GREP "^installed=no" $deplib > /dev/null; then
59205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
59215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*-*-darwin*)
59225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  depdepl=
59235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -n "$deplibrary_names" ; then
59255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    for tmp in $deplibrary_names ; do
59265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      depdepl=$tmp
59275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    done
59285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test -f "$absdir/$objdir/$depdepl" ; then
59295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      depdepl="$absdir/$objdir/$depdepl"
59305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      if test -z "$darwin_install_name"; then
59325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      fi
59345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      path=
59375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
59385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
59395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*)
59415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  path="-L$absdir/$objdir"
59425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
59445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
59455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  test -z "$libdir" && \
59475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  test "$absdir" != "$libdir" && \
59495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_warning "\`$deplib' seems to be moved"
59505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  path="-L$absdir"
59525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
59535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
59545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
59555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $deplibs " in
59565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $path "*) ;;
59575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) deplibs="$path $deplibs" ;;
59585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
59595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
59605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # link_all_deplibs != no
59615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # linkmode = lib
59625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done # for deplib in $libs
59635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = link; then
59645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = "prog"; then
59655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
59685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
59715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dependency_libs="$newdependency_libs"
59725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = dlpreopen; then
59735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Link the dlpreopened libraries before other libraries
59745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for deplib in $save_deplibs; do
59755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplib $deplibs"
59765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
59775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
59785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" != dlopen; then
59795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" != conv; then
59805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make sure lib_search_path contains only unique directories.
59815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib_search_path=
59825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $newlib_search_path; do
59835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$lib_search_path " in
59845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dir "*) ;;
59855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) lib_search_path="$lib_search_path $dir" ;;
59865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
59875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
59885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path=
59895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" != "prog,link"; then
59925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  vars="deplibs"
59935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
59945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  vars="compile_deplibs finalize_deplibs"
59955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for var in $vars dependency_libs; do
59975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add libraries to $var in reverse order
59985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval tmp_libs=\"\$$var\"
59995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  new_libs=
60005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $tmp_libs; do
60015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # FIXME: Pedantically, this is the right thing to do, so
60025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #        that some nasty dependency loop isn't accidentally
60035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #        broken:
60045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #new_libs="$deplib $new_libs"
60055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Pragmatically, this seems to cause very few problems in
60065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # practice:
60075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
60085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*) new_libs="$deplib $new_libs" ;;
60095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -R*) ;;
60105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
60115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # And here is the reason: when a library appears more
60125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # than once as an explicit dependence of a library, or
60135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # is implicitly linked in more than once by the
60145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # compiler, it is considered special, and multiple
60155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # occurrences thereof are not removed.  Compare this
60165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # with having the same library being listed as a
60175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # dependency of multiple other libraries: in this case,
60185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # we know (pedantically, we assume) the library does not
60195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # need to be listed more than once, so we keep only the
60205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # last copy.  This is not always right, but it is rare
60215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # enough that we require users that really mean to play
60225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # such unportable linking tricks to link the library
60235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # using -Wl,-lname, so that libtool does not consider it
60245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # for duplicate removal.
60255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $specialdeplibs " in
60265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
60285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $new_libs " in
60295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $deplib "*) ;;
60305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) new_libs="$deplib $new_libs" ;;
60315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
60325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
60335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
60345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
60355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
60365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
60375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
60385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $new_libs; do
60395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
60405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*)
60415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $tmp_libs " in
60425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) ;;
60435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) tmp_libs="$tmp_libs $deplib" ;;
60445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
60455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
60465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) tmp_libs="$tmp_libs $deplib" ;;
60475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
60485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
60495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval $var=\"$tmp_libs\"
60505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done # for var
60515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
60525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Last step: remove runtime libs from dependency_libs
60535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # (they stay in deplibs)
60545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      tmp_libs=
60555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for i in $dependency_libs ; do
60565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $predeps $postdeps $compiler_lib_search_path " in
60575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $i "*)
60585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  i=""
60595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
60605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
60615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$i" ; then
60625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs="$tmp_libs $i"
60635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
60645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
60655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dependency_libs=$tmp_libs
60665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # for pass
60675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = prog; then
60685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlfiles="$newdlfiles"
60695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
60705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = prog || test "$linkmode" = lib; then
60715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlprefiles="$newdlprefiles"
60725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
60735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $linkmode in
60755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    oldlib)
60765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for archives"
60785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
60795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case " $deplibs" in
60815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *\ -l* | *\ -L*)
60825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
60845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$rpath" && \
60865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-rpath' is ignored for archives"
60875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$xrpath" && \
60895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-R' is ignored for archives"
60905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
60925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info/-version-number' is ignored for archives"
60935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
60955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for archives"
60965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$export_symbols$export_symbols_regex" && \
60985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-export-symbols' is ignored for archives"
60995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now set the variables for building old libraries.
61015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      build_libtool_libs=no
61025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlibs="$output"
61035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      objs="$objs$old_deplibs"
61045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
61055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib)
61075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure we only generate libraries of the form `libNAME.la'.
61085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $outputname in
61095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lib*)
61105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname 'lib' '.la' "$outputname"
61115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$func_stripname_result
61125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval shared_ext=\"$shrext_cmds\"
61135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval libname=\"$libname_spec\"
61145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
61155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
61165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$module" = no && \
61175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$need_lib_prefix" != no; then
61205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add the "lib" prefix for modules if required
61215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '' '.la' "$outputname"
61225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name=$func_stripname_result
61235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval shared_ext=\"$shrext_cmds\"
61245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval libname=\"$libname_spec\"
61255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
61265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '' '.la' "$outputname"
61275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libname=$func_stripname_result
61285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
61305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
61315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$objs"; then
61335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$deplibs_check_method" != pass_all; then
61345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
61365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO
61375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "*** objects $objs is not portable!"
61395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs="$libobjs $objs"
61405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
61425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$dlself" != no && \
61445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen self' is ignored for libtool libraries"
61455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set dummy $rpath
61475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
61485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$#" -gt 1 && \
61495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "ignoring multiple \`-rpath's for a libtool library"
61505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_libdir="$1"
61525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlibs=
61545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$rpath"; then
61555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_libtool_libs" = yes; then
61565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Building a libtool convenience library.
61575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Some compilers have problems with a `.al' extension so
61585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # convenience libraries should have the same extension an
61595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # archive normally would.
61605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_libtool_libs=convenience
61625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_old_libs=yes
61635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$vinfo" && \
61665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$release" && \
61695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-release' is ignored for convenience libraries"
61705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
61715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Parse the version information argument.
61735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=':'
61745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $vinfo 0 0 0
61755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
61765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
61775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$7" && \
61795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "too many parameters to \`-version-info'"
61805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# convert absolute version numbers to libtool ages
61825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# this retains compatibility with .la files and attempts
61835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to make the code below a bit more comprehensible
61845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $vinfo_number in
61865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	yes)
61875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_major="$1"
61885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_minor="$2"
61895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_revision="$3"
61905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
61915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # There are really only two kinds -- those that
61925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # use the current revision as the major version
61935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # and those that subtract age and use age as
61945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # a minor version.  But, then there is irix
61955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # which has an extra 1 added just for fun
61965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
61975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
61985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin|linux|osf|windows|none)
61995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $number_major + $number_minor
62005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current=$func_arith_result
62015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="$number_minor"
62025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_revision"
62035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  freebsd-aout|freebsd-elf|sunos)
62055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current="$number_major"
62065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_minor"
62075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="0"
62085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  irix|nonstopux)
62105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $number_major + $number_minor
62115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current=$func_arith_result
62125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="$number_minor"
62135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_minor"
62145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_irix_increment=no
62155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
62175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	no)
62195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  current="$1"
62205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  revision="$2"
62215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  age="$3"
62225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check that each of the things are valid numbers.
62265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $current in
62275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	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]) ;;
62285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
62295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "CURRENT \`$current' must be a nonnegative integer"
62305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $revision in
62355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	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]) ;;
62365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
62375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "REVISION \`$revision' must be a nonnegative integer"
62385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $age in
62435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	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]) ;;
62445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
62455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "AGE \`$age' must be a nonnegative integer"
62465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$age" -gt "$current"; then
62515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
62545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Calculate the version variables.
62565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major=
62575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix=
62585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	verstring=
62595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $version_type in
62605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	none) ;;
62615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	darwin)
62635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Like Linux, but with the current version available in
62645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # verstring for coding it into the library header
62655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
62665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$func_arith_result
62675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="$major.$age.$revision"
62685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Darwin ld doesn't like 0 for these options...
62695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current + 1
62705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  minor_current=$func_arith_result
62715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	freebsd-aout)
62765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
62775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current.$revision";
62785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	freebsd-elf)
62815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
62825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current"
62835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	irix | nonstopux)
62865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "X$lt_irix_increment" = "Xno"; then
62875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $current - $age
62885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
62895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $current - $age + 1
62905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
62915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=$func_arith_result
62925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
62945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    nonstopux) verstring_prefix=nonstopux ;;
62955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)         verstring_prefix=sgi ;;
62965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
62975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="$verstring_prefix$major.$revision"
62985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add in all the interfaces that we are compatible with.
63005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  loop=$revision
63015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  while test "$loop" -ne 0; do
63025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $revision - $loop
63035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    iface=$func_arith_result
63045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $loop - 1
63055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    loop=$func_arith_result
63065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring="$verstring_prefix$major.$iface:$verstring"
63075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
63085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Before this point, $major must not contain `.'.
63105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$major
63115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="$major.$revision"
63125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linux)
63155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
63165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$func_arith_result
63175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="$major.$age.$revision"
63185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	osf)
63215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
63225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$func_arith_result
63235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current.$age.$revision"
63245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="$current.$age.$revision"
63255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add in all the interfaces that we are compatible with.
63275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  loop=$age
63285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  while test "$loop" -ne 0; do
63295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $current - $loop
63305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    iface=$func_arith_result
63315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $loop - 1
63325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    loop=$func_arith_result
63335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring="$verstring:${iface}.0"
63345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
63355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make executables depend on our current version.
63375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="$verstring:${current}.0"
63385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	qnx)
63415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
63425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current"
63435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	sunos)
63465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
63475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current.$revision"
63485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	windows)
63515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Use '-' rather than '.', since we only want one
63525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # extension on DOS 8.3 filesystems.
63535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
63545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=$func_arith_result
63555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="-$major"
63565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
63595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_configuration "unknown library version type \`$version_type'"
63605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
63625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Clear the version info if we defaulted, and they specified a release.
63645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$vinfo" && test -n "$release"; then
63655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=
63665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
63675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin)
63685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # we can't check for "0.0" in archive_cmds due to quoting
63695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # problems, so we reset it completely
63705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring=
63715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
63725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
63735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring="0.0"
63745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
63755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
63765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$need_version" = no; then
63775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    versuffix=
63785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
63795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    versuffix=".0.0"
63805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
63815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
63825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Remove version info from name if versioning should be avoided
63845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$avoid_version" = yes && test "$need_version" = no; then
63855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=
63865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=
63875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring=""
63885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
63895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see if the archive will have undefined symbols.
63915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$allow_undefined" = yes; then
63925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$allow_undefined_flag" = unsupported; then
63935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "undefined symbols not allowed in $host shared libraries"
63945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    build_libtool_libs=no
63955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    build_old_libs=yes
63965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
63975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
63985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Don't allow undefined symbols.
63995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  allow_undefined_flag="$no_undefined_flag"
64005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
64015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_generate_dlsyms "$libname" "$libname" "yes"
64055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libobjs="$libobjs $symfileobj"
64065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "X$libobjs" = "X " && libobjs=
64075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$mode" != relink; then
64095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Remove our outputs, but don't remove object files since they
64105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# may have been created when compiling PIC objects.
64115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	removelist=
64125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	tempremovelist=`$ECHO "$output_objdir/*"`
64135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for p in $tempremovelist; do
64145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $p in
64155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *.$objext | *.gcno)
64165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       ;;
64175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       if test "X$precious_files_regex" != "X"; then
64195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 then
64215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   continue
64225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 fi
64235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       fi
64245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       removelist="$removelist $p"
64255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       ;;
64265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) ;;
64275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
64285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
64295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$removelist" && \
64305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "${RM}r \$removelist"
64315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now set the variables for building old libraries.
64345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform .lo files to .o files.
64385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Eliminate all temporary directories.
64425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #for path in $notinst_path; do
64435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #done
64475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$xrpath"; then
64495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the user specified any rpath flags, then add them.
64505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	temp_xrpath=
64515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for libdir in $xrpath; do
64525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  temp_xrpath="$temp_xrpath -R$libdir"
64535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$finalize_rpath " in
64545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
64555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
64575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
64585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dependency_libs="$temp_xrpath $dependency_libs"
64605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
64615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure dlfiles contains only unique files that won't be dlpreopened
64645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_dlfiles="$dlfiles"
64655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlfiles=
64665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for lib in $old_dlfiles; do
64675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $dlprefiles $dlfiles " in
64685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $lib "*) ;;
64695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) dlfiles="$dlfiles $lib" ;;
64705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
64715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
64725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure dlprefiles contains only unique files
64745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_dlprefiles="$dlprefiles"
64755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlprefiles=
64765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for lib in $old_dlprefiles; do
64775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$dlprefiles " in
64785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $lib "*) ;;
64795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) dlprefiles="$dlprefiles $lib" ;;
64805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
64815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
64825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" = yes; then
64845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$rpath"; then
64855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
64865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # these systems don't actually have a c library (as such)!
64885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-rhapsody* | *-*-darwin1.[012])
64905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Rhapsody C library is in the System framework
64915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplibs System.ltframework"
64925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-netbsd*)
64945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Don't link with libc until the a.out ld.so is fixed.
64955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Do not include libc due to us having libc/libc_r.
64985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sco3.2v5* | *-*-sco5v6*)
65005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Causes problems with __ctype
65015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
65025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
65035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Compiler inserts libc in the correct place for threads to work
65045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
65055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
65065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add libc to deplibs on all other systems if necessary.
65075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$build_libtool_need_lc" = "yes"; then
65085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplibs -lc"
65095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
65105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
65115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
65125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
65135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform deplibs into only deplibs that can be linked in shared.
65155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name_save=$name
65165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libname_save=$libname
65175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release_save=$release
65185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix_save=$versuffix
65195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major_save=$major
65205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# I'm not sure if I'm treating the release correctly.  I think
65215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# release should show up in the -l (ie -lgmp5) so we don't want to
65225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# add it in twice.  Is that correct?
65235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release=""
65245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix=""
65255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major=""
65265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	newdeplibs=
65275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	droppeddeps=no
65285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplibs_check_method in
65295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pass_all)
65305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Don't check for shared/static.  Everything works.
65315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This might be a little naive.  We might want to check
65325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # whether the library exists or not.  But this is on
65335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # osf3 & osf4 and I'm not really sure... Just
65345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # implementing what was already the behavior.
65355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=$deplibs
65365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
65375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test_compile)
65385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This code stresses the "libraries are programs" paradigm to its
65395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # limits. Maybe even breaks it.  We compile a program, linking it
65405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # against the deplibs as a proxy for the library.  Then we can check
65415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # whether they linked in statically or dynamically with ldd.
65425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $RM conftest.c
65435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cat > conftest.c <<EOF
65445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  int main() { return 0; }
65455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
65465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $RM conftest
65475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ldd_output=`ldd conftest`
65495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for i in $deplibs; do
65505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $i in
65515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -l*)
65525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_stripname -l '' "$i"
65535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name=$func_stripname_result
65545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case " $predeps $postdeps " in
65565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *" $i "*)
65575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    newdeplibs="$newdeplibs $i"
65585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    i=""
65595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
65605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
65615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
65625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -n "$i" ; then
65635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  libname=`eval "\\$ECHO \"$libname_spec\""`
65645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  set dummy $deplib_matches; shift
65665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  deplib_match=$1
65675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    newdeplibs="$newdeplibs $i"
65695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  else
65705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    droppeddeps=yes
65715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO
65725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** I have the capability to make that library automatically link in when"
65745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** shared version of the library, which I believe you do not have"
65765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
65795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
65805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
65815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
65825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdeplibs="$newdeplibs $i"
65835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
65845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
65855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
65865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
65875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Error occurred in the first compile.  Let's try to salvage
65885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # the situation: Compile a separate program for each library.
65895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for i in $deplibs; do
65905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $i in
65915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -l*)
65925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_stripname -l '' "$i"
65935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name=$func_stripname_result
65945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$opt_dry_run || $RM conftest
65955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ldd_output=`ldd conftest`
65975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    case " $predeps $postdeps " in
65995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $i "*)
66005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      newdeplibs="$newdeplibs $i"
66015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      i=""
66025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      ;;
66035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    esac
66045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
66055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -n "$i" ; then
66065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    libname=`eval "\\$ECHO \"$libname_spec\""`
66075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    set dummy $deplib_matches; shift
66095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    deplib_match=$1
66105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      newdeplibs="$newdeplibs $i"
66125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
66135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      droppeddeps=yes
66145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO
66155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** I have the capability to make that library automatically link in when"
66175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** shared version of the library, which you do not appear to have"
66195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
66225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
66235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
66245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  droppeddeps=yes
66255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO
66265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** make it link in!  You will probably need to install it or some"
66285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** library that it depends on before this library will be fully"
66295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** functional.  Installing it before continuing would be even better."
66305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
66315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
66325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
66335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdeplibs="$newdeplibs $i"
66345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
66355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
66365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
66375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
66385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
66395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	file_magic*)
66405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  set dummy $deplibs_check_method; shift
66415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for a_deplib in $deplibs; do
66435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $a_deplib in
66445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -l*)
66455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname -l '' "$a_deplib"
66465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      name=$func_stripname_result
66475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $predeps $postdeps " in
66495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $a_deplib "*)
66505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  newdeplibs="$newdeplibs $a_deplib"
66515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  a_deplib=""
66525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
66535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
66545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
66555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
66565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		libname=`eval "\\$ECHO \"$libname_spec\""`
66575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for potent_lib in $potential_libs; do
66605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # Follow soft links.
66615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if ls -lLd "$potent_lib" 2>/dev/null |
66625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $GREP " -> " >/dev/null; then
66635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			continue
66645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
66655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # The statement above tries to avoid entering an
66665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # endless loop below, in case of cyclic links.
66675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # We might still enter an endless loop, since a link
66685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # loop can be closed while we follow links,
66695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # but so what?
66705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      potlib="$potent_lib"
66715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      while test -h "$potlib" 2>/dev/null; do
66725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			case $potliblink in
66745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			esac
66775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      done
66785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $SED -e 10q |
66805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $EGREP "$file_magic_regex" > /dev/null; then
66815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			newdeplibs="$newdeplibs $a_deplib"
66825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			a_deplib=""
66835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			break 2
66845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
66855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
66865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		done
66875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
66885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
66895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		droppeddeps=yes
66905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
66915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
66935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
66945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
66955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because I did check the linker path looking for a file starting"
66965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$potlib" ; then
66975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
66995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** using a file magic. Last file checked: $potlib"
67015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
67025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
67055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Add a -L argument.
67065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdeplibs="$newdeplibs $a_deplib"
67075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
67095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # Gone through all deplibs.
67105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	match_pattern*)
67125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  set dummy $deplibs_check_method; shift
67135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for a_deplib in $deplibs; do
67155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $a_deplib in
67165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -l*)
67175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname -l '' "$a_deplib"
67185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      name=$func_stripname_result
67195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $predeps $postdeps " in
67215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $a_deplib "*)
67225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  newdeplibs="$newdeplibs $a_deplib"
67235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  a_deplib=""
67245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
67255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
67265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
67285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		libname=`eval "\\$ECHO \"$libname_spec\""`
67295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for potent_lib in $potential_libs; do
67325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    potlib="$potent_lib" # see symlink-check above in file_magic test
67335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		       $EGREP "$match_pattern_regex" > /dev/null; then
67355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      newdeplibs="$newdeplibs $a_deplib"
67365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      a_deplib=""
67375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      break 2
67385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
67395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
67405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		done
67415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
67435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		droppeddeps=yes
67445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
67455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
67475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
67485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
67495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because I did check the linker path looking for a file starting"
67505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$potlib" ; then
67515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
67535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
67565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
67595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Add a -L argument.
67605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdeplibs="$newdeplibs $a_deplib"
67615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
67635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # Gone through all deplibs.
67645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	none | unknown | *)
67665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=""
67675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for i in $predeps $postdeps ; do
67715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # can't use Xsed below, because $i might contain '/'
67725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
67745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
67755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     $GREP . >/dev/null; then
67775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
67785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$deplibs_check_method" = "Xnone"; then
67795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
67815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
67835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** All declared inter-library dependencies are being dropped."
67845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    droppeddeps=yes
67855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
67865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
67885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix=$versuffix_save
67895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major=$major_save
67905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release=$release_save
67915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libname=$libname_save
67925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$name_save
67935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
67945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
67955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-rhapsody* | *-*-darwin1.[012])
67965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # On Rhapsody replace the C library with the System framework
67975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
68005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$droppeddeps" = yes; then
68025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$module" = yes; then
68035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
68045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
68055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
68065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** a static module, that should work as long as the dlopening"
68075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** application is linked with the -dlopen flag."
68085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$global_symbol_pipe"; then
68095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO
68105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** not find such a program.  So, this module is probably useless."
68135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
68155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$build_old_libs" = no; then
68165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      oldlibs="$output_objdir/$libname.$libext"
68175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      build_libtool_libs=module
68185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      build_old_libs=yes
68195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
68205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      build_libtool_libs=no
68215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
68225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
68235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** automatically added whenever a program is linked with this library"
68255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** or is declared to -dlopen it."
68265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$allow_undefined" = no; then
68285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO
68295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Since this library must not contain undefined symbols,"
68305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** because either the platform does not support them or"
68315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** it was explicitly requested with -no-undefined,"
68325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** libtool will only create a static version of it."
68335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_old_libs" = no; then
68345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		oldlibs="$output_objdir/$libname.$libext"
68355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=module
68365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_old_libs=yes
68375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
68385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=no
68395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
68405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
68415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
68425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
68435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Done checking deplibs!
68445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=$newdeplibs
68455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
68465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
68485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-darwin*)
68495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
68535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
68545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # move library search paths that coincide with paths to not yet
68565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # installed libraries to the beginning of the library search list
68575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_libs=
68585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for path in $notinst_path; do
68595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $new_libs " in
68605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -L$path/$objdir "*) ;;
68615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
68625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $deplibs " in
68635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" -L$path/$objdir "*)
68645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    new_libs="$new_libs -L$path/$objdir" ;;
68655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
68665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
68675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
68685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
68695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $deplibs; do
68705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
68715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
68725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $new_libs " in
68735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $deplib "*) ;;
68745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) new_libs="$new_libs $deplib" ;;
68755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
68765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
68775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) new_libs="$new_libs $deplib" ;;
68785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
68795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
68805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deplibs="$new_libs"
68815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # All the library-specific variables (install_libdir is set above).
68835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      library_names=
68845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_library=
68855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlname=
68865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Test again, we may have decided not to build it any more
68885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" = yes; then
68895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$hardcode_into_libs" = yes; then
68905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Hardcode the library paths
68915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  hardcode_libdirs=
68925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dep_rpath=
68935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  rpath="$finalize_rpath"
68945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for libdir in $rpath; do
68965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$hardcode_libdir_flag_spec"; then
68975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$hardcode_libdir_separator"; then
68985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$hardcode_libdirs"; then
68995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  hardcode_libdirs="$libdir"
69005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
69015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Just accumulate the unique libdirs.
69025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
69035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
69045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
69055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *)
69065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
69085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
69095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
69105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
69115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval flag=\"$hardcode_libdir_flag_spec\"
69125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dep_rpath="$dep_rpath $flag"
69135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
69145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test -n "$runpath_var"; then
69155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$perm_rpath " in
69165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
69175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) perm_rpath="$perm_rpath $libdir" ;;
69185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
69195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
69205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
69215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Substitute the hardcoded libdirs into the rpath.
69225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$hardcode_libdir_separator" &&
69235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test -n "$hardcode_libdirs"; then
69245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir="$hardcode_libdirs"
69255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
69285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
69305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
69315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We should set the runpath_var.
69335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath=
69345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for dir in $perm_rpath; do
69355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rpath="$rpath$dir:"
69365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
69375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
69395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shlibpath="$finalize_shlibpath"
69435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$shlibpath"; then
69455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Get the real and link names of the library.
69495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval shared_ext=\"$shrext_cmds\"
69505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval library_names=\"$library_names_spec\"
69515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $library_names
69525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
69535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	realname="$1"
69545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
69555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$soname_spec"; then
69575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval soname=\"$soname_spec\"
69585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
69595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  soname="$realname"
69605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$dlname"; then
69625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlname=$soname
69635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lib="$output_objdir/$realname"
69665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linknames=
69675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for link
69685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	do
69695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linknames="$linknames $link"
69705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
69715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Use standard objects if they are pic
69735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "X$libobjs" = "X " && libobjs=
69755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	delfiles=
69775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols="$output_objdir/$libname.uexp"
69805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  delfiles="$delfiles $export_symbols"
69815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	orig_export_symbols=
69845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host_os in
69855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cygwin* | mingw* | cegcc*)
69865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # exporting using user supplied symfile
69885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # and it's NOT already a .def file. Must figure out
69905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # which of the given symbols are data symbols and tag
69915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # them as such. So, trigger use of export_symbols_cmds.
69925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # export_symbols gets reassigned inside the "prepare
69935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # the list of exported symbols" if statement, so the
69945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # include_expsyms logic still works.
69955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      orig_export_symbols="$export_symbols"
69965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_symbols=
69975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      always_export_symbols=yes
69985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
69995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
70015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
70025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Prepare the list of exported symbols
70045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$export_symbols"; then
70055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
70065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "generating symbol list for \`$libname.la'"
70075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    export_symbols="$output_objdir/$libname.exp"
70085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || $RM $export_symbols
70095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$export_symbols_cmds
70105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_ifs="$IFS"; IFS='~'
70115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for cmd in $cmds; do
70125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      IFS="$save_ifs"
70135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval cmd=\"$cmd\"
70145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_len " $cmd"
70155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len=$func_len_result
70165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_show_eval "$cmd" 'exit $?'
70185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		skipped_export=false
70195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
70205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# The command line is too long to execute in one step.
70215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_verbose "using reloadable object file for export list..."
70225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		skipped_export=:
70235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Break out early, otherwise skipped_export may be
70245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# set to false by a later but shorter cmd.
70255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		break
70265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
70275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
70285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    IFS="$save_ifs"
70295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
70335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_export_symbols="$export_symbols"
70385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The given exports_symbols file has to be filtered, so filter it.
70445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # 's' commands which not all seds can handle. GNU sed should be fine
70475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # though. Also, the filter scales superlinearly with the number of
70485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # global variables. join(1) would be nice here, but unfortunately
70495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # isn't a blessed tool.
70505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols=$output_objdir/$libname.def
70535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	tmp_deplibs=
70575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for test_deplib in $deplibs; do
70585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $convenience " in
70595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $test_deplib "*) ;;
70605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
70615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_deplibs="$tmp_deplibs $test_deplib"
70625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
70635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
70645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
70655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$tmp_deplibs"
70665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$convenience"; then
70685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$whole_archive_flag_spec" &&
70695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "$compiler_needs_object" = yes &&
70705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -z "$libobjs"; then
70715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # extract the archives, so we have objects to list.
70725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # TODO: could optimize this to just extract one archive.
70735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    whole_archive_flag_spec=
70745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$whole_archive_flag_spec"; then
70765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_libobjs=$libobjs
70775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$libobjs" = "X " && libobjs=
70795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
70805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    gentop="$output_objdir/${outputname}x"
70815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    generated="$generated $gentop"
70825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_extract_archives $gentop $convenience
70845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libobjs="$libobjs $func_extract_archives_result"
70855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$libobjs" = "X " && libobjs=
70865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval flag=\"$thread_safe_flag_spec\"
70915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $flag"
70925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Make a backup of the uninstalled library when relinking
70955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = relink; then
70965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do each of the archive commands.
71005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$module" = yes && test -n "$module_cmds" ; then
71015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
71025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$module_expsym_cmds\"
71035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$module_expsym_cmds
71045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
71055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$module_cmds\"
71065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$module_cmds
71075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
71085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
71095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$archive_expsym_cmds\"
71115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$archive_expsym_cmds
71125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
71135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$archive_cmds\"
71145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$archive_cmds
71155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
71165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
71175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$skipped_export" != "X:" &&
71195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   func_len " $test_cmds" &&
71205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   len=$func_len_result &&
71215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  :
71235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
71245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The command line is too long to link in one step, link piecewise
71255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # or, if using GNU ld and skipped_export is not :, use a linker
71265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # script.
71275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Save the value of $output and $libobjs because we want to
71295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # use them later.  If we have whole_archive_flag_spec, we
71305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # want to use save_libobjs as it was before
71315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # whole_archive_flag_spec was expanded, because we can't
71325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # assume the linker understands whole_archive_flag_spec.
71335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This may have to be revisited, in case too many
71345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # convenience libraries get linked in and end up exceeding
71355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # the spec.
71365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_libobjs=$libobjs
71385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
71395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_output=$output
71405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Clear the reloadable object creation command queue and
71435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # initialize k to one.
71445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test_cmds=
71455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  concat_cmds=
71465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  objlist=
71475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  last_robj=
71485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  k=1
71495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output=${output_objdir}/${output_la}.lnkscript
71525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "creating GNU ld script: $output"
71535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO 'INPUT (' > $output
71545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for obj in $save_libobjs
71555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
71565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "$obj" >> $output
71575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
71585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO ')' >> $output
71595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    delfiles="$delfiles $output"
71605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output=${output_objdir}/${output_la}.lnk
71625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "creating linker input file list: $output"
71635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    : > $output
71645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    set x $save_libobjs
71655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
71665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    firstobj=
71675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$compiler_needs_object" = yes; then
71685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      firstobj="$1 "
71695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      shift
71705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
71715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for obj
71725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
71735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "$obj" >> $output
71745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
71755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    delfiles="$delfiles $output"
71765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output=$firstobj\"$file_list_spec$output\"
71775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
71785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$save_libobjs"; then
71795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "creating reloadable object files..."
71805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      output=$output_objdir/$output_la-${k}.$objext
71815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval test_cmds=\"$reload_cmds\"
71825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_len " $test_cmds"
71835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len0=$func_len_result
71845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len=$len0
71855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Loop over the list of objects to be linked.
71875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      for obj in $save_libobjs
71885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      do
71895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_len " $obj"
71905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_arith $len + $func_len_result
71915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		len=$func_arith_result
71925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "X$objlist" = X ||
71935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test "$len" -lt "$max_cmd_len"; then
71945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append objlist " $obj"
71955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
71965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # The command $test_cmds is almost too long, add a
71975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # command to the queue.
71985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$k" -eq 1 ; then
71995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # The first file doesn't have a previous command to add.
72005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
72015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  else
72025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # All subsequent reloadable object files will link in
72035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # the last one created.
72045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
72055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
72065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  last_robj=$output_objdir/$output_la-${k}.$objext
72075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_arith $k + 1
72085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  k=$func_arith_result
72095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  output=$output_objdir/$output_la-${k}.$objext
72105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  objlist=$obj
72115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_len " $last_robj"
72125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_arith $len0 + $func_len_result
72135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  len=$func_arith_result
72145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
72155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      done
72165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Handle the remaining objects by creating one last
72175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # reloadable object file.  All subsequent reloadable object
72185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # files will link in the last one created.
72195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$last_robj"; then
72225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
72245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      delfiles="$delfiles $output"
72255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
72275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      output=
72285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if ${skipped_export-false}; then
72315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "generating symbol list for \`$libname.la'"
72325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_symbols="$output_objdir/$libname.exp"
72335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || $RM $export_symbols
72345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      libobjs=$output
72355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Append the command to create the export file.
72365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$last_robj"; then
72395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
72415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$save_libobjs" &&
72445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "creating a temporary reloadable object file: $output"
72455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Loop through the commands generated above and execute them.
72475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_ifs="$IFS"; IFS='~'
72485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for cmd in $concat_cmds; do
72495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      IFS="$save_ifs"
72505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_silent || {
72515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_quote_for_expand "$cmd"
72525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval "func_echo $func_quote_for_expand_result"
72535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      }
72545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || eval "$cmd" || {
72555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lt_exit=$?
72565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Restore the uninstalled library and exit
72585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$mode" = relink; then
72595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ( cd "$output_objdir" && \
72605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $RM "${realname}T" && \
72615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $MV "${realname}U" "$realname" )
72625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
72635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		exit $lt_exit
72655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      }
72665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
72675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    IFS="$save_ifs"
72685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
72745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if ${skipped_export-false}; then
72765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tmp_export_symbols="$export_symbols"
72785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$orig_export_symbols"; then
72835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # The given exports_symbols file has to be filtered, so filter it.
72845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # 's' commands which not all seds can handle. GNU sed should be fine
72875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # though. Also, the filter scales superlinearly with the number of
72885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # global variables. join(1) would be nice here, but unfortunately
72895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # isn't a blessed tool.
72905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_symbols=$output_objdir/$libname.def
72935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
72965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs=$output
72985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Restore the value of output.
72995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  output=$save_output
73005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
73025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
73035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$libobjs" = "X " && libobjs=
73045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Expand the library linking commands again to reset the
73065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # value of $libobjs for piecewise linking.
73075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do each of the archive commands.
73095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$module" = yes && test -n "$module_cmds" ; then
73105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$module_expsym_cmds
73125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
73135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$module_cmds
73145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
73165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$archive_expsym_cmds
73185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
73195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$archive_cmds
73205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$delfiles"; then
73255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Append the command to remove temporary files to $cmds.
73265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval cmds=\"\$cmds~\$RM $delfiles\"
73275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Add any objects from preloaded convenience libraries
73305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$dlprefiles"; then
73315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${outputname}x"
73325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
73335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_extract_archives $gentop $dlprefiles
73355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs="$libobjs $func_extract_archives_result"
73365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "X$libobjs" = "X " && libobjs=
73375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS='~'
73405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for cmd in $cmds; do
73415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
73425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval cmd=\"$cmd\"
73435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_silent || {
73445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_quote_for_expand "$cmd"
73455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "func_echo $func_quote_for_expand_result"
73465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  }
73475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval "$cmd" || {
73485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_exit=$?
73495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Restore the uninstalled library and exit
73515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$mode" = relink; then
73525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ( cd "$output_objdir" && \
73535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $RM "${realname}T" && \
73545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$MV "${realname}U" "$realname" )
73555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    exit $lt_exit
73585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  }
73595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
73605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
73615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Restore the uninstalled library and exit
73635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = relink; then
73645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
73655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$convenience"; then
73675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$whole_archive_flag_spec"; then
73685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '${RM}r "$gentop"'
73695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  exit $EXIT_SUCCESS
73735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Create links to the real library.
73765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for linkname in $linknames; do
73775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$realname" != "$linkname"; then
73785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
73795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
73815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If -module or -export-dynamic was specified, set the dlname.
73835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$module" = yes || test "$export_dynamic" = yes; then
73845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # On all known operating systems, these are identical.
73855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlname="$soname"
73865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
73885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
73895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    obj)
73915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for objects"
73935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
73945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case " $deplibs" in
73965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *\ -l* | *\ -L*)
73975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-l' and \`-L' are ignored for objects" ;;
73985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
73995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$rpath" && \
74015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-rpath' is ignored for objects"
74025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$xrpath" && \
74045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-R' is ignored for objects"
74055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
74075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info' is ignored for objects"
74085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
74105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for objects"
74115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $output in
74135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
74145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$objs$old_deplibs" && \
74155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj=$output
74185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lo2o "$libobj"
74195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	obj=$func_lo2o_result
74205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
74215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
74225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj=
74235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	obj="$output"
74245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
74255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
74265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Delete the old objects.
74285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || $RM $obj $libobj
74295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Objects from convenience libraries.  This assumes
74315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # single-version convenience libraries.  Whenever we create
74325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # different ones for PIC/non-PIC, this we'll have to duplicate
74335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # the extraction.
74345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      reload_conv_objs=
74355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gentop=
74365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # reload_cmds runs $LD directly, so let us get rid of
74375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -Wl from whole_archive_flag_spec and hope we can get by with
74385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # turning comma into space..
74395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      wl=
74405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$convenience"; then
74425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$whole_archive_flag_spec"; then
74435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
74465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${obj}x"
74475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
74485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_extract_archives $gentop $convenience
74505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
74525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Create the old-style object.
74555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      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
74565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output="$obj"
74585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_execute_cmds "$reload_cmds" 'exit $?'
74595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Exit if we aren't doing a library object file.
74615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$libobj"; then
74625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$gentop"; then
74635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval '${RM}r "$gentop"'
74645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
74655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
74675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" != yes; then
74705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$gentop"; then
74715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval '${RM}r "$gentop"'
74725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
74735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Create an invalid libtool object if no PIC, so that we don't
74755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# accidentally link it into a program.
74765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# $show "echo timestamp > $libobj"
74775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
74795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$pic_flag" || test "$pic_mode" != default; then
74825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Only do commands if we really have different PIC objects.
74835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	reload_objs="$libobjs $reload_conv_objs"
74845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	output="$libobj"
74855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_execute_cmds "$reload_cmds" 'exit $?'
74865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$gentop"; then
74895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '${RM}r "$gentop"'
74905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
74935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
74945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prog)
74965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
74975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*cygwin*) func_stripname '' '.exe' "$output"
74985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          output=$func_stripname_result.exe;;
74995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
75005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
75015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info' is ignored for programs"
75025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
75045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for programs"
75055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$preload" = yes \
75075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        && test "$dlopen_support" = unknown \
75085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	&& test "$dlopen_self" = unknown \
75095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	&& test "$dlopen_self_static" = unknown && \
75105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
75135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *-*-rhapsody* | *-*-darwin1.[012])
75145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# On Rhapsody replace the C library is the System framework
75155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
75185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
75195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
75215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *-*-darwin*)
75225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Don't allow lazy linking, it breaks C++ global constructors
75235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# But is supposedly fixed on 10.4 or later (yay!).
75245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$tagname" = CXX ; then
75255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    10.[0123])
75275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_command="$compile_command ${wl}-bind_at_load"
75285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_command="$finalize_command ${wl}-bind_at_load"
75295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
75305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
75325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
75365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
75375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # move library search paths that coincide with paths to not yet
75405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # installed libraries to the beginning of the library search list
75415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_libs=
75425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for path in $notinst_path; do
75435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $new_libs " in
75445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -L$path/$objdir "*) ;;
75455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
75465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $compile_deplibs " in
75475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" -L$path/$objdir "*)
75485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    new_libs="$new_libs -L$path/$objdir" ;;
75495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
75515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
75525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
75535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $compile_deplibs; do
75545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
75555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
75565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $new_libs " in
75575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $deplib "*) ;;
75585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) new_libs="$new_libs $deplib" ;;
75595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
75615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) new_libs="$new_libs $deplib" ;;
75625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
75635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
75645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_deplibs="$new_libs"
75655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_command="$compile_command $compile_deplibs"
75685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_command="$finalize_command $finalize_deplibs"
75695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$rpath$xrpath"; then
75715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the user specified any rpath flags, then add them.
75725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for libdir in $rpath $xrpath; do
75735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This is the magic to use -rpath.
75745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$finalize_rpath " in
75755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
75765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
75795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
75805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now hardcode the library paths
75825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rpath=
75835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      hardcode_libdirs=
75845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for libdir in $compile_rpath $finalize_rpath; do
75855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$hardcode_libdir_flag_spec"; then
75865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$hardcode_libdir_separator"; then
75875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$hardcode_libdirs"; then
75885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      hardcode_libdirs="$libdir"
75895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
75905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Just accumulate the unique libdirs.
75915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
75945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
75955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
75975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
75985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
75995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
76005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval flag=\"$hardcode_libdir_flag_spec\"
76015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath $flag"
76025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
76035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test -n "$runpath_var"; then
76045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$perm_rpath " in
76055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
76065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) perm_rpath="$perm_rpath $libdir" ;;
76075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
76095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
76105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
76135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$libdir:"*) ;;
76145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$libdir;;
76155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$libdir";;
76165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
76185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$testbindir:"*) ;;
76195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$testbindir;;
76205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
76235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
76245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
76255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Substitute the hardcoded libdirs into the rpath.
76265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$hardcode_libdir_separator" &&
76275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -n "$hardcode_libdirs"; then
76285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir="$hardcode_libdirs"
76295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval rpath=\" $hardcode_libdir_flag_spec\"
76305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_rpath="$rpath"
76325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rpath=
76345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      hardcode_libdirs=
76355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for libdir in $finalize_rpath; do
76365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$hardcode_libdir_flag_spec"; then
76375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$hardcode_libdir_separator"; then
76385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$hardcode_libdirs"; then
76395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      hardcode_libdirs="$libdir"
76405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
76415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Just accumulate the unique libdirs.
76425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
76455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
76465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
76485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
76495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
76505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
76515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval flag=\"$hardcode_libdir_flag_spec\"
76525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath $flag"
76535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
76545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test -n "$runpath_var"; then
76555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$finalize_perm_rpath " in
76565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
76575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
76605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
76615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Substitute the hardcoded libdirs into the rpath.
76625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$hardcode_libdir_separator" &&
76635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -n "$hardcode_libdirs"; then
76645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir="$hardcode_libdirs"
76655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval rpath=\" $hardcode_libdir_flag_spec\"
76665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_rpath="$rpath"
76685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform all the library objects into standard objects.
76715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # template prelinking step
76785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$prelink_cmds"; then
76795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_execute_cmds "$prelink_cmds" 'exit $?'
76805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      wrappers_required=yes
76835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
76845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *cygwin* | *mingw* )
76855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test "$build_libtool_libs" != yes; then
76865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          wrappers_required=no
76875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
76885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
76895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *cegcc)
76905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Disable wrappers for cegcc, we are cross compiling anyway.
76915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        wrappers_required=no
76925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
76935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
76945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          wrappers_required=no
76965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
76975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
76985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
76995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$wrappers_required" = no; then
77005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Replace the output file specification.
77015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command="$compile_command$compile_rpath"
77035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We have no uninstalled library dependencies, so finalize right now.
77055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit_status=0
77065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$link_command" 'exit_status=$?'
77075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Delete the generated files.
77095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -f "$output_objdir/${outputname}S.${objext}"; then
77105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
77115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $exit_status
77145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$finalize_shlibpath"; then
77205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_var=
77245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_var=
77255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$runpath_var"; then
77265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$perm_rpath"; then
77275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # We should set the runpath_var.
77285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  rpath=
77295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $perm_rpath; do
77305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath$dir:"
77315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
77325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$finalize_perm_rpath"; then
77355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # We should set the runpath_var.
77365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  rpath=
77375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $finalize_perm_rpath; do
77385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath$dir:"
77395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
77405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
77415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$no_install" = yes; then
77455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We don't need to create a wrapper script.
77465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command="$compile_var$compile_command$compile_rpath"
77475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Replace the output file specification.
77485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Delete the old output file.
77505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $output
77515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Link the executable and exit
77525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$link_command" 'exit $?'
77535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
77545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$hardcode_action" = relink; then
77575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Fast installation is not supported
77585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command="$compile_var$compile_command$compile_rpath"
77595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command="$finalize_var$finalize_command$finalize_rpath"
77605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "this platform does not like uninstalled shared libraries"
77625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`$output' will be relinked during installation"
77635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
77645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$fast_install" != no; then
77655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  link_command="$finalize_var$compile_command$finalize_rpath"
77665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$fast_install" = yes; then
77675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
77695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # fast_install is set to needless
77705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=
77715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
77725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
77735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  link_command="$compile_var$compile_command$compile_rpath"
77745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Replace the output file specification.
77795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Delete the old output files.
77825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$link_command" 'exit $?'
77855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now create the wrapper script.
77875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_verbose "creating $output"
77885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote the relink command for shipping.
77905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$relink_command"; then
77915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Preserve any variables that may affect compiler behavior
77925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for var in $variables_saved_for_relink; do
77935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if eval test -z \"\${$var+set}\"; then
77945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif eval var_value=\$$var; test -z "$var_value"; then
77965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command="$var=; export $var; $relink_command"
77975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
77985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_quote_for_eval "$var_value"
77995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
78005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
78015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
78025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command="(cd `pwd`; $relink_command)"
78035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
78045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
78055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote $ECHO for shipping.
78075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $progpath in
78095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
78145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
78165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Only actually do things if not in dry run mode.
78185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || {
78195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# win32 will think the script is a binary if it has
78205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# a .exe suffix, so we strip it off here.
78215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $output in
78225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe) func_stripname '' '.exe' "$output"
78235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         output=$func_stripname_result ;;
78245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# test for cygwin because mv fails w/o .exe extensions
78265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
78275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin*)
78285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    exeext=.exe
78295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$outputname"
78305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    outputname=$func_stripname_result ;;
78315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) exeext= ;;
78325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
78345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* )
78355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_dirname_and_basename "$output" "" "."
78365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output_name=$func_basename_result
78375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output_path=$func_dirname_result
78385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cwrapper="$output_path/$output_name.exe"
78405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM $cwrappersource $cwrapper
78415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_cwrapperexe_src > $cwrappersource
78445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # The wrapper executable is built using the $host compiler,
78465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # because it contains $host paths and files. If cross-
78475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # compiling, it, like the target executable, must be
78485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # executed on the $host or under an emulation environment.
78495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
78505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $STRIP $cwrapper
78525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
78535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Now, create the wrapper script for func_source use:
78555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_ltwrapper_scriptname $cwrapper
78565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM $func_ltwrapper_scriptname_result
78575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
78595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # note: this script will not be executed, so do not chmod.
78605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "x$build" = "x$host" ; then
78615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
78635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
78655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
78665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
78675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  * )
78685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM $output
78695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_wrapper no > $output
78725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    chmod +x $output
78735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
78745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
78765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
78775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
78785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
78795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # See if we need to build an old-fashioned archive.
78815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for oldlib in $oldlibs; do
78825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" = convenience; then
78845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldobjs="$libobjs_save $symfileobj"
78855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	addlibs="$convenience"
78865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_libtool_libs=no
78875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
78885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_libtool_libs" = module; then
78895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs="$libobjs_save"
78905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_libtool_libs=no
78915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
78925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs="$old_deplibs $non_pic_objects"
78935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$preload" = yes && test -f "$symfileobj"; then
78945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    oldobjs="$oldobjs $symfileobj"
78955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
78965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
78975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	addlibs="$old_convenience"
78985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
78995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$addlibs"; then
79015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	gentop="$output_objdir/${outputname}x"
79025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	generated="$generated $gentop"
79035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_extract_archives $gentop $addlibs
79055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldobjs="$oldobjs $func_extract_archives_result"
79065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
79075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do each command in the archive commands.
79095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cmds=$old_archive_from_new_cmds
79115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
79125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Add any objects from preloaded convenience libraries
79145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$dlprefiles"; then
79155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${outputname}x"
79165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
79175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_extract_archives $gentop $dlprefiles
79195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs="$oldobjs $func_extract_archives_result"
79205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
79215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# POSIX demands no paths to be encoded in archives.  We have
79235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to avoid creating archives with duplicate basenames if we
79245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# might have to extract them afterwards, e.g., when creating a
79255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# static archive out of a convenience library, or when linking
79265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# the entirety of a libtool archive into another (currently
79275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# not supported by libtool).
79285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if (for obj in $oldobjs
79295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
79305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_basename "$obj"
79315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "$func_basename_result"
79325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done | sort | sort -uc >/dev/null 2>&1); then
79335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  :
79345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
79355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "copying selected object files to avoid basename conflicts..."
79365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${outputname}x"
79375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
79385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_mkdir_p "$gentop"
79395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_oldobjs=$oldobjs
79405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs=
79415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  counter=1
79425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for obj in $save_oldobjs
79435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  do
79445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_basename "$obj"
79455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    objbase="$func_basename_result"
79465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $oldobjs " in
79475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    " ") oldobjs=$obj ;;
79485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *[\ /]"$objbase "*)
79495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      while :; do
79505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Make sure we don't pick an alternate name that also
79515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# overlaps.
79525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newobj=lt$counter-$objbase
79535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_arith $counter + 1
79545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		counter=$func_arith_result
79555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $oldobjs " in
79565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*[\ /]"$newobj "*) ;;
79575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
79595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      done
79605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      oldobjs="$oldobjs $gentop/$newobj"
79625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
79635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) oldobjs="$oldobjs $obj" ;;
79645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
79655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
79665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
79675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval cmds=\"$old_archive_cmds\"
79685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_len " $cmds"
79705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	len=$func_len_result
79715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cmds=$old_archive_cmds
79735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
79745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # the command line is too long to link in one step, link in parts
79755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "using piecewise archive linking..."
79765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_RANLIB=$RANLIB
79775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  RANLIB=:
79785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  objlist=
79795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  concat_cmds=
79805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_oldobjs=$oldobjs
79815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs=
79825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Is there a better way of finding the last object in the list?
79835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for obj in $save_oldobjs
79845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  do
79855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    last_oldobj=$obj
79865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
79875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval test_cmds=\"$old_archive_cmds\"
79885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_len " $test_cmds"
79895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  len0=$func_len_result
79905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  len=$len0
79915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for obj in $save_oldobjs
79925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  do
79935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_len " $obj"
79945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $len + $func_len_result
79955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    len=$func_arith_result
79965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append objlist " $obj"
79975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$len" -lt "$max_cmd_len"; then
79985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      :
79995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
80005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # the above command should be used before it gets too long
80015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      oldobjs=$objlist
80025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$obj" = "$last_oldobj" ; then
80035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		RANLIB=$save_RANLIB
80045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
80055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
80065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      objlist=
80085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len=$len0
80095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
80105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
80115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  RANLIB=$save_RANLIB
80125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs=$objlist
80135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "X$oldobjs" = "X" ; then
80145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval cmds=\"\$concat_cmds\"
80155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
80165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
80185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
80195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
80205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_execute_cmds "$cmds" 'exit $?'
80215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
80225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$generated" && \
80245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "${RM}r$generated"
80255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Now create the libtool archive.
80275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $output in
80285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.la)
80295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_library=
80305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$build_old_libs" = yes && old_library="$libname.$libext"
80315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_verbose "creating $output"
80325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Preserve any variables that may affect compiler behavior
80345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for var in $variables_saved_for_relink; do
80355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if eval test -z \"\${$var+set}\"; then
80365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif eval var_value=\$$var; test -z "$var_value"; then
80385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="$var=; export $var; $relink_command"
80395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
80405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_quote_for_eval "$var_value"
80415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
80435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
80445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote the link command for shipping.
80455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$hardcode_automatic" = yes ; then
80485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command=
80495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
80505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Only create the output if not a dry run.
80525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || {
80535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for installed in no yes; do
80545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$installed" = yes; then
80555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$install_libdir"; then
80565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
80575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
80585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output="$output_objdir/$outputname"i
80595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Replace all uninstalled libtool libraries with the installed ones
80605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs=
80615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for deplib in $dependency_libs; do
80625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplib in
80635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
80645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$deplib"
80655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
80665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
80685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "x$EGREP" = x ; then
80705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			EGREP=egrep
80715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
80725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# We do not want portage's install root ($D) present.  Check only for
80735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# this if the .la is being installed.
80745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$installed" = yes && test "$D"; then
80755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval mynewdependency_lib=`echo "$libdir/$name" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
80765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
80775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  mynewdependency_lib="$libdir/$name"
80785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
80795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Do not add duplicates
80805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$mynewdependency_lib"; then
80815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  my_little_ninja_foo_1=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"`
80825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$my_little_ninja_foo_1"; then
80835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    newdependency_libs="$newdependency_libs $mynewdependency_lib"
80845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
80855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
80865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
80875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *)
80885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$installed" = yes; then
80895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Rather use S=WORKDIR if our version of portage supports it.
80905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # This is because some ebuild (gcc) do not use $S as buildroot.
80915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$PWORKDIR"; then
80925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    S="$PWORKDIR"
80935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
80945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # We do not want portage's build root ($S) present.
80955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  my_little_ninja_foo_2=`echo $deplib |$EGREP -e "$S"`
80965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # We do not want portage's install root ($D) present.
80975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  my_little_ninja_foo_3=`echo $deplib |$EGREP -e "$D"`
80985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -n "$my_little_ninja_foo_2" && test "$S"; then
80995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    mynewdependency_lib=""
81005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  elif test -n "$my_little_ninja_foo_3" && test "$D"; then
81015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    eval mynewdependency_lib=`echo "$deplib" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
81025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  else
81035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    mynewdependency_lib="$deplib"
81045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
81055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
81065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  mynewdependency_lib="$deplib"
81075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
81085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Do not add duplicates
81095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$mynewdependency_lib"; then
81105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  my_little_ninja_foo_4=`echo $newdependency_libs |$EGREP -e "$mynewdependency_lib"`
81115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$my_little_ninja_foo_4"; then
81125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			newdependency_libs="$newdependency_libs $mynewdependency_lib"
81135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
81145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
81155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
81165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dependency_libs="$newdependency_libs"
81195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles=
81205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlfiles; do
81225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
81245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_basename "$lib"
81255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
81265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
81275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
81285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$lib' is not a valid libtool archive"
81295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdlfiles="$newdlfiles $libdir/$name"
81305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
81315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) newdlfiles="$newdlfiles $lib" ;;
81325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlfiles="$newdlfiles"
81355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles=
81365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlprefiles; do
81375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
81395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Only pass preopened files to the pseudo-archive (for
81405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# eventual linking with the app. that links it) if we
81415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# didn't already link the preopened objects directly into
81425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# the library:
81435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$lib"
81445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
81455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
81465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
81475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$lib' is not a valid libtool archive"
81485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdlprefiles="$newdlprefiles $libdir/$name"
81495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
81505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$newdlprefiles"
81535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
81545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles=
81555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlfiles; do
81565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) abs=`pwd`"/$lib" ;;
81595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlfiles="$newdlfiles $abs"
81615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlfiles="$newdlfiles"
81635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles=
81645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlprefiles; do
81655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) abs=`pwd`"/$lib" ;;
81685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlprefiles="$newdlprefiles $abs"
81705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$newdlprefiles"
81725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
81735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $RM $output
81745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # place dlname in correct position for cygwin
81755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tdlname=$dlname
81765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host,$output,$installed,$module,$dlname in
81775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
81795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do not add duplicates
81805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$installed" = yes && test "$D"; then
81815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    install_libdir=`echo "$install_libdir" |sed -e "s:$D:/:g" -e 's:/\+:/:g'`
81825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
81835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO > $output "\
81845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $outputname - a libtool library file
81855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
81875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file!
81885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library.
81895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name that we can dlopen(3).
81915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlname='$tdlname'
81925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of this library.
81945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library_names='$library_names'
81955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of the static archive.
81975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)old_library='$old_library'
81985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Linker flags that can not go in dependency_libs.
82005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inherited_linker_flags='$new_inherited_linker_flags'
82015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Libraries that this one depends upon.
82035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dependency_libs='$dependency_libs'
82045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of additional weak libraries provided by this library
82065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weak_library_names='$weak_libs'
82075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Version information for $libname.
82095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)current=$current
82105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)age=$age
82115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)revision=$revision
82125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Is this an already installed library?
82145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)installed=$installed
82155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Should we warn about portability when linking against -modules?
82175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)shouldnotlink=$module
82185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Files to dlopen/dlpreopen
82205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlopen='$dlfiles'
82215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlpreopen='$dlprefiles'
82225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Directory that this library needs to be installed in:
82245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libdir='$install_libdir'"
82255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$installed" = no && test "$need_relink" = yes; then
82265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO >> $output "\
82275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\""
82285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
82295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
82305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
82315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do a symbolic link so that the libtool archive can be found in
82335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # LD_LIBRARY_PATH before the program is installed.
82345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
82355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
82365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
82375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
82385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
82395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = link || test "$mode" = relink; } &&
82415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mode_link ${1+"$@"}
82425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_uninstall arg...
82455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_uninstall ()
82465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
82475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
82485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    RM="$nonopt"
82495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    files=
82505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rmforce=
82515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit_status=0
82525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set variables rather
82545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # than running their programs.
82555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_install_magic="$magic"
82565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
82585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
82595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
82605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -f) RM="$RM $arg"; rmforce=yes ;;
82615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*) RM="$RM $arg" ;;
82625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *) files="$files $arg" ;;
82635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
82645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
82655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$RM" && \
82675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an RM program"
82685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rmdirs=
82705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    origobjdir="$objdir"
82725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $files; do
82735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_dirname "$file" "" "."
82745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dir="$func_dirname_result"
82755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "X$dir" = X.; then
82765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objdir="$origobjdir"
82775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
82785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objdir="$dir/$origobjdir"
82795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$file"
82815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      name="$func_basename_result"
82825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$mode" = uninstall && objdir="$dir"
82835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Remember objdir for removal later, being careful to avoid duplicates
82855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$mode" = clean; then
82865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $rmdirs " in
82875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $objdir "*) ;;
82885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) rmdirs="$rmdirs $objdir" ;;
82895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
82905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Don't error if the file doesn't exist and rm -f was used.
82935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if { test -L "$file"; } >/dev/null 2>&1 ||
82945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 { test -h "$file"; } >/dev/null 2>&1 ||
82955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -f "$file"; then
82965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	:
82975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      elif test -d "$file"; then
82985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit_status=1
82995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
83005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      elif test "$rmforce" = yes; then
83015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
83025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
83035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rmfiles="$file"
83055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $name in
83075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
83085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Possibly a libtool archive, so verify it.
83095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_p "$file"; then
83105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source $dir/$name
83115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Delete the libtool libraries and symlinks.
83135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for n in $library_names; do
83145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $objdir/$n"
83155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
83165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
83175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$mode" in
83195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  clean)
83205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "  $library_names " in
83215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # "  " in the beginning catches empty $dlname
83225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dlname "*) ;;
83235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
83245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
83255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
83265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
83275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  uninstall)
83285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$library_names"; then
83295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Do each command in the postuninstall commands.
83305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
83315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$old_library"; then
83345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Do each command in the old_postuninstall commands.
83355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
83365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # FIXME: should reinstall the best remaining shared library.
83385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
83395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
83405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
83415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
83425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
83445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Possibly a libtool object, so verify it.
83455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_p "$file"; then
83465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Read the .lo file
83485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source $dir/$name
83495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add PIC object to the list of files to remove.
83515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$pic_object" &&
83525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$pic_object" != none; then
83535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $dir/$pic_object"
83545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add non-PIC object to the list of files to remove.
83575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$non_pic_object" &&
83585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$non_pic_object" != none; then
83595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $dir/$non_pic_object"
83605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
83625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
83635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
83655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = clean ; then
83665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  noexename=$name
83675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file in
83685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe)
83695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$file"
83705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    file=$func_stripname_result
83715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$name"
83725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    noexename=$func_stripname_result
83735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # $file with .exe has already been added to rmfiles,
83745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # add $file without .exe
83755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $file"
83765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
83775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
83785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do a test to see if this is a libtool program.
83795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if func_ltwrapper_p "$file"; then
83805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if func_ltwrapper_executable_p "$file"; then
83815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_ltwrapper_scriptname "$file"
83825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      relink_command=
83835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source $func_ltwrapper_scriptname_result
83845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
83865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      relink_command=
83875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source $dir/$noexename
83885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # note $name still contains .exe if it was in $file originally
83915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # as does the version of $file that was added into $rmfiles
83925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$fast_install" = yes && test -n "$relink_command"; then
83945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $objdir/lt-$name"
83955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$noexename" != "X$name" ; then
83975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
84005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
84015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
84025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
84035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$RM $rmfiles" 'exit_status=1'
84045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
84055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objdir="$origobjdir"
84065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Try to remove the ${objdir}s in the directories where we deleted files
84085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for dir in $rmdirs; do
84095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -d "$dir"; then
84105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "rmdir $dir >/dev/null 2>&1"
84115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
84125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
84135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $exit_status
84155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
84165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = uninstall || test "$mode" = clean; } &&
84185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mode_uninstall ${1+"$@"}
84195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$mode" && {
84215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  help="$generic_help"
84225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_fatal_help "you must specify a MODE"
84235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
84245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$exec_cmd" && \
84265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_fatal_help "invalid operation mode \`$mode'"
84275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "$exec_cmd"; then
84295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  eval exec "$exec_cmd"
84305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exit $EXIT_FAILURE
84315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
84325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit $exit_status
84345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The TAGs below are defined such that we never get into a situation
84375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in which we disable both kinds of libraries.  Given conflicting
84385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# choices, we go for a static library, that is the most portable,
84395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# since we can't tell whether shared libraries were disabled because
84405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the user asked for that or because the platform doesn't support
84415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# them.  This is particularly important on AIX, because we don't
84425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# support having both static and shared libraries enabled at the same
84435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# time on that platform, so we default to a shared-only configuration.
84445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If a disable-shared tag is given, we'll fallback to a static-only
84455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# configuration.  But we'll never go from static-only to shared-only.
84465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
84485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_libtool_libs=no
84495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=yes
84505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-shared
84515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-static
84535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
84545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-static
84555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Local Variables:
84575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mode:shell-script
84585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sh-indentation:2
84595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# End:
84605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# vi:sw=2
84615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8462