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
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
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) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
50375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
50385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$linkmode,$pass" = "lib,dlpreopen"; then
50405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Collect and forward deplibs of preopened libtool libs
50415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for lib in $dlprefiles; do
50425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Ignore non-libtool-libs
50435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dependency_libs=
50445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $lib in
50455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.la)	func_source "$lib" ;;
50465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
50475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Collect preopened libtool deplibs, except any this library
50495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # has declared as weak libs
50505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
50515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"`
50525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $weak_libs " in
50535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $deplib_base "*) ;;
50545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) deplibs="$deplibs $deplib" ;;
50555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
50565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
50575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
50585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libs="$dlprefiles"
50595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = dlopen; then
50615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Collect dlpreopened libraries
50625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_deplibs="$deplibs"
50635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=
50645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
50655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
50665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $libs; do
50675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lib=
50685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	found=no
50695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
50705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
50715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode,$pass" = "prog,link"; then
50725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$deplib $compile_deplibs"
50735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$deplib $finalize_deplibs"
50745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
50755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compiler_flags="$compiler_flags $deplib"
50765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = lib ; then
50775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$new_inherited_linker_flags " in
50785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $deplib "*) ;;
50795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
50805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
50815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
50825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
50845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
50855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-l*)
50865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" != lib && test "$linkmode" != prog; then
50875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`-l' is ignored for archives/objects"
50885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
50895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '-l' '' "$deplib"
50915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name=$func_stripname_result
50925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib; then
50935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
50945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
50955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
50965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
50975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for searchdir in $searchdirs; do
50985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for search_ext in .la $std_shrext .so .a; do
50995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Search the libtool library
51005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      lib="$searchdir/lib${name}${search_ext}"
51015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -f "$lib"; then
51025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$search_ext" = ".la"; then
51035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  found=yes
51045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
51055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  found=no
51065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
51075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		break 2
51085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
51095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
51105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
51115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$found" != yes; then
51125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # deplib doesn't seem to be a libtool library
51135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode,$pass" = "prog,link"; then
51145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
51155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
51165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
51175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
51215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else # deplib is a libtool library
51225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib,
51235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We need to do some special things here, and not later.
51245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
51255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $predeps $postdeps " in
51265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*)
51275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if func_lalib_p "$lib"; then
51285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  library_names=
51295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  old_library=
51305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_source "$lib"
51315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for l in $old_library $library_names; do
51325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ll="$l"
51335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
51345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "X$ll" = "X$old_library" ; then # only static version available
51355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    found=no
51365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_dirname "$lib" "" "."
51375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ladir="$func_dirname_result"
51385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    lib=$ladir/$old_library
51395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test "$linkmode,$pass" = "prog,link"; then
51405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      compile_deplibs="$deplib $compile_deplibs"
51415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      finalize_deplibs="$deplib $finalize_deplibs"
51425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
51435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      deplibs="$deplib $deplibs"
51445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs"
51455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
51465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    continue
51475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
51485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
51495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
51505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) ;;
51515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
51525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # -l
51555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.ltframework)
51565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode,$pass" = "prog,link"; then
51575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$deplib $compile_deplibs"
51585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$deplib $finalize_deplibs"
51595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
51605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
51615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = lib ; then
51625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case "$new_inherited_linker_flags " in
51635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $deplib "*) ;;
51645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;;
51655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
51665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
51685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
51695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
51705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
51715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $linkmode in
51725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib)
51735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
51745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "$pass" = conv && continue
51755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs="$deplib $newdependency_libs"
51765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-L' '' "$deplib"
51775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib_search_path="$newlib_search_path $func_stripname_result"
51785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prog)
51805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = conv; then
51815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      continue
51835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = scan; then
51855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
51865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
51875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
51885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
51895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
51905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-L' '' "$deplib"
51915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib_search_path="$newlib_search_path $func_stripname_result"
51925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
51945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "\`-L' is ignored for archives/objects"
51955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
51965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac # linkmode
51975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
51985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # -L
51995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-R*)
52005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = link; then
52015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '-R' '' "$deplib"
52025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir=$func_stripname_result
52035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Make sure the xrpath contains only unique directories.
52045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$xrpath " in
52055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dir "*) ;;
52065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) xrpath="$xrpath $dir" ;;
52075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
52085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplib $deplibs"
52105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.la) lib="$deplib" ;;
52135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.$libext)
52145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = conv; then
52155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
52165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $linkmode in
52195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib)
52205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Linking convenience modules into shared libraries is allowed,
52215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # but linking other static libraries is non-portable.
52225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $dlpreconveniencelibs " in
52235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $deplib "*) ;;
52245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
52255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      valid_a_lib=no
52265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplibs_check_method in
52275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		match_pattern*)
52285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  set dummy $deplibs_check_method; shift
52295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
52305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \
52315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    | $EGREP "$match_pattern_regex" > /dev/null; then
52325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    valid_a_lib=yes
52335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
52345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
52355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		pass_all)
52365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  valid_a_lib=yes
52375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
52385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
52395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$valid_a_lib" != yes; then
52405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
52415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: Trying to link with static lib archive $deplib."
52425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
52435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
52445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
52455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because the file extensions .$libext of this argument makes me believe"
52465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** that it is just a static archive that I should not use here."
52475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
52485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
52495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: Linking the shared library $output against the"
52505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** static library $deplib is not portable!"
52515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		deplibs="$deplib $deplibs"
52525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
52535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
52545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
52555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  prog)
52585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" != link; then
52595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
52605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
52615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
52625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
52635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
52645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
52655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
52665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac # linkmode
52675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;; # *.$libext
52685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*.lo | *.$objext)
52695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$pass" = conv; then
52705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplib $deplibs"
52715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode" = prog; then
52725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then
52735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # If there is no dlopen support or we're linking statically,
52745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # we need to preload.
52755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlprefiles="$newdlprefiles $deplib"
52765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_deplibs="$deplib $compile_deplibs"
52775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_deplibs="$deplib $finalize_deplibs"
52785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
52795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlfiles="$newdlfiles $deplib"
52805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
52815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
52825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	%DEPLIBS%)
52855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  alldeplibs=yes
52865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
52875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
52885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac # case $deplib
52895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$found" = yes || test -f "$lib"; then :
52915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
52925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'"
52935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
52945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see that this really is a libtool archive.
52965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lalib_unsafe_p "$lib" \
52975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  || func_fatal_error "\`$lib' is not a valid libtool archive"
52985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_dirname "$lib" "" "."
53005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	ladir="$func_dirname_result"
53015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlname=
53035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlopen=
53045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dlpreopen=
53055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir=
53065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	library_names=
53075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	old_library=
53085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	inherited_linker_flags=
53095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the library was installed with an old release of libtool,
53105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# it will not redefine variables installed, or shouldnotlink
53115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	installed=yes
53125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shouldnotlink=no
53135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	avoidtemprpath=
53145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Read the .la file
53175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_source "$lib"
53185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Convert "-framework foo" to "foo.ltframework"
53205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$inherited_linker_flags"; then
53215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'`
53225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do
53235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $new_inherited_linker_flags " in
53245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $tmp_inherited_linker_flag "*) ;;
53255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";;
53265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
53275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
53285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
53305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" = "lib,link" ||
53315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   test "$linkmode,$pass" = "prog,scan" ||
53325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   { test "$linkmode" != prog && test "$linkmode" != lib; }; then
53335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
53345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen"
53355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = conv; then
53385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Only check for convenience libraries
53395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$lib $deplibs"
53405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir"; then
53415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$old_library"; then
53425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_fatal_error "cannot find name of link library for \`$lib'"
53435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
53445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # It is a libtool convenience library, so add in its objects.
53455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    convenience="$convenience $ladir/$objdir/$old_library"
53465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    old_convenience="$old_convenience $ladir/$objdir/$old_library"
53475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode" != prog && test "$linkmode" != lib; then
53485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "\`$lib' is not a convenience library"
53495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
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)	  continue
53615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = conv
53625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Get the name of the library we link against.
53655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linklib=
53665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for l in $old_library $library_names; do
53675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linklib="$l"
53685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
53695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$linklib"; then
53705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot find name of link library for \`$lib'"
53715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
53725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# This library was specified with -dlopen.
53745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = dlopen; then
53755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir"; then
53765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "cannot -dlopen a convenience library: \`$lib'"
53775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$dlname" ||
53795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$dlopen_support" != yes ||
53805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$build_libtool_libs" = no; then
53815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If there is no dlname, no dlopen support or we're linking
53825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # statically, we need to preload.  We also need to preload any
53835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # dependent libraries so libltdl's deplib preloader doesn't
53845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # bomb out in the load deplibs phase.
53855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$dlprefiles $lib $dependency_libs"
53865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
53875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles="$newdlfiles $lib"
53885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
53895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
53905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = dlopen
53915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
53925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We need an absolute path.
53935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $ladir in
53945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;;
53955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
53965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  abs_ladir=`cd "$ladir" && pwd`
53975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$abs_ladir"; then
53985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "cannot determine absolute directory name of \`$ladir'"
53995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "passing it literally to the linker, although it might fail"
54005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    abs_ladir="$ladir"
54015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
54035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
54045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_basename "$lib"
54055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	laname="$func_basename_result"
54065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Find the relevant object directory and library name.
54085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$installed" = Xyes; then
54095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "library \`$lib' was moved."
54115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir"
54125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir"
54135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir="$abs_ladir"
54145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$libdir"
54165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$libdir"
54175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
54195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
54205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
54215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir"
54225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir"
54235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Remove this search path later
54245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    notinst_path="$notinst_path $abs_ladir"
54255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir="$ladir/$objdir"
54275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    absdir="$abs_ladir/$objdir"
54285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Remove this search path later
54295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    notinst_path="$notinst_path $abs_ladir"
54305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $installed = yes
54325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname 'lib' '.la' "$laname"
54335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$func_stripname_result
54345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# This library was specified with -dlpreopen.
54365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" = dlpreopen; then
54375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$libdir" && test "$linkmode" = prog; then
54385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'"
54395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Prefer using a static library (so that no silly _DYNAMIC symbols
54415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # are required to link).
54425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$old_library"; then
54435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$old_library"
54445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Keep a list of preopened convenience libraries to check
54455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # that they are being used correctly in the link pass.
54465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -z "$libdir" && \
54475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library"
54485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Otherwise, use the dlname, so that lt_dlopen finds it.
54495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test -n "$dlname"; then
54505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$dlname"
54515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles="$newdlprefiles $dir/$linklib"
54535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $pass = dlpreopen
54555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$libdir"; then
54575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Link the convenience library
54585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib; then
54595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$dir/$old_library $deplibs"
54605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test "$linkmode,$pass" = "prog,link"; then
54615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$dir/$old_library $compile_deplibs"
54625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$dir/$old_library $finalize_deplibs"
54635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
54645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$lib $deplibs" # used for prog,scan pass
54655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
54675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
54685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = prog && test "$pass" != link; then
54715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path="$newlib_search_path $ladir"
54725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$lib $deplibs"
54735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linkalldeplibs=no
54755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$link_all_deplibs" != no || test -z "$library_names" ||
54765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$build_libtool_libs" = no; then
54775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    linkalldeplibs=yes
54785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
54795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
54805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
54815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
54825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
54835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*) func_stripname '-L' '' "$deplib"
54845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         newlib_search_path="$newlib_search_path $func_stripname_result"
54855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 ;;
54865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
54875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Need to link against all dependency_libs?
54885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkalldeplibs" = yes; then
54895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplib $deplibs"
54905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
54915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Need to hardcode shared library paths
54925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # or/and link against static libraries
54935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdependency_libs="$deplib $newdependency_libs"
54945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
54955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
54965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
54975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
54985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
54995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
55015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # for deplib
55025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  continue
55035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # $linkmode = prog...
55045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" = "prog,link"; then
55065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$library_names" &&
55075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { { test "$prefer_static_libs" = no ||
55085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         test "$prefer_static_libs,$installed" = "built,yes"; } ||
55095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test -z "$old_library"; }; then
55105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We need to hardcode the library path
55115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
55125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Make sure the rpath contains only unique directories.
55135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$temp_rpath:" in
55145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$absdir:"*) ;;
55155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) temp_rpath="$temp_rpath$absdir:" ;;
55165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Hardcode the library path.
55205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Skip directories that are in the system default run-time
55215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # search path.
55225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $absdir "*) ;;
55245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$compile_rpath " in
55265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $absdir "*) ;;
55275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_rpath="$compile_rpath $absdir"
55285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
55305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
55315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $libdir "*) ;;
55335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$finalize_rpath " in
55355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
55365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_rpath="$finalize_rpath $libdir"
55375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
55385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
55395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
55405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # $linkmode,$pass = prog,link...
55415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$alldeplibs" = yes &&
55435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { test "$deplibs_check_method" = pass_all ||
55445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       { test "$build_libtool_libs" = yes &&
55455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test -n "$library_names"; }; }; then
55465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We only need to search for static libraries
55475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    continue
55485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
55495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
55505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_static=no # Whether the deplib will be linked statically
55525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	use_static_libs=$prefer_static_libs
55535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$use_static_libs" = built && test "$installed" = yes; then
55545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  use_static_libs=no
55555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
55565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$library_names" &&
55575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
55585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
55595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* | *cegcc*)
55605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # No point in relinking DLLs because paths are not encoded
55615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      notinst_deplibs="$notinst_deplibs $lib"
55625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      need_relink=no
55635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
55645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
55655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$installed" = no; then
55665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      notinst_deplibs="$notinst_deplibs $lib"
55675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      need_relink=yes
55685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
55705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
55715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This is a shared library
55725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Warn about portability, can't link against -module's on some
55745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # systems (darwin).  Don't bleat about dlopened modules though!
55755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlopenmodule=""
55765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dlpremoduletest in $dlprefiles; do
55775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$dlpremoduletest" = "X$lib"; then
55785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      dlopenmodule="$dlpremoduletest"
55795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
55805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
55825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then
55835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
55845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
55855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: Linking the executable $output against the loadable module"
55865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
55875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: Linking the shared library $output against the loadable module"
55885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
55895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** $linklib is not portable!"
55905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
55915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = lib &&
55925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$hardcode_into_libs" = yes; then
55935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Hardcode the library path.
55945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Skip directories that are in the system default run-time
55955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # search path.
55965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
55975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $absdir "*) ;;
55985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
55995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$compile_rpath " in
56005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $absdir "*) ;;
56015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_rpath="$compile_rpath $absdir"
56025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
56045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
56055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $sys_lib_dlsearch_path " in
56065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $libdir "*) ;;
56075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
56085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$finalize_rpath " in
56095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
56105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_rpath="$finalize_rpath $libdir"
56115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
56135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
56145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
56155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$old_archive_from_expsyms_cmds"; then
56175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # figure out the soname
56185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    set dummy $library_names
56195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
56205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    realname="$1"
56215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
56225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libname=`eval "\\$ECHO \"$libname_spec\""`
56235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # use dlname if we got it. it's perfectly good, no?
56245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$dlname"; then
56255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      soname="$dlname"
56265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test -n "$soname_spec"; then
56275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # bleh windows
56285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $host in
56295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *cygwin* | mingw* | *cegcc*)
56305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_arith $current - $age
56315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		major=$func_arith_result
56325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		versuffix="-$major"
56335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
56345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
56355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval soname=\"$soname_spec\"
56365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
56375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      soname="$realname"
56385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Make a new name for the extract_expsyms_cmds to use
56415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    soroot="$soname"
56425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_basename "$soroot"
56435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    soname="$func_basename_result"
56445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname 'lib' '.dll' "$soname"
56455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newlib=libimp-$func_stripname_result.a
56465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # If the library has no export list, then create one now
56485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$output_objdir/$soname-def"; then :
56495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
56505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "extracting exported symbol list from \`$soname'"
56515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$extract_expsyms_cmds" 'exit $?'
56525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Create $newlib
56555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -f "$output_objdir/$newlib"; then :; else
56565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "generating import library for \`$soname'"
56575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?'
56585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
56595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # make sure the library variables are pointing to the new library
56605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dir=$output_objdir
56615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    linklib=$newlib
56625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # test -n "$old_archive_from_expsyms_cmds"
56635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
56645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = prog || test "$mode" != relink; then
56655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_shlibpath=
56665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_dir=
56675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add=
56685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lib_linked=yes
56695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $hardcode_action in
56705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    immediate | unsupported)
56715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" = no; then
56725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$dir/$linklib"
56735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
56745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
56755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
56765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
56775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *-*-unixware7*) add_dir="-L$dir" ;;
56785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *-*-darwin* )
56795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # if the lib is a (non-dlopened) module then we can not
56805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # link against it, someone is ignoring the earlier warnings
56815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if /usr/bin/file -L $add 2> /dev/null |
56825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $GREP ": [^:]* bundle" >/dev/null ; then
56835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if test "X$dlopenmodule" != "X$lib"; then
56845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			$ECHO "*** Warning: lib $linklib is a module, not a shared library"
56855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			if test -z "$old_library" ; then
56865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO
56875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO "*** And there doesn't seem to be a static archive available"
56885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  $ECHO "*** The link will probably fail, sorry"
56895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			else
56905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			  add="$dir/$old_library"
56915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			fi
56925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      elif test -n "$old_library"; then
56935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			add="$dir/$old_library"
56945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
56955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
56965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
56975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_minus_L" = no; then
56985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
56995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*-*-sunos*) add_shlibpath="$dir" ;;
57005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_dir="-L$dir"
57025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_shlibpath_var" = no; then
57045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_shlibpath="$dir"
57055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lib_linked=no
57085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
57105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink)
57115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" = yes &&
57125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         test "$hardcode_direct_absolute" = no; then
57135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$dir/$linklib"
57145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_minus_L" = yes; then
57155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_dir="-L$dir"
57165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Try looking first in the location we're being installed to.
57175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -n "$inst_prefix_dir"; then
57185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case $libdir in
57195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    [\\/]*)
57205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
57215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      ;;
57225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
57235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
57245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      elif test "$hardcode_shlibpath_var" = yes; then
57265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add_shlibpath="$dir"
57275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="-l$name"
57285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lib_linked=no
57305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
57325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) lib_linked=no ;;
57335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
57345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$lib_linked" != yes; then
57365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_fatal_configuration "unsupported hardcode properties"
57375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$add_shlibpath"; then
57405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case :$compile_shlibpath: in
57415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *":$add_shlibpath:"*) ;;
57425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;;
57435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
57445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
57465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs"
57475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && compile_deplibs="$add $compile_deplibs"
57485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
57495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
57505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && deplibs="$add $deplibs"
57515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$hardcode_direct" != yes &&
57525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test "$hardcode_minus_L" != yes &&
57535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test "$hardcode_shlibpath_var" = yes; then
57545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case :$finalize_shlibpath: in
57555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*":$libdir:"*) ;;
57565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
57615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
57625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$linkmode" = prog || test "$mode" = relink; then
57635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_shlibpath=
57645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add_dir=
57655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    add=
57665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Finalize command for both is simple: just hardcode it.
57675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$hardcode_direct" = yes &&
57685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$hardcode_direct_absolute" = no; then
57695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="$libdir/$linklib"
57705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_minus_L" = yes; then
57715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add_dir="-L$libdir"
57725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_shlibpath_var" = yes; then
57745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case :$finalize_shlibpath: in
57755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *":$libdir:"*) ;;
57765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
57775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
57785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test "$hardcode_automatic" = yes; then
57805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$inst_prefix_dir" &&
57815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 test -f "$inst_prefix_dir$libdir/$linklib" ; then
57825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$inst_prefix_dir$libdir/$linklib"
57835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
57845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		add="$libdir/$linklib"
57855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
57875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # We cannot seem to hardcode it, guess we'll fake it.
57885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add_dir="-L$libdir"
57895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Try looking first in the location we're being installed to.
57905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$inst_prefix_dir"; then
57915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $libdir in
57925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  [\\/]*)
57935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
57945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
57955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
57965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
57975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      add="-l$name"
57985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
57995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$linkmode" = prog; then
58015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs"
58025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && finalize_deplibs="$add $finalize_deplibs"
58035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
58045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add_dir" && deplibs="$add_dir $deplibs"
58055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$add" && deplibs="$add $deplibs"
58065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$linkmode" = prog; then
58095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Here we assume that one of hardcode_direct or hardcode_minus_L
58105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # is not unsupported.  This is valid on all known static and
58115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # shared platforms.
58125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$hardcode_direct" != unsupported; then
58135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$old_library" && linklib="$old_library"
58145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="$dir/$linklib $compile_deplibs"
58155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="$dir/$linklib $finalize_deplibs"
58165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
58175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    compile_deplibs="-l$name -L$dir $compile_deplibs"
58185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    finalize_deplibs="-l$name -L$dir $finalize_deplibs"
58195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test "$build_libtool_libs" = yes; then
58215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Not a shared library
58225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$deplibs_check_method" != pass_all; then
58235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We're trying link a shared library against a static one
58245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # but the system doesn't support it.
58255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Just print a warning and add the library to dependency_libs so
58275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # that the program can be linked against the static library.
58285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
58295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** Warning: This system can not link to static lib archive $lib."
58305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** I have the capability to make that library automatically link in when"
58315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** you link to this library.  But I can only do this if you have a"
58325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** shared version of the library, which you do not appear to have."
58335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$module" = yes; then
58345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** But as you try to build a module library, libtool will still create "
58355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** a static module, that should work as long as the dlopening application"
58365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime."
58375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -z "$global_symbol_pipe"; then
58385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
58395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** However, this would only work if libtool was able to extract symbol"
58405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
58415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** not find such a program.  So, this module is probably useless."
58425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
58435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_old_libs" = no; then
58455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=module
58465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_old_libs=yes
58475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
58485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=no
58495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
58505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
58525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$dir/$old_library $deplibs"
58535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    link_static=yes
58545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # link shared/static library?
58565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = lib; then
58585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$dependency_libs" &&
58595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     { test "$hardcode_into_libs" != yes ||
58605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$build_old_libs" = yes ||
58615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       test "$link_static" = yes; }; then
58625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Extract -R from dependency_libs
58635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    temp_deplibs=
58645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for libdir in $dependency_libs; do
58655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $libdir in
58665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -R*) func_stripname '-R' '' "$libdir"
58675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	           temp_xrpath=$func_stripname_result
58685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   case " $xrpath " in
58695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   *" $temp_xrpath "*) ;;
58705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   *) xrpath="$xrpath $temp_xrpath";;
58715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   esac;;
58725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) temp_deplibs="$temp_deplibs $libdir";;
58735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
58745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
58755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dependency_libs="$temp_deplibs"
58765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
58775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path="$newlib_search_path $absdir"
58795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Link against this library
58805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs"
58815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # ... and its dependency_libs
58825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
58835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $dependency_libs; do
58845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs="$deplib $newdependency_libs"
58855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if $opt_duplicate_deps ; then
58865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$tmp_libs " in
58875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
58885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
58895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
58905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_libs="$tmp_libs $deplib"
58915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
58925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
58935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$link_all_deplibs" != no; then
58945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add the search paths of all dependency libraries
58955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for deplib in $dependency_libs; do
58965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplib in
58975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -L*) path="$deplib" ;;
58985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
58995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_dirname "$deplib" "" "."
59005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dir="$func_dirname_result"
59015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# We need an absolute path.
59025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $dir in
59035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
59045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*)
59055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  absdir=`cd "$dir" && pwd`
59065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -z "$absdir"; then
59075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_warning "cannot determine absolute directory name of \`$dir'"
59085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    absdir="$dir"
59095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
59105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
59125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $GREP "^installed=no" $deplib > /dev/null; then
59135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case $host in
59145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*-*-darwin*)
59155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  depdepl=
59165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
59175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -n "$deplibrary_names" ; then
59185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    for tmp in $deplibrary_names ; do
59195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      depdepl=$tmp
59205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    done
59215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test -f "$absdir/$objdir/$depdepl" ; then
59225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      depdepl="$absdir/$objdir/$depdepl"
59235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'`
59245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      if test -z "$darwin_install_name"; then
59255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          darwin_install_name=`${OTOOL64} -L $depdepl  | awk '{if (NR == 2) {print $1;exit}}'`
59265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      fi
59275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}"
59285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}"
59295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      path=
59305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
59315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
59325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*)
59345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  path="-L$absdir/$objdir"
59355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
59365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
59375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
59385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
59395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  test -z "$libdir" && \
59405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_fatal_error "\`$deplib' is not a valid libtool archive"
59415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  test "$absdir" != "$libdir" && \
59425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    func_warning "\`$deplib' seems to be moved"
59435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  path="-L$absdir"
59455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
59465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
59475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
59485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $deplibs " in
59495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $path "*) ;;
59505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) deplibs="$path $deplibs" ;;
59515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
59525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
59535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi # link_all_deplibs != no
59545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi # linkmode = lib
59555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done # for deplib in $libs
59565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = link; then
59575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode" = "prog"; then
59585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_deplibs="$new_inherited_linker_flags $compile_deplibs"
59595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs"
59605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
59615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
59625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
59645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dependency_libs="$newdependency_libs"
59655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" = dlpreopen; then
59665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Link the dlpreopened libraries before other libraries
59675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for deplib in $save_deplibs; do
59685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs="$deplib $deplibs"
59695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
59705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
59715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$pass" != dlopen; then
59725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$pass" != conv; then
59735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make sure lib_search_path contains only unique directories.
59745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  lib_search_path=
59755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $newlib_search_path; do
59765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "$lib_search_path " in
59775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dir "*) ;;
59785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) lib_search_path="$lib_search_path $dir" ;;
59795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
59805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
59815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newlib_search_path=
59825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
59845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$linkmode,$pass" != "prog,link"; then
59855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  vars="deplibs"
59865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
59875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  vars="compile_deplibs finalize_deplibs"
59885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
59895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for var in $vars dependency_libs; do
59905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add libraries to $var in reverse order
59915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval tmp_libs=\"\$$var\"
59925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  new_libs=
59935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $tmp_libs; do
59945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # FIXME: Pedantically, this is the right thing to do, so
59955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #        that some nasty dependency loop isn't accidentally
59965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #        broken:
59975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    #new_libs="$deplib $new_libs"
59985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Pragmatically, this seems to cause very few problems in
59995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # practice:
60005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
60015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*) new_libs="$deplib $new_libs" ;;
60025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -R*) ;;
60035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
60045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # And here is the reason: when a library appears more
60055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # than once as an explicit dependence of a library, or
60065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # is implicitly linked in more than once by the
60075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # compiler, it is considered special, and multiple
60085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # occurrences thereof are not removed.  Compare this
60095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # with having the same library being listed as a
60105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # dependency of multiple other libraries: in this case,
60115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # we know (pedantically, we assume) the library does not
60125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # need to be listed more than once, so we keep only the
60135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # last copy.  This is not always right, but it is rare
60145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # enough that we require users that really mean to play
60155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # such unportable linking tricks to link the library
60165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # using -Wl,-lname, so that libtool does not consider it
60175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # for duplicate removal.
60185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $specialdeplibs " in
60195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) new_libs="$deplib $new_libs" ;;
60205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
60215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $new_libs " in
60225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $deplib "*) ;;
60235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) new_libs="$deplib $new_libs" ;;
60245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
60255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
60265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
60275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
60285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
60295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
60305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs=
60315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for deplib in $new_libs; do
60325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $deplib in
60335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -L*)
60345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case " $tmp_libs " in
60355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $deplib "*) ;;
60365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) tmp_libs="$tmp_libs $deplib" ;;
60375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
60385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
60395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) tmp_libs="$tmp_libs $deplib" ;;
60405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
60415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
60425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval $var=\"$tmp_libs\"
60435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done # for var
60445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
60455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Last step: remove runtime libs from dependency_libs
60465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # (they stay in deplibs)
60475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      tmp_libs=
60485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for i in $dependency_libs ; do
60495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $predeps $postdeps $compiler_lib_search_path " in
60505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $i "*)
60515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  i=""
60525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
60535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
60545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$i" ; then
60555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_libs="$tmp_libs $i"
60565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
60575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
60585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dependency_libs=$tmp_libs
60595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done # for pass
60605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = prog; then
60615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlfiles="$newdlfiles"
60625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
60635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if test "$linkmode" = prog || test "$linkmode" = lib; then
60645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlprefiles="$newdlprefiles"
60655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    fi
60665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $linkmode in
60685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    oldlib)
60695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
60705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for archives"
60715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
60725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case " $deplibs" in
60745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *\ -l* | *\ -L*)
60755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-l' and \`-L' are ignored for archives" ;;
60765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
60775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$rpath" && \
60795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-rpath' is ignored for archives"
60805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$xrpath" && \
60825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-R' is ignored for archives"
60835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
60855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info/-version-number' is ignored for archives"
60865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
60885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for archives"
60895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$export_symbols$export_symbols_regex" && \
60915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-export-symbols' is ignored for archives"
60925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now set the variables for building old libraries.
60945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      build_libtool_libs=no
60955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlibs="$output"
60965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      objs="$objs$old_deplibs"
60975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
60985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    lib)
61005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure we only generate libraries of the form `libNAME.la'.
61015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $outputname in
61025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      lib*)
61035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_stripname 'lib' '.la' "$outputname"
61045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$func_stripname_result
61055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval shared_ext=\"$shrext_cmds\"
61065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval libname=\"$libname_spec\"
61075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
61085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
61095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$module" = no && \
61105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "libtool library \`$output' must begin with \`lib'"
61115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$need_lib_prefix" != no; then
61135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add the "lib" prefix for modules if required
61145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '' '.la' "$outputname"
61155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  name=$func_stripname_result
61165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval shared_ext=\"$shrext_cmds\"
61175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval libname=\"$libname_spec\"
61185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
61195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_stripname '' '.la' "$outputname"
61205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libname=$func_stripname_result
61215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
61235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
61245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$objs"; then
61265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$deplibs_check_method" != pass_all; then
61275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs"
61285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
61295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO
61305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "*** Warning: Linking the shared library $output against the non-libtool"
61315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "*** objects $objs is not portable!"
61325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs="$libobjs $objs"
61335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
61355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$dlself" != no && \
61375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen self' is ignored for libtool libraries"
61385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      set dummy $rpath
61405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      shift
61415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$#" -gt 1 && \
61425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "ignoring multiple \`-rpath's for a libtool library"
61435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      install_libdir="$1"
61455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      oldlibs=
61475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$rpath"; then
61485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_libtool_libs" = yes; then
61495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Building a libtool convenience library.
61505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Some compilers have problems with a `.al' extension so
61515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # convenience libraries should have the same extension an
61525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # archive normally would.
61535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldlibs="$output_objdir/$libname.$libext $oldlibs"
61545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_libtool_libs=convenience
61555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_old_libs=yes
61565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
61575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$vinfo" && \
61595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-version-info/-version-number' is ignored for convenience libraries"
61605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$release" && \
61625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`-release' is ignored for convenience libraries"
61635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
61645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Parse the version information argument.
61665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS=':'
61675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $vinfo 0 0 0
61685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
61695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
61705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$7" && \
61725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_help "too many parameters to \`-version-info'"
61735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# convert absolute version numbers to libtool ages
61755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# this retains compatibility with .la files and attempts
61765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to make the code below a bit more comprehensible
61775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
61785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $vinfo_number in
61795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	yes)
61805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_major="$1"
61815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_minor="$2"
61825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  number_revision="$3"
61835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
61845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # There are really only two kinds -- those that
61855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # use the current revision as the major version
61865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # and those that subtract age and use age as
61875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # a minor version.  But, then there is irix
61885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # which has an extra 1 added just for fun
61895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  #
61905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
61915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin|linux|osf|windows|none)
61925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $number_major + $number_minor
61935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current=$func_arith_result
61945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="$number_minor"
61955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_revision"
61965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
61975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  freebsd-aout|freebsd-elf|sunos)
61985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current="$number_major"
61995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_minor"
62005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="0"
62015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  irix|nonstopux)
62035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $number_major + $number_minor
62045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    current=$func_arith_result
62055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    age="$number_minor"
62065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    revision="$number_minor"
62075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_irix_increment=no
62085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
62095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
62105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	no)
62125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  current="$1"
62135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  revision="$2"
62145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  age="$3"
62155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check that each of the things are valid numbers.
62195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $current in
62205821806d5e7f356e8fa4b058a389a808ea183019Torne (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]) ;;
62215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
62225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "CURRENT \`$current' must be a nonnegative integer"
62235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $revision in
62285821806d5e7f356e8fa4b058a389a808ea183019Torne (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]) ;;
62295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
62305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "REVISION \`$revision' must be a nonnegative integer"
62315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $age in
62365821806d5e7f356e8fa4b058a389a808ea183019Torne (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]) ;;
62375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
62385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "AGE \`$age' must be a nonnegative integer"
62395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
62425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$age" -gt "$current"; then
62445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_error "AGE \`$age' is greater than the current interface number \`$current'"
62455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "\`$vinfo' is not valid version information"
62465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
62475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Calculate the version variables.
62495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major=
62505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix=
62515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	verstring=
62525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $version_type in
62535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	none) ;;
62545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	darwin)
62565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Like Linux, but with the current version available in
62575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # verstring for coding it into the library header
62585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
62595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$func_arith_result
62605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="$major.$age.$revision"
62615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Darwin ld doesn't like 0 for these options...
62625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current + 1
62635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  minor_current=$func_arith_result
62645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
62655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
62665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	freebsd-aout)
62695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
62705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current.$revision";
62715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	freebsd-elf)
62745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
62755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current"
62765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
62775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	irix | nonstopux)
62795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "X$lt_irix_increment" = "Xno"; then
62805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $current - $age
62815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
62825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $current - $age + 1
62835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
62845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=$func_arith_result
62855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
62875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    nonstopux) verstring_prefix=nonstopux ;;
62885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)         verstring_prefix=sgi ;;
62895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
62905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="$verstring_prefix$major.$revision"
62915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
62925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add in all the interfaces that we are compatible with.
62935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  loop=$revision
62945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  while test "$loop" -ne 0; do
62955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $revision - $loop
62965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    iface=$func_arith_result
62975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $loop - 1
62985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    loop=$func_arith_result
62995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring="$verstring_prefix$major.$iface:$verstring"
63005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
63015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Before this point, $major must not contain `.'.
63035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$major
63045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="$major.$revision"
63055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linux)
63085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
63095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$func_arith_result
63105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="$major.$age.$revision"
63115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	osf)
63145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
63155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=.$func_arith_result
63165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current.$age.$revision"
63175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="$current.$age.$revision"
63185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add in all the interfaces that we are compatible with.
63205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  loop=$age
63215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  while test "$loop" -ne 0; do
63225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $current - $loop
63235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    iface=$func_arith_result
63245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $loop - 1
63255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    loop=$func_arith_result
63265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring="$verstring:${iface}.0"
63275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
63285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Make executables depend on our current version.
63305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring="$verstring:${current}.0"
63315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	qnx)
63345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
63355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current"
63365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	sunos)
63395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=".$current"
63405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=".$current.$revision"
63415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	windows)
63445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Use '-' rather than '.', since we only want one
63455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # extension on DOS 8.3 filesystems.
63465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_arith $current - $age
63475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=$func_arith_result
63485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix="-$major"
63495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
63525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_configuration "unknown library version type \`$version_type'"
63535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
63545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
63555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Clear the version info if we defaulted, and they specified a release.
63575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$vinfo" && test -n "$release"; then
63585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=
63595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $version_type in
63605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  darwin)
63615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # we can't check for "0.0" in archive_cmds due to quoting
63625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # problems, so we reset it completely
63635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring=
63645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
63655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
63665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    verstring="0.0"
63675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
63685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
63695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$need_version" = no; then
63705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    versuffix=
63715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
63725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    versuffix=".0.0"
63735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
63745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
63755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Remove version info from name if versioning should be avoided
63775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$avoid_version" = yes && test "$need_version" = no; then
63785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  major=
63795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  versuffix=
63805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  verstring=""
63815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
63825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Check to see if the archive will have undefined symbols.
63845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$allow_undefined" = yes; then
63855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$allow_undefined_flag" = unsupported; then
63865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_warning "undefined symbols not allowed in $host shared libraries"
63875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    build_libtool_libs=no
63885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    build_old_libs=yes
63895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
63905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
63915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Don't allow undefined symbols.
63925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  allow_undefined_flag="$no_undefined_flag"
63935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
63945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
63965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
63975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_generate_dlsyms "$libname" "$libname" "yes"
63985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      libobjs="$libobjs $symfileobj"
63995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "X$libobjs" = "X " && libobjs=
64005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$mode" != relink; then
64025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Remove our outputs, but don't remove object files since they
64035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# may have been created when compiling PIC objects.
64045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	removelist=
64055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	tempremovelist=`$ECHO "$output_objdir/*"`
64065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for p in $tempremovelist; do
64075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $p in
64085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *.$objext | *.gcno)
64095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       ;;
64105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*)
64115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       if test "X$precious_files_regex" != "X"; then
64125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1
64135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 then
64145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   continue
64155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		 fi
64165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       fi
64175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       removelist="$removelist $p"
64185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	       ;;
64195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) ;;
64205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
64215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
64225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$removelist" && \
64235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval "${RM}r \$removelist"
64245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now set the variables for building old libraries.
64275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
64285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldlibs="$oldlibs $output_objdir/$libname.$libext"
64295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform .lo files to .o files.
64315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
64325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Eliminate all temporary directories.
64355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #for path in $notinst_path; do
64365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #	lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"`
64375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #	deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"`
64385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #	dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"`
64395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      #done
64405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$xrpath"; then
64425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the user specified any rpath flags, then add them.
64435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	temp_xrpath=
64445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for libdir in $xrpath; do
64455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  temp_xrpath="$temp_xrpath -R$libdir"
64465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$finalize_rpath " in
64475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
64485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) finalize_rpath="$finalize_rpath $libdir" ;;
64495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
64505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
64515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then
64525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dependency_libs="$temp_xrpath $dependency_libs"
64535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
64545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
64555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure dlfiles contains only unique files that won't be dlpreopened
64575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_dlfiles="$dlfiles"
64585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlfiles=
64595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for lib in $old_dlfiles; do
64605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $dlprefiles $dlfiles " in
64615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $lib "*) ;;
64625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) dlfiles="$dlfiles $lib" ;;
64635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
64645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
64655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Make sure dlprefiles contains only unique files
64675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_dlprefiles="$dlprefiles"
64685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlprefiles=
64695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for lib in $old_dlprefiles; do
64705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case "$dlprefiles " in
64715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" $lib "*) ;;
64725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) dlprefiles="$dlprefiles $lib" ;;
64735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
64745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
64755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
64765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" = yes; then
64775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$rpath"; then
64785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host in
64795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*)
64805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # these systems don't actually have a c library (as such)!
64815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-rhapsody* | *-*-darwin1.[012])
64835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Rhapsody C library is in the System framework
64845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    deplibs="$deplibs System.ltframework"
64855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-netbsd*)
64875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Don't link with libc until the a.out ld.so is fixed.
64885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
64905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Do not include libc due to us having libc/libc_r.
64915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sco3.2v5* | *-*-sco5v6*)
64935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Causes problems with __ctype
64945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
64965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Compiler inserts libc in the correct place for threads to work
64975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
64985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
64995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Add libc to deplibs on all other systems if necessary.
65005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$build_libtool_need_lc" = "yes"; then
65015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      deplibs="$deplibs -lc"
65025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
65035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
65045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
65055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
65065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
65075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform deplibs into only deplibs that can be linked in shared.
65085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name_save=$name
65095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libname_save=$libname
65105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release_save=$release
65115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix_save=$versuffix
65125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major_save=$major
65135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# I'm not sure if I'm treating the release correctly.  I think
65145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# release should show up in the -l (ie -lgmp5) so we don't want to
65155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# add it in twice.  Is that correct?
65165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release=""
65175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix=""
65185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major=""
65195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	newdeplibs=
65205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	droppeddeps=no
65215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplibs_check_method in
65225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	pass_all)
65235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Don't check for shared/static.  Everything works.
65245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This might be a little naive.  We might want to check
65255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # whether the library exists or not.  But this is on
65265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # osf3 & osf4 and I'm not really sure... Just
65275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # implementing what was already the behavior.
65285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=$deplibs
65295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
65305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test_compile)
65315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This code stresses the "libraries are programs" paradigm to its
65325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # limits. Maybe even breaks it.  We compile a program, linking it
65335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # against the deplibs as a proxy for the library.  Then we can check
65345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # whether they linked in statically or dynamically with ldd.
65355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $RM conftest.c
65365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cat > conftest.c <<EOF
65375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  int main() { return 0; }
65385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)EOF
65395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $RM conftest
65405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
65415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ldd_output=`ldd conftest`
65425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for i in $deplibs; do
65435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $i in
65445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -l*)
65455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_stripname -l '' "$i"
65465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name=$func_stripname_result
65475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case " $predeps $postdeps " in
65495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *" $i "*)
65505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    newdeplibs="$newdeplibs $i"
65515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    i=""
65525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
65535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
65545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
65555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -n "$i" ; then
65565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  libname=`eval "\\$ECHO \"$libname_spec\""`
65575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
65585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  set dummy $deplib_matches; shift
65595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  deplib_match=$1
65605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
65615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    newdeplibs="$newdeplibs $i"
65625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  else
65635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    droppeddeps=yes
65645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO
65655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** Warning: dynamic linker does not accept needed library $i."
65665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** I have the capability to make that library automatically link in when"
65675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** you link to this library.  But I can only do this if you have a"
65685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** shared version of the library, which I believe you do not have"
65695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** because a test_compile did reveal that the linker did not use it for"
65705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $ECHO "*** its dynamic dependency list that programs get resolved with at runtime."
65715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
65725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
65735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
65745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
65755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdeplibs="$newdeplibs $i"
65765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
65775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
65785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
65795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
65805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Error occurred in the first compile.  Let's try to salvage
65815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # the situation: Compile a separate program for each library.
65825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for i in $deplibs; do
65835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $i in
65845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -l*)
65855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_stripname -l '' "$i"
65865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name=$func_stripname_result
65875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$opt_dry_run || $RM conftest
65885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
65895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ldd_output=`ldd conftest`
65905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
65915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    case " $predeps $postdeps " in
65925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    *" $i "*)
65935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      newdeplibs="$newdeplibs $i"
65945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      i=""
65955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      ;;
65965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    esac
65975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
65985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test -n "$i" ; then
65995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    libname=`eval "\\$ECHO \"$libname_spec\""`
66005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    deplib_matches=`eval "\\$ECHO \"$library_names_spec\""`
66015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    set dummy $deplib_matches; shift
66025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    deplib_match=$1
66035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
66045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      newdeplibs="$newdeplibs $i"
66055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    else
66065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      droppeddeps=yes
66075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO
66085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** Warning: dynamic linker does not accept needed library $i."
66095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** I have the capability to make that library automatically link in when"
66105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** you link to this library.  But I can only do this if you have a"
66115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** shared version of the library, which you do not appear to have"
66125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** because a test_compile did reveal that the linker did not use this one"
66135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      $ECHO "*** as a dynamic dependency that programs can get resolved with at runtime."
66145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
66155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
66165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
66175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  droppeddeps=yes
66185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO
66195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** Warning!  Library $i is needed by this library but I was not able to"
66205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** make it link in!  You will probably need to install it or some"
66215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** library that it depends on before this library will be fully"
66225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** functional.  Installing it before continuing would be even better."
66235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
66245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
66255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
66265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdeplibs="$newdeplibs $i"
66275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
66285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
66295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
66305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
66315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
66325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	file_magic*)
66335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  set dummy $deplibs_check_method; shift
66345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
66355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for a_deplib in $deplibs; do
66365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $a_deplib in
66375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -l*)
66385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname -l '' "$a_deplib"
66395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      name=$func_stripname_result
66405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
66415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $predeps $postdeps " in
66425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $a_deplib "*)
66435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  newdeplibs="$newdeplibs $a_deplib"
66445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  a_deplib=""
66455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
66465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
66475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
66485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
66495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		libname=`eval "\\$ECHO \"$libname_spec\""`
66505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
66515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
66525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for potent_lib in $potential_libs; do
66535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # Follow soft links.
66545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if ls -lLd "$potent_lib" 2>/dev/null |
66555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $GREP " -> " >/dev/null; then
66565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			continue
66575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
66585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # The statement above tries to avoid entering an
66595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # endless loop below, in case of cyclic links.
66605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # We might still enter an endless loop, since a link
66615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # loop can be closed while we follow links,
66625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      # but so what?
66635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      potlib="$potent_lib"
66645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      while test -h "$potlib" 2>/dev/null; do
66655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'`
66665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			case $potliblink in
66675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";;
66685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
66695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			esac
66705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      done
66715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      if eval $file_magic_cmd \"\$potlib\" 2>/dev/null |
66725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $SED -e 10q |
66735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			 $EGREP "$file_magic_regex" > /dev/null; then
66745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			newdeplibs="$newdeplibs $a_deplib"
66755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			a_deplib=""
66765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			break 2
66775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      fi
66785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
66795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		done
66805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
66815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
66825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		droppeddeps=yes
66835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
66845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
66855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
66865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
66875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
66885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because I did check the linker path looking for a file starting"
66895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$potlib" ; then
66905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname but no candidates were found. (...for file magic test)"
66915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
66925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname and none of the candidates passed a file format test"
66935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** using a file magic. Last file checked: $potlib"
66945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
66955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
66965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
66975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
66985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Add a -L argument.
66995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdeplibs="$newdeplibs $a_deplib"
67005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
67025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # Gone through all deplibs.
67035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	match_pattern*)
67055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  set dummy $deplibs_check_method; shift
67065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"`
67075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for a_deplib in $deplibs; do
67085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case $a_deplib in
67095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    -l*)
67105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_stripname -l '' "$a_deplib"
67115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      name=$func_stripname_result
67125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $predeps $postdeps " in
67145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*" $a_deplib "*)
67155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  newdeplibs="$newdeplibs $a_deplib"
67165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  a_deplib=""
67175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ;;
67185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
67195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
67215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		libname=`eval "\\$ECHO \"$libname_spec\""`
67225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do
67235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  potential_libs=`ls $i/$libname[.-]* 2>/dev/null`
67245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  for potent_lib in $potential_libs; do
67255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    potlib="$potent_lib" # see symlink-check above in file_magic test
67265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \
67275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		       $EGREP "$match_pattern_regex" > /dev/null; then
67285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      newdeplibs="$newdeplibs $a_deplib"
67295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      a_deplib=""
67305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		      break 2
67315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    fi
67325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  done
67335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		done
67345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$a_deplib" ; then
67365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		droppeddeps=yes
67375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO
67385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** Warning: linker path does not have real file for library $a_deplib."
67395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** I have the capability to make that library automatically link in when"
67405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** you link to this library.  But I can only do this if you have a"
67415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** shared version of the library, which you do not appear to have"
67425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$ECHO "*** because I did check the linker path looking for a file starting"
67435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$potlib" ; then
67445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)"
67455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
67465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** with $libname and none of the candidates passed a file format test"
67475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  $ECHO "*** using a regex pattern. Last file checked: $potlib"
67485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
67495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
67505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *)
67525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Add a -L argument.
67535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdeplibs="$newdeplibs $a_deplib"
67545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
67555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
67565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done # Gone through all deplibs.
67575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	none | unknown | *)
67595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=""
67605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \
67615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'`
67625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
67635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for i in $predeps $postdeps ; do
67645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # can't use Xsed below, because $i might contain '/'
67655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"`
67665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
67675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
67685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[	 ]//g' |
67695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     $GREP . >/dev/null; then
67705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
67715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$deplibs_check_method" = "Xnone"; then
67725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: inter-library dependencies are not supported in this platform."
67735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
67745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Warning: inter-library dependencies are not known to be supported."
67755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
67765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** All declared inter-library dependencies are being dropped."
67775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    droppeddeps=yes
67785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
67795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
67815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	versuffix=$versuffix_save
67825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	major=$major_save
67835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	release=$release_save
67845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libname=$libname_save
67855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	name=$name_save
67865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
67875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
67885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-rhapsody* | *-*-darwin1.[012])
67895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # On Rhapsody replace the C library with the System framework
67905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
67915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
67925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
67935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
67945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$droppeddeps" = yes; then
67955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$module" = yes; then
67965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO
67975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** Warning: libtool could not satisfy all declared inter-library"
67985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** dependencies of module $libname.  Therefore, libtool will create"
67995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** a static module, that should work as long as the dlopening"
68005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** application is linked with the -dlopen flag."
68015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$global_symbol_pipe"; then
68025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO
68035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** However, this would only work if libtool was able to extract symbol"
68045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could"
68055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** not find such a program.  So, this module is probably useless."
68065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** \`nm' from GNU binutils and a full rebuild may help."
68075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
68085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$build_old_libs" = no; then
68095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      oldlibs="$output_objdir/$libname.$libext"
68105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      build_libtool_libs=module
68115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      build_old_libs=yes
68125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
68135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      build_libtool_libs=no
68145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
68155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
68165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** The inter-library dependencies that have been dropped here will be"
68175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** automatically added whenever a program is linked with this library"
68185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO "*** or is declared to -dlopen it."
68195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$allow_undefined" = no; then
68215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO
68225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** Since this library must not contain undefined symbols,"
68235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** because either the platform does not support them or"
68245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** it was explicitly requested with -no-undefined,"
68255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "*** libtool will only create a static version of it."
68265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$build_old_libs" = no; then
68275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		oldlibs="$output_objdir/$libname.$libext"
68285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=module
68295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_old_libs=yes
68305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
68315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		build_libtool_libs=no
68325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
68335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
68345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
68355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
68365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Done checking deplibs!
68375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs=$newdeplibs
68385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
68395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Time to change all our "foo.ltframework" stuff back to "-framework foo"
68405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
68415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-darwin*)
68425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
68455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
68465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
68475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # move library search paths that coincide with paths to not yet
68495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # installed libraries to the beginning of the library search list
68505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_libs=
68515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for path in $notinst_path; do
68525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $new_libs " in
68535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -L$path/$objdir "*) ;;
68545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
68555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $deplibs " in
68565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" -L$path/$objdir "*)
68575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    new_libs="$new_libs -L$path/$objdir" ;;
68585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
68595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
68605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
68615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
68625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $deplibs; do
68635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
68645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
68655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $new_libs " in
68665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $deplib "*) ;;
68675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) new_libs="$new_libs $deplib" ;;
68685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
68695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
68705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) new_libs="$new_libs $deplib" ;;
68715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
68725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
68735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      deplibs="$new_libs"
68745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # All the library-specific variables (install_libdir is set above).
68765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      library_names=
68775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_library=
68785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dlname=
68795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
68805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Test again, we may have decided not to build it any more
68815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" = yes; then
68825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$hardcode_into_libs" = yes; then
68835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Hardcode the library paths
68845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  hardcode_libdirs=
68855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dep_rpath=
68865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  rpath="$finalize_rpath"
68875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "$mode" != relink && rpath="$compile_rpath$rpath"
68885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for libdir in $rpath; do
68895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$hardcode_libdir_flag_spec"; then
68905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$hardcode_libdir_separator"; then
68915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test -z "$hardcode_libdirs"; then
68925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  hardcode_libdirs="$libdir"
68935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
68945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # Just accumulate the unique libdirs.
68955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
68965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
68975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
68985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  *)
68995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
69005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    ;;
69015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  esac
69025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
69035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
69045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval flag=\"$hardcode_libdir_flag_spec\"
69055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		dep_rpath="$dep_rpath $flag"
69065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
69075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    elif test -n "$runpath_var"; then
69085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case "$perm_rpath " in
69095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *" $libdir "*) ;;
69105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) perm_rpath="$perm_rpath $libdir" ;;
69115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
69125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
69135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
69145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Substitute the hardcoded libdirs into the rpath.
69155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$hardcode_libdir_separator" &&
69165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test -n "$hardcode_libdirs"; then
69175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libdir="$hardcode_libdirs"
69185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$hardcode_libdir_flag_spec_ld"; then
69195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
69205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
69215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval dep_rpath=\"$hardcode_libdir_flag_spec\"
69225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
69235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
69245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$runpath_var" && test -n "$perm_rpath"; then
69255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # We should set the runpath_var.
69265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath=
69275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for dir in $perm_rpath; do
69285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rpath="$rpath$dir:"
69295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
69305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var"
69315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
69325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs"
69335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shlibpath="$finalize_shlibpath"
69365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath"
69375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$shlibpath"; then
69385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var"
69395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Get the real and link names of the library.
69425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval shared_ext=\"$shrext_cmds\"
69435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval library_names=\"$library_names_spec\"
69445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	set dummy $library_names
69455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
69465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	realname="$1"
69475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	shift
69485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$soname_spec"; then
69505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval soname=\"$soname_spec\"
69515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
69525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  soname="$realname"
69535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$dlname"; then
69555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlname=$soname
69565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	lib="$output_objdir/$realname"
69595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	linknames=
69605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for link
69615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	do
69625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linknames="$linknames $link"
69635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
69645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Use standard objects if they are pic
69665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
69675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test "X$libobjs" = "X " && libobjs=
69685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	delfiles=
69705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$export_symbols" && test -n "$include_expsyms"; then
69715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp"
69725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols="$output_objdir/$libname.uexp"
69735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  delfiles="$delfiles $export_symbols"
69745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
69755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	orig_export_symbols=
69775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host_os in
69785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cygwin* | mingw* | cegcc*)
69795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols" && test -z "$export_symbols_regex"; then
69805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # exporting using user supplied symfile
69815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "x`$SED 1q $export_symbols`" != xEXPORTS; then
69825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # and it's NOT already a .def file. Must figure out
69835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # which of the given symbols are data symbols and tag
69845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # them as such. So, trigger use of export_symbols_cmds.
69855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # export_symbols gets reassigned inside the "prepare
69865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # the list of exported symbols" if statement, so the
69875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # include_expsyms logic still works.
69885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      orig_export_symbols="$export_symbols"
69895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_symbols=
69905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      always_export_symbols=yes
69915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
69925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
69935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
69945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
69955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
69965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Prepare the list of exported symbols
69975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -z "$export_symbols"; then
69985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
69995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "generating symbol list for \`$libname.la'"
70005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    export_symbols="$output_objdir/$libname.exp"
70015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || $RM $export_symbols
70025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$export_symbols_cmds
70035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_ifs="$IFS"; IFS='~'
70045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for cmd in $cmds; do
70055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      IFS="$save_ifs"
70065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval cmd=\"$cmd\"
70075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_len " $cmd"
70085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len=$func_len_result
70095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
70105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_show_eval "$cmd" 'exit $?'
70115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		skipped_export=false
70125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
70135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# The command line is too long to execute in one step.
70145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_verbose "using reloadable object file for export list..."
70155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		skipped_export=:
70165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Break out early, otherwise skipped_export may be
70175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# set to false by a later but shorter cmd.
70185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		break
70195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
70205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
70215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    IFS="$save_ifs"
70225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then
70235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
70245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
70255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
70265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$export_symbols" && test -n "$include_expsyms"; then
70305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tmp_export_symbols="$export_symbols"
70315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
70325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
70335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then
70365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The given exports_symbols file has to be filtered, so filter it.
70375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
70385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # FIXME: $output_objdir/$libname.filter potentially contains lots of
70395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # 's' commands which not all seds can handle. GNU sed should be fine
70405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # though. Also, the filter scales superlinearly with the number of
70415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # global variables. join(1) would be nice here, but unfortunately
70425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # isn't a blessed tool.
70435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
70445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
70455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  export_symbols=$output_objdir/$libname.def
70465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
70475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	tmp_deplibs=
70505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for test_deplib in $deplibs; do
70515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $convenience " in
70525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $test_deplib "*) ;;
70535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *)
70545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    tmp_deplibs="$tmp_deplibs $test_deplib"
70555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
70565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
70575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
70585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	deplibs="$tmp_deplibs"
70595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$convenience"; then
70615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$whole_archive_flag_spec" &&
70625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "$compiler_needs_object" = yes &&
70635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -z "$libobjs"; then
70645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # extract the archives, so we have objects to list.
70655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # TODO: could optimize this to just extract one archive.
70665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    whole_archive_flag_spec=
70675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$whole_archive_flag_spec"; then
70695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_libobjs=$libobjs
70705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
70715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$libobjs" = "X " && libobjs=
70725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
70735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    gentop="$output_objdir/${outputname}x"
70745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    generated="$generated $gentop"
70755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_extract_archives $gentop $convenience
70775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    libobjs="$libobjs $func_extract_archives_result"
70785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$libobjs" = "X " && libobjs=
70795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
70805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
70835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval flag=\"$thread_safe_flag_spec\"
70845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  linker_flags="$linker_flags $flag"
70855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Make a backup of the uninstalled library when relinking
70885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = relink; then
70895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $?
70905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
70915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
70925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Do each of the archive commands.
70935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$module" = yes && test -n "$module_cmds" ; then
70945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
70955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$module_expsym_cmds\"
70965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$module_expsym_cmds
70975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
70985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$module_cmds\"
70995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$module_cmds
71005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
71015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
71025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
71035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$archive_expsym_cmds\"
71045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$archive_expsym_cmds
71055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
71065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval test_cmds=\"$archive_cmds\"
71075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cmds=$archive_cmds
71085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
71095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
71105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "X$skipped_export" != "X:" &&
71125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   func_len " $test_cmds" &&
71135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   len=$func_len_result &&
71145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	   test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
71155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  :
71165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
71175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # The command line is too long to link in one step, link piecewise
71185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # or, if using GNU ld and skipped_export is not :, use a linker
71195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # script.
71205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Save the value of $output and $libobjs because we want to
71225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # use them later.  If we have whole_archive_flag_spec, we
71235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # want to use save_libobjs as it was before
71245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # whole_archive_flag_spec was expanded, because we can't
71255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # assume the linker understands whole_archive_flag_spec.
71265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This may have to be revisited, in case too many
71275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # convenience libraries get linked in and end up exceeding
71285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # the spec.
71295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then
71305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_libobjs=$libobjs
71315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
71325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_output=$output
71335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  output_la=`$ECHO "X$output" | $Xsed -e "$basename"`
71345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Clear the reloadable object creation command queue and
71365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # initialize k to one.
71375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test_cmds=
71385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  concat_cmds=
71395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  objlist=
71405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  last_robj=
71415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  k=1
71425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then
71445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output=${output_objdir}/${output_la}.lnkscript
71455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "creating GNU ld script: $output"
71465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO 'INPUT (' > $output
71475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for obj in $save_libobjs
71485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
71495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "$obj" >> $output
71505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
71515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO ')' >> $output
71525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    delfiles="$delfiles $output"
71535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then
71545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output=${output_objdir}/${output_la}.lnk
71555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_verbose "creating linker input file list: $output"
71565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    : > $output
71575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    set x $save_libobjs
71585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    shift
71595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    firstobj=
71605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$compiler_needs_object" = yes; then
71615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      firstobj="$1 "
71625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      shift
71635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
71645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for obj
71655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
71665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "$obj" >> $output
71675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
71685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    delfiles="$delfiles $output"
71695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output=$firstobj\"$file_list_spec$output\"
71705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
71715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$save_libobjs"; then
71725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "creating reloadable object files..."
71735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      output=$output_objdir/$output_la-${k}.$objext
71745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval test_cmds=\"$reload_cmds\"
71755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_len " $test_cmds"
71765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len0=$func_len_result
71775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len=$len0
71785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
71795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Loop over the list of objects to be linked.
71805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      for obj in $save_libobjs
71815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      do
71825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_len " $obj"
71835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_arith $len + $func_len_result
71845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		len=$func_arith_result
71855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "X$objlist" = X ||
71865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		   test "$len" -lt "$max_cmd_len"; then
71875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_append objlist " $obj"
71885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		else
71895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # The command $test_cmds is almost too long, add a
71905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  # command to the queue.
71915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  if test "$k" -eq 1 ; then
71925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # The first file doesn't have a previous command to add.
71935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
71945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  else
71955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # All subsequent reloadable object files will link in
71965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    # the last one created.
71975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\"
71985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  fi
71995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  last_robj=$output_objdir/$output_la-${k}.$objext
72005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_arith $k + 1
72015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  k=$func_arith_result
72025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  output=$output_objdir/$output_la-${k}.$objext
72035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  objlist=$obj
72045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_len " $last_robj"
72055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_arith $len0 + $func_len_result
72065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  len=$func_arith_result
72075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
72085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      done
72095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Handle the remaining objects by creating one last
72105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # reloadable object file.  All subsequent reloadable object
72115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # files will link in the last one created.
72125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
72145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$last_robj"; then
72155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\"
72165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
72175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      delfiles="$delfiles $output"
72185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
72205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      output=
72215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if ${skipped_export-false}; then
72245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "generating symbol list for \`$libname.la'"
72255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_symbols="$output_objdir/$libname.exp"
72265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || $RM $export_symbols
72275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      libobjs=$output
72285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Append the command to create the export file.
72295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
72305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\"
72315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test -n "$last_robj"; then
72325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\"
72335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
72345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$save_libobjs" &&
72375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "creating a temporary reloadable object file: $output"
72385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Loop through the commands generated above and execute them.
72405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    save_ifs="$IFS"; IFS='~'
72415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for cmd in $concat_cmds; do
72425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      IFS="$save_ifs"
72435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_silent || {
72445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_quote_for_expand "$cmd"
72455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  eval "func_echo $func_quote_for_expand_result"
72465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      }
72475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || eval "$cmd" || {
72485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		lt_exit=$?
72495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Restore the uninstalled library and exit
72515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		if test "$mode" = relink; then
72525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  ( cd "$output_objdir" && \
72535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $RM "${realname}T" && \
72545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		    $MV "${realname}U" "$realname" )
72555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		fi
72565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		exit $lt_exit
72585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      }
72595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
72605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    IFS="$save_ifs"
72615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols_regex" && ${skipped_export-false}; then
72635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
72645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '$MV "${export_symbols}T" "$export_symbols"'
72655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
72675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          if ${skipped_export-false}; then
72695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols" && test -n "$include_expsyms"; then
72705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      tmp_export_symbols="$export_symbols"
72715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols"
72725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"'
72735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$orig_export_symbols"; then
72765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # The given exports_symbols file has to be filtered, so filter it.
72775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_verbose "filter symbol list for \`$libname.la' to tag DATA exports"
72785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # FIXME: $output_objdir/$libname.filter potentially contains lots of
72795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # 's' commands which not all seds can handle. GNU sed should be fine
72805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # though. Also, the filter scales superlinearly with the number of
72815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # global variables. join(1) would be nice here, but unfortunately
72825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # isn't a blessed tool.
72835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter
72845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      delfiles="$delfiles $export_symbols $output_objdir/$libname.filter"
72855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      export_symbols=$output_objdir/$libname.def
72865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols
72875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
72885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
72895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs=$output
72915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Restore the value of output.
72925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  output=$save_output
72935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then
72955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
72965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test "X$libobjs" = "X " && libobjs=
72975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
72985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Expand the library linking commands again to reset the
72995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # value of $libobjs for piecewise linking.
73005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do each of the archive commands.
73025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$module" = yes && test -n "$module_cmds" ; then
73035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then
73045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$module_expsym_cmds
73055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
73065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$module_cmds
73075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
73095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then
73105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$archive_expsym_cmds
73115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
73125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      cmds=$archive_cmds
73135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$delfiles"; then
73185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Append the command to remove temporary files to $cmds.
73195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval cmds=\"\$cmds~\$RM $delfiles\"
73205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Add any objects from preloaded convenience libraries
73235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$dlprefiles"; then
73245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${outputname}x"
73255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
73265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_extract_archives $gentop $dlprefiles
73285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  libobjs="$libobjs $func_extract_archives_result"
73295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test "X$libobjs" = "X " && libobjs=
73305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	save_ifs="$IFS"; IFS='~'
73335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for cmd in $cmds; do
73345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  IFS="$save_ifs"
73355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval cmd=\"$cmd\"
73365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_silent || {
73375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_quote_for_expand "$cmd"
73385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval "func_echo $func_quote_for_expand_result"
73395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  }
73405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval "$cmd" || {
73415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    lt_exit=$?
73425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Restore the uninstalled library and exit
73445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$mode" = relink; then
73455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ( cd "$output_objdir" && \
73465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        $RM "${realname}T" && \
73475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$MV "${realname}U" "$realname" )
73485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    exit $lt_exit
73515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  }
73525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
73535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	IFS="$save_ifs"
73545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Restore the uninstalled library and exit
73565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = relink; then
73575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $?
73585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$convenience"; then
73605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$whole_archive_flag_spec"; then
73615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval '${RM}r "$gentop"'
73625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
73635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  exit $EXIT_SUCCESS
73665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Create links to the real library.
73695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for linkname in $linknames; do
73705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$realname" != "$linkname"; then
73715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?'
73725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
73735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
73745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If -module or -export-dynamic was specified, set the dlname.
73765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$module" = yes || test "$export_dynamic" = yes; then
73775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # On all known operating systems, these are identical.
73785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  dlname="$soname"
73795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
73805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
73815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
73825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    obj)
73845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
73855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-dlopen' is ignored for objects"
73865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
73875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case " $deplibs" in
73895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *\ -l* | *\ -L*)
73905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-l' and \`-L' are ignored for objects" ;;
73915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
73925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$rpath" && \
73945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-rpath' is ignored for objects"
73955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$xrpath" && \
73975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-R' is ignored for objects"
73985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
73995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
74005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info' is ignored for objects"
74015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
74035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for objects"
74045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $output in
74065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
74075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	test -n "$objs$old_deplibs" && \
74085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_fatal_error "cannot build library object \`$output' from non-libtool objects"
74095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj=$output
74115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_lo2o "$libobj"
74125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	obj=$func_lo2o_result
74135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
74145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
74155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libobj=
74165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	obj="$output"
74175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
74185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
74195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Delete the old objects.
74215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || $RM $obj $libobj
74225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Objects from convenience libraries.  This assumes
74245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # single-version convenience libraries.  Whenever we create
74255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # different ones for PIC/non-PIC, this we'll have to duplicate
74265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # the extraction.
74275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      reload_conv_objs=
74285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      gentop=
74295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # reload_cmds runs $LD directly, so let us get rid of
74305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # -Wl from whole_archive_flag_spec and hope we can get by with
74315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # turning comma into space..
74325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      wl=
74335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$convenience"; then
74355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$whole_archive_flag_spec"; then
74365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
74375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
74385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
74395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${obj}x"
74405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
74415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_extract_archives $gentop $convenience
74435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  reload_conv_objs="$reload_objs $func_extract_archives_result"
74445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
74455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Create the old-style object.
74485821806d5e7f356e8fa4b058a389a808ea183019Torne (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
74495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      output="$obj"
74515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_execute_cmds "$reload_cmds" 'exit $?'
74525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Exit if we aren't doing a library object file.
74545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -z "$libobj"; then
74555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$gentop"; then
74565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval '${RM}r "$gentop"'
74575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
74585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
74605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" != yes; then
74635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$gentop"; then
74645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval '${RM}r "$gentop"'
74655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
74665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Create an invalid libtool object if no PIC, so that we don't
74685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# accidentally link it into a program.
74695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# $show "echo timestamp > $libobj"
74705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# $opt_dry_run || eval "echo timestamp > $libobj" || exit $?
74715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
74725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$pic_flag" || test "$pic_mode" != default; then
74755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Only do commands if we really have different PIC objects.
74765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	reload_objs="$libobjs $reload_conv_objs"
74775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	output="$libobj"
74785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_execute_cmds "$reload_cmds" 'exit $?'
74795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$gentop"; then
74825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval '${RM}r "$gentop"'
74835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
74845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
74865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
74875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    prog)
74895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
74905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*cygwin*) func_stripname '' '.exe' "$output"
74915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	          output=$func_stripname_result.exe;;
74925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
74935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$vinfo" && \
74945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-version-info' is ignored for programs"
74955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test -n "$release" && \
74975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`-release' is ignored for programs"
74985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
74995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$preload" = yes \
75005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        && test "$dlopen_support" = unknown \
75015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	&& test "$dlopen_self" = unknown \
75025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	&& test "$dlopen_self_static" = unknown && \
75035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support."
75045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
75065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *-*-rhapsody* | *-*-darwin1.[012])
75075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# On Rhapsody replace the C library is the System framework
75085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'`
75105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
75115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
75125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
75145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *-*-darwin*)
75155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Don't allow lazy linking, it breaks C++ global constructors
75165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# But is supposedly fixed on 10.4 or later (yay!).
75175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$tagname" = CXX ; then
75185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case ${MACOSX_DEPLOYMENT_TARGET-10.0} in
75195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    10.[0123])
75205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      compile_command="$compile_command ${wl}-bind_at_load"
75215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      finalize_command="$finalize_command ${wl}-bind_at_load"
75225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
75235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
75255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Time to change all our "foo.ltframework" stuff back to "-framework foo"
75265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'`
75285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
75295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
75305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # move library search paths that coincide with paths to not yet
75335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # installed libraries to the beginning of the library search list
75345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      new_libs=
75355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for path in $notinst_path; do
75365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $new_libs " in
75375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*" -L$path/$objdir "*) ;;
75385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*)
75395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $compile_deplibs " in
75405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" -L$path/$objdir "*)
75415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    new_libs="$new_libs -L$path/$objdir" ;;
75425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
75445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
75455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
75465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for deplib in $compile_deplibs; do
75475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $deplib in
75485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	-L*)
75495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case " $new_libs " in
75505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $deplib "*) ;;
75515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) new_libs="$new_libs $deplib" ;;
75525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
75545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) new_libs="$new_libs $deplib" ;;
75555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
75565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
75575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_deplibs="$new_libs"
75585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_command="$compile_command $compile_deplibs"
75615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_command="$finalize_command $finalize_deplibs"
75625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$rpath$xrpath"; then
75645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# If the user specified any rpath flags, then add them.
75655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for libdir in $rpath $xrpath; do
75665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # This is the magic to use -rpath.
75675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$finalize_rpath " in
75685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
75695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) finalize_rpath="$finalize_rpath $libdir" ;;
75705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
75715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
75725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
75735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now hardcode the library paths
75755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rpath=
75765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      hardcode_libdirs=
75775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for libdir in $compile_rpath $finalize_rpath; do
75785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$hardcode_libdir_flag_spec"; then
75795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$hardcode_libdir_separator"; then
75805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$hardcode_libdirs"; then
75815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      hardcode_libdirs="$libdir"
75825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
75835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Just accumulate the unique libdirs.
75845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
75855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
75865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
75875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
75885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
75895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
75905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
75915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
75925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
75935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval flag=\"$hardcode_libdir_flag_spec\"
75945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath $flag"
75955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
75965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test -n "$runpath_var"; then
75975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$perm_rpath " in
75985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
75995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) perm_rpath="$perm_rpath $libdir" ;;
76005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
76025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
76035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
76045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'`
76055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
76065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$libdir:"*) ;;
76075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$libdir;;
76085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$libdir";;
76095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case :$dllsearchpath: in
76115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *":$testbindir:"*) ;;
76125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ::) dllsearchpath=$testbindir;;
76135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) dllsearchpath="$dllsearchpath:$testbindir";;
76145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
76165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
76175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
76185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Substitute the hardcoded libdirs into the rpath.
76195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$hardcode_libdir_separator" &&
76205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -n "$hardcode_libdirs"; then
76215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir="$hardcode_libdirs"
76225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval rpath=\" $hardcode_libdir_flag_spec\"
76235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_rpath="$rpath"
76255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rpath=
76275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      hardcode_libdirs=
76285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for libdir in $finalize_rpath; do
76295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$hardcode_libdir_flag_spec"; then
76305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$hardcode_libdir_separator"; then
76315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$hardcode_libdirs"; then
76325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      hardcode_libdirs="$libdir"
76335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
76345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Just accumulate the unique libdirs.
76355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
76365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*)
76375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
76385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *)
76395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
76405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
76415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
76425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
76435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
76445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval flag=\"$hardcode_libdir_flag_spec\"
76455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath $flag"
76465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
76475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif test -n "$runpath_var"; then
76485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$finalize_perm_rpath " in
76495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $libdir "*) ;;
76505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;;
76515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
76525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
76535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
76545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Substitute the hardcoded libdirs into the rpath.
76555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$hardcode_libdir_separator" &&
76565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -n "$hardcode_libdirs"; then
76575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	libdir="$hardcode_libdirs"
76585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval rpath=\" $hardcode_libdir_flag_spec\"
76595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_rpath="$rpath"
76615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$libobjs" && test "$build_old_libs" = yes; then
76635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Transform all the library objects into standard objects.
76645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
76665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_generate_dlsyms "$outputname" "@PROGRAM@" "no"
76695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # template prelinking step
76715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$prelink_cmds"; then
76725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_execute_cmds "$prelink_cmds" 'exit $?'
76735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
76745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      wrappers_required=yes
76765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $host in
76775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *cygwin* | *mingw* )
76785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test "$build_libtool_libs" != yes; then
76795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          wrappers_required=no
76805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
76815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
76825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *cegcc)
76835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        # Disable wrappers for cegcc, we are cross compiling anyway.
76845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        wrappers_required=no
76855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
76865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
76875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
76885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)          wrappers_required=no
76895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        fi
76905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ;;
76915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
76925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$wrappers_required" = no; then
76935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Replace the output file specification.
76945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
76955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command="$compile_command$compile_rpath"
76965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
76975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We have no uninstalled library dependencies, so finalize right now.
76985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit_status=0
76995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$link_command" 'exit_status=$?'
77005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Delete the generated files.
77025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -f "$output_objdir/${outputname}S.${objext}"; then
77035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"'
77045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $exit_status
77075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$compile_shlibpath$finalize_shlibpath"; then
77105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command"
77115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$finalize_shlibpath"; then
77135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command"
77145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      compile_var=
77175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      finalize_var=
77185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$runpath_var"; then
77195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$perm_rpath"; then
77205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # We should set the runpath_var.
77215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  rpath=
77225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $perm_rpath; do
77235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath$dir:"
77245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
77255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  compile_var="$runpath_var=\"$rpath\$$runpath_var\" "
77265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$finalize_perm_rpath"; then
77285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # We should set the runpath_var.
77295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  rpath=
77305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for dir in $finalize_perm_rpath; do
77315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rpath="$rpath$dir:"
77325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
77335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  finalize_var="$runpath_var=\"$rpath\$$runpath_var\" "
77345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$no_install" = yes; then
77385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# We don't need to create a wrapper script.
77395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command="$compile_var$compile_command$compile_rpath"
77405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Replace the output file specification.
77415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
77425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Delete the old output file.
77435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	$opt_dry_run || $RM $output
77445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Link the executable and exit
77455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "$link_command" 'exit $?'
77465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit $EXIT_SUCCESS
77475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$hardcode_action" = relink; then
77505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Fast installation is not supported
77515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	link_command="$compile_var$compile_command$compile_rpath"
77525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command="$finalize_var$finalize_command$finalize_rpath"
77535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "this platform does not like uninstalled shared libraries"
77555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_warning "\`$output' will be relinked during installation"
77565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
77575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$fast_install" != no; then
77585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  link_command="$finalize_var$compile_command$finalize_rpath"
77595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$fast_install" = yes; then
77605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
77615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
77625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # fast_install is set to needless
77635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command=
77645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
77655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
77665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  link_command="$compile_var$compile_command$compile_rpath"
77675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="$finalize_var$finalize_command$finalize_rpath"
77685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
77695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Replace the output file specification.
77725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
77735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Delete the old output files.
77755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname
77765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$link_command" 'exit $?'
77785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Now create the wrapper script.
77805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_verbose "creating $output"
77815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote the relink command for shipping.
77835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$relink_command"; then
77845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Preserve any variables that may affect compiler behavior
77855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for var in $variables_saved_for_relink; do
77865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if eval test -z \"\${$var+set}\"; then
77875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
77885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  elif eval var_value=\$$var; test -z "$var_value"; then
77895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command="$var=; export $var; $relink_command"
77905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
77915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_quote_for_eval "$var_value"
77925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
77935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
77945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
77955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command="(cd `pwd`; $relink_command)"
77965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
77975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
77985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
77995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote $ECHO for shipping.
78005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then
78015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $progpath in
78025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
78035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	*) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
78045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"`
78065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
78075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"`
78085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
78095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Only actually do things if not in dry run mode.
78115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || {
78125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# win32 will think the script is a binary if it has
78135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# a .exe suffix, so we strip it off here.
78145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $output in
78155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe) func_stripname '' '.exe' "$output"
78165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	         output=$func_stripname_result ;;
78175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# test for cygwin because mv fails w/o .exe extensions
78195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
78205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin*)
78215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    exeext=.exe
78225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$outputname"
78235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    outputname=$func_stripname_result ;;
78245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) exeext= ;;
78255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case $host in
78275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *cygwin* | *mingw* )
78285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_dirname_and_basename "$output" "" "."
78295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output_name=$func_basename_result
78305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output_path=$func_dirname_result
78315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cwrappersource="$output_path/$objdir/lt-$output_name.c"
78325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    cwrapper="$output_path/$output_name.exe"
78335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM $cwrappersource $cwrapper
78345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
78355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_cwrapperexe_src > $cwrappersource
78375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # The wrapper executable is built using the $host compiler,
78395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # because it contains $host paths and files. If cross-
78405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # compiling, it, like the target executable, must be
78415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # executed on the $host or under an emulation environment.
78425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
78435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $LTCC $LTCFLAGS -o $cwrapper $cwrappersource
78445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $STRIP $cwrapper
78455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
78465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Now, create the wrapper script for func_source use:
78485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_ltwrapper_scriptname $cwrapper
78495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM $func_ltwrapper_scriptname_result
78505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15
78515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $opt_dry_run || {
78525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # note: this script will not be executed, so do not chmod.
78535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "x$build" = "x$host" ; then
78545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		$cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result
78555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      else
78565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_emit_wrapper no > $func_ltwrapper_scriptname_result
78575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
78585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    }
78595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
78605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  * )
78615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $RM $output
78625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    trap "$RM $output; exit $EXIT_FAILURE" 1 2 15
78635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_emit_wrapper no > $output
78655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    chmod +x $output
78665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  ;;
78675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
78685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
78695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      exit $EXIT_SUCCESS
78705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
78715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
78725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # See if we need to build an old-fashioned archive.
78745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for oldlib in $oldlibs; do
78755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$build_libtool_libs" = convenience; then
78775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldobjs="$libobjs_save $symfileobj"
78785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	addlibs="$convenience"
78795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	build_libtool_libs=no
78805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
78815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$build_libtool_libs" = module; then
78825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs="$libobjs_save"
78835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  build_libtool_libs=no
78845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
78855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs="$old_deplibs $non_pic_objects"
78865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$preload" = yes && test -f "$symfileobj"; then
78875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    oldobjs="$oldobjs $symfileobj"
78885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
78895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
78905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	addlibs="$old_convenience"
78915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
78925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$addlibs"; then
78945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	gentop="$output_objdir/${outputname}x"
78955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	generated="$generated $gentop"
78965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
78975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_extract_archives $gentop $addlibs
78985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	oldobjs="$oldobjs $func_extract_archives_result"
78995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
79005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do each command in the archive commands.
79025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
79035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	cmds=$old_archive_from_new_cmds
79045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
79055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Add any objects from preloaded convenience libraries
79075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test -n "$dlprefiles"; then
79085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${outputname}x"
79095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
79105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_extract_archives $gentop $dlprefiles
79125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs="$oldobjs $func_extract_archives_result"
79135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
79145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# POSIX demands no paths to be encoded in archives.  We have
79165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# to avoid creating archives with duplicate basenames if we
79175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# might have to extract them afterwards, e.g., when creating a
79185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# static archive out of a convenience library, or when linking
79195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# the entirety of a libtool archive into another (currently
79205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# not supported by libtool).
79215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if (for obj in $oldobjs
79225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    do
79235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_basename "$obj"
79245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      $ECHO "$func_basename_result"
79255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done | sort | sort -uc >/dev/null 2>&1); then
79265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  :
79275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
79285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO "copying selected object files to avoid basename conflicts..."
79295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  gentop="$output_objdir/${outputname}x"
79305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  generated="$generated $gentop"
79315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_mkdir_p "$gentop"
79325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_oldobjs=$oldobjs
79335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs=
79345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  counter=1
79355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for obj in $save_oldobjs
79365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  do
79375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_basename "$obj"
79385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    objbase="$func_basename_result"
79395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case " $oldobjs " in
79405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    " ") oldobjs=$obj ;;
79415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *[\ /]"$objbase "*)
79425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      while :; do
79435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Make sure we don't pick an alternate name that also
79445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# overlaps.
79455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newobj=lt$counter-$objbase
79465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_arith $counter + 1
79475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		counter=$func_arith_result
79485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		case " $oldobjs " in
79495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*[\ /]"$newobj "*) ;;
79505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) if test ! -f "$gentop/$newobj"; then break; fi ;;
79515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		esac
79525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      done
79535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
79545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      oldobjs="$oldobjs $gentop/$newobj"
79555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      ;;
79565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) oldobjs="$oldobjs $obj" ;;
79575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
79585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
79595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
79605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	eval cmds=\"$old_archive_cmds\"
79615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_len " $cmds"
79635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	len=$func_len_result
79645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then
79655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  cmds=$old_archive_cmds
79665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
79675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # the command line is too long to link in one step, link in parts
79685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_verbose "using piecewise archive linking..."
79695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_RANLIB=$RANLIB
79705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  RANLIB=:
79715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  objlist=
79725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  concat_cmds=
79735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  save_oldobjs=$oldobjs
79745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs=
79755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Is there a better way of finding the last object in the list?
79765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for obj in $save_oldobjs
79775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  do
79785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    last_oldobj=$obj
79795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
79805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  eval test_cmds=\"$old_archive_cmds\"
79815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_len " $test_cmds"
79825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  len0=$func_len_result
79835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  len=$len0
79845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for obj in $save_oldobjs
79855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  do
79865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_len " $obj"
79875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_arith $len + $func_len_result
79885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    len=$func_arith_result
79895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_append objlist " $obj"
79905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$len" -lt "$max_cmd_len"; then
79915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      :
79925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
79935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # the above command should be used before it gets too long
79945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      oldobjs=$objlist
79955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      if test "$obj" = "$last_oldobj" ; then
79965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		RANLIB=$save_RANLIB
79975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      fi
79985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      test -z "$concat_cmds" || concat_cmds=$concat_cmds~
79995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\"
80005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      objlist=
80015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      len=$len0
80025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
80035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
80045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  RANLIB=$save_RANLIB
80055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  oldobjs=$objlist
80065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "X$oldobjs" = "X" ; then
80075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval cmds=\"\$concat_cmds\"
80085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
80095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    eval cmds=\"\$concat_cmds~\$old_archive_cmds\"
80105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
80115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
80125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
80135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_execute_cmds "$cmds" 'exit $?'
80145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
80155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -n "$generated" && \
80175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "${RM}r$generated"
80185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Now create the libtool archive.
80205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    case $output in
80215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *.la)
80225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      old_library=
80235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$build_old_libs" = yes && old_library="$libname.$libext"
80245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_verbose "creating $output"
80255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Preserve any variables that may affect compiler behavior
80275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      for var in $variables_saved_for_relink; do
80285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if eval test -z \"\${$var+set}\"; then
80295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command"
80305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	elif eval var_value=\$$var; test -z "$var_value"; then
80315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="$var=; export $var; $relink_command"
80325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	else
80335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_quote_for_eval "$var_value"
80345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command"
80355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
80365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      done
80375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Quote the link command for shipping.
80385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
80395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"`
80405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$hardcode_automatic" = yes ; then
80415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	relink_command=
80425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
80435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Only create the output if not a dry run.
80455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      $opt_dry_run || {
80465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	for installed in no yes; do
80475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$installed" = yes; then
80485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -z "$install_libdir"; then
80495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      break
80505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
80515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    output="$output_objdir/$outputname"i
80525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # Replace all uninstalled libtool libraries with the installed ones
80535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdependency_libs=
80545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for deplib in $dependency_libs; do
80555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $deplib in
80565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
80575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$deplib"
80585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
80595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
80605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
80615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$deplib' is not a valid libtool archive"
80625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdependency_libs="$newdependency_libs $libdir/$name"
80635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
80645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) newdependency_libs="$newdependency_libs $deplib" ;;
80655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
80665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
80675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dependency_libs="$newdependency_libs"
80685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles=
80695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
80705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlfiles; do
80715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
80725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
80735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	        func_basename "$lib"
80745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
80755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
80775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$lib' is not a valid libtool archive"
80785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdlfiles="$newdlfiles $libdir/$name"
80795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
80805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *) newdlfiles="$newdlfiles $lib" ;;
80815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
80825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
80835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlfiles="$newdlfiles"
80845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles=
80855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlprefiles; do
80865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
80875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      *.la)
80885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# Only pass preopened files to the pseudo-archive (for
80895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# eventual linking with the app. that links it) if we
80905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# didn't already link the preopened objects directly into
80915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		# the library:
80925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		func_basename "$lib"
80935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		name="$func_basename_result"
80945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
80955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		test -z "$libdir" && \
80965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		  func_fatal_error "\`$lib' is not a valid libtool archive"
80975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		newdlprefiles="$newdlprefiles $libdir/$name"
80985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		;;
80995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$newdlprefiles"
81025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  else
81035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlfiles=
81045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlfiles; do
81055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) abs=`pwd`"/$lib" ;;
81085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlfiles="$newdlfiles $abs"
81105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlfiles="$newdlfiles"
81125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    newdlprefiles=
81135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    for lib in $dlprefiles; do
81145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      case $lib in
81155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
81165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		*) abs=`pwd`"/$lib" ;;
81175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      esac
81185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      newdlprefiles="$newdlprefiles $abs"
81195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    done
81205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    dlprefiles="$newdlprefiles"
81215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
81225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $RM $output
81235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # place dlname in correct position for cygwin
81245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  tdlname=$dlname
81255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $host,$output,$installed,$module,$dlname in
81265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
81275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
81285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  $ECHO > $output "\
81295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# $outputname - a libtool library file
81305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION
81315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#
81325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Please DO NOT delete this file!
81335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# It is necessary for linking the library.
81345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name that we can dlopen(3).
81365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlname='$tdlname'
81375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of this library.
81395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)library_names='$library_names'
81405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The name of the static archive.
81425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)old_library='$old_library'
81435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Linker flags that can not go in dependency_libs.
81455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)inherited_linker_flags='$new_inherited_linker_flags'
81465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Libraries that this one depends upon.
81485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dependency_libs='$dependency_libs'
81495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Names of additional weak libraries provided by this library
81515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)weak_library_names='$weak_libs'
81525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Version information for $libname.
81545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)current=$current
81555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)age=$age
81565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)revision=$revision
81575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Is this an already installed library?
81595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)installed=$installed
81605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Should we warn about portability when linking against -modules?
81625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)shouldnotlink=$module
81635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Files to dlopen/dlpreopen
81655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlopen='$dlfiles'
81665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)dlpreopen='$dlprefiles'
81675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Directory that this library needs to be installed in:
81695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)libdir='$install_libdir'"
81705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test "$installed" = no && test "$need_relink" = yes; then
81715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    $ECHO >> $output "\
81725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)relink_command=\"$relink_command\""
81735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
81745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	done
81755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      }
81765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Do a symbolic link so that the libtool archive can be found in
81785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # LD_LIBRARY_PATH before the program is installed.
81795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?'
81805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      ;;
81815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    esac
81825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $EXIT_SUCCESS
81835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
81845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = link || test "$mode" = relink; } &&
81865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mode_link ${1+"$@"}
81875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# func_mode_uninstall arg...
81905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)func_mode_uninstall ()
81915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){
81925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    $opt_debug
81935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    RM="$nonopt"
81945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    files=
81955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rmforce=
81965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit_status=0
81975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
81985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # This variable tells wrapper scripts just to set variables rather
81995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # than running their programs.
82005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    libtool_install_magic="$magic"
82015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for arg
82035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    do
82045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $arg in
82055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -f) RM="$RM $arg"; rmforce=yes ;;
82065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      -*) RM="$RM $arg" ;;
82075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *) files="$files $arg" ;;
82085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
82095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
82105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test -z "$RM" && \
82125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_fatal_help "you must specify an RM program"
82135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    rmdirs=
82155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    origobjdir="$objdir"
82175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for file in $files; do
82185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_dirname "$file" "" "."
82195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      dir="$func_dirname_result"
82205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "X$dir" = X.; then
82215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objdir="$origobjdir"
82225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      else
82235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	objdir="$dir/$origobjdir"
82245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_basename "$file"
82265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      name="$func_basename_result"
82275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test "$mode" = uninstall && objdir="$dir"
82285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Remember objdir for removal later, being careful to avoid duplicates
82305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test "$mode" = clean; then
82315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	case " $rmdirs " in
82325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *" $objdir "*) ;;
82335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *) rmdirs="$rmdirs $objdir" ;;
82345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	esac
82355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      # Don't error if the file doesn't exist and rm -f was used.
82385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if { test -L "$file"; } >/dev/null 2>&1 ||
82395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 { test -h "$file"; } >/dev/null 2>&1 ||
82405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	 test -f "$file"; then
82415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	:
82425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      elif test -d "$file"; then
82435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	exit_status=1
82445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
82455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      elif test "$rmforce" = yes; then
82465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	continue
82475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
82485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      rmfiles="$file"
82505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      case $name in
82525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.la)
82535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Possibly a libtool archive, so verify it.
82545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_p "$file"; then
82555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source $dir/$name
82565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Delete the libtool libraries and symlinks.
82585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  for n in $library_names; do
82595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $objdir/$n"
82605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  done
82615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
82625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case "$mode" in
82645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  clean)
82655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    case "  $library_names " in
82665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # "  " in the beginning catches empty $dlname
82675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *" $dlname "*) ;;
82685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
82695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    esac
82705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
82715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
82725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  uninstall)
82735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$library_names"; then
82745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Do each command in the postuninstall commands.
82755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
82775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test -n "$old_library"; then
82795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      # Do each command in the old_postuninstall commands.
82805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1'
82815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
82825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # FIXME: should reinstall the best remaining shared library.
82835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
82845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
82855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
82865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
82875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *.lo)
82895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	# Possibly a libtool object, so verify it.
82905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if func_lalib_p "$file"; then
82915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Read the .lo file
82935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  func_source $dir/$name
82945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
82955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add PIC object to the list of files to remove.
82965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$pic_object" &&
82975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$pic_object" != none; then
82985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $dir/$pic_object"
82995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Add non-PIC object to the list of files to remove.
83025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if test -n "$non_pic_object" &&
83035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	     test "$non_pic_object" != none; then
83045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $dir/$non_pic_object"
83055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
83075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
83085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      *)
83105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	if test "$mode" = clean ; then
83115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  noexename=$name
83125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  case $file in
83135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  *.exe)
83145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$file"
83155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    file=$func_stripname_result
83165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    func_stripname '' '.exe' "$name"
83175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    noexename=$func_stripname_result
83185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # $file with .exe has already been added to rmfiles,
83195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # add $file without .exe
83205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $file"
83215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    ;;
83225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  esac
83235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  # Do a test to see if this is a libtool program.
83245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  if func_ltwrapper_p "$file"; then
83255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if func_ltwrapper_executable_p "$file"; then
83265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_ltwrapper_scriptname "$file"
83275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      relink_command=
83285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source $func_ltwrapper_scriptname_result
83295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $func_ltwrapper_scriptname_result"
83305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    else
83315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      relink_command=
83325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      func_source $dir/$noexename
83335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # note $name still contains .exe if it was in $file originally
83365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    # as does the version of $file that was added into $rmfiles
83375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
83385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "$fast_install" = yes && test -n "$relink_command"; then
83395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $objdir/lt-$name"
83405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    if test "X$noexename" != "X$name" ; then
83425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	      rmfiles="$rmfiles $objdir/lt-${noexename}.c"
83435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	    fi
83445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	  fi
83455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	fi
83465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	;;
83475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      esac
83485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      func_show_eval "$RM $rmfiles" 'exit_status=1'
83495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
83505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    objdir="$origobjdir"
83515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    # Try to remove the ${objdir}s in the directories where we deleted files
83535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    for dir in $rmdirs; do
83545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      if test -d "$dir"; then
83555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	func_show_eval "rmdir $dir >/dev/null 2>&1"
83565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      fi
83575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    done
83585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit $exit_status
83605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
83615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ test "$mode" = uninstall || test "$mode" = clean; } &&
83635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    func_mode_uninstall ${1+"$@"}
83645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$mode" && {
83665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  help="$generic_help"
83675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_fatal_help "you must specify a MODE"
83685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
83695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)test -z "$exec_cmd" && \
83715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  func_fatal_help "invalid operation mode \`$mode'"
83725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if test -n "$exec_cmd"; then
83745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  eval exec "$exec_cmd"
83755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  exit $EXIT_FAILURE
83765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)fi
83775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)exit $exit_status
83795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# The TAGs below are defined such that we never get into a situation
83825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# in which we disable both kinds of libraries.  Given conflicting
83835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# choices, we go for a static library, that is the most portable,
83845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# since we can't tell whether shared libraries were disabled because
83855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# the user asked for that or because the platform doesn't support
83865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# them.  This is particularly important on AIX, because we don't
83875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# support having both static and shared libraries enabled at the same
83885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# time on that platform, so we default to a shared-only configuration.
83895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# If a disable-shared tag is given, we'll fallback to a static-only
83905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# configuration.  But we'll never go from static-only to shared-only.
83915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-shared
83935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_libtool_libs=no
83945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=yes
83955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-shared
83965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
83975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### BEGIN LIBTOOL TAG CONFIG: disable-static
83985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
83995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# ### END LIBTOOL TAG CONFIG: disable-static
84005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
84015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Local Variables:
84025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# mode:shell-script
84035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# sh-indentation:2
84045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# End:
84055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# vi:sw=2
84065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8407