15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated from ltmain.m4sh.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ltmain.sh (GNU libtool) 2.2.6b
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.6b Debian-2.2.6b-2ubuntu1
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.6b Debian-2.2.6b-2ubuntu1"
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TIMESTAMP=""
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)package_revision=1.3017
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="/bin/grep -E"}
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${FGREP="/bin/grep -F"}
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles): ${GREP="/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="/bin/sed"}
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)
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test "X$1" = X--fallback-echo; then
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # used as fallback echo
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shift
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  cat <<EOF
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$*
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exit $EXIT_SUCCESS
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic="%%%MAGIC variable%%%"
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)magic_exe="%%%MAGIC EXE variable%%%"
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Global variables.
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $mode is unset
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)nonopt=
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)execute_dlfiles=
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)preserve_args=
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lo2o="s/\\.lo\$/.${objext}/"
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)o2lo="s/\\.${objext}\$/.lo/"
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_archives=
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extracted_serial=0
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_dry_run=false
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_duplicate_deps=false
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_silent=false
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)opt_debug=:
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If this variable is set in any of the actions, the command in it
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will be execed at the end.  This prevents here-documents from being
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# left over by shells.
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exec_cmd=
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_fatal_configuration arg...
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Echo program name prefixed message to standard error, followed by
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a configuration failure hint, and exit.
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_fatal_configuration ()
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error ${1+"$@"}
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error "See the $PACKAGE documentation for more information."
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_fatal_error "Fatal configuration error."
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_config
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the configuration for all the tags in this script.
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_config ()
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    re_begincf='^# ### BEGIN LIBTOOL'
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    re_endcf='^# ### END LIBTOOL'
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Default configuration.
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath"
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Now print the configurations for the tags.
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for tagname in $taglist; do
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath"
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_features
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Display the features supported by this script.
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_features ()
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "host: $host"
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_libtool_libs" = yes; then
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "enable shared libraries"
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "disable shared libraries"
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "enable static libraries"
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "disable static libraries"
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_enable_tag tagname
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Verify that TAGNAME is valid, and either flag an error and exit, or
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# enable the TAGNAME tag.  We also add TAGNAME to the global $taglist
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable here.
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_enable_tag ()
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Global variable:
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tagname="$1"
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$"
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$"
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  sed_extractcf="/$re_begincf/,/$re_endcf/p"
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Validate tagname.
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $tagname in
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *[!-_A-Za-z0-9,/]*)
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "invalid tag name: $tagname"
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Don't test for the "default" C tag, as we know it's
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # there but not specially marked.
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $tagname in
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    CC) ;;
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	taglist="$taglist $tagname"
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Evaluate the configuration.  Be careful to quote the path
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# and the sed script, to avoid splitting on whitespace, but
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# also don't use non-portable quotes within backquotes within
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# quotes we have to do it in 2 steps:
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"`
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "$extractedcf"
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_error "ignoring unknown tag $tagname"
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Parse options once, thoroughly.  This comes as soon as possible in
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the script to make things like `libtool --version' happen quickly.
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Shorthand for --mode=foo, only valid as the first argument
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $1 in
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  clean|clea|cle|cl)
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode clean ${1+"$@"}; shift
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  compile|compil|compi|comp|com|co|c)
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode compile ${1+"$@"}; shift
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  execute|execut|execu|exec|exe|ex|e)
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode execute ${1+"$@"}; shift
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  finish|finis|fini|fin|fi|f)
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode finish ${1+"$@"}; shift
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  install|instal|insta|inst|ins|in|i)
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode install ${1+"$@"}; shift
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  link|lin|li|l)
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode link ${1+"$@"}; shift
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u)
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift; set dummy --mode uninstall ${1+"$@"}; shift
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Parse non-mode specific arguments:
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while test "$#" -gt 0; do
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    opt="$1"
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    shift
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $opt in
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --config)		func_config					;;
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --debug)		preserve_args="$preserve_args $opt"
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			func_echo "enabling shell trace mode"
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_debug='set -x'
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			$opt_debug
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlopen)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			execute_dlfiles="$execute_dlfiles $1"
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --dry-run | -n)	opt_dry_run=:					;;
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --features)       func_features					;;
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --finish)		mode="finish"					;;
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --mode)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			case $1 in
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  # Valid mode arguments:
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  clean)	;;
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  compile)	;;
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  execute)	;;
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  finish)	;;
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  install)	;;
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  link)		;;
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  relink)	;;
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  uninstall)	;;
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  # Catch anything else as an error
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  *) func_error "invalid argument for $opt"
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     exit_cmd=exit
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     break
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     ;;
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		        esac
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			mode="$1"
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --preserve-dup-deps)
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_duplicate_deps=:				;;
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --quiet|--silent)	preserve_args="$preserve_args $opt"
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_silent=:
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --verbose| -v)	preserve_args="$preserve_args $opt"
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			opt_silent=false
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --tag)		test "$#" -eq 0 && func_missing_arg "$opt" && break
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			preserve_args="$preserve_args $opt $1"
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			func_enable_tag "$1"	# tagname is set here
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Separate optargs to long options:
7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlopen=*|--mode=*|--tag=*)
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			func_opt_split "$opt"
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"}
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			shift
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -\?|-h)		func_usage					;;
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --help)		opt_help=:					;;
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      --version)	func_version					;;
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*)		func_fatal_help "unrecognized option \`$opt'"	;;
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)		nonopt="$opt"
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			break
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			;;
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  done
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $host in
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *cygwin* | *mingw* | *pw32* | *cegcc*)
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # don't eliminate duplications in $postdeps and $predeps
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      opt_duplicate_compiler_generated_deps=:
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      opt_duplicate_compiler_generated_deps=$opt_duplicate_deps
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Having warned about all mis-specified options, bail out if
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # anything was wrong.
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $exit_cmd $EXIT_FAILURE
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_check_version_match
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Ensure that we are using m4 macros, and libtool script from the same
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# release of libtool.
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_check_version_match ()
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test "$package_revision" != "$macro_revision"; then
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$VERSION" != "$macro_version"; then
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$macro_version"; then
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        cat >&2 <<_LT_EOF
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error.  This is $PACKAGE $VERSION, but the
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: definition of this LT_INIT comes from an older release.
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: and run autoconf again.
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
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 $PACKAGE $macro_version.
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)      fi
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cat >&2 <<_LT_EOF
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: Version mismatch error.  This is $PACKAGE $VERSION, revision $package_revision,
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: but the definition of this LT_INIT comes from revision $macro_revision.
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: You should recreate aclocal.m4 with macros from revision $package_revision
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$progname: of $PACKAGE $VERSION and run autoconf again.
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)_LT_EOF
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_MISMATCH
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ##
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)##    Main.    ##
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)## ----------- ##
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || {
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Sanity checks first:
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_check_version_match
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_fatal_configuration "not configured to build any kind of library"
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test -z "$mode" && func_fatal_error "error: you must specify a MODE."
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Darwin sucks
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  eval std_shrext=\"$shrext_cmds\"
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Only execute mode is allowed to have -dlopen flags.
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -n "$execute_dlfiles" && test "$mode" != execute; then
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_error "unrecognized option \`-dlopen'"
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "$help" 1>&2
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_FAILURE
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Change the help message to a mode-specific one.
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  generic_help="$help"
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  help="Try \`$progname --help --mode=$mode' for more information."
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_p file
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file.
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_p ()
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -f "$1" &&
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $SED -e 4q "$1" 2>/dev/null \
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_lalib_unsafe_p file
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool `.la' library or `.lo' object file.
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function implements the same check as func_lalib_p without
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# resorting to external programs.  To this end, it redirects stdin and
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# closes it afterwards, without saving the original file descriptor.
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# As a safety measure, use it only where a negative result would be
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# fatal anyway.  Works if `file' does not exist.
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_lalib_unsafe_p ()
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lalib_p=no
9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then
9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for lalib_p_l in 1 2 3 4
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	do
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    read lalib_p_line
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$lalib_p_line" in
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exec 0<&5 5<&-
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test "$lalib_p" = yes
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_script_p file
9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_script_p ()
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_lalib_p "$1"
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_executable_p file
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper executable
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_executable_p ()
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_ltwrapper_exec_suffix=
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $1 in
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.exe) ;;
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *) func_ltwrapper_exec_suffix=.exe ;;
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_scriptname file
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Assumes file is an ltwrapper_executable
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# uses $file to determine the appropriate filename for a
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# temporary ltwrapper_script.
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_scriptname ()
9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_ltwrapper_scriptname_result=""
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if func_ltwrapper_executable_p "$1"; then
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname_and_basename "$1" "" "."
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '' '.exe' "$func_basename_result"
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper"
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_ltwrapper_p file
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# True iff FILE is a libtool wrapper script or wrapper executable
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This function is only a basic sanity check; it will hardly flush out
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# determined imposters.
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_ltwrapper_p ()
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1"
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_execute_cmds commands fail_cmd
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Execute tilde-delimited COMMANDS.
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If FAIL_CMD is given, eval that upon failure.
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FAIL_CMD may read-access the current command in variable CMD!
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_execute_cmds ()
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    save_ifs=$IFS; IFS='~'
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for cmd in $1; do
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      IFS=$save_ifs
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval cmd=\"$cmd\"
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$cmd" "${2-:}"
9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    IFS=$save_ifs
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_source file
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Source FILE, adding directory component if necessary.
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Note that it is not necessary on cygwin/mingw to append a dot to
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# FILE even if both FILE and FILE.exe exist: automatic-append-.exe
9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior happens only for exec(3), not for open(2)!  Also, sourcing
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# `FILE.' does not work on cygwin managed mounts.
9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_source ()
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $1 in
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */* | *\\*)	. "$1" ;;
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)		. "./$1" ;;
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_infer_tag arg
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Infer tagged configuration to use if any are available and
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if one wasn't chosen via the "--tag" command line option.
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Only attempt this if the compiler in the base compile
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# command doesn't match the default compiler.
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# arg is usually of the form 'gcc ...'
10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_infer_tag ()
10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$available_tags" && test -z "$tagname"; then
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CC_quoted=
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for arg in $CC; do
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval "$arg"
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	CC_quoted="$CC_quoted $func_quote_for_eval_result"
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $@ in
10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Blanks in the command may have been stripped by the calling shell,
10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # but not from the CC environment variable when configure was run.
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;;
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Blanks at the start of $base_compile will cause this to fail
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # if we don't check for them as well.
10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for z in $available_tags; do
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Evaluate the configuration.
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    CC_quoted=
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for arg in $CC; do
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Double-quote args containing other shell metacharacters.
10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_quote_for_eval "$arg"
10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      CC_quoted="$CC_quoted $func_quote_for_eval_result"
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$@ " in
10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*)
10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # The compiler in the base compile command matches
10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # the one in the tagged configuration.
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Assume this is the tagged configuration we want.
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tagname=$z
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If $tagname still isn't set, then no tagged configuration
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# was found and let the user know that the "--tag" command
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# line option must be used.
10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$tagname"; then
10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_echo "unable to infer tagged configuration"
10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "specify a tag with \`--tag'"
10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#	else
10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#	  func_verbose "using $tagname tagged configuration"
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_write_libtool_object output_name pic_name nonpic_name
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Create a libtool object file (analogous to a ".la" file),
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but don't create it if we're doing a dry run.
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_write_libtool_object ()
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    write_libobj=${1}
10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_libtool_libs" = yes; then
10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_lobj=\'${2}\'
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_lobj=none
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_oldobj=\'${3}\'
10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      write_oldobj=none
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_dry_run || {
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      cat >${write_libobj}T <<EOF
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $write_libobj - a libtool object file
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file!
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library.
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the PIC object.
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)pic_object=$write_lobj
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Name of the non-PIC object
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)non_pic_object=$write_oldobj
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $MV "${write_libobj}T" "${write_libobj}"
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_compile arg...
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_compile ()
11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Get the compilation command and the source file.
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    base_compile=
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    srcfile="$nonopt"  #  always keep a non-empty value in "srcfile"
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    suppress_opt=yes
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    suppress_output=
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arg_mode=normal
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libobj=
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    later=
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    pie_flag=
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg_mode in
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg  )
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# do not "continue".  Instead, add this to base_compile
11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lastarg="$arg"
11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg_mode=normal
11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      target )
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj="$arg"
11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg_mode=normal
11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      normal )
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Accept any command-line options.
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $arg in
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-o)
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$libobj" && \
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "you cannot specify \`-o' more than once"
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg_mode=target
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-pie | -fpie | -fPIE)
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          pie_flag="$pie_flag $arg"
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-shared | -static | -prefer-pic | -prefer-non-pic)
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  later="$later $arg"
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-no-suppress)
11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  suppress_opt=no
11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-Xcompiler)
11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg_mode=arg  #  the next one goes into the "base_compile" arg list
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue      #  The current "srcfile" will either be retained or
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;            #  replaced later.  I would guess that would be a bug.
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-Wc,*)
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '-Wc,' '' "$arg"
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  args=$func_stripname_result
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lastarg=
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_ifs="$IFS"; IFS=','
11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for arg in $args; do
11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    IFS="$save_ifs"
11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_quote_for_eval "$arg"
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lastarg="$lastarg $func_quote_for_eval_result"
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname ' ' '' "$lastarg"
11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lastarg=$func_stripname_result
11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add the arguments to base_compile.
11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  base_compile="$base_compile $lastarg"
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Accept the current argument as the source file.
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The previous "srcfile" becomes the current argument.
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lastarg="$srcfile"
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  srcfile="$arg"
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac  #  case $arg
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac    #  case $arg_mode
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Aesthetically quote the previous argument.
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$lastarg"
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base_compile="$base_compile $func_quote_for_eval_result"
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # for arg
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $arg_mode in
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    arg)
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "you must specify an argument for -Xcompile"
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    target)
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "you must specify a target with \`-o'"
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Get the name of the library object.
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -z "$libobj" && {
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$srcfile"
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj="$func_basename_result"
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Recognize several different file suffixes.
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # If the user specifies -o file.o, it is replaced with file.lo
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $libobj in
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.[cCFSifmso] | \
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.ada | *.adb | *.ads | *.asm | \
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.[fF][09]? | *.for | *.java | *.obj | *.sx)
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_xform "$libobj"
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libobj=$func_xform_result
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $libobj in
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;;
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "cannot determine name of library object from \`$libobj'"
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_infer_tag $base_compile
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg in $later; do
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shared)
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$build_libtool_libs" != yes && \
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_configuration "can not build a shared library"
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=no
12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -static)
12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_libtool_libs=no
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=yes
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -prefer-pic)
12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pic_mode=yes
12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -prefer-non-pic)
12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pic_mode=no
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_eval "$libobj"
12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test "X$libobj" != "X$func_quote_for_eval_result" \
12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"'	 &()|`$[]' \
12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      && func_warning "libobj name \`$libobj' may not contain shell special characters."
12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_dirname_and_basename "$obj" "/" ""
12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objname="$func_basename_result"
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xdir="$func_dirname_result"
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lobj=${xdir}$objdir/$objname
12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$base_compile" && \
12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify a compilation command"
12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Delete any leftover library objects.
12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removelist="$obj $lobj $libobj ${libobj}T"
12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removelist="$lobj $libobj ${libobj}T"
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # On Cygwin there's no "real" PIC flag so we must build both object types
12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host_os in
12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cygwin* | mingw* | pw32* | os2* | cegcc*)
12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pic_mode=default
12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # non-PIC code in shared libraries is not supported
12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pic_mode=default
12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Calculate the filename of the output object if compiler does
12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # not support -o with -c
12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$compiler_c_o" = no; then
12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lockfile="$output_obj.lock"
12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output_obj=
12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      need_locks=no
12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lockfile=
12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Lock this critical section if it is needed
13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We use this script file to make the link, it avoids creating a new file
13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$need_locks" = yes; then
13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do
13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_echo "Waiting for $lockfile to be removed"
13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	sleep 2
13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    elif test "$need_locks" = warn; then
13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -f "$lockfile"; then
13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile exists and contains:
13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null`
13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same
13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because
13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together.  If you
13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better
13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better
13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler."
13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $removelist
13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_FAILURE
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removelist="$removelist $output_obj"
13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "$srcfile" > "$lockfile"
13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_dry_run || $RM $removelist
13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    removelist="$removelist $lockfile"
13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15
13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$fix_srcfile_path"; then
13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval srcfile=\"$fix_srcfile_path\"
13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_eval "$srcfile"
13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    qsrcfile=$func_quote_for_eval_result
13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Only build a PIC object if we are building libtool libraries.
13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_libtool_libs" = yes; then
13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Without this assignment, base_compile gets emptied.
13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fbsd_hideous_sh_bug=$base_compile
13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pic_mode" != no; then
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile $pic_flag"
13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Don't build PIC code
13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile"
13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_mkdir_p "$xdir$objdir"
13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$output_obj"; then
13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Place PIC objects in $objdir
13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$command -o $lobj"
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval_locale "$command"	\
13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE'
13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$need_locks" = warn &&
13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains:
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null`
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain:
13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile
13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same
13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because
13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together.  If you
13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better
13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better
13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler."
13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $removelist
13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_FAILURE
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Just move the object if needed, then go on to compile the next one
13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then
13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '$MV "$output_obj" "$lobj"' \
13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Allow error messages only from the first compilation.
13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$suppress_opt" = yes; then
13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	suppress_output=' >/dev/null 2>&1'
13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Only build a position-dependent object if we build old libraries.
13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$build_old_libs" = yes; then
13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pic_mode" != yes; then
13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Don't build PIC code
13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile$pie_flag"
13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$base_compile $qsrcfile $pic_flag"
13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$compiler_c_o" = yes; then
13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	command="$command -o $obj"
14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Suppress compiler output if we already did a PIC compilation.
14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      command="$command$suppress_output"
14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval_locale "$command" \
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE'
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$need_locks" = warn &&
14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then
14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*** ERROR, $lockfile contains:
14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)`cat $lockfile 2>/dev/null`
14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)but it should contain:
14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$srcfile
14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This indicates that another process is trying to use the same
14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)temporary object file, and libtool could not work around it because
14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)your compiler does not support \`-c' and \`-o' together.  If you
14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)repeat this compilation, it may succeed, by chance, but you had better
14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)avoid parallel builds (make -j) in this platform, or get a better
14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)compiler."
14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $removelist
14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_FAILURE
14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Just move the object if needed
14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then
14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '$MV "$output_obj" "$obj"' \
14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  'error=$?; $opt_dry_run || $RM $removelist; exit $error'
14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_dry_run || {
14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_write_libtool_object "$libobj" "$objdir/$objname" "$objname"
14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Unlock the critical section if it was locked
14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$need_locks" != no; then
14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	removelist=$lockfile
14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $RM "$lockfile"
14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$opt_help || {
14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = compile && func_mode_compile ${1+"$@"}
14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_help ()
14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We need to display help for each of the modes.
14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $mode in
14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "")
14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Generic help is extracted from the usage comments
14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # at the start of this file.
14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_help
14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      clean)
14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE...
14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove files from the build directory.
14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM.
14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, object or program, all the files associated
14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)with it are deleted. Otherwise, only FILE itself is deleted using RM."
14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile)
14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO \
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Compile a source file into a libtool library object.
14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options:
14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -o OUTPUT-FILE    set the output file name to OUTPUT-FILE
14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-suppress      do not suppress compiler output for multiple passes
14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -prefer-pic       try to building PIC objects only
14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -prefer-non-pic   try to building non-PIC objects only
14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -shared           do not build a \`.o' file suitable for static linking
14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -static           only build a \`.o' file suitable for static linking
14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)COMPILE-COMMAND is a command to be used in creating a \`standard' object file
14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)from the given SOURCEFILE.
14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The output file name is determined by removing the directory component from
14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)SOURCEFILE, then substituting the C source code suffix \`.c' with the
14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library object suffix, \`.lo'."
14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      execute)
14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]...
15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Automatically set library path, then run a program.
15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode accepts the following additional options:
15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -dlopen FILE      add the directory containing FILE to the library path
15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)This mode sets the library path environment variable according to \`-dlopen'
15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)flags.
15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If any of the ARGS are libtool executable wrappers, then they are translated
15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)into their corresponding uninstalled binary, and any of their required library
15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)directories are added to the library path.
15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Then, COMMAND is executed, with ARGS as arguments."
15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finish)
15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=finish [LIBDIR]...
15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Complete the installation of libtool libraries.
15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Each LIBDIR is a directory that contains libtool libraries.
15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The commands that this mode executes may require superuser privileges.  Use
15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)the \`--dry-run' option if you just want to see what would be executed."
15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install)
15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND...
15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Install executables or libraries.
15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)INSTALL-COMMAND is the installation command.  The first component should be
15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)either the \`install' or \`cp' program.
15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of INSTALL-COMMAND are treated specially:
15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -inst-prefix PREFIX-DIR  Use PREFIX-DIR as a staging area for installation
15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The rest of the components are interpreted as arguments to that command (only
15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BSD-compatible install options are recognized)."
15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      link)
15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=link LINK-COMMAND...
15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Link object files or libraries together to form another library, or to
15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)create an executable program.
15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)LINK-COMMAND is a command using the C compiler that you would use to create
15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)a program from several object files.
15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)The following components of LINK-COMMAND are treated specially:
15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -all-static       do not do any dynamic linking at all
15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -avoid-version    do not add a version suffix if possible
15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -dlopen FILE      \`-dlpreopen' FILE if it cannot be dlopened at runtime
15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -dlpreopen FILE   link in FILE and add its symbols to lt_preloaded_symbols
15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -export-dynamic   allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -export-symbols SYMFILE
15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    try to export only the symbols listed in SYMFILE
15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -export-symbols-regex REGEX
15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    try to export only the symbols matching REGEX
15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -LLIBDIR          search LIBDIR for required installed libraries
15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -lNAME            OUTPUT-FILE requires the installed library libNAME
15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -module           build a library that can dlopened
15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-fast-install  disable the fast-install mode
15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-install       link a not-installable executable
15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -no-undefined     declare that a library does not refer to external symbols
15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -o OUTPUT-FILE    create OUTPUT-FILE from the specified objects
15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -objectlist FILE  Use a list of object files found in FILE to specify objects
15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -precious-files-regex REGEX
15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    don't remove output files matching REGEX
15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -release RELEASE  specify package release information
15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -rpath LIBDIR     the created library will eventually be installed in LIBDIR
15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -R[ ]LIBDIR       add LIBDIR to the runtime path of programs and libraries
15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -shared           only do dynamic linking of libtool libraries
15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -shrext SUFFIX    override the standard shared library file extension
15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -static           do not do any dynamic linking of uninstalled libtool libraries
15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -static-libtool-libs
15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    do not do any dynamic linking of libtool libraries
15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -version-info CURRENT[:REVISION[:AGE]]
15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    specify library version info [each variable defaults to 0]
15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  -weak LIBNAME     declare that the target provides the LIBNAME interface
15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)All other options (arguments beginning with \`-') are ignored.
15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Every other argument is treated as a filename.  Files ending in \`.la' are
15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)treated as uninstalled libtool libraries, other files are standard or library
15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)object files.
15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If the OUTPUT-FILE ends in \`.la', then a libtool library is created,
15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)only library objects (\`.lo' files) may be specified, and \`-rpath' is
15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)required, except when creating a convenience library.
15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created
16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using \`ar' and \`ranlib', or on Windows using \`lib'.
16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file
16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)is created, otherwise an executable program is created."
16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      uninstall)
16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO \
16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE...
16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Remove libraries from an installation directory.
16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)RM is the name of the program to use to delete files associated with each FILE
16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(typically \`/bin/rm').  RM-OPTIONS are options (such as \`-f') to be passed
16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)to RM.
16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)If FILE is a libtool library, all the files associated with it are deleted.
16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Otherwise, only FILE itself is deleted using RM."
16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_fatal_help "invalid operation mode \`$mode'"
16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "Try \`$progname --help' for more information about other modes."
16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $?
16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Now that we've collected a possible --mode arg, show help if necessary
16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $opt_help && func_mode_help
16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_execute arg...
16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_execute ()
16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The first argument is the command name.
16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    cmd="$nonopt"
16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$cmd" && \
16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify a COMMAND"
16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Handle -dlopen flags immediately.
16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $execute_dlfiles; do
16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -f "$file" \
16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	|| func_fatal_help "\`$file' is not a file"
16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dir=
16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $file in
16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$file" \
16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_help "\`$lib' is not a valid libtool archive"
16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Read the libtool library.
16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlname=
16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$file"
16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Skip this library if it cannot be dlopened.
16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$dlname"; then
16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Warn if it was a shared library.
16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$library_names" && \
16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`$file' was not linked with \`-export-dynamic'"
16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$file" "" "."
16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$func_dirname_result"
16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -f "$dir/$objdir/$dlname"; then
16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dir="$dir/$objdir"
16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$dir/$dlname"; then
16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'"
16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Just add the directory containing the .lo file.
16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$file" "" "."
16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$func_dirname_result"
16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for non-libtool libraries and objects"
16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Get the absolute pathname.
16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      absdir=`cd "$dir" && pwd`
16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$absdir" && dir="$absdir"
16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now add the directory to shlibpath_var.
16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if eval "test -z \"\$$shlibpath_var\""; then
17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "$shlibpath_var=\"\$dir\""
17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\""
17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set shlibpath_var
17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # rather than running their programs.
17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_execute_magic="$magic"
17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Check if any of the arguments is a wrapper script.
17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    args=
17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file
17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $file in
17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*) ;;
17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do a test to see if this is really a libtool program.
17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_ltwrapper_script_p "$file"; then
17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$file"
17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Transform arg to wrapped name.
17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  file="$progdir/$program"
17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif func_ltwrapper_executable_p "$file"; then
17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_ltwrapper_scriptname "$file"
17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$func_ltwrapper_scriptname_result"
17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Transform arg to wrapped name.
17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  file="$progdir/$program"
17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote arguments (to preserve shell metacharacters).
17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$file"
17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      args="$args $func_quote_for_eval_result"
17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "X$opt_dry_run" = Xfalse; then
17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$shlibpath_var"; then
17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Export the shlibpath_var.
17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "export $shlibpath_var"
17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Restore saved environment variables
17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      do
17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "if test \"\${save_$lt_var+set}\" = set; then
17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                $lt_var=\$save_$lt_var; export $lt_var
17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$lt_unset $lt_var
17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi"
17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now prepare to actually exec the command.
17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec_cmd="\$cmd$args"
17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Display what would be done.
17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$shlibpath_var"; then
17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\""
17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "export $shlibpath_var"
17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "$cmd$args"
17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = execute && func_mode_execute ${1+"$@"}
17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_finish arg...
17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_finish ()
17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libdirs="$nonopt"
17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    admincmds=
17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for dir
17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      do
17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdirs="$libdirs $dir"
17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for libdir in $libdirs; do
17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$finish_cmds"; then
17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do each command in the finish commands.
17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_execute_cmds "$finish_cmds" 'admincmds="$admincmds
17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)'"$cmd"'"'
17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$finish_eval"; then
17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do the single finish_eval.
17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval cmds=\"$finish_eval\"
17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval "$cmds" || admincmds="$admincmds
17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       $cmds"
17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Exit here if they wanted silent mode.
17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_silent && exit $EXIT_SUCCESS
17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "X----------------------------------------------------------------------" | $Xsed
17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "Libraries have been installed in:"
18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for libdir in $libdirs; do
18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   $libdir"
18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "If you ever happen to want to link against installed libraries"
18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "in a given directory, LIBDIR, you must either use libtool, and"
18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'"
18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "flag during linking and do at least one of the following:"
18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$shlibpath_var"; then
18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - add LIBDIR to the \`$shlibpath_var' environment variable"
18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "     during execution"
18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$runpath_var"; then
18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - add LIBDIR to the \`$runpath_var' environment variable"
18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "     during linking"
18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$hardcode_libdir_flag_spec"; then
18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libdir=LIBDIR
18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval flag=\"$hardcode_libdir_flag_spec\"
18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - use the \`$flag' linker flag"
18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$admincmds"; then
18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - have your system administrator run these commands:$admincmds"
18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -f /etc/ld.so.conf; then
18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $ECHO "   - have your system administrator add LIBDIR to \`/etc/ld.so.conf'"
18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO
18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "See any operating system documentation about shared libraries for"
18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      solaris2.[6789]|solaris2.1[0-9])
18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual"
18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "pages."
18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        $ECHO "more information, such as the ld(1) and ld.so(8) manual pages."
18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO "X----------------------------------------------------------------------" | $Xsed
18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = finish && func_mode_finish ${1+"$@"}
18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_install arg...
18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_install ()
18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # There may be an optional sh(1) argument at the beginning of
18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # install_prog (especially on Windows NT).
18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       # Allow the use of GNU shtool's install command.
18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       $ECHO "X$nonopt" | $GREP shtool >/dev/null; then
18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Aesthetically quote it.
18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$nonopt"
18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_prog="$func_quote_for_eval_result "
18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg=$1
18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_prog=
18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg=$nonopt
18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The real first argument should be the name of the installation program.
18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Aesthetically quote it.
18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_quote_for_eval "$arg"
18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    install_prog="$install_prog$func_quote_for_eval_result"
18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We need to accept at least all the BSD install flags.
18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dest=
18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    files=
18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    opts=
18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prev=
18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    install_type=
18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    isdir=no
18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    stripme=
18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dest"; then
18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	files="$files $dest"
18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dest=$arg
18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -d) isdir=yes ;;
18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -f)
18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $install_prog " in
18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*[\\\ /]cp\ *) ;;
18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) prev=$arg ;;
18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -g | -m | -o)
18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=$arg
18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -s)
18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	stripme=" -s"
19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*)
19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the previous option needed an argument, then skip it.
19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$prev"; then
19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dest=$arg
19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Aesthetically quote the argument.
19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$arg"
19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_prog="$install_prog $func_quote_for_eval_result"
19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$install_prog" && \
19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an install program"
19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$prev" && \
19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "the \`$prev' option requires an argument"
19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -z "$files"; then
19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$dest"; then
19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_help "no file or destination specified"
19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_help "you must specify a destination"
19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Strip any trailing slash from the destination.
19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_stripname '' '/' "$dest"
19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dest=$func_stripname_result
19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Check to see that the destination is a directory.
19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -d "$dest" && isdir=yes
19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$isdir" = yes; then
19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destdir="$dest"
19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destname=
19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_dirname_and_basename "$dest" "" "."
19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destdir="$func_dirname_result"
19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      destname="$func_basename_result"
19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Not a directory, so check to see that there is only one file specified.
19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set dummy $files; shift
19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$#" -gt 1 && \
19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_help "\`$dest' is not a directory"
19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $destdir in
19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    [\\/]* | [A-Za-z]:[\\/]*) ;;
19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for file in $files; do
19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $file in
19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo) ;;
19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "\`$destdir' must be an absolute directory name"
19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set variables rather
19685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # than running their programs.
19695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_install_magic="$magic"
19705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    staticlibs=
19725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    future_libdirs=
19735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    current_libdirs=
19745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $files; do
19755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do each installation.
19775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $file in
19785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.$libext)
19795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do the static libraries later.
19805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	staticlibs="$staticlibs $file"
19815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
19825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
19845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
19855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$file" \
19865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_help "\`$file' is not a valid libtool archive"
19875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
19895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_library=
19905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command=
19915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$file"
19925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Add the libdir to current_libdirs if it is the destination.
19945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$destdir" = "X$libdir"; then
19955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$current_libdirs " in
19965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
19975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) current_libdirs="$current_libdirs $libdir" ;;
19985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
19995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
20005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Note the libdir as a future libdir.
20015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$future_libdirs " in
20025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
20035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) future_libdirs="$future_libdirs $libdir" ;;
20045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
20055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
20065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$file" "/" ""
20085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$func_dirname_result"
20095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir="$dir$objdir"
20105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$relink_command"; then
20125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Determine the prefix the user has applied to our future dir.
20135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"`
20145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Don't allow the user to place us outside of our expected
20165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # location b/c this prevents finding dependent libraries that
20175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are installed to the same prefix.
20185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # At present, this check doesn't affect windows .dll's that
20195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are installed into $libdir/../bin (currently, that works fine)
20205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # but it's something to keep an eye on.
20215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$inst_prefix_dir" = "$destdir" && \
20225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir"
20235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$inst_prefix_dir"; then
20255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Stick the inst_prefix_dir data into the link command.
20265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
20275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
20285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"`
20295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
20305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "relinking \`$file'"
20325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$relink_command" \
20335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"'
20345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
20355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# See the names of the shared library.
20375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $library_names; shift
20385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1"; then
20395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  realname="$1"
20405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  shift
20415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  srcname="$realname"
20435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$relink_command" && srcname="$realname"T
20445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Install the shared library and build the symlinks.
20465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \
20475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      'exit $?'
20485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tstripme="$stripme"
20495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host_os in
20505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cygwin* | mingw* | pw32* | cegcc*)
20515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $realname in
20525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *.dll.a)
20535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tstripme=""
20545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
20555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
20565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
20575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
20585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$tstripme" && test -n "$striplib"; then
20595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_show_eval "$striplib $destdir/$realname" 'exit $?'
20605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
20615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$#" -gt 0; then
20635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Delete the old symlinks, and create new ones.
20645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Try `ln -sf' first, because the `ln' binary might depend on
20655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
20665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # so we also need to try rm && ln -s.
20675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for linkname
20685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
20695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test "$linkname" != "$realname" \
20705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		&& func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })"
20715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
20725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
20735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do each command in the postinstall commands.
20755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib="$destdir/$realname"
20765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_execute_cmds "$postinstall_cmds" 'exit $?'
20775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
20785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install the pseudo-library for information purposes.
20805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$file"
20815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name="$func_basename_result"
20825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	instname="$dir/$name"i
20835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$install_prog $instname $destdir/$name" 'exit $?'
20845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Maybe install the static library, too.
20865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library"
20875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
20885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
20905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install (i.e. copy) a libtool object.
20915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
20925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Figure out destination file name, if it wasn't already specified.
20935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$destname"; then
20945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destname"
20955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
20965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_basename "$file"
20975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$func_basename_result"
20985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destfile"
20995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
21005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Deduce the name of the destination old-style object file.
21025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $destfile in
21035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo)
21045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_lo2o "$destfile"
21055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  staticdest=$func_lo2o_result
21065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
21075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.$objext)
21085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  staticdest="$destfile"
21095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile=
21105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
21115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
21125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "cannot copy a libtool object to \`$destfile'"
21135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
21145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
21155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install the libtool object if requested.
21175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$destfile" && \
21185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$install_prog $file $destfile" 'exit $?'
21195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Install the old object if enabled.
21215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_old_libs" = yes; then
21225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Deduce the name of the old-style object file.
21235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_lo2o "$file"
21245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  staticobj=$func_lo2o_result
21255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?'
21265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
21275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
21285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
21295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
21315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Figure out destination file name, if it wasn't already specified.
21325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$destname"; then
21335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destname"
21345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
21355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_basename "$file"
21365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$func_basename_result"
21375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  destfile="$destdir/$destfile"
21385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
21395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the file is missing, and there is a .exe on the end, strip it
21415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# because it is most likely a libtool script we actually want to
21425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# install
21435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	stripped_ext=""
21445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $file in
21455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe)
21465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test ! -f "$file"; then
21475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname '' '.exe' "$file"
21485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      file=$func_stripname_result
21495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      stripped_ext=".exe"
21505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
21525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
21535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do a test to see if this is really a libtool program.
21555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
21565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*cygwin* | *mingw*)
21575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if func_ltwrapper_executable_p "$file"; then
21585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_ltwrapper_scriptname "$file"
21595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      wrapper=$func_ltwrapper_scriptname_result
21605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
21615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname '' '.exe' "$file"
21625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      wrapper=$func_stripname_result
21635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
21655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
21665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    wrapper=$file
21675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
21685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
21695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_ltwrapper_script_p "$wrapper"; then
21705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  notinst_deplibs=
21715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command=
21725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$wrapper"
21745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Check the variables that should have been set.
21765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -z "$generated_by_libtool_version" && \
21775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "invalid libtool wrapper script \`$wrapper'"
21785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize=yes
21805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for lib in $notinst_deplibs; do
21815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Check to see that each library is installed.
21825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir=
21835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$lib"; then
21845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source "$lib"
21855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
21875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$libdir" && test ! -f "$libfile"; then
21885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_warning "\`$lib' has not been installed in \`$libdir'"
21895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize=no
21905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
21915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
21925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command=
21945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$wrapper"
21955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
21965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  outputname=
21975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$fast_install" = no && test -n "$relink_command"; then
21985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
21995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$finalize" = yes; then
22005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        tmpdir=`func_mktempdir`
22015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$file$stripped_ext"
22025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		file="$func_basename_result"
22035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        outputname="$tmpdir/$file"
22045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        # Replace the output file specification.
22055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
22065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $opt_silent || {
22085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          func_quote_for_expand "$relink_command"
22095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval "func_echo $func_quote_for_expand_result"
22105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        }
22115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        if eval "$relink_command"; then :
22125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          else
22135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_error "error: relink \`$file' with the above command before installing it"
22145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $opt_dry_run || ${RM}r "$tmpdir"
22155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  continue
22165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        fi
22175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        file="$outputname"
22185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
22195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_warning "cannot relink \`$file'"
22205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
22215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
22225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
22235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Install the binary that we compiled earlier.
22245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"`
22255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
22265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
22275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# remove .exe since cygwin /usr/bin/install will append another
22295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# one anyway
22305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $install_prog,$host in
22315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*/usr/bin/install*,*cygwin*)
22325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file:$destfile in
22335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe:*.exe)
22345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # this is ok
22355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
22365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe:*)
22375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    destfile=$destfile.exe
22385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
22395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *:*.exe)
22405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$destfile"
22415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    destfile=$func_stripname_result
22425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
22435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
22445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
22455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
22465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?'
22475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || if test -n "$outputname"; then
22485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ${RM}r "$tmpdir"
22495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
22505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
22515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
22525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
22535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $staticlibs; do
22555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$file"
22565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      name="$func_basename_result"
22575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Set up the ranlib parameters.
22595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlib="$destdir/$name"
22605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$install_prog \$file \$oldlib" 'exit $?'
22625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$stripme" && test -n "$old_striplib"; then
22645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$old_striplib $oldlib" 'exit $?'
22655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
22665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do each command in the postinstall commands.
22685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_execute_cmds "$old_postinstall_cmds" 'exit $?'
22695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
22705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$future_libdirs" && \
22725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_warning "remember to run \`$progname --finish$future_libdirs'"
22735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$current_libdirs"; then
22755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Maybe just do a dry run.
22765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run && current_libdirs=" -n$current_libdirs"
22775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
22785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
22795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
22805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
22815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
22825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test "$mode" = install && func_mode_install ${1+"$@"}
22845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_generate_dlsyms outputname originator pic_p
22875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Extract symbols from dlprefiles and create ${outputname}S.o with
22885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# a dlpreopen symbol table.
22895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_generate_dlsyms ()
22905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
22915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
22925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_outputname="$1"
22935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_originator="$2"
22945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_pic_p="${3-no}"
22955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'`
22965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_dlsyms=
22975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
22995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$NM" && test -n "$global_symbol_pipe"; then
23005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	my_dlsyms="${my_outputname}S.c"
23015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
23025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_error "not configured to extract global symbols from dlpreopened files"
23035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
23045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
23055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$my_dlsyms"; then
23075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $my_dlsyms in
23085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      "") ;;
23095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.c)
23105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Discover the nlist of each of the dlfiles.
23115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	nlist="$output_objdir/${my_outputname}.nm"
23125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$RM $nlist ${nlist}S ${nlist}T"
23145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Parse the name list into a source file.
23165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_verbose "creating $output_objdir/$my_dlsyms"
23175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\
23195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */
23205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */
23215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
23235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern \"C\" {
23245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
23255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* External symbol declarations for the compiler. */\
23275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
23285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$dlself" = yes; then
23305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "generating symbol list for \`$output'"
23315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist"
23335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add our own program objects to the symbol list.
23355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
23365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for progfile in $progfiles; do
23375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "extracting global C symbols from \`$progfile'"
23385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'"
23395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
23405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$exclude_expsyms"; then
23425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
23445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$MV "$nlist"T "$nlist"'
23455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
23475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols_regex"; then
23495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
23515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$MV "$nlist"T "$nlist"'
23525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
23545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Prepare the list of exported symbols
23565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$export_symbols"; then
23575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    export_symbols="$output_objdir/$outputname.exp"
23585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $RM $export_symbols
23605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
23615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
23625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *cygwin* | *mingw* | *cegcc* )
23635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
23655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        ;;
23665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
23675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
23695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
23705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
23715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
23725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval '$MV "$nlist"T "$nlist"'
23735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
23745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        *cygwin | *mingw* | *cegcc* )
23755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
23765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
23775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          ;;
23785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
23795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
23805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
23815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
23825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for dlprefile in $dlprefiles; do
23845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "extracting global C symbols from \`$dlprefile'"
23855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_basename "$dlprefile"
23865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name="$func_basename_result"
23875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || {
23885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval '$ECHO ": $name " >> "$nlist"'
23895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'"
23905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  }
23915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
23925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || {
23945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make sure we have at least an empty file.
23955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -f "$nlist" || : > "$nlist"
23965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
23975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$exclude_expsyms"; then
23985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T
23995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $MV "$nlist"T "$nlist"
24005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
24015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Try sorting and uniquifying the output.
24035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $GREP -v "^: " < "$nlist" |
24045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if sort -k 3 </dev/null >/dev/null 2>&1; then
24055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		sort -k 3
24065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
24075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		sort +2
24085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi |
24095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      uniq > "$nlist"S; then
24105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    :
24115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
24125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $GREP -v "^: " < "$nlist" > "$nlist"S
24135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
24145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -f "$nlist"S; then
24165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"'
24175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
24185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms"
24195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
24205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* The mapping between symbol names and symbols.  */
24245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct {
24255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *name;
24265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void *address;
24275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} lt_dlsymlist;
24285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
24295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
24305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* | *cegcc* )
24315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO >> "$output_objdir/$my_dlsyms" "\
24325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* DATA imports from DLLs on WIN32 con't be const, because
24335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   runtime relocations are performed -- see ld's documentation
24345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   on pseudo-relocs.  */"
24355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_dlsym_const= ;;
24365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *osf5*)
24375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    echo >> "$output_objdir/$my_dlsyms" "\
24385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This system does not cope well with relocations in const data */"
24395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_dlsym_const= ;;
24405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
24415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_dlsym_const=const ;;
24425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
24435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern $lt_dlsym_const lt_dlsymlist
24465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[];
24475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)$lt_dlsym_const lt_dlsymlist
24485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_${my_prefix}_LTX_preloaded_symbols[] =
24495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){\
24505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  { \"$my_originator\", (void *) 0 },"
24515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $need_lib_prefix in
24535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  no)
24545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms"
24555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
24565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
24575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms"
24585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
24595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
24605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO >> "$output_objdir/$my_dlsyms" "\
24615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {0, (void *) 0}
24625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
24635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* This works around a problem in FreeBSD linker */
24655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef FREEBSD_WORKAROUND
24665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const void *lt_preloaded_setup() {
24675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return lt_${my_prefix}_LTX_preloaded_symbols;
24685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
24695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
24705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
24725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
24735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif\
24745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
24755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	} # !$opt_dry_run
24765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pic_flag_for_symtable=
24785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$compile_command " in
24795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -static "*) ;;
24805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
24815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
24825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # compiling the symbol table file with pic_flag works around
24835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # a FreeBSD bug that causes programs to crash when -lm is
24845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # linked before any other PIC object.  But we must not use
24855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # pic_flag when linking with -static.  The problem exists in
24865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1.
24875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*)
24885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;;
24895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-hpux*)
24905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_flag_for_symtable=" $pic_flag"  ;;
24915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
24925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$my_pic_p" != Xno; then
24935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      pic_flag_for_symtable=" $pic_flag"
24945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
24955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
24965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
24975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
24985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
24995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	symtab_cflags=
25005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for arg in $LTCFLAGS; do
25015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $arg in
25025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  -pie | -fpie | -fPIE) ;;
25035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) symtab_cflags="$symtab_cflags $arg" ;;
25045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
25055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
25065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Now compile the dynamic symbol file.
25085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?'
25095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Clean up the generated files.
25115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"'
25125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform the symbol file into the correct name.
25145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	symfileobj="$output_objdir/${my_outputname}S.$objext"
25155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
25165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*cygwin* | *mingw* | *cegcc* )
25175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -f "$output_objdir/$my_outputname.def"; then
25185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"`
25205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
25215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
25245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
25255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
25265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"`
25285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
25295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
25305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
25315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
25325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_error "unknown suffix for \`$my_dlsyms'"
25335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
25345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
25355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
25365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # We keep going just in case the user didn't refer to
25375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # lt_preloaded_symbols.  The linker will fail if global_symbol_pipe
25385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # really was required.
25395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Nullify the symbol file.
25415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
25425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
25435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
25445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
25455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_win32_libid arg
25475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# return the library type of file 'arg'
25485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
25495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Need a lot of goo to handle *both* DLLs and import libs
25505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Has to be a shell function in order to 'eat' the argument
25515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# that is supplied when $file_magic_command is called.
25525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_win32_libid ()
25535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
25545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $opt_debug
25555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  win32_libid_type="unknown"
25565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  win32_fileres=`file -L $1 2>/dev/null`
25575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case $win32_fileres in
25585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *ar\ archive\ import\ library*) # definitely import
25595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win32_libid_type="x86 archive import"
25605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *ar\ archive*) # could be an import, or static
25625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null |
25635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
25645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      win32_nmres=`eval $NM -f posix -A $1 |
25655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$SED -n -e '
25665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    1,100{
25675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		/ I /{
25685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    s,.*,import,
25695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    p
25705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    q
25715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		}
25725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }'`
25735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $win32_nmres in
25745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      import*)  win32_libid_type="x86 archive import";;
25755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)        win32_libid_type="x86 archive static";;
25765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
25775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
25785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *DLL*)
25805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    win32_libid_type="x86 DLL"
25815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *executable*) # but shell scripts are "executable" too...
25835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $win32_fileres in
25845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *MS\ Windows\ PE\ Intel*)
25855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      win32_libid_type="x86 DLL"
25865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
25875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
25885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ;;
25895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  esac
25905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $ECHO "$win32_libid_type"
25915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
25925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_an_archive dir oldlib
25965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_an_archive ()
25975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
25985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
25995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    f_ex_an_ar_dir="$1"; shift
26005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    f_ex_an_ar_oldlib="$1"
26015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?'
26025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
26035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     :
26045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
26055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib"
26065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
26075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
26085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_extract_archives gentop oldlib ...
26115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_extract_archives ()
26125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
26135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
26145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_gentop="$1"; shift
26155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_oldlibs=${1+"$@"}
26165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_oldobjs=""
26175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_xlib=""
26185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_xabs=""
26195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    my_xdir=""
26205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for my_xlib in $my_oldlibs; do
26225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Extract the objects.
26235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $my_xlib in
26245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
26255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) my_xabs=`pwd`"/$my_xlib" ;;
26265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
26275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$my_xlib"
26285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_xlib="$func_basename_result"
26295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_xlib_u=$my_xlib
26305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      while :; do
26315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case " $extracted_archives " in
26325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $my_xlib_u "*)
26335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $extracted_serial + 1
26345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  extracted_serial=$func_arith_result
26355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  my_xlib_u=lt$extracted_serial-$my_xlib ;;
26365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) break ;;
26375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
26385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
26395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      extracted_archives="$extracted_archives $my_xlib_u"
26405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_xdir="$my_gentop/$my_xlib_u"
26415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_mkdir_p "$my_xdir"
26435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
26455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *-darwin*)
26465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_verbose "Extracting $my_xabs"
26475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do not bother doing anything if just a dry run
26485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || {
26495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_orig_dir=`pwd`
26505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cd $my_xdir || exit $?
26515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_archive=$my_xabs
26525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_curdir=`pwd`
26535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_base_archive=`basename "$darwin_archive"`
26545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true`
26555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$darwin_arches"; then
26565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'`
26575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_arch=
26585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "$darwin_base_archive has multiple architectures $darwin_arches"
26595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for darwin_arch in  $darwin_arches ; do
26605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
26625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
26635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_extract_an_archive "`pwd`" "${darwin_base_archive}"
26645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cd "$darwin_curdir"
26655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
26665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done # $darwin_arches
26675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ## Okay now we've a bunch of thin objects, gotta fatten them up :)
26685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u`
26695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_file=
26705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    darwin_files=
26715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for darwin_file in $darwin_filelist; do
26725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
26735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $LIPO -create -output "$darwin_file" $darwin_files
26745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done # $darwin_filelist
26755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM -rf unfat-$$
26765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cd "$darwin_orig_dir"
26775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
26785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cd $darwin_orig_dir
26795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_extract_an_archive "$my_xdir" "$my_xabs"
26805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # $darwin_arches
26815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	} # !$opt_dry_run
26825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
26835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
26845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_extract_an_archive "$my_xdir" "$my_xabs"
26855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
26865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
26875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
26885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
26895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_extract_archives_result="$my_oldobjs"
26915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
26925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
26955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part1 [arg=no]
26965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
26975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the first part of a libtool wrapper script on stdout.
26985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with
26995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below.
27005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part1 ()
27015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
27025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part1_arg1=no
27035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1" ; then
27045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_emit_wrapper_part1_arg1=$1
27055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
27065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
27085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#! $SHELL
27095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $output - temporary wrapper script for $objdir/$outputname
27115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
27125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
27135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The $output program cannot be directly executed until all the libtool
27145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# libraries that it depends on are installed.
27155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
27165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This wrapper script should never be moved out of the build directory.
27175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If it is, it will not operate correctly.
27185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Sed substitution that helps us do robust quoting.  It backslashifies
27205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# metacharacters that are still active within double-quoted strings.
27215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Xsed='${SED} -e 1s/^X//'
27225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)sed_quote_subst='$sed_quote_subst'
27235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Be Bourne compatible
27255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
27265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  emulate sh
27275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NULLCMD=:
27285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
27295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # is contrary to our usage.  Disable this feature.
27305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  alias -g '\${1+\"\$@\"}'='\"\$@\"'
27315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  setopt NO_GLOB_SUBST
27325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else
27335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
27345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
27355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)BIN_SH=xpg4; export BIN_SH # for Tru64
27365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DUALCASE=1; export DUALCASE # for MKS sh
27375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The HP-UX ksh and POSIX shell print the target directory to stdout
27395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# if CDPATH is set.
27405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
27415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\"
27435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# This environment variable determines our operation mode.
27455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test \"\$libtool_install_magic\" = \"$magic\"; then
27465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # install mode needs the following variables:
27475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  generated_by_libtool_version='$macro_version'
27485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  notinst_deplibs='$notinst_deplibs'
27495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)else
27505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # When we are sourced in execute mode, \$file and \$ECHO are already set.
27515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test \"\$libtool_execute_magic\" != \"$magic\"; then
27525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ECHO=\"$qecho\"
27535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\"\$0\"
27545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Make sure echo works.
27555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"X\$1\" = X--no-reexec; then
27565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Discard the --no-reexec flag, and continue.
27575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
27585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then
27595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Yippee, \$ECHO works!
27605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      :
27615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
27625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Restart under the correct shell, and then maybe \$ECHO will work.
27635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
27645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
27655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi\
27665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
27675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
27685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Find the directory that this script lives in.
27705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\`
27715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test \"x\$thisdir\" = \"x\$file\" && thisdir=.
27725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Follow symbolic links until we get to the real thisdir.
27745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\`
27755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while test -n \"\$file\"; do
27765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\`
27775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # If there was a directory component, then change thisdir.
27795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"x\$destdir\" != \"x\$file\"; then
27805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case \"\$destdir\" in
27815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;;
27825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *) thisdir=\"\$thisdir/\$destdir\" ;;
27835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
27845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
27855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
27875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
27885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  done
27895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
27905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
27915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part1
27925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
27935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper_part2 [arg=no]
27945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
27955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit the second part of a libtool wrapper script on stdout.
27965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# For more information, see the description associated with
27975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper(), below.
27985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper_part2 ()
27995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
28005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part2_arg1=no
28015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1" ; then
28025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_emit_wrapper_part2_arg1=$1
28035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
28065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Usually 'no', except on cygwin/mingw when embedded into
28085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # the cwrapper.
28095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1
28105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then
28115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # special case for '.'
28125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"\$thisdir\" = \".\"; then
28135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      thisdir=\`pwd\`
28145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
28155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # remove .libs from thisdir
28165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case \"\$thisdir\" in
28175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;;
28185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $objdir )   thisdir=. ;;
28195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
28205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
28215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  # Try to get the absolute directory name.
28235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  absdir=\`cd \"\$thisdir\" && pwd\`
28245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  test -n \"\$absdir\" && thisdir=\"\$absdir\"
28255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$fast_install" = yes; then
28285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  program=lt-'$outputname'$exeext
28305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  progdir=\"\$thisdir/$objdir\"
28315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test ! -f \"\$progdir/\$program\" ||
28335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\
28345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)       test \"X\$file\" != \"X\$progdir/\$program\"; }; then
28355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    file=\"\$\$-\$program\"
28375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test ! -d \"\$progdir\"; then
28395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $MKDIR \"\$progdir\"
28405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
28415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $RM \"\$progdir/\$file\"
28425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi"
28435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # relink executable if necessary
28475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n \"\$relink_command\"; then
28485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if relink_command_output=\`eval \$relink_command 2>&1\`; then :
28495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
28505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO \"\$relink_command_output\" >&2
28515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$RM \"\$progdir/\$file\"
28525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit 1
28535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
28545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
28555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
28575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { $RM \"\$progdir/\$program\";
28585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; }
28595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $RM \"\$progdir/\$file\"
28605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi"
28615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
28625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  program='$outputname'
28645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  progdir=\"\$thisdir/$objdir\"
28655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
28695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -f \"\$progdir/\$program\"; then"
28715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Export our shlibpath_var if we have one.
28735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
28745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Add our own library path to $shlibpath_var
28765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $shlibpath_var=\"$temp_rpath\$$shlibpath_var\"
28775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Some systems cannot cope with colon-terminated $shlibpath_var
28795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The second colon is a workaround for a bug in BeOS R4 sed
28805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
28815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export $shlibpath_var
28835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# fixup the dll searchpath if we need to.
28875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$dllsearchpath"; then
28885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
28895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Add the dll search path components to the executable PATH
28905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PATH=$dllsearchpath:\$PATH
28915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
28935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
28955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test \"\$libtool_execute_magic\" != \"$magic\"; then
28965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Run the actual program with our arguments.
28975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
28985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
28995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Backslashes separate directories on plain windows
29005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-mingw | *-*-os2* | *-cegcc*)
29015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
29025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
29035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
29055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
29075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "\
29085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exec \"\$progdir/\$program\" \${1+\"\$@\"}
29095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
29115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
29125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$ECHO "\
29135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2
29145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit 1
29155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
29165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
29175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # The program doesn't exist.
29185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
29195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    \$ECHO \"This script is just a wrapper for \$program.\" 1>&2
29205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2
29215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit 1
29225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
29235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi\
29245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)"
29255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
29265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_wrapper_part2
29275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_wrapper [arg=no]
29305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Emit a libtool wrapper script on stdout.
29325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Don't directly open a file because we may want to
29335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# incorporate the script contents within a cygwin/mingw
29345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# wrapper executable.  Must ONLY be called from within
29355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link because it depends on a number of variables
29365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# set therein.
29375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR
29395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# variable will take.  If 'yes', then the emitted script
29405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# will assume that the directory in which it is stored is
29415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the $objdir directory.  This is a cygwin/mingw-specific
29425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# behavior.
29435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_wrapper ()
29445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
29455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_arg1=no
29465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$1" ; then
29475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_emit_wrapper_arg1=$1
29485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
29495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# split this up so that func_emit_cwrapperexe_src
29515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# can call each part independently.
29525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part1 "${func_emit_wrapper_arg1}"
29535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_emit_wrapper_part2 "${func_emit_wrapper_arg1}"
29545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
29555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
29575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_path arg
29585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert paths to host format when used with build tools.
29605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Intended for use with "native" mingw (where libtool itself
29615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# is running under the msys shell), or in the following cross-
29625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# build environments:
29635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    $build          $host
29645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    mingw (msys)    mingw  [e.g. native]
29655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    cygwin          mingw
29665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    *nix + wine     mingw
29675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# where wine is equipped with the `winepath' executable.
29685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# In the native mingw case, the (msys) shell automatically
29695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# converts paths for any non-msys applications it launches,
29705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# but that facility isn't available from inside the cwrapper.
29715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Similar accommodations are necessary for $host mingw and
29725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $build cygwin.  Calling this function does no harm for other
29735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host/$build combinations not listed above.
29745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
29755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is the path (on $build) that should be converted to
29765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation for $host. The result is stored
29775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_path_result.
29785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_path ()
29795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
29805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_to_host_path_result="$1"
29815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -n "$1" ; then
29825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
29835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *mingw* )
29845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
29855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case $build in
29865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *mingw* ) # actually, msys
29875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # awkward: cmd appends spaces to result
29885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
29895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_tmp1=`( cmd //c echo "$1" |\
29905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
29915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
29935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
29945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *cygwin* )
29955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_tmp1=`cygpath -w "$1"`
29965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
29975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
29985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
29995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          * )
30005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # Unfortunately, winepath does not exit with a non-zero
30015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # error code, so we are forced to check the contents of
30025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # stdout. On the other hand, if the command is not
30035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # found, the shell will set an exit code of 127 and print
30045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # *an error message* to stdout. So we must check for both
30055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # error code of zero AND non-empty stdout, which explains
30065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # the odd construction:
30075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null`
30085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then
30095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\
30105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                $SED -e "$lt_sed_naive_backslashify"`
30115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            else
30125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              # Allow warning below.
30135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_path_result=""
30145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            fi
30155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
30175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test -z "$func_to_host_path_result" ; then
30185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Could not determine host path corresponding to"
30195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "  '$1'"
30205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Continuing, but uninstalled executables may not work."
30215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # Fallback:
30225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_to_host_path_result="$1"
30235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
30245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
30255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
30265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
30275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
30285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_path
30295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
30305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_to_host_pathlist arg
30315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
30325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Convert pathlists to host format when used with build tools.
30335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# See func_to_host_path(), above. This function supports the
30345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# following $build/$host combinations (but does no harm for
30355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# combinations not listed here):
30365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    $build          $host
30375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    mingw (msys)    mingw  [e.g. native]
30385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    cygwin          mingw
30395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#    *nix + wine     mingw
30405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
30415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Path separators are also converted from $build format to
30425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $host format. If ARG begins or ends with a path separator
30435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# character, it is preserved (but converted to $host format)
30445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# on output.
30455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
30465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ARG is a pathlist (on $build) that should be converted to
30475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the proper representation on $host. The result is stored
30485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in $func_to_host_pathlist_result.
30495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_to_host_pathlist ()
30505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
30515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_to_host_pathlist_result="$1"
30525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if test -n "$1" ; then
30535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
30545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *mingw* )
30555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
30565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Remove leading and trailing path separator characters from
30575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # ARG. msys behavior is inconsistent here, cygpath turns them
30585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # into '.;' and ';.', and winepath ignores them completely.
30595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_to_host_pathlist_tmp2="$1"
30605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Once set for this call, this variable should not be
30615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # reassigned. It is used in tha fallback case.
30625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\
30635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          $SED -e 's|^:*||' -e 's|:*$||'`
30645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case $build in
30655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *mingw* ) # Actually, msys.
30665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # Awkward: cmd appends spaces to result.
30675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_sed_strip_trailing_spaces="s/[ ]*\$//"
30685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\
30695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""`
30705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
30725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *cygwin* )
30745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"`
30755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\
30765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              $SED -e "$lt_sed_naive_backslashify"`
30775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          * )
30795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            # unfortunately, winepath doesn't convert pathlists
30805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_result=""
30815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            func_to_host_pathlist_oldIFS=$IFS
30825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            IFS=:
30835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do
30845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              IFS=$func_to_host_pathlist_oldIFS
30855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              if test -n "$func_to_host_pathlist_f" ; then
30865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                func_to_host_path "$func_to_host_pathlist_f"
30875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                if test -n "$func_to_host_path_result" ; then
30885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  if test -z "$func_to_host_pathlist_result" ; then
30895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    func_to_host_pathlist_result="$func_to_host_path_result"
30905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  else
30915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result"
30925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                  fi
30935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                fi
30945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              fi
30955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              IFS=:
30965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            done
30975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            IFS=$func_to_host_pathlist_oldIFS
30985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
30995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
31005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test -z "$func_to_host_pathlist_result" ; then
31015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Could not determine the host path(s) corresponding to"
31025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "  '$1'"
31035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_error "Continuing, but uninstalled executables may not work."
31045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # Fallback. This may break if $1 contains DOS-style drive
31055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # specifications. The fix is not to complicate the expression
31065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # below, but for the user to provide a working wine installation
31075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # with winepath so that path translation in the cross-to-mingw
31085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          # case works properly.
31095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          lt_replace_pathsep_nix_to_dos="s|:|;|g"
31105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\
31115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            $SED -e "$lt_replace_pathsep_nix_to_dos"`
31125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
31135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Now, add the leading and trailing path separators back
31145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case "$1" in
31155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result"
31165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
31175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
31185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        case "$1" in
31195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;"
31205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            ;;
31215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        esac
31225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
31235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
31245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fi
31255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
31265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_to_host_pathlist
31275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_emit_cwrapperexe_src
31295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# emit the source code for a wrapper executable on stdout
31305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Must ONLY be called from within func_mode_link because
31315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# it depends on a number of variable set therein.
31325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_emit_cwrapperexe_src ()
31335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
31345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cat <<EOF
31355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
31375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
31385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   The $output program cannot be directly executed until all the libtool
31405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   libraries that it depends on are installed.
31415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   This wrapper executable should never be moved out of the build directory.
31435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   If it is, it will not operate correctly.
31445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Currently, it simply execs the wrapper *script* "$SHELL $output",
31465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   but could eventually absorb all of the scripts functionality and
31475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   exec $objdir/$outputname directly.
31485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
31495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
31505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
31515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h>
31525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdlib.h>
31535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER
31545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <direct.h>
31555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <process.h>
31565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <io.h>
31575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define setmode _setmode
31585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
31595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <unistd.h>
31605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# include <stdint.h>
31615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifdef __CYGWIN__
31625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <io.h>
31635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define HAVE_SETENV
31645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  ifdef __STRICT_ANSI__
31655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *realpath (const char *, char *);
31665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int putenv (char *);
31675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int setenv (const char *, const char *, int);
31685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  endif
31695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
31705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <malloc.h>
31725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdarg.h>
31735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <assert.h>
31745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string.h>
31755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <ctype.h>
31765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <errno.h>
31775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <fcntl.h>
31785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/stat.h>
31795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(PATH_MAX)
31815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX PATH_MAX
31825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined(MAXPATHLEN)
31835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX MAXPATHLEN
31845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
31855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LT_PATHMAX 1024
31865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXOTH
31895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXOTH 0
31905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_IXGRP
31925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXGRP 0
31935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
31945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
31955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER
31965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define S_IXUSR _S_IEXEC
31975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define stat _stat
31985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef _INTPTR_T_DEFINED
31995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define intptr_t int
32005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
32015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR
32045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define DIR_SEPARATOR '/'
32055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define PATH_SEPARATOR ':'
32065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
32095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  defined (__OS2__)
32105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define HAVE_DOS_BASED_FILE_SYSTEM
32115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb"
32125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef DIR_SEPARATOR_2
32135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define DIR_SEPARATOR_2 '\\'
32145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
32155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ifndef PATH_SEPARATOR_2
32165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  define PATH_SEPARATOR_2 ';'
32175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# endif
32185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef DIR_SEPARATOR_2
32215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
32225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* DIR_SEPARATOR_2 */
32235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_DIR_SEPARATOR(ch) \
32245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
32255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* DIR_SEPARATOR_2 */
32265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef PATH_SEPARATOR_2
32285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
32295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* PATH_SEPARATOR_2 */
32305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
32315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* PATH_SEPARATOR_2 */
32325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __CYGWIN__
32345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "wb"
32355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef FOPEN_WB
32385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define FOPEN_WB "w"
32395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef _O_BINARY
32415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define _O_BINARY 0
32425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
32455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XFREE(stale) do { \
32465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (stale) { free ((void *) stale); stale = 0; } \
32475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} while (0)
32485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#undef LTWRAPPER_DEBUGPRINTF
32505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined DEBUGWRAPPER
32515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args
32525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void
32535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ltwrapper_debugprintf (const char *fmt, ...)
32545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
32555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    va_list args;
32565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    va_start (args, fmt);
32575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (void) vfprintf (stderr, fmt, args);
32585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    va_end (args);
32595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
32605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
32615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# define LTWRAPPER_DEBUGPRINTF(args)
32625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
32635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *program_name = NULL;
32655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void *xmalloc (size_t num);
32675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *xstrdup (const char *string);
32685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *base_name (const char *name);
32695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *find_executable (const char *wrapper);
32705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *chase_symlinks (const char *pathspec);
32715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int make_executable (const char *path);
32725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int check_executable (const char *path);
32735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *strendzap (char *str, const char *pat);
32745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_fatal (const char *message, ...);
32755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_setenv (const char *name, const char *value);
32765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *lt_extend_str (const char *orig_value, const char *add, int to_end);
32775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_set (const char *arg);
32785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_prepend (const char *arg);
32795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_opt_process_env_append (const char *arg);
32805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int lt_split_name_value (const char *arg, char** name, char** value);
32815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_exe_path (const char *name, const char *value);
32825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void lt_update_lib_path (const char *name, const char *value);
32835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part1 =
32855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
32865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_wrapper_part1 yes |
32885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $SED -e 's/\([\\"]\)/\\\1/g' \
32895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	             -e 's/^/  "/' -e 's/$/\\n"/'
32905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    echo ";"
32915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<EOF
32925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
32935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *script_text_part2 =
32945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
32955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_wrapper_part2 yes |
32965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $SED -e 's/\([\\"]\)/\\\1/g' \
32975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	             -e 's/^/  "/' -e 's/$/\\n"/'
32985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    echo ";"
32995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<EOF
33015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * MAGIC_EXE = "$magic_exe";
33025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VARNAME = "$shlibpath_var";
33035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
33065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_pathlist "$temp_rpath"
33075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE   = "$func_to_host_pathlist_result";
33095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
33115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<"EOF"
33125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * LIB_PATH_VALUE   = "";
33135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
33155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$dllsearchpath"; then
33175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              func_to_host_pathlist "$dllsearchpath:"
33185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = "PATH";
33205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE   = "$func_to_host_pathlist_result";
33215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
33235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<"EOF"
33245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VARNAME = "";
33255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * EXE_PATH_VALUE   = "";
33265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
33285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$fast_install" = yes; then
33305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */
33325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
33345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cat <<EOF
33355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */
33365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
33385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
33415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX         "--lt-"
33435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define LTWRAPPER_OPTION_PREFIX_LENGTH  5
33445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t opt_prefix_len         = LTWRAPPER_OPTION_PREFIX_LENGTH;
33465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX;
33475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *dumpscript_opt       = LTWRAPPER_OPTION_PREFIX "dump-script";
33495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_set_opt_len     = LTWRAPPER_OPTION_PREFIX_LENGTH + 7;
33515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_set_opt          = LTWRAPPER_OPTION_PREFIX "env-set";
33525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* argument is putenv-style "foo=bar", value of foo is set to bar */
33535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + 11;
33555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_prepend_opt      = LTWRAPPER_OPTION_PREFIX "env-prepend";
33565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* argument is putenv-style "foo=bar", new value of foo is bar${foo} */
33575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const size_t env_append_opt_len  = LTWRAPPER_OPTION_PREFIX_LENGTH + 10;
33595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static const char *env_append_opt       = LTWRAPPER_OPTION_PREFIX "env-append";
33605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */
33615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
33635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)main (int argc, char *argv[])
33645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
33655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char **newargz;
33665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int  newargc;
33675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *tmp_pathspec;
33685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *actual_cwrapper_path;
33695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *actual_cwrapper_name;
33705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *target_name;
33715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *lt_argv_zero;
33725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  intptr_t rval = 127;
33735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int i;
33755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  program_name = (char *) xstrdup (base_name (argv[0]));
33775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) argv[0]      : %s\n", argv[0]));
33785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name));
33795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* very simple arg parsing; don't want to rely on getopt */
33815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (i = 1; i < argc; i++)
33825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
33835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strcmp (argv[i], dumpscript_opt) == 0)
33845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
33855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
33865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$host" in
33875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *mingw* | *cygwin* )
33885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# make stdout use "unix" line endings
33895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		echo "          setmode(1,_O_BINARY);"
33905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
33915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
33925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
33935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
33945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  printf ("%s", script_text_part1);
33955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  printf ("%s", script_text_part2);
33965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  return 0;
33975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
33985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
33995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargz = XMALLOC (char *, argc + 1);
34015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = find_executable (argv[0]);
34025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (tmp_pathspec == NULL)
34035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lt_fatal ("Couldn't find %s", argv[0]);
34045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\n",
34055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  tmp_pathspec));
34065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  actual_cwrapper_path = chase_symlinks (tmp_pathspec);
34085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n",
34095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  actual_cwrapper_path));
34105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (tmp_pathspec);
34115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path));
34135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strendzap (actual_cwrapper_path, actual_cwrapper_name);
34145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* wrapper name transforms */
34165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strendzap (actual_cwrapper_name, ".exe");
34175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1);
34185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (actual_cwrapper_name);
34195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  actual_cwrapper_name = tmp_pathspec;
34205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = 0;
34215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* target_name transforms -- use actual target program name; might have lt- prefix */
34235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  target_name = xstrdup (base_name (TARGET_PROGRAM_NAME));
34245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strendzap (target_name, ".exe");
34255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = lt_extend_str (target_name, ".exe", 1);
34265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (target_name);
34275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  target_name = tmp_pathspec;
34285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = 0;
34295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n",
34315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  target_name));
34325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<EOF
34355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargz[0] =
34365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XMALLOC (char, (strlen (actual_cwrapper_path) +
34375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1));
34385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcpy (newargz[0], actual_cwrapper_path);
34395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcat (newargz[0], "$objdir");
34405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcat (newargz[0], "/");
34415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* stop here, and copy so we don't have to do this twice */
34455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = xstrdup (newargz[0]);
34465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* do NOT want the lt- prefix here, so use actual_cwrapper_name */
34485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcat (newargz[0], actual_cwrapper_name);
34495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* DO want the lt- prefix here if it exists, so use target_name */
34515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1);
34525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (tmp_pathspec);
34535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = NULL;
34545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $host_os in
34575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      mingw*)
34585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
34605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char* p;
34615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    while ((p = strchr (newargz[0], '\\')) != NULL)
34625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
34635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*p = '/';
34645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
34655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    while ((p = strchr (lt_argv_zero, '\\')) != NULL)
34665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
34675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*p = '/';
34685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
34695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
34705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
34715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
34725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
34735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
34755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (target_name);
34765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (actual_cwrapper_path);
34775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (actual_cwrapper_name);
34785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */
34805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv ("DUALCASE", "1");  /* for MSK sh */
34815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE);
34825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE);
34835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargc=0;
34855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (i = 1; i < argc; i++)
34865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
34875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0)
34885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
34895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if (argv[i][env_set_opt_len] == '=')
34905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
34915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *p = argv[i] + env_set_opt_len + 1;
34925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_set (p);
34935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
34945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc)
34955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
34965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_set (argv[++i]); /* don't copy */
34975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
34985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else
34995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_fatal ("%s missing required argument", env_set_opt);
35005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          continue;
35015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0)
35035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
35045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if (argv[i][env_prepend_opt_len] == '=')
35055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *p = argv[i] + env_prepend_opt_len + 1;
35075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_prepend (p);
35085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc)
35105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_prepend (argv[++i]); /* don't copy */
35125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else
35145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_fatal ("%s missing required argument", env_prepend_opt);
35155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          continue;
35165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0)
35185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
35195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if (argv[i][env_append_opt_len] == '=')
35205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              const char *p = argv[i] + env_append_opt_len + 1;
35225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_append (p);
35235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc)
35255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            {
35265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)              lt_opt_process_env_append (argv[++i]); /* don't copy */
35275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            }
35285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          else
35295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            lt_fatal ("%s missing required argument", env_append_opt);
35305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          continue;
35315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0)
35335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
35345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX
35355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             namespace, but it is not one of the ones we know about and
35365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             have already dealt with, above (inluding dump-script), then
35375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             report an error. Otherwise, targets might begin to believe
35385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             they are allowed to use options in the LTWRAPPER_OPTION_PREFIX
35395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             namespace. The first time any user complains about this, we'll
35405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             need to make LTWRAPPER_OPTION_PREFIX a configure-time option
35415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)             or a configure.ac-settable value.
35425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)           */
35435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          lt_fatal ("Unrecognized option in %s namespace: '%s'",
35445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    ltwrapper_option_prefix, argv[i]);
35455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
35465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* otherwise ... */
35475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      newargz[++newargc] = xstrdup (argv[i]);
35485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
35495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  newargz[++newargc] = NULL;
35505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF     (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? lt_argv_zero : "<NULL>")));
35525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (i = 0; i < newargc; i++)
35535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
35545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d]   : %s\n", i, (newargz[i] ? newargz[i] : "<NULL>")));
35555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
35565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
35585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $host_os in
35605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      mingw*)
35615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		cat <<"EOF"
35625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* execv doesn't actually work on mingw as expected on unix */
35635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz);
35645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (rval == -1)
35655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
35665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* failed to start process */
35675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno));
35685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return 127;
35695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
35705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rval;
35715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
35725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
35735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
35745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		cat <<"EOF"
35755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  execv (lt_argv_zero, newargz);
35765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rval; /* =127, but avoids unused variable warning */
35775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
35785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
35795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
35805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cat <<"EOF"
35825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
35835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void *
35855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xmalloc (size_t num)
35865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
35875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void *p = (void *) malloc (num);
35885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!p)
35895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lt_fatal ("Memory exhausted");
35905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return p;
35925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
35935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
35945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
35955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xstrdup (const char *string)
35965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
35975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return string ? strcpy ((char *) xmalloc (strlen (string) + 1),
35985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  string) : NULL;
35995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char *
36025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base_name (const char *name)
36035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *base;
36055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Skip over the disk name in MSDOS pathnames. */
36085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (isalpha ((unsigned char) name[0]) && name[1] == ':')
36095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    name += 2;
36105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
36115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (base = name; *name; name++)
36135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (IS_DIR_SEPARATOR (*name))
36145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      base = name + 1;
36155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return base;
36165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
36195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)check_executable (const char *path)
36205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct stat st;
36225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(check_executable)  : %s\n",
36245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((!path) || (!*path))
36265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
36275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((stat (path, &st) >= 0)
36295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
36305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
36315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
36325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
36335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
36365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)make_executable (const char *path)
36375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int rval = 0;
36395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct stat st;
36405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(make_executable)   : %s\n",
36425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  path ? (*path ? path : "EMPTY!") : "NULL!"));
36435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((!path) || (!*path))
36445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 0;
36455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (stat (path, &st) >= 0)
36475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
36485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR);
36495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
36505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return rval;
36515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
36525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Searches for the full path of the wrapper.  Returns
36545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   newly allocated full path name if found, NULL otherwise
36555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   Does not chase symlinks, even on platforms that support them.
36565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
36575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
36585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)find_executable (const char *wrapper)
36595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
36605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int has_slash = 0;
36615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *p;
36625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *p_next;
36635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* static buffer for getcwd */
36645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char tmp[LT_PATHMAX + 1];
36655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int tmp_len;
36665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *concat_name;
36675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(find_executable)   : %s\n",
36695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"));
36705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((wrapper == NULL) || (*wrapper == '\0'))
36725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
36735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Absolute path? */
36755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':')
36775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
36785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      concat_name = xstrdup (wrapper);
36795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (check_executable (concat_name))
36805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	return concat_name;
36815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (concat_name);
36825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
36835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
36845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
36855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
36865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (IS_DIR_SEPARATOR (wrapper[0]))
36875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
36885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  concat_name = xstrdup (wrapper);
36895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if (check_executable (concat_name))
36905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    return concat_name;
36915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  XFREE (concat_name);
36925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
36935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
36945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
36955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
36965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
36975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  for (p = wrapper; *p; p++)
36985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (*p == '/')
36995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
37005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	has_slash = 1;
37015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	break;
37025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
37035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_slash)
37045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
37055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* no slashes; search PATH */
37065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const char *path = getenv ("PATH");
37075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (path != NULL)
37085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
37095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for (p = path; *p; p = p_next)
37105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    {
37115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      const char *q;
37125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      size_t p_len;
37135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      for (q = p; *q; q++)
37145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if (IS_PATH_SEPARATOR (*q))
37155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  break;
37165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      p_len = q - p;
37175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      p_next = (*q == '\0' ? q : q + 1);
37185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if (p_len == 0)
37195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		{
37205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  /* empty path: current directory */
37215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if (getcwd (tmp, LT_PATHMAX) == NULL)
37225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    lt_fatal ("getcwd failed");
37235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  tmp_len = strlen (tmp);
37245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name =
37255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  memcpy (concat_name, tmp, tmp_len);
37275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name[tmp_len] = '/';
37285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  strcpy (concat_name + tmp_len + 1, wrapper);
37295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		}
37305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
37315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		{
37325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name =
37335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    XMALLOC (char, p_len + 1 + strlen (wrapper) + 1);
37345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  memcpy (concat_name, p, p_len);
37355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  concat_name[p_len] = '/';
37365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  strcpy (concat_name + p_len + 1, wrapper);
37375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		}
37385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if (check_executable (concat_name))
37395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		return concat_name;
37405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      XFREE (concat_name);
37415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
37425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
37435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* not found in PATH; assume curdir */
37445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
37455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  /* Relative path | not found in path: prepend cwd */
37465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (getcwd (tmp, LT_PATHMAX) == NULL)
37475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lt_fatal ("getcwd failed");
37485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_len = strlen (tmp);
37495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1);
37505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  memcpy (concat_name, tmp, tmp_len);
37515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  concat_name[tmp_len] = '/';
37525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strcpy (concat_name + tmp_len + 1, wrapper);
37535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (check_executable (concat_name))
37555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return concat_name;
37565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (concat_name);
37575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
37585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
37595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
37615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)chase_symlinks (const char *pathspec)
37625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
37635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef S_ISLNK
37645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return xstrdup (pathspec);
37655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
37665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char buf[LT_PATHMAX];
37675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  struct stat s;
37685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *tmp_pathspec = xstrdup (pathspec);
37695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *p;
37705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int has_symlinks = 0;
37715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  while (strlen (tmp_pathspec) && !has_symlinks)
37725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
37735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n",
37745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			      tmp_pathspec));
37755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (lstat (tmp_pathspec, &s) == 0)
37765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
37775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if (S_ISLNK (s.st_mode) != 0)
37785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    {
37795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      has_symlinks = 1;
37805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break;
37815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
37825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
37835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  /* search backwards for last DIR_SEPARATOR */
37845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  p = tmp_pathspec + strlen (tmp_pathspec) - 1;
37855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    p--;
37875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p)))
37885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    {
37895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      /* no more DIR_SEPARATORS left */
37905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break;
37915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
37925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *p = '\0';
37935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
37945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
37955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	{
37965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  char *errstr = strerror (errno);
37975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr);
37985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	}
37995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (tmp_pathspec);
38015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!has_symlinks)
38035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return xstrdup (pathspec);
38055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tmp_pathspec = realpath (pathspec, buf);
38085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (tmp_pathspec == 0)
38095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("Could not follow symlinks for %s", pathspec);
38115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return xstrdup (tmp_pathspec);
38135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
38145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
38175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)strendzap (char *str, const char *pat)
38185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  size_t len, patlen;
38205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  assert (str != NULL);
38225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  assert (pat != NULL);
38235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  len = strlen (str);
38255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  patlen = strlen (pat);
38265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (patlen <= len)
38285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      str += len - patlen;
38305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (strcmp (str, pat) == 0)
38315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*str = '\0';
38325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
38335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return str;
38345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)static void
38375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_error_core (int exit_status, const char *mode,
38385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       const char *message, va_list ap)
38395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fprintf (stderr, "%s: %s: ", program_name, mode);
38415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  vfprintf (stderr, message, ap);
38425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  fprintf (stderr, ".\n");
38435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (exit_status >= 0)
38455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit (exit_status);
38465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
38495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_fatal (const char *message, ...)
38505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  va_list ap;
38525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  va_start (ap, message);
38535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
38545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  va_end (ap);
38555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
38585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_setenv (const char *name, const char *value)
38595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n",
38615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (name ? name : "<NULL>"),
38625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (value ? value : "<NULL>")));
38635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
38645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef HAVE_SETENV
38655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* always make a copy, for consistency with !HAVE_SETENV */
38665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *str = xstrdup (value);
38675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    setenv (name, str, 1);
38685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
38695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int len = strlen (name) + 1 + strlen (value) + 1;
38705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char *str = XMALLOC (char, len);
38715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    sprintf (str, "%s=%s", name, value);
38725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (putenv (str) != EXIT_SUCCESS)
38735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      {
38745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        XFREE (str);
38755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
38765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
38775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
38785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
38795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
38805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)char *
38815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_extend_str (const char *orig_value, const char *add, int to_end)
38825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
38835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *new_value;
38845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (orig_value && *orig_value)
38855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
38865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int orig_value_len = strlen (orig_value);
38875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int add_len = strlen (add);
38885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_value = XMALLOC (char, add_len + orig_value_len + 1);
38895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if (to_end)
38905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
38915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value, orig_value);
38925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value + orig_value_len, add);
38935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
38945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
38955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
38965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value, add);
38975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          strcpy (new_value + add_len, orig_value);
38985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
38995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  else
39015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_value = xstrdup (add);
39035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return new_value;
39055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int
39085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_split_name_value (const char *arg, char** name, char** value)
39095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const char *p;
39115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int len;
39125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!arg || !*arg)
39135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
39145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  p = strchr (arg, (int)'=');
39165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!p)
39185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return 1;
39195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *value = xstrdup (++p);
39215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  len = strlen (arg) - strlen (*value);
39235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  *name = XMALLOC (char, len);
39245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  strncpy (*name, arg, len-1);
39255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  (*name)[len - 1] = '\0';
39265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return 0;
39285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_set (const char *arg)
39325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *name = NULL;
39345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *value = NULL;
39355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (lt_split_name_value (arg, &name, &value) != 0)
39375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (name);
39395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (value);
39405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg);
39415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv (name, value);
39445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (name);
39455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (value);
39465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_prepend (const char *arg)
39505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *name = NULL;
39525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *value = NULL;
39535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *new_value = NULL;
39545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (lt_split_name_value (arg, &name, &value) != 0)
39565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (name);
39585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (value);
39595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg);
39605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  new_value = lt_extend_str (getenv (name), value, 0);
39635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv (name, new_value);
39645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (new_value);
39655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (name);
39665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (value);
39675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_opt_process_env_append (const char *arg)
39715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *name = NULL;
39735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *value = NULL;
39745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  char *new_value = NULL;
39755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (lt_split_name_value (arg, &name, &value) != 0)
39775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (name);
39795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (value);
39805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg);
39815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
39825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  new_value = lt_extend_str (getenv (name), value, 1);
39845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  lt_setenv (name, new_value);
39855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (new_value);
39865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (name);
39875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  XFREE (value);
39885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
39895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
39915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_exe_path (const char *name, const char *value)
39925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
39935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n",
39945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (name ? name : "<NULL>"),
39955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (value ? value : "<NULL>")));
39965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (name && *name && value && *value)
39985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
39995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      char *new_value = lt_extend_str (getenv (name), value, 0);
40005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      /* some systems can't cope with a ':'-terminated path #' */
40015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      int len = strlen (new_value);
40025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1]))
40035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        {
40045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          new_value[len-1] = '\0';
40055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        }
40065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_setenv (name, new_value);
40075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (new_value);
40085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
40095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
40105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void
40125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)lt_update_lib_path (const char *name, const char *value)
40135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
40145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n",
40155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (name ? name : "<NULL>"),
40165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          (value ? value : "<NULL>")));
40175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (name && *name && value && *value)
40195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    {
40205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      char *new_value = lt_extend_str (getenv (name), value, 0);
40215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lt_setenv (name, new_value);
40225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      XFREE (new_value);
40235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
40245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
40255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
40285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
40295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# end: func_emit_cwrapperexe_src
40305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_link arg...
40325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_link ()
40335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
40345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
40355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $host in
40365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
40375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # It is impossible to link a dll without this setting, and
40385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # we shouldn't force the makefile maintainer to figure out
40395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # which system we are compiling for in order to pass an extra
40405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # flag for every libtool invocation.
40415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # allow_undefined=no
40425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # FIXME: Unfortunately, there are problems with the above when trying
40445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # to make a dll which has undefined symbols, in which case not
40455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # even a static library is built.  For now, we need to specify
40465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -no-undefined on the libtool link line when we can be certain
40475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # that all symbols are satisfied, otherwise we get a static library.
40485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      allow_undefined=yes
40495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
40505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)
40515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      allow_undefined=yes
40525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
40535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
40545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_args=$nonopt
40555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    base_compile="$nonopt $@"
40565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compile_command=$nonopt
40575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    finalize_command=$nonopt
40585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compile_rpath=
40605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    finalize_rpath=
40615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compile_shlibpath=
40625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    finalize_shlibpath=
40635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    convenience=
40645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    old_convenience=
40655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deplibs=
40665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    old_deplibs=
40675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    compiler_flags=
40685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    linker_flags=
40695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dllsearchpath=
40705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib_search_path=`pwd`
40715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    inst_prefix_dir=
40725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    new_inherited_linker_flags=
40735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
40745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    avoid_version=no
40755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dlfiles=
40765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dlprefiles=
40775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    dlself=no
40785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export_dynamic=no
40795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export_symbols=
40805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    export_symbols_regex=
40815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    generated=
40825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libobjs=
40835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ltlibs=
40845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    module=no
40855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    no_install=no
40865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objs=
40875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    non_pic_objects=
40885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    precious_files_regex=
40895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prefer_static_libs=no
40905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    preload=no
40915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prev=
40925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prevarg=
40935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    release=
40945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rpath=
40955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xrpath=
40965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    perm_rpath=
40975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    temp_rpath=
40985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    thread_safe=no
40995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    vinfo=
41005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    vinfo_number=no
41015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    weak_libs=
41025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    single_module="${wl}-single_module"
41035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_infer_tag $base_compile
41045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # We need to know -static, to get the right output filenames.
41065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
41075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
41085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
41095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shared)
41105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$build_libtool_libs" != yes && \
41115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_configuration "can not build a shared library"
41125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=no
41135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	break
41145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
41155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -all-static | -static | -static-libtool-libs)
41165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $arg in
41175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-all-static)
41185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
41195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "complete static linking is impossible in this configuration"
41205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$link_static_flag"; then
41225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlopen_self=$dlopen_self_static
41235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prefer_static_libs=yes
41255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-static)
41275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlopen_self=$dlopen_self_static
41295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prefer_static_libs=built
41315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-static-libtool-libs)
41335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
41345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlopen_self=$dlopen_self_static
41355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prefer_static_libs=yes
41375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
41395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_libtool_libs=no
41405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_old_libs=yes
41415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	break
41425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
41435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
41445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
41455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # See if our shared archives depend on static archives.
41475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$old_archive_from_new_cmds" && build_old_libs=yes
41485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Go through the arguments, transforming them on the way.
41505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    while test "$#" -gt 0; do
41515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      arg="$1"
41525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
41535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_quote_for_eval "$arg"
41545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      qarg=$func_quote_for_eval_unquoted_result
41555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_append libtool_args " $func_quote_for_eval_result"
41565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # If the previous option needs an argument, assign it.
41585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$prev"; then
41595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $prev in
41605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	output)
41615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " @OUTPUT@"
41625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " @OUTPUT@"
41635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
41645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
41655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $prev in
41675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlfiles|dlprefiles)
41685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$preload" = no; then
41695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add the symbol object into the linking commands.
41705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append compile_command " @SYMFILE@"
41715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append finalize_command " @SYMFILE@"
41725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    preload=yes
41735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
41745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $arg in
41755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la | *.lo) ;;  # We handle these cases below.
41765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  force)
41775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$dlself" = no; then
41785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=needless
41795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_dynamic=yes
41805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
41815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    prev=
41825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
41835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
41845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  self)
41855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlprefiles; then
41865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=yes
41875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then
41885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=yes
41895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
41905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlself=needless
41915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_dynamic=yes
41925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
41935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    prev=
41945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
41955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
41965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
41975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlfiles; then
41985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlfiles="$dlfiles $arg"
41995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
42005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlprefiles="$dlprefiles $arg"
42015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
42025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    prev=
42035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
42045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
42055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
42065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	expsyms)
42085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols="$arg"
42095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -f "$arg" \
42105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    || func_fatal_error "symbol file \`$arg' does not exist"
42115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	expsyms_regex)
42155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols_regex="$arg"
42165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	framework)
42205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
42215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *-*-darwin*)
42225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$deplibs " in
42235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $qarg.ltframework "*) ;;
42245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) deplibs="$deplibs $qarg.ltframework" # this is fixed later
42255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   ;;
42265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
42275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
42285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
42295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	inst_prefix)
42335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  inst_prefix_dir="$arg"
42345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
42355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
42365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
42375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objectlist)
42385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -f "$arg"; then
42395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_arg=$arg
42405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    moreargs=
42415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for fil in `cat "$save_arg"`
42425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
42435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#	      moreargs="$moreargs $fil"
42445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      arg=$fil
42455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # A libtool-controlled object.
42465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Check to see that this really is a libtool object.
42485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if func_lalib_unsafe_p "$arg"; then
42495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		pic_object=
42505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		non_pic_object=
42515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Read the .lo file
42535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_source "$arg"
42545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$pic_object" ||
42565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test -z "$non_pic_object" ||
42575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test "$pic_object" = none &&
42585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test "$non_pic_object" = none; then
42595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "cannot find name of object for \`$arg'"
42605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
42615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Extract subdirectory from the argument.
42635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_dirname "$arg" "/" ""
42645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xdir="$func_dirname_result"
42655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$pic_object" != none; then
42675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Prepend the subdirectory the object is found in.
42685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  pic_object="$xdir$pic_object"
42695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$prev" = dlfiles; then
42715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
42725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      dlfiles="$dlfiles $pic_object"
42735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      prev=
42745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      continue
42755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
42765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # If libtool objects are unsupported, then we need to preload.
42775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      prev=dlprefiles
42785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
42795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
42805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # CHECK ME:  I think I busted this.  -Ossama
42825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$prev" = dlprefiles; then
42835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # Preload the old-style object.
42845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    dlprefiles="$dlprefiles $pic_object"
42855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    prev=
42865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
42875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # A PIC object.
42895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append libobjs " $pic_object"
42905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  arg="$pic_object"
42915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
42925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Non-PIC object.
42945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$non_pic_object" != none; then
42955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Prepend the subdirectory the object is found in.
42965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  non_pic_object="$xdir$non_pic_object"
42975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # A standard non-PIC object
42995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append non_pic_objects " $non_pic_object"
43005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$pic_object" || test "$pic_object" = none ; then
43015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    arg="$non_pic_object"
43025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
43035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
43045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # If the PIC object exists, use it instead.
43055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # $xdir was prepended to $pic_object above.
43065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  non_pic_object="$pic_object"
43075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append non_pic_objects " $non_pic_object"
43085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
43095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
43105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Only an error if not doing a dry-run.
43115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $opt_dry_run; then
43125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Extract subdirectory from the argument.
43135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_dirname "$arg" "/" ""
43145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  xdir="$func_dirname_result"
43155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
43165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_lo2o "$arg"
43175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  pic_object=$xdir$objdir/$func_lo2o_result
43185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  non_pic_object=$xdir$func_lo2o_result
43195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append libobjs " $pic_object"
43205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append non_pic_objects " $non_pic_object"
43215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        else
43225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$arg' is not a valid libtool object"
43235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
43245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
43255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
43265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
43275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "link input file \`$arg' does not exist"
43285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
43295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg=$save_arg
43305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	precious_regex)
43345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  precious_files_regex="$arg"
43355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release)
43395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  release="-$arg"
43405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	rpath | xrpath)
43445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # We need an absolute path.
43455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $arg in
43465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  [\\/]* | [A-Za-z]:[\\/]*) ;;
43475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
43485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "only absolute run-paths are allowed"
43495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
43505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
43515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$prev" = rpath; then
43525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$rpath " in
43535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $arg "*) ;;
43545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) rpath="$rpath $arg" ;;
43555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
43565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
43575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$xrpath " in
43585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $arg "*) ;;
43595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) xrpath="$xrpath $arg" ;;
43605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
43615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
43625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shrext)
43665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  shrext_cmds="$arg"
43675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	weak)
43715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  weak_libs="$weak_libs $arg"
43725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	xcclinker)
43765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $qarg"
43775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $qarg"
43785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $qarg"
43805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $qarg"
43815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	xcompiler)
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)	xlinker)
43915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $qarg"
43925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $wl$qarg"
43935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
43945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $wl$qarg"
43955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $wl$qarg"
43965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
43975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
43985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
43995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval "$prev=\"\$arg\""
44005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
44015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
44025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
44035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
44045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi # test -n "$prev"
44055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      prevarg="$arg"
44075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
44095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -all-static)
44105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$link_static_flag"; then
44115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # See comment for -static flag below, for more details.
44125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $link_static_flag"
44135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $link_static_flag"
44145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -allow-undefined)
44195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# FIXME: remove this flag sometime in the future.
44205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_fatal_error "\`-allow-undefined' must not be used because it is the default"
44215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -avoid-version)
44245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	avoid_version=yes
44255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlopen)
44295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=dlfiles
44305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -dlpreopen)
44345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=dlprefiles
44355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -export-dynamic)
44395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	export_dynamic=yes
44405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -export-symbols | -export-symbols-regex)
44445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
44455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "more than one -exported-symbols argument is not allowed"
44465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$arg" = "X-export-symbols"; then
44485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=expsyms
44495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
44505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=expsyms_regex
44515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -framework)
44565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=framework
44575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -inst-prefix-dir)
44615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=inst_prefix
44625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:*
44665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # so, if we see these flags be careful not to treat them like -L
44675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -L[A-Z][A-Z]*:*)
44685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $with_gcc/$host in
44695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	no/*-*-irix* | /*-*-irix*)
44705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append compile_command " $arg"
44715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_append finalize_command " $arg"
44725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
44735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
44745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
44755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
44765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -L*)
44785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-L' '' "$arg"
44795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir=$func_stripname_result
44805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$dir"; then
44815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$#" -gt 0; then
44825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "require no space between \`-L' and \`$1'"
44835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
44845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "need path for \`-L' option"
44855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
44865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
44875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
44885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $dir in
44895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) ;;
44905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
44915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  absdir=`cd "$dir" && pwd`
44925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -z "$absdir" && \
44935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot determine absolute directory name of \`$dir'"
44945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dir="$absdir"
44955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
44965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
44975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$deplibs " in
44985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -L$dir "*) ;;
44995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
45005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplibs -L$dir"
45015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib_search_path="$lib_search_path $dir"
45025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
45035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
45055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
45065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'`
45075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
45085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$dir:"*) ;;
45095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$dir;;
45105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$dir";;
45115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
45125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
45135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$testbindir:"*) ;;
45145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$testbindir;;
45155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$testbindir";;
45165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
45175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
45185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -l*)
45235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
45245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
45255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*)
45265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # These systems don't actually have a C or math library (as such)
45275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
45285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-os2*)
45305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # These systems don't actually have a C library (as such)
45315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Do not include libc due to us having libc/libc_r.
45355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-rhapsody* | *-*-darwin1.[012])
45385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Rhapsody C and math libraries are in the System framework
45395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplibs System.ltframework"
45405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
45415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sco3.2v5* | *-*-sco5v6*)
45435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Causes problems with __ctype
45445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
45475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Compiler inserts libc in the correct place for threads to work
45485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$arg" = "X-lc" && continue
45495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
45505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
45515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "X$arg" = "X-lc_r"; then
45525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 case $host in
45535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
45545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   # Do not include libc_r directly, use -pthread flag.
45555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   continue
45565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   ;;
45575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 esac
45585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
45595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$deplibs $arg"
45605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -module)
45645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	module=yes
45655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Tru64 UNIX uses -model [arg] to determine the layout of C++
45695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # classes, name mangling, and exception handling.
45705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Darwin uses the -arch flag to determine output architecture.
45715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -model|-arch|-isysroot)
45725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compiler_flags="$compiler_flags $arg"
45735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append compile_command " $arg"
45745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append finalize_command " $arg"
45755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xcompiler
45765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
45805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compiler_flags="$compiler_flags $arg"
45815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append compile_command " $arg"
45825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append finalize_command " $arg"
45835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$new_inherited_linker_flags " in
45845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $arg "*) ;;
45855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;;
45865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
45875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -multi_module)
45915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	single_module="${wl}-multi_module"
45925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
45955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -no-fast-install)
45965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fast_install=no
45975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
45985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
45995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -no-install)
46015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
46025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*)
46035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The PATH hackery in wrapper scripts is required on Windows
46045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # and Darwin in order for the loader to find any dlls it needs.
46055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-no-install' is ignored for $host"
46065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "assuming \`-no-fast-install' instead"
46075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fast_install=no
46085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
46095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) no_install=yes ;;
46105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
46115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -no-undefined)
46155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	allow_undefined=no
46165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -objectlist)
46205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=objectlist
46215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -o) prev=output ;;
46255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -precious-files-regex)
46275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=precious_regex
46285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -release)
46325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=release
46335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -rpath)
46375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=rpath
46385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -R)
46425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xrpath
46435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -R*)
46475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-R' '' "$arg"
46485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dir=$func_stripname_result
46495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
46505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $dir in
46515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) ;;
46525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
46535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "only absolute run-paths are allowed"
46545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
46555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
46565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$xrpath " in
46575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $dir "*) ;;
46585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) xrpath="$xrpath $dir" ;;
46595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
46605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shared)
46645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# The effects of -shared are defined in a previous loop.
46655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -shrext)
46695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=shrext
46705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -static | -static-libtool-libs)
46745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# The effects of -static are defined in a previous loop.
46755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We used to do the same as -all-static on platforms that
46765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# didn't have a PIC flag, but the assumption that the effects
46775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# would be equivalent was wrong.  It would break on at least
46785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Digital Unix and AIX.
46795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -thread-safe)
46835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	thread_safe=yes
46845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -version-info)
46885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=vinfo
46895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -version-number)
46935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=vinfo
46945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	vinfo_number=yes
46955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
46965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
46975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -weak)
46995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        prev=weak
47005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Wc,*)
47045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-Wc,' '' "$arg"
47055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	args=$func_stripname_result
47065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=
47075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=','
47085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for flag in $args; do
47095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
47105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_quote_for_eval "$flag"
47115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg="$arg $wl$func_quote_for_eval_result"
47125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $func_quote_for_eval_result"
47135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
47145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
47155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname ' ' '' "$arg"
47165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=$func_stripname_result
47175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Wl,*)
47205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname '-Wl,' '' "$arg"
47215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	args=$func_stripname_result
47225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=
47235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=','
47245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for flag in $args; do
47255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
47265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          func_quote_for_eval "$flag"
47275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  arg="$arg $wl$func_quote_for_eval_result"
47285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags $wl$func_quote_for_eval_result"
47295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $func_quote_for_eval_result"
47305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
47315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
47325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname ' ' '' "$arg"
47335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg=$func_stripname_result
47345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Xcompiler)
47375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xcompiler
47385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -Xlinker)
47425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xlinker
47435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -XCClinker)
47475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	prev=xcclinker
47485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
47495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -msg_* for osf cc
47525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -msg_*)
47535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_quote_for_eval "$arg"
47545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
47555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
47585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -r[0-9][0-9]* specifies the processor on the SGI compiler
47595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
47605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # +DA*, +DD* enable 64-bit mode on the HP compiler
47615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -q* pass through compiler args for the IBM compiler
47625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -m*, -t[45]*, -txscale* pass through architecture-specific
47635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # compiler args for GCC
47645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -F/path gives path to uninstalled frameworks, gcc on darwin
47655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
47665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # @file GCC response files
47675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
47685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
47695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval "$arg"
47705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
47715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_append compile_command " $arg"
47725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_append finalize_command " $arg"
47735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        compiler_flags="$compiler_flags $arg"
47745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        continue
47755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
47765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Some other compiler flag.
47785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -* | +*)
47795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        func_quote_for_eval "$arg"
47805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
47815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.$objext)
47845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# A standard object.
47855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objs="$objs $arg"
47865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
47875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
47895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# A libtool-controlled object.
47905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool object.
47925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_unsafe_p "$arg"; then
47935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  pic_object=
47945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  non_pic_object=
47955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Read the .lo file
47975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source "$arg"
47985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
47995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$pic_object" ||
48005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test -z "$non_pic_object" ||
48015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$pic_object" = none &&
48025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$non_pic_object" = none; then
48035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot find name of object for \`$arg'"
48045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Extract subdirectory from the argument.
48075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_dirname "$arg" "/" ""
48085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  xdir="$func_dirname_result"
48095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pic_object" != none; then
48115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Prepend the subdirectory the object is found in.
48125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_object="$xdir$pic_object"
48135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlfiles; then
48155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then
48165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dlfiles="$dlfiles $pic_object"
48175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		prev=
48185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		continue
48195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
48205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# If libtool objects are unsupported, then we need to preload.
48215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		prev=dlprefiles
48225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
48235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
48245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # CHECK ME:  I think I busted this.  -Ossama
48265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$prev" = dlprefiles; then
48275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Preload the old-style object.
48285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlprefiles="$dlprefiles $pic_object"
48295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      prev=
48305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
48315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # A PIC object.
48335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append libobjs " $pic_object"
48345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    arg="$pic_object"
48355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Non-PIC object.
48385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$non_pic_object" != none; then
48395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Prepend the subdirectory the object is found in.
48405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    non_pic_object="$xdir$non_pic_object"
48415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # A standard non-PIC object
48435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append non_pic_objects " $non_pic_object"
48445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$pic_object" || test "$pic_object" = none ; then
48455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      arg="$non_pic_object"
48465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
48475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
48485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If the PIC object exists, use it instead.
48495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # $xdir was prepended to $pic_object above.
48505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    non_pic_object="$pic_object"
48515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append non_pic_objects " $non_pic_object"
48525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
48545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Only an error if not doing a dry-run.
48555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $opt_dry_run; then
48565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Extract subdirectory from the argument.
48575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_dirname "$arg" "/" ""
48585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    xdir="$func_dirname_result"
48595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_lo2o "$arg"
48615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    pic_object=$xdir$objdir/$func_lo2o_result
48625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    non_pic_object=$xdir$func_lo2o_result
48635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append libobjs " $pic_object"
48645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append non_pic_objects " $non_pic_object"
48655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
48665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "\`$arg' is not a valid libtool object"
48675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
48685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
48695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
48705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.$libext)
48725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# An archive.
48735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$deplibs $arg"
48745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_deplibs="$old_deplibs $arg"
48755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
48765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
48775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
48795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# A libtool-controlled library.
48805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$prev" = dlfiles; then
48825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This library was specified with -dlopen.
48835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlfiles="$dlfiles $arg"
48845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
48855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$prev" = dlprefiles; then
48865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The library was specified with -dlpreopen.
48875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlprefiles="$dlprefiles $arg"
48885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prev=
48895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
48905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplibs $arg"
48915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
48925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
48935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
48945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
48955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Some other compiler argument.
48965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
48975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Unknown arguments in both finalize_command and compile_command need
48985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to be aesthetically quoted because they are evaled later.
48995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_quote_for_eval "$arg"
49005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	arg="$func_quote_for_eval_result"
49015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
49025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac # arg
49035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now actually substitute the argument into the commands.
49055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$arg"; then
49065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append compile_command " $arg"
49075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_append finalize_command " $arg"
49085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
49095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # argument parsing loop
49105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$prev" && \
49125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "the \`$prevarg' option requires an argument"
49135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
49155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval arg=\"$export_dynamic_flag_spec\"
49165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_append compile_command " $arg"
49175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_append finalize_command " $arg"
49185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
49195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    oldlibs=
49215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # calculate the name of the file, without its directory
49225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_basename "$output"
49235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    outputname="$func_basename_result"
49245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libobjs_save="$libobjs"
49255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test -n "$shlibpath_var"; then
49275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # get the directories listed in $shlibpath_var
49285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\`
49295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    else
49305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shlib_search_path=
49315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
49325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    eval sys_lib_search_path=\"$sys_lib_search_path_spec\"
49335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\"
49345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_dirname "$output" "/" ""
49365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    output_objdir="$func_dirname_result$objdir"
49375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Create the object directory.
49385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mkdir_p "$output_objdir"
49395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Determine the type of output
49415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $output in
49425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    "")
49435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an output file"
49445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
49455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.$libext) linkmode=oldlib ;;
49465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.lo | *.$objext) linkmode=obj ;;
49475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.la) linkmode=lib ;;
49485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *) linkmode=prog ;; # Anything else should be a program.
49495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
49505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    specialdeplibs=
49525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libs=
49545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Find all interdependent deplibs by searching for libraries
49555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # that are linked more than once (e.g. -la -lb -la)
49565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for deplib in $deplibs; do
49575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if $opt_duplicate_deps ; then
49585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$libs " in
49595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
49605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
49615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
49625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libs="$libs $deplib"
49635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
49645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = lib; then
49665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libs="$predeps $libs $compiler_lib_search_path $postdeps"
49675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Compute libraries that are listed more than once in $predeps
49695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # $postdeps and mark them as special (i.e., whose duplicates are
49705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # not to be eliminated).
49715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pre_post_deps=
49725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if $opt_duplicate_compiler_generated_deps; then
49735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for pre_post_dep in $predeps $postdeps; do
49745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$pre_post_deps " in
49755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
49765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
49775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  pre_post_deps="$pre_post_deps $pre_post_dep"
49785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
49795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
49805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      pre_post_deps=
49815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
49825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    deplibs=
49845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    newdependency_libs=
49855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    newlib_search_path=
49865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    need_relink=no # whether we're linking any uninstalled libtool libraries
49875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    notinst_deplibs= # not-installed libtool libraries
49885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    notinst_path= # paths that contain not-installed libtool libraries
49895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $linkmode in
49915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib)
49925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	passes="conv dlpreopen link"
49935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for file in $dlfiles $dlprefiles; do
49945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file in
49955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la) ;;
49965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
49975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file"
49985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
49995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
50005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
50025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prog)
50035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_deplibs=
50045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_deplibs=
50055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	alldeplibs=no
50065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	newdlfiles=
50075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	newdlprefiles=
50085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	passes="conv scan dlopen dlpreopen link"
50095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
50105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *)  passes="conv"
50115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
50125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
50135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for pass in $passes; do
50155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # The preopen pass in lib mode reverses $deplibs; put it back here
50165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # so that -L comes before libs that need it for instance...
50175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,link"; then
50185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	## FIXME: Find the place where the list is rebuilt in the wrong
50195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	##        order, and fix it there properly
50205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        tmp_deplibs=
50215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for deplib in $deplibs; do
50225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_deplibs="$deplib $tmp_deplibs"
50235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$tmp_deplibs"
50255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,link" ||
50285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test "$linkmode,$pass" = "prog,scan"; then
50295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libs="$deplibs"
50305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=
50315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode" = prog; then
50335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $pass in
50345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlopen) libs="$dlfiles" ;;
50355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlpreopen) libs="$dlprefiles" ;;
50365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link)
50375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libs="$deplibs %DEPLIBS%"
50385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
50395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
50405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
50415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Collect and forward deplibs of preopened libtool libs
50445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for lib in $dlprefiles; do
50455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Ignore non-libtool-libs
50465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dependency_libs=
50475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $lib in
50485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la)	func_source "$lib" ;;
50495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
50505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Collect preopened libtool deplibs, except any this library
50525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # has declared as weak libs
50535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
50545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $weak_libs " in
50565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $deplib_base "*) ;;
50575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) deplibs="$deplibs $deplib" ;;
50585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
50595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
50605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libs="$dlprefiles"
50625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = dlopen; then
50645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Collect dlpreopened libraries
50655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_deplibs="$deplibs"
50665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=
50675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $libs; do
50705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lib=
50715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	found=no
50725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
50735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode,$pass" = "prog,link"; then
50755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$deplib $compile_deplibs"
50765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$deplib $finalize_deplibs"
50775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
50785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compiler_flags="$compiler_flags $deplib"
50795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = lib ; then
50805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$new_inherited_linker_flags " in
50815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $deplib "*) ;;
50825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
50845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
50855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
50875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
50885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-l*)
50895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`-l' is ignored for archives/objects"
50915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
50925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '-l' '' "$deplib"
50945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name=$func_stripname_result
50955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib; then
50965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
50985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for searchdir in $searchdirs; do
51015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for search_ext in .la $std_shrext .so .a; do
51025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Search the libtool library
51035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      lib="$searchdir/lib${name}${search_ext}"
51045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -f "$lib"; then
51055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$search_ext" = ".la"; then
51065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  found=yes
51075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
51085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  found=no
51095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
51105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		break 2
51115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
51125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
51135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
51145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$found" != yes; then
51155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # deplib doesn't seem to be a libtool library
51165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode,$pass" = "prog,link"; then
51175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
51185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
51195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
51205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
51245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else # deplib is a libtool library
51255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We need to do some special things here, and not later.
51275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $predeps $postdeps " in
51295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*)
51305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if func_lalib_p "$lib"; then
51315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  library_names=
51325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  old_library=
51335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_source "$lib"
51345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for l in $old_library $library_names; do
51355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ll="$l"
51365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
51375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "X$ll" = "X$old_library" ; then # only static version available
51385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    found=no
51395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_dirname "$lib" "" "."
51405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ladir="$func_dirname_result"
51415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    lib=$ladir/$old_library
51425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test "$linkmode,$pass" = "prog,link"; then
51435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      compile_deplibs="$deplib $compile_deplibs"
51445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      finalize_deplibs="$deplib $finalize_deplibs"
51455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
51465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      deplibs="$deplib $deplibs"
51475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
51495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    continue
51505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
51515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
51525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
51535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) ;;
51545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
51555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # -l
51585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.ltframework)
51595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode,$pass" = "prog,link"; then
51605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$deplib $compile_deplibs"
51615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$deplib $finalize_deplibs"
51625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
51635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
51645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = lib ; then
51655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$new_inherited_linker_flags " in
51665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $deplib "*) ;;
51675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
51695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
51725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
51735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
51745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $linkmode in
51755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib)
51765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
51775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "$pass" = conv && continue
51785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs="$deplib $newdependency_libs"
51795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-L' '' "$deplib"
51805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib_search_path="$newlib_search_path $func_stripname_result"
51815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prog)
51835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = conv; then
51845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      continue
51865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = scan; then
51885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
51905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
51915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
51925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-L' '' "$deplib"
51945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib_search_path="$newlib_search_path $func_stripname_result"
51955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
51975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`-L' is ignored for archives/objects"
51985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac # linkmode
52005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # -L
52025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-R*)
52035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = link; then
52045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-R' '' "$deplib"
52055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir=$func_stripname_result
52065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Make sure the xrpath contains only unique directories.
52075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$xrpath " in
52085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dir "*) ;;
52095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) xrpath="$xrpath $dir" ;;
52105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
52115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplib $deplibs"
52135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.la) lib="$deplib" ;;
52165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.$libext)
52175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = conv; then
52185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
52195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $linkmode in
52225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib)
52235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Linking convenience modules into shared libraries is allowed,
52245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # but linking other static libraries is non-portable.
52255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $dlpreconveniencelibs " in
52265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $deplib "*) ;;
52275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
52285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      valid_a_lib=no
52295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplibs_check_method in
52305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		match_pattern*)
52315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  set dummy $deplibs_check_method; shift
52325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    | $EGREP "$match_pattern_regex" > /dev/null; then
52355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    valid_a_lib=yes
52365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
52375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
52385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		pass_all)
52395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  valid_a_lib=yes
52405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
52415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
52425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$valid_a_lib" != yes; then
52435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
52445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
52465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
52475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
52485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** that it is just a static archive that I should not use here."
52505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
52515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
52525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: Linking the shared library $output against the"
52535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** static library $deplib is not portable!"
52545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		deplibs="$deplib $deplibs"
52555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
52565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
52575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
52585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prog)
52615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" != link; then
52625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
52635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
52645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
52655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
52665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
52675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac # linkmode
52705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # *.$libext
52715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo | *.$objext)
52725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = conv; then
52735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
52745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode" = prog; then
52755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # If there is no dlopen support or we're linking statically,
52775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # we need to preload.
52785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlprefiles="$newdlprefiles $deplib"
52795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
52805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
52815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
52825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlfiles="$newdlfiles $deplib"
52835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
52845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	%DEPLIBS%)
52885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  alldeplibs=yes
52895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac # case $deplib
52925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$found" = yes || test -f "$lib"; then :
52945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
52955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
52975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
52995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$lib" \
53005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_error "\`$lib' is not a valid libtool archive"
53015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$lib" "" "."
53035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	ladir="$func_dirname_result"
53045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlname=
53065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlopen=
53075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlpreopen=
53085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir=
53095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
53105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_library=
53115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	inherited_linker_flags=
53125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the library was installed with an old release of libtool,
53135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# it will not redefine variables installed, or shouldnotlink
53145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	installed=yes
53155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shouldnotlink=no
53165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	avoidtemprpath=
53175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Read the .la file
53205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$lib"
53215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Convert "-framework foo" to "foo.ltframework"
53235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$inherited_linker_flags"; then
53245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $new_inherited_linker_flags " in
53275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $tmp_inherited_linker_flag "*) ;;
53285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
53305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
53315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" = "lib,link" ||
53345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   test "$linkmode,$pass" = "prog,scan" ||
53355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = conv; then
53415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Only check for convenience libraries
53425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$lib $deplibs"
53435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir"; then
53445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$old_library"; then
53455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_fatal_error "cannot find name of link library for \`$lib'"
53465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
53475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # It is a libtool convenience library, so add in its objects.
53485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    convenience="$convenience $ladir/$objdir/$old_library"
53495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs=
53515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for deplib in $dependency_libs; do
53525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
53535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if $opt_duplicate_deps ; then
53545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$tmp_libs " in
53555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
53565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
53575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
53585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tmp_libs="$tmp_libs $deplib"
53595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
53605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "\`$lib' is not a convenience library"
53625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
53645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = conv
53655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Get the name of the library we link against.
53685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linklib=
53695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for l in $old_library $library_names; do
53705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linklib="$l"
53715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
53725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$linklib"; then
53735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot find name of link library for \`$lib'"
53745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# This library was specified with -dlopen.
53775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = dlopen; then
53785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir"; then
53795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$dlname" ||
53825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$dlopen_support" != yes ||
53835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$build_libtool_libs" = no; then
53845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If there is no dlname, no dlopen support or we're linking
53855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # statically, we need to preload.  We also need to preload any
53865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # dependent libraries so libltdl's deplib preloader doesn't
53875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # bomb out in the load deplibs phase.
53885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$dlprefiles $lib $dependency_libs"
53895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
53905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles="$newdlfiles $lib"
53915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
53935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = dlopen
53945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
53965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $ladir in
53975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
53995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  abs_ladir=`cd "$ladir" && pwd`
54005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$abs_ladir"; then
54015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "cannot determine absolute directory name of \`$ladir'"
54025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "passing it literally to the linker, although it might fail"
54035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    abs_ladir="$ladir"
54045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
54065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
54075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$lib"
54085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	laname="$func_basename_result"
54095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Find the relevant object directory and library name.
54115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$installed" = Xyes; then
54125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "library \`$lib' was moved."
54145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir"
54155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir"
54165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir="$abs_ladir"
54175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$libdir"
54195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$libdir"
54205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
54235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir"
54255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir"
54265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Remove this search path later
54275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    notinst_path="$notinst_path $abs_ladir"
54285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir/$objdir"
54305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir/$objdir"
54315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Remove this search path later
54325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    notinst_path="$notinst_path $abs_ladir"
54335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $installed = yes
54355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname 'lib' '.la' "$laname"
54365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$func_stripname_result
54375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# This library was specified with -dlpreopen.
54395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = dlpreopen; then
54405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir" && test "$linkmode" = prog; then
54415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are required to link).
54455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$old_library"; then
54465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$old_library"
54475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Keep a list of preopened convenience libraries to check
54485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # that they are being used correctly in the link pass.
54495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -z "$libdir" && \
54505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test -n "$dlname"; then
54535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$dlname"
54545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$linklib"
54565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = dlpreopen
54585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$libdir"; then
54605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Link the convenience library
54615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib; then
54625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$dir/$old_library $deplibs"
54635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode,$pass" = "prog,link"; then
54645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$dir/$old_library $compile_deplibs"
54655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$lib $deplibs" # used for prog,scan pass
54685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
54705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
54715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = prog && test "$pass" != link; then
54745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path="$newlib_search_path $ladir"
54755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$lib $deplibs"
54765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linkalldeplibs=no
54785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$build_libtool_libs" = no; then
54805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    linkalldeplibs=yes
54815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
54845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
54855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
54865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*) func_stripname '-L' '' "$deplib"
54875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         newlib_search_path="$newlib_search_path $func_stripname_result"
54885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 ;;
54895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
54905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Need to link against all dependency_libs?
54915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkalldeplibs" = yes; then
54925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
54935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
54945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Need to hardcode shared library paths
54955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # or/and link against static libraries
54965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdependency_libs="$deplib $newdependency_libs"
54975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
54985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
54995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
55005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
55015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
55045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # for deplib
55055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
55065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $linkmode = prog...
55075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" = "prog,link"; then
55095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$library_names" &&
55105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { { test "$prefer_static_libs" = no ||
55115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test -z "$old_library"; }; then
55135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We need to hardcode the library path
55145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Make sure the rpath contains only unique directories.
55165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$temp_rpath:" in
55175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$absdir:"*) ;;
55185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) temp_rpath="$temp_rpath$absdir:" ;;
55195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Hardcode the library path.
55235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Skip directories that are in the system default run-time
55245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # search path.
55255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $absdir "*) ;;
55275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$compile_rpath " in
55295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $absdir "*) ;;
55305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_rpath="$compile_rpath $absdir"
55315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
55335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
55345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $libdir "*) ;;
55365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$finalize_rpath " in
55385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
55395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_rpath="$finalize_rpath $libdir"
55405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
55425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
55435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # $linkmode,$pass = prog,link...
55445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$alldeplibs" = yes &&
55465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { test "$deplibs_check_method" = pass_all ||
55475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       { test "$build_libtool_libs" = yes &&
55485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test -n "$library_names"; }; }; then
55495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We only need to search for static libraries
55505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
55515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
55525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
55535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_static=no # Whether the deplib will be linked statically
55555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	use_static_libs=$prefer_static_libs
55565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$use_static_libs" = built && test "$installed" = yes; then
55575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  use_static_libs=no
55585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
55595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$library_names" &&
55605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
55625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* | *cegcc*)
55635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # No point in relinking DLLs because paths are not encoded
55645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      notinst_deplibs="$notinst_deplibs $lib"
55655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      need_relink=no
55665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
55675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
55685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$installed" = no; then
55695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      notinst_deplibs="$notinst_deplibs $lib"
55705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      need_relink=yes
55715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
55735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
55745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This is a shared library
55755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Warn about portability, can't link against -module's on some
55775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # systems (darwin).  Don't bleat about dlopened modules though!
55785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlopenmodule=""
55795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dlpremoduletest in $dlprefiles; do
55805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$dlpremoduletest" = "X$lib"; then
55815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlopenmodule="$dlpremoduletest"
55825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
55835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
55855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
55875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
55885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
55905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** $linklib is not portable!"
55935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
55945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib &&
55955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$hardcode_into_libs" = yes; then
55965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Hardcode the library path.
55975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Skip directories that are in the system default run-time
55985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # search path.
55995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
56005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $absdir "*) ;;
56015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
56025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$compile_rpath " in
56035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $absdir "*) ;;
56045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_rpath="$compile_rpath $absdir"
56055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
56075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
56085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
56095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $libdir "*) ;;
56105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
56115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$finalize_rpath " in
56125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
56135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_rpath="$finalize_rpath $libdir"
56145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
56165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
56175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
56185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$old_archive_from_expsyms_cmds"; then
56205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # figure out the soname
56215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    set dummy $library_names
56225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
56235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    realname="$1"
56245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
56255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libname=`eval "\\$ECHO \"$libname_spec\""`
56265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # use dlname if we got it. it's perfectly good, no?
56275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$dlname"; then
56285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      soname="$dlname"
56295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test -n "$soname_spec"; then
56305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # bleh windows
56315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
56325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *cygwin* | mingw* | *cegcc*)
56335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_arith $current - $age
56345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		major=$func_arith_result
56355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		versuffix="-$major"
56365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
56375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval soname=\"$soname_spec\"
56395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
56405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      soname="$realname"
56415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Make a new name for the extract_expsyms_cmds to use
56445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    soroot="$soname"
56455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_basename "$soroot"
56465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    soname="$func_basename_result"
56475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname 'lib' '.dll' "$soname"
56485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib=libimp-$func_stripname_result.a
56495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If the library has no export list, then create one now
56515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$output_objdir/$soname-def"; then :
56525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
56535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "extracting exported symbol list from \`$soname'"
56545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Create $newlib
56585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$output_objdir/$newlib"; then :; else
56595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "generating import library for \`$soname'"
56605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # make sure the library variables are pointing to the new library
56635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir=$output_objdir
56645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    linklib=$newlib
56655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # test -n "$old_archive_from_expsyms_cmds"
56665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = prog || test "$mode" != relink; then
56685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_shlibpath=
56695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_dir=
56705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add=
56715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lib_linked=yes
56725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $hardcode_action in
56735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    immediate | unsupported)
56745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" = no; then
56755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$dir/$linklib"
56765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
56775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *-*-unixware7*) add_dir="-L$dir" ;;
56815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-darwin* )
56825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # if the lib is a (non-dlopened) module then we can not
56835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # link against it, someone is ignoring the earlier warnings
56845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if /usr/bin/file -L $add 2> /dev/null |
56855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $GREP ": [^:]* bundle" >/dev/null ; then
56865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if test "X$dlopenmodule" != "X$lib"; then
56875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			if test -z "$old_library" ; then
56895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO
56905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO "*** And there doesn't seem to be a static archive available"
56915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO "*** The link will probably fail, sorry"
56925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			else
56935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  add="$dir/$old_library"
56945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			fi
56955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      elif test -n "$old_library"; then
56965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			add="$dir/$old_library"
56975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
56985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
56995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_minus_L" = no; then
57015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
57025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*-*-sunos*) add_shlibpath="$dir" ;;
57035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_dir="-L$dir"
57055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_shlibpath_var" = no; then
57075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_shlibpath="$dir"
57085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lib_linked=no
57115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
57135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink)
57145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" = yes &&
57155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         test "$hardcode_direct_absolute" = no; then
57165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$dir/$linklib"
57175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_minus_L" = yes; then
57185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_dir="-L$dir"
57195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Try looking first in the location we're being installed to.
57205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -n "$inst_prefix_dir"; then
57215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case $libdir in
57225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    [\\/]*)
57235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      ;;
57255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
57265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
57275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_shlibpath_var" = yes; then
57295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_shlibpath="$dir"
57305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lib_linked=no
57335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
57355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) lib_linked=no ;;
57365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
57375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$lib_linked" != yes; then
57395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_fatal_configuration "unsupported hardcode properties"
57405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$add_shlibpath"; then
57435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case :$compile_shlibpath: in
57445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *":$add_shlibpath:"*) ;;
57455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
57475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
57495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
57525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && deplibs="$add $deplibs"
57545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" != yes &&
57555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test "$hardcode_minus_L" != yes &&
57565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test "$hardcode_shlibpath_var" = yes; then
57575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case :$finalize_shlibpath: in
57585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*":$libdir:"*) ;;
57595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
57645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = prog || test "$mode" = relink; then
57665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_shlibpath=
57675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_dir=
57685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add=
57695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Finalize command for both is simple: just hardcode it.
57705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$hardcode_direct" = yes &&
57715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$hardcode_direct_absolute" = no; then
57725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="$libdir/$linklib"
57735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_minus_L" = yes; then
57745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add_dir="-L$libdir"
57755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_shlibpath_var" = yes; then
57775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case :$finalize_shlibpath: in
57785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *":$libdir:"*) ;;
57795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
57815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_automatic" = yes; then
57835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$inst_prefix_dir" &&
57845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$inst_prefix_dir$libdir/$linklib"
57865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$libdir/$linklib"
57885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
57905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # We cannot seem to hardcode it, guess we'll fake it.
57915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add_dir="-L$libdir"
57925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Try looking first in the location we're being installed to.
57935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$inst_prefix_dir"; then
57945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $libdir in
57955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  [\\/]*)
57965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
57985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
58015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
58045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
58075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && deplibs="$add $deplibs"
58095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$linkmode" = prog; then
58125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # is not unsupported.  This is valid on all known static and
58145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # shared platforms.
58155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$hardcode_direct" != unsupported; then
58165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$old_library" && linklib="$old_library"
58175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$dir/$linklib $compile_deplibs"
58185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
58205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$build_libtool_libs" = yes; then
58245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Not a shared library
58255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$deplibs_check_method" != pass_all; then
58265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We're trying link a shared library against a static one
58275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # but the system doesn't support it.
58285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Just print a warning and add the library to dependency_libs so
58305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # that the program can be linked against the static library.
58315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
58325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** I have the capability to make that library automatically link in when"
58345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** shared version of the library, which you do not appear to have."
58365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$module" = yes; then
58375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** But as you try to build a module library, libtool will still create "
58385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** a static module, that should work as long as the dlopening application"
58395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -z "$global_symbol_pipe"; then
58415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
58425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** not find such a program.  So, this module is probably useless."
58455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_old_libs" = no; then
58485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=module
58495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_old_libs=yes
58505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
58515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=no
58525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
58555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$dir/$old_library $deplibs"
58565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    link_static=yes
58575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # link shared/static library?
58595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = lib; then
58615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$dependency_libs" &&
58625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { test "$hardcode_into_libs" != yes ||
58635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$build_old_libs" = yes ||
58645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$link_static" = yes; }; then
58655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Extract -R from dependency_libs
58665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    temp_deplibs=
58675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for libdir in $dependency_libs; do
58685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $libdir in
58695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -R*) func_stripname '-R' '' "$libdir"
58705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	           temp_xrpath=$func_stripname_result
58715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   case " $xrpath " in
58725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   *" $temp_xrpath "*) ;;
58735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   *) xrpath="$xrpath $temp_xrpath";;
58745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   esac;;
58755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) temp_deplibs="$temp_deplibs $libdir";;
58765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
58775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
58785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dependency_libs="$temp_deplibs"
58795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path="$newlib_search_path $absdir"
58825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Link against this library
58835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # ... and its dependency_libs
58855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
58865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
58875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs="$deplib $newdependency_libs"
58885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
58895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
58905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
58925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
58945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
58955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$link_all_deplibs" != no; then
58975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add the search paths of all dependency libraries
58985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for deplib in $dependency_libs; do
58995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      path=
59005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplib in
59015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -L*) path="$deplib" ;;
59025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
59035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_dirname "$deplib" "" "."
59045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dir="$func_dirname_result"
59055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# We need an absolute path.
59065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $dir in
59075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*)
59095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  absdir=`cd "$dir" && pwd`
59105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$absdir"; then
59115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_warning "cannot determine absolute directory name of \`$dir'"
59125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    absdir="$dir"
59135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
59145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
59165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $GREP "^installed=no" $deplib > /dev/null; then
59175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
59185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*-*-darwin*)
59195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  depdepl=
59205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -n "$deplibrary_names" ; then
59225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    for tmp in $deplibrary_names ; do
59235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      depdepl=$tmp
59245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    done
59255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test -f "$absdir/$objdir/$depdepl" ; then
59265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      depdepl="$absdir/$objdir/$depdepl"
59275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      if test -z "$darwin_install_name"; then
59295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      fi
59315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      path=
59345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
59355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
59365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*)
59385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  path="-L$absdir/$objdir"
59395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
59415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
59425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  test -z "$libdir" && \
59445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  test "$absdir" != "$libdir" && \
59465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_warning "\`$deplib' seems to be moved"
59475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  path="-L$absdir"
59495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
59505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
59515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
59525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $deplibs " in
59535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $path "*) ;;
59545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) deplibs="$path $deplibs" ;;
59555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
59565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
59575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # link_all_deplibs != no
59585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # linkmode = lib
59595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done # for deplib in $libs
59605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = link; then
59615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = "prog"; then
59625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
59655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
59685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dependency_libs="$newdependency_libs"
59695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = dlpreopen; then
59705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Link the dlpreopened libraries before other libraries
59715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for deplib in $save_deplibs; do
59725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplib $deplibs"
59735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
59745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
59755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" != dlopen; then
59765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" != conv; then
59775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make sure lib_search_path contains only unique directories.
59785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib_search_path=
59795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $newlib_search_path; do
59805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$lib_search_path " in
59815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dir "*) ;;
59825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) lib_search_path="$lib_search_path $dir" ;;
59835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
59845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
59855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path=
59865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" != "prog,link"; then
59895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  vars="deplibs"
59905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
59915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  vars="compile_deplibs finalize_deplibs"
59925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for var in $vars dependency_libs; do
59945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add libraries to $var in reverse order
59955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval tmp_libs=\"\$$var\"
59965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  new_libs=
59975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $tmp_libs; do
59985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # FIXME: Pedantically, this is the right thing to do, so
59995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #        that some nasty dependency loop isn't accidentally
60005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #        broken:
60015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #new_libs="$deplib $new_libs"
60025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Pragmatically, this seems to cause very few problems in
60035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # practice:
60045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
60055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*) new_libs="$deplib $new_libs" ;;
60065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -R*) ;;
60075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
60085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # And here is the reason: when a library appears more
60095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # than once as an explicit dependence of a library, or
60105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # is implicitly linked in more than once by the
60115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # compiler, it is considered special, and multiple
60125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # occurrences thereof are not removed.  Compare this
60135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # with having the same library being listed as a
60145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # dependency of multiple other libraries: in this case,
60155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # we know (pedantically, we assume) the library does not
60165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # need to be listed more than once, so we keep only the
60175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # last copy.  This is not always right, but it is rare
60185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # enough that we require users that really mean to play
60195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # such unportable linking tricks to link the library
60205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # using -Wl,-lname, so that libtool does not consider it
60215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # for duplicate removal.
60225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $specialdeplibs " in
60235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
60255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $new_libs " in
60265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $deplib "*) ;;
60275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) new_libs="$deplib $new_libs" ;;
60285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
60295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
60305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
60315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
60325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
60335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
60345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
60355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $new_libs; do
60365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
60375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*)
60385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $tmp_libs " in
60395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) ;;
60405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) tmp_libs="$tmp_libs $deplib" ;;
60415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
60425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
60435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) tmp_libs="$tmp_libs $deplib" ;;
60445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
60455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
60465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval $var=\"$tmp_libs\"
60475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done # for var
60485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
60495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Last step: remove runtime libs from dependency_libs
60505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # (they stay in deplibs)
60515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      tmp_libs=
60525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for i in $dependency_libs ; do
60535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $predeps $postdeps $compiler_lib_search_path " in
60545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $i "*)
60555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  i=""
60565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
60575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
60585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$i" ; then
60595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs="$tmp_libs $i"
60605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
60615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
60625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dependency_libs=$tmp_libs
60635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # for pass
60645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = prog; then
60655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlfiles="$newdlfiles"
60665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
60675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = prog || test "$linkmode" = lib; then
60685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlprefiles="$newdlprefiles"
60695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
60705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $linkmode in
60725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    oldlib)
60735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for archives"
60755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
60765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case " $deplibs" in
60785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *\ -l* | *\ -L*)
60795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
60815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$rpath" && \
60835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-rpath' is ignored for archives"
60845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$xrpath" && \
60865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-R' is ignored for archives"
60875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
60895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info/-version-number' is ignored for archives"
60905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
60925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for archives"
60935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$export_symbols$export_symbols_regex" && \
60955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-export-symbols' is ignored for archives"
60965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now set the variables for building old libraries.
60985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      build_libtool_libs=no
60995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlibs="$output"
61005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      objs="$objs$old_deplibs"
61015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
61025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib)
61045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure we only generate libraries of the form `libNAME.la'.
61055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $outputname in
61065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lib*)
61075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname 'lib' '.la' "$outputname"
61085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$func_stripname_result
61095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval shared_ext=\"$shrext_cmds\"
61105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval libname=\"$libname_spec\"
61115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
61125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
61135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$module" = no && \
61145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$need_lib_prefix" != no; then
61175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add the "lib" prefix for modules if required
61185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '' '.la' "$outputname"
61195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name=$func_stripname_result
61205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval shared_ext=\"$shrext_cmds\"
61215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval libname=\"$libname_spec\"
61225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
61235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '' '.la' "$outputname"
61245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libname=$func_stripname_result
61255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
61275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
61285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$objs"; then
61305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$deplibs_check_method" != pass_all; then
61315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
61335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO
61345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "*** objects $objs is not portable!"
61365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs="$libobjs $objs"
61375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
61395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$dlself" != no && \
61415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen self' is ignored for libtool libraries"
61425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set dummy $rpath
61445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
61455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$#" -gt 1 && \
61465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "ignoring multiple \`-rpath's for a libtool library"
61475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_libdir="$1"
61495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlibs=
61515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$rpath"; then
61525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_libtool_libs" = yes; then
61535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Building a libtool convenience library.
61545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Some compilers have problems with a `.al' extension so
61555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # convenience libraries should have the same extension an
61565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # archive normally would.
61575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_libtool_libs=convenience
61595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_old_libs=yes
61605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$vinfo" && \
61635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$release" && \
61665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-release' is ignored for convenience libraries"
61675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
61685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Parse the version information argument.
61705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=':'
61715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $vinfo 0 0 0
61725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
61735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
61745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$7" && \
61765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "too many parameters to \`-version-info'"
61775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# convert absolute version numbers to libtool ages
61795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# this retains compatibility with .la files and attempts
61805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to make the code below a bit more comprehensible
61815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $vinfo_number in
61835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	yes)
61845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_major="$1"
61855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_minor="$2"
61865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_revision="$3"
61875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
61885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # There are really only two kinds -- those that
61895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # use the current revision as the major version
61905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # and those that subtract age and use age as
61915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # a minor version.  But, then there is irix
61925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # which has an extra 1 added just for fun
61935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
61945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
61955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin|linux|osf|windows|none)
61965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $number_major + $number_minor
61975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current=$func_arith_result
61985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="$number_minor"
61995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_revision"
62005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  freebsd-aout|freebsd-elf|sunos)
62025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current="$number_major"
62035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_minor"
62045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="0"
62055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  irix|nonstopux)
62075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $number_major + $number_minor
62085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current=$func_arith_result
62095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="$number_minor"
62105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_minor"
62115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_irix_increment=no
62125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
62145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_configuration "$modename: unknown library version type \`$version_type'"
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)		newdependency_libs="$newdependency_libs $libdir/$name"
80705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
80715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
80735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
80745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dependency_libs="$newdependency_libs"
80755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles=
80765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlfiles; do
80785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
80795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
80805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_basename "$lib"
80815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
80825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
80845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$lib' is not a valid libtool archive"
80855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdlfiles="$newdlfiles $libdir/$name"
80865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
80875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) newdlfiles="$newdlfiles $lib" ;;
80885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
80895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
80905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlfiles="$newdlfiles"
80915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles=
80925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlprefiles; do
80935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
80945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
80955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Only pass preopened files to the pseudo-archive (for
80965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# eventual linking with the app. that links it) if we
80975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# didn't already link the preopened objects directly into
80985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# the library:
80995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$lib"
81005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
81015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
81025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
81035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$lib' is not a valid libtool archive"
81045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdlprefiles="$newdlprefiles $libdir/$name"
81055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
81065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$newdlprefiles"
81095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
81105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles=
81115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlfiles; do
81125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) abs=`pwd`"/$lib" ;;
81155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlfiles="$newdlfiles $abs"
81175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlfiles="$newdlfiles"
81195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles=
81205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlprefiles; do
81215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) abs=`pwd`"/$lib" ;;
81245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlprefiles="$newdlprefiles $abs"
81265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$newdlprefiles"
81285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
81295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $RM $output
81305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # place dlname in correct position for cygwin
81315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tdlname=$dlname
81325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host,$output,$installed,$module,$dlname in
81335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
81355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO > $output "\
81365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $outputname - a libtool library file
81375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
81395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file!
81405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library.
81415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name that we can dlopen(3).
81435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlname='$tdlname'
81445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of this library.
81465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library_names='$library_names'
81475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of the static archive.
81495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)old_library='$old_library'
81505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Linker flags that can not go in dependency_libs.
81525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inherited_linker_flags='$new_inherited_linker_flags'
81535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Libraries that this one depends upon.
81555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dependency_libs='$dependency_libs'
81565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of additional weak libraries provided by this library
81585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weak_library_names='$weak_libs'
81595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Version information for $libname.
81615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)current=$current
81625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)age=$age
81635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)revision=$revision
81645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Is this an already installed library?
81665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)installed=$installed
81675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Should we warn about portability when linking against -modules?
81695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)shouldnotlink=$module
81705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Files to dlopen/dlpreopen
81725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlopen='$dlfiles'
81735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlpreopen='$dlprefiles'
81745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Directory that this library needs to be installed in:
81765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libdir='$install_libdir'"
81775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$installed" = no && test "$need_relink" = yes; then
81785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO >> $output "\
81795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\""
81805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
81815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
81825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
81835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do a symbolic link so that the libtool archive can be found in
81855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # LD_LIBRARY_PATH before the program is installed.
81865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
81885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
81895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
81905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
81915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = link || test "$mode" = relink; } &&
81935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mode_link ${1+"$@"}
81945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_uninstall arg...
81975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_uninstall ()
81985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
81995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
82005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    RM="$nonopt"
82015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    files=
82025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rmforce=
82035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit_status=0
82045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set variables rather
82065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # than running their programs.
82075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_install_magic="$magic"
82085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
82105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
82115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
82125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -f) RM="$RM $arg"; rmforce=yes ;;
82135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*) RM="$RM $arg" ;;
82145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *) files="$files $arg" ;;
82155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
82165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
82175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$RM" && \
82195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an RM program"
82205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rmdirs=
82225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    origobjdir="$objdir"
82245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $files; do
82255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_dirname "$file" "" "."
82265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dir="$func_dirname_result"
82275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "X$dir" = X.; then
82285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objdir="$origobjdir"
82295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
82305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objdir="$dir/$origobjdir"
82315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$file"
82335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      name="$func_basename_result"
82345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$mode" = uninstall && objdir="$dir"
82355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Remember objdir for removal later, being careful to avoid duplicates
82375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$mode" = clean; then
82385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $rmdirs " in
82395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $objdir "*) ;;
82405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) rmdirs="$rmdirs $objdir" ;;
82415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
82425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Don't error if the file doesn't exist and rm -f was used.
82455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if { test -L "$file"; } >/dev/null 2>&1 ||
82465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 { test -h "$file"; } >/dev/null 2>&1 ||
82475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -f "$file"; then
82485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	:
82495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      elif test -d "$file"; then
82505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit_status=1
82515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
82525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      elif test "$rmforce" = yes; then
82535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
82545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rmfiles="$file"
82575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $name in
82595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
82605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Possibly a libtool archive, so verify it.
82615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_p "$file"; then
82625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source $dir/$name
82635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Delete the libtool libraries and symlinks.
82655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for n in $library_names; do
82665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $objdir/$n"
82675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
82685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$mode" in
82715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  clean)
82725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "  $library_names " in
82735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # "  " in the beginning catches empty $dlname
82745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dlname "*) ;;
82755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
82775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
82795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  uninstall)
82805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$library_names"; then
82815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Do each command in the postuninstall commands.
82825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
82845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$old_library"; then
82865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Do each command in the old_postuninstall commands.
82875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
82895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # FIXME: should reinstall the best remaining shared library.
82905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
82915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
82925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
82935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
82945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
82965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Possibly a libtool object, so verify it.
82975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_p "$file"; then
82985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Read the .lo file
83005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source $dir/$name
83015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add PIC object to the list of files to remove.
83035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$pic_object" &&
83045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$pic_object" != none; then
83055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $dir/$pic_object"
83065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add non-PIC object to the list of files to remove.
83095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$non_pic_object" &&
83105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$non_pic_object" != none; then
83115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $dir/$non_pic_object"
83125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
83145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
83155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
83175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = clean ; then
83185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  noexename=$name
83195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file in
83205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe)
83215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$file"
83225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    file=$func_stripname_result
83235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$name"
83245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    noexename=$func_stripname_result
83255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # $file with .exe has already been added to rmfiles,
83265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # add $file without .exe
83275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $file"
83285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
83295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
83305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do a test to see if this is a libtool program.
83315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if func_ltwrapper_p "$file"; then
83325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if func_ltwrapper_executable_p "$file"; then
83335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_ltwrapper_scriptname "$file"
83345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      relink_command=
83355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source $func_ltwrapper_scriptname_result
83365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
83385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      relink_command=
83395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source $dir/$noexename
83405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # note $name still contains .exe if it was in $file originally
83435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # as does the version of $file that was added into $rmfiles
83445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$fast_install" = yes && test -n "$relink_command"; then
83465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $objdir/lt-$name"
83475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$noexename" != "X$name" ; then
83495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
83535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
83545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
83555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$RM $rmfiles" 'exit_status=1'
83565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
83575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objdir="$origobjdir"
83585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Try to remove the ${objdir}s in the directories where we deleted files
83605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for dir in $rmdirs; do
83615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -d "$dir"; then
83625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "rmdir $dir >/dev/null 2>&1"
83635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
83645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
83655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $exit_status
83675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
83685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = uninstall || test "$mode" = clean; } &&
83705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mode_uninstall ${1+"$@"}
83715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$mode" && {
83735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  help="$generic_help"
83745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_fatal_help "you must specify a MODE"
83755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
83765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$exec_cmd" && \
83785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_fatal_help "invalid operation mode \`$mode'"
83795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "$exec_cmd"; then
83815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  eval exec "$exec_cmd"
83825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exit $EXIT_FAILURE
83835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
83845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit $exit_status
83865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The TAGs below are defined such that we never get into a situation
83895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in which we disable both kinds of libraries.  Given conflicting
83905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# choices, we go for a static library, that is the most portable,
83915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# since we can't tell whether shared libraries were disabled because
83925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the user asked for that or because the platform doesn't support
83935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# them.  This is particularly important on AIX, because we don't
83945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# support having both static and shared libraries enabled at the same
83955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# time on that platform, so we default to a shared-only configuration.
83965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If a disable-shared tag is given, we'll fallback to a static-only
83975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# configuration.  But we'll never go from static-only to shared-only.
83985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
84005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_libtool_libs=no
84015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=yes
84025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-shared
84035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-static
84055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
84065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-static
84075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Local Variables:
84095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mode:shell-script
84105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sh-indentation:2
84115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# End:
84125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# vi:sw=2
84135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8414