1548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# libtool (GNU libtool) 2.4 3548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. 7548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This is free software; see the source for copying conditions. There is NO 8548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 10548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# GNU Libtool is free software; you can redistribute it and/or modify 11548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# it under the terms of the GNU General Public License as published by 12548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the Free Software Foundation; either version 2 of the License, or 13548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (at your option) any later version. 14548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 15548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# As a special exception to the GNU General Public License, 16548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if you distribute this file as part of a program or library that 17548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is built using GNU Libtool, you may include this file under the 18548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# same distribution terms that you use for the rest of that program. 19548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 20548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# GNU Libtool is distributed in the hope that it will be useful, but 21548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# WITHOUT ANY WARRANTY; without even the implied warranty of 22548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# General Public License for more details. 24548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 25548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# You should have received a copy of the GNU General Public License 26548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# along with GNU Libtool; see the file COPYING. If not, a copy 27548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# or obtained by writing to the Free Software Foundation, Inc., 29548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 31548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Usage: $progname [OPTION]... [MODE-ARG]... 32548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 33548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Provide generalized library-building support services. 34548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 35548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --config show all configuration variables 36548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --debug enable verbose shell tracing 37548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# -n, --dry-run display commands without modifying any files 38548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --features display basic configuration information and exit 39548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --mode=MODE use operation mode MODE 40548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --preserve-dup-deps don't remove duplicate dependency libraries 41548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --quiet, --silent don't print informational messages 42548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --no-quiet, --no-silent 43548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# print informational messages (default) 44548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --tag=TAG use configuration variables from tag TAG 45548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# -v, --verbose print more informational messages than default 46548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --no-verbose don't print the extra informational messages 47548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --version print version information 48548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# -h, --help, --help-all print short, long, or detailed help message 49548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 50548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# MODE must be one of the following: 51548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 52548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# clean remove files from the build directory 53548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# compile compile a source file into a libtool object 54548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# execute automatically set library path, then run a program 55548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# finish complete the installation of libtool libraries 56548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# install install libraries or executables 57548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# link create a library or an executable 58548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# uninstall remove libraries from an installed directory 59548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 60548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# MODE-ARGS vary depending on the MODE. When passed as first option, 61548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 62548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 63548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 64548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# When reporting a bug, please describe a test case to reproduce it and 65548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include the following information: 66548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 67548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# host-triplet: $host 68548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# shell: $SHELL 69548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# compiler: $LTCC 70548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# compiler flags: $LTCFLAGS 71548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# linker: $LD (gnu? $with_gnu_ld) 72548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $progname: (GNU libtool) 2.4 73548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# automake: $automake_version 74548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# autoconf: $autoconf_version 75548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 76548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Report bugs to <bug-libtool@gnu.org>. 77548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 78548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# General help using GNU software: <http://www.gnu.org/gethelp/>. 79548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 80548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenPROGRAM=libtool 81548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenPACKAGE=libtool 82548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenVERSION=2.4 83548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenTIMESTAMP="" 84548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpackage_revision=1.3293 85548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 86548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define SED for historic ltconfig's generated by Libtool 1.3 87548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest -z "$SED" && SED=sed 88548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 89548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Be Bourne compatible 90548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 91548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen emulate sh 92548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen NULLCMD=: 93548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 94548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # is contrary to our usage. Disable this feature. 95548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen alias -g '${1+"$@"}'='"$@"' 96548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen setopt NO_GLOB_SUBST 97548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenelse 98548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 99548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi 100548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenBIN_SH=xpg4; export BIN_SH # for Tru64 101548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenDUALCASE=1; export DUALCASE # for MKS sh 102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# A function that is used when there is no print builtin or printf. 104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fallback_echo () 105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval 'cat <<_LTECHO_EOF 107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$1 108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LTECHO_EOF' 109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# NLS nuisances: We save the old values to restore during execute mode. 112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_user_locale= 113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_safe_locale= 114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendo 116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "if test \"\${$lt_var+set}\" = set; then 117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_$lt_var=\$$lt_var 118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $lt_var=C 119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export $lt_var 120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi" 123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendone 124548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLC_ALL=C 125548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLANGUAGE=C 126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexport LANGUAGE LC_ALL 127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$lt_unset CDPATH 129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is ksh but when the shell is invoked as "sh" and the current value of 133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the _XPG environment variable is not equal to 1 (one), the special 134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# positional parameter $0, within a function call, is the name of the 135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# function. 136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenprogpath="$0" 137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${CP="cp -f"} 141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${EGREP="/bin/grep -E"} 143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${FGREP="/bin/grep -F"} 144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${GREP="/bin/grep"} 145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${LN_S="ln -s"} 146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${MAKE="make"} 147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${MKDIR="mkdir"} 148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${MV="mv -f"} 149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${RM="rm -f"} 150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${SED="/bin/sed"} 151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen: ${Xsed="$SED -e 1s/^X//"} 153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Global variables: 155548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_SUCCESS=0 156548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_FAILURE=1 157548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 158548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexit_status=$EXIT_SUCCESS 161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make sure IFS has a sensible default 163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_nl=' 164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen' 165548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIFS=" $lt_nl" 166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendirname="s,/[^/]*$,," 168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbasename="s,^.*/,," 169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_dirname file append nondir_replacement 171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Compute the dirname of FILE. If nonempty, add APPEND to the result, 172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# otherwise set result to NONDIR_REPLACEMENT. 173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_dirname () 174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$func_dirname_result" = "X${1}"; then 177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_result="${3}" 178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_result="$func_dirname_result${2}" 180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_dirname may be replaced by extended shell implementation 182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_basename file 185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_basename () 186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename_result=`$ECHO "${1}" | $SED "$basename"` 188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_basename may be replaced by extended shell implementation 189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_dirname_and_basename file append nondir_replacement 192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# perform func_basename and func_dirname in a single function 193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# call: 194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# dirname: Compute the dirname of FILE. If nonempty, 195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# add APPEND to the result, otherwise set result 196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# to NONDIR_REPLACEMENT. 197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# value returned in "$func_dirname_result" 198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# basename: Compute filename of FILE. 199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# value retuned in "$func_basename_result" 200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Implementation must be kept synchronized with func_dirname 201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and func_basename. For efficiency, we do not delegate to 202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# those functions but instead duplicate the functionality here. 203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_dirname_and_basename () 204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract subdirectory from the argument. 206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$func_dirname_result" = "X${1}"; then 208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_result="${3}" 209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_result="$func_dirname_result${2}" 211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_dirname_and_basename may be replaced by extended shell implementation 214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_stripname prefix suffix name 217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# strip PREFIX and SUFFIX off of NAME. 218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# PREFIX and SUFFIX must not contain globbing or regex special 219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# characters, hashes, percent signs, but SUFFIX may contain a leading 220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# dot (in which case that matches only a dot). 221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_strip_suffix prefix name 222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_stripname () 223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case ${2} in 225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_stripname may be replaced by extended shell implementation 229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# These SED scripts presuppose an absolute path with a trailing slash. 232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpathcar='s,^/\([^/]*\).*$,\1,' 233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpathcdr='s,^/[^/]*,,' 234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenremovedotparts=':dotsl 235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s@/\./@/@g 236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen t dotsl 237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s,/\.$,/,' 238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencollapseslashes='s@/\{1,\}@/@g' 239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfinalslash='s,/*$,/,' 240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_normal_abspath PATH 242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Remove doubled-up and trailing slashes, "." path components, 243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and cancel out any ".." path components in PATH after making 244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# it an absolute path. 245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# value returned in "$func_normal_abspath_result" 246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_normal_abspath () 247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Start from root dir and reassemble the path. 249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_result= 250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_tpath=$1 251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_altnamespace= 252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $func_normal_abspath_tpath in 253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "") 254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Empty path, that just means $cwd. 255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '/' "`pwd`" 256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_result=$func_stripname_result 257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The next three entries are used to spot a run of precisely 260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # two leading slashes without using negated character classes; 261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # we take advantage of case's first-match behaviour. 262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ///*) 263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Unusual form of absolute path, do nothing. 264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen //*) 266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Not necessarily an ordinary path; POSIX reserves leading '//' 267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and for example Cygwin uses it to access remote file shares 268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # over CIFS/SMB, so we conserve a leading double slash if found. 269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_altnamespace=/ 270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /*) 272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Absolute path, do nothing. 273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Relative path, prepend $cwd. 276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Cancel out all the simple stuff to save iterations. We also want 280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the path to end with a slash for ease of parsing, so make sure 281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # there is one (and only one) here. 282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while :; do 285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Processed it all yet? 286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$func_normal_abspath_tpath" = / ; then 287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If we ascended to the root using ".." the result may be empty now. 288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$func_normal_abspath_result" ; then 289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_result=/ 290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -e "$pathcar"` 295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -e "$pathcdr"` 297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Figure out what to do with it 298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $func_normal_abspath_tcomponent in 299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "") 300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Trailing empty path component, ignore it. 301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ..) 303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Parent dir; strip last assembled component from result. 304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$func_normal_abspath_result" 305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_result=$func_dirname_result 306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Actual path component, append it. 309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Restore leading double-slash if one was found on entry. 314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_relative_path SRCDIR DSTDIR 318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# generates a relative path from SRCDIR to DSTDIR, with a trailing 319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# slash if non-empty, suitable for immediately appending a filename 320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# without needing to append a separator. 321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# value returned in "$func_relative_path_result" 322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_relative_path () 323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result= 325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath "$1" 326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_tlibdir=$func_normal_abspath_result 327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_normal_abspath "$2" 328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_tbindir=$func_normal_abspath_result 329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Ascend the tree starting from libdir 331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while :; do 332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # check if we have found a prefix of bindir 333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $func_relative_path_tbindir in 334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $func_relative_path_tlibdir) 335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # found an exact match 336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_tcancelled= 337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $func_relative_path_tlibdir*) 340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # found a matching prefix 341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_tcancelled=$func_stripname_result 343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$func_relative_path_result"; then 344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result=. 345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname $func_relative_path_tlibdir 350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_tlibdir=${func_dirname_result} 351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x$func_relative_path_tlibdir" = x ; then 352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Have to descend all the way to the root! 353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result=../$func_relative_path_result 354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_tcancelled=$func_relative_path_tbindir 355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result=../$func_relative_path_result 358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now calculate path; take care to avoid doubling-up slashes. 363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '/' "$func_relative_path_result" 364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result=$func_stripname_result 365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '/' '/' "$func_relative_path_tcancelled" 366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x$func_stripname_result" != x ; then 367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Normalisation. If bindir is libdir, return empty string, 371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # else relative path ending with a slash; either way, target 372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # file name can be directly appended. 373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -z "$func_relative_path_result"; then 374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname './' '' "$func_relative_path_result/" 375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path_result=$func_stripname_result 376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The name of this program: 380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_dirname_and_basename "$progpath" 381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenprogname=$func_basename_result 382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make sure we have an absolute path for reexecution: 384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencase $progpath in 385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]*|[A-Za-z]:\\*) ;; 386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\\/]*) 387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progdir=$func_dirname_result 388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progdir=`cd "$progdir" && pwd` 389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progpath="$progdir/$progname" 390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_IFS="$IFS" 393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS=: 394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for progdir in $PATH; do 395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_IFS" 396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -x "$progdir/$progname" && break 397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_IFS" 399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$progdir" || progdir=`pwd` 400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progpath="$progdir/$progname" 401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenesac 403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that helps us do robust quoting. It backslashifies 405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# metacharacters that are still active within double-quoted strings. 406548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenXsed="${SED}"' -e 1s/^X//' 407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_quote_subst='s/\([`"$\\]\)/\\\1/g' 408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Same as above, but do not quote variable references. 410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendouble_quote_subst='s/\(["`\\]\)/\\\1/g' 411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that turns a string into a regex matching for the 413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# string literally. 414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that converts a w32 file name or path 417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# which contains forward slashes, into one that contains 418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (escaped) backslashes. A very naive implementation. 419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Re-`\' parameter expansions in output of double_quote_subst that were 422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in input to double_quote_subst, that '$' was protected from expansion. 424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Since each input `\' is now two `\'s, look for any number of runs of 425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbs='\\' 427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbs2='\\\\' 428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbs4='\\\\\\\\' 429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendollar='\$' 430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_double_backslash="\ 431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/$bs4/&\\ 432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/g 433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^$bs2$dollar/$bs&/ 434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\n//g" 436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Standard options: 438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_dry_run=false 439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help=false 440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_quiet=false 441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_verbose=false 442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_warning=: 443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_echo arg... 445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message, along with the current mode 446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# name if it has been set yet. 447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_echo () 448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_verbose arg... 453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message in verbose mode only. 454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_verbose () 455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_verbose && func_echo ${1+"$@"} 457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A bug in bash halts the script if the last line of a function 459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # fails when set -e is in force, so we need another command to 460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # work around that: 461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_echo_all arg... 465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Invoke $ECHO with all args, space-separated. 466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_echo_all () 467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$*" 469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_error arg... 472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error. 473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_error () 474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_warning arg... 479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed warning message to standard error. 480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_warning () 481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # bash bug again: 485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_fatal_error arg... 489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error, and exit. 490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fatal_error () 491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error ${1+"$@"} 493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_FAILURE 494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_fatal_help arg... 497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error, followed by 498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a help hint, and exit. 499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fatal_help () 500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error ${1+"$@"} 502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "$help" 503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenhelp="Try \`$progname --help' for more information." ## default 505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_grep expression filename 508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Check whether EXPRESSION matches any line of FILENAME, without output. 509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_grep () 510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $GREP "$1" "$2" >/dev/null 2>&1 512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mkdir_p directory-path 516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make sure the entire path to DIRECTORY-PATH is available. 517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mkdir_p () 518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_directory_path="$1" 520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_dir_list= 521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Protect directory names starting with `-' 525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $my_directory_path in 526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -*) my_directory_path="./$my_directory_path" ;; 527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # While some portion of DIR does not yet exist... 530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test ! -d "$my_directory_path"; do 531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # ...make a list in topmost first order. Use a colon delimited 532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # list incase some portion of path contains whitespace. 533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_dir_list="$my_directory_path:$my_dir_list" 534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the last portion added has no slash in it, the list is done 536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $my_directory_path in */*) ;; *) break ;; esac 537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # ...otherwise throw away the child directory and loop 539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_mkdir_p_IFS="$IFS"; IFS=':' 544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for my_dir in $my_dir_list; do 545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_mkdir_p_IFS" 546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # mkdir can fail with a `File exist' error if two processes 547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # try to create one of the directories concurrently. Don't 548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # stop in that case! 549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MKDIR "$my_dir" 2>/dev/null || : 550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_mkdir_p_IFS" 552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Bail out if we (or some other process) failed to create a directory. 554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -d "$my_directory_path" || \ 555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "Failed to create \`$1'" 556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mktempdir [string] 561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Make a temporary directory that won't clash with other running 562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# libtool processes, and avoids race conditions if possible. If 563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# given, STRING is the basename for that directory. 564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mktempdir () 565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_template="${TMPDIR-/tmp}/${1-$progname}" 567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_dry_run" = ":"; then 569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Return a directory name, but don't create it in dry-run mode 570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_tmpdir="${my_template}-$$" 571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If mktemp works, use that first and foremost 574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -d "$my_tmpdir"; then 577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Failing that, at least try and use $RANDOM to avoid a race 578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_tmpdir="${my_template}-${RANDOM-0}$$" 579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_mktempdir_umask=`umask` 581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen umask 0077 582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MKDIR "$my_tmpdir" 583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen umask $save_mktempdir_umask 584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If we're not in dry-run mode, bomb out on failure 587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -d "$my_tmpdir" || \ 588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$my_tmpdir" 592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_quote_for_eval arg 596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Aesthetically quote ARG to be evaled later. 597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is double-quoted, suitable for a subsequent eval, whereas 599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# which are still active within double quotes backslashified. 601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_quote_for_eval () 602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $1 in 604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\\\`\"\$]*) 605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval_unquoted_result="$1" ;; 608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $func_quote_for_eval_unquoted_result in 611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Double-quote args containing shell metacharacters to delay 612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # word splitting, command substitution and and variable 613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # expansion for a subsequent eval. 614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Many Bourne shells cannot handle close brackets correctly 615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # in scan sets, so we specify it separately. 616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_quote_for_expand arg 626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Aesthetically quote ARG to be evaled later; same as above, 627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# but do not quote variable references. 628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_quote_for_expand () 629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $1 in 631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\\\`\"]*) 632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_arg=`$ECHO "$1" | $SED \ 633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_arg="$1" ;; 636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $my_arg in 639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Double-quote args containing shell metacharacters to delay 640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # word splitting and command substitution for a subsequent eval. 641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Many Bourne shells cannot handle close brackets correctly 642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # in scan sets, so we specify it separately. 643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_arg="\"$my_arg\"" 645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_expand_result="$my_arg" 649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_show_eval cmd [fail_exp] 653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is given, then evaluate it. 656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_show_eval () 657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_cmd="$1" 659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_fail_exp="${2-:}" 660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ${opt_silent-false} || { 662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_expand "$my_cmd" 663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "func_echo $func_quote_for_expand_result" 664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ${opt_dry_run-false}; then :; else 667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$my_cmd" 668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_status=$? 669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$my_status" -eq 0; then :; else 670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "(exit $my_status); $my_fail_exp" 671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_show_eval_locale cmd [fail_exp] 677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# is given, then evaluate it. Use the saved locale for evaluation. 680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_show_eval_locale () 681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_cmd="$1" 683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_fail_exp="${2-:}" 684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ${opt_silent-false} || { 686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_expand "$my_cmd" 687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "func_echo $func_quote_for_expand_result" 688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ${opt_dry_run-false}; then :; else 691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$lt_user_locale 692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $my_cmd" 693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_status=$? 694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$lt_safe_locale" 695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$my_status" -eq 0; then :; else 696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "(exit $my_status); $my_fail_exp" 697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_tr_sh 702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Turn $1 into a string suitable for a shell variable name. 703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is stored in $func_tr_sh_result. All characters 704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if $1 begins with a digit, a '_' is prepended as well. 706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_tr_sh () 707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $1 in 709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [0-9]* | *[!a-zA-Z0-9_]*) 710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * ) 713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_tr_sh_result=$1 714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_version 720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo version message to standard output and exit. 721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_version () 722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -n '/(C)/!b go 726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen :more 727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /\./!{ 728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen N 729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\n# / / 730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen b more 731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen :go 733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^# '$PROGRAM' (GNU /,/# warranty; / { 734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^# // 735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^# *$// 736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p 738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen }' < "$progpath" 739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $? 740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_usage 743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo short help message to standard output and exit. 744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_usage () 745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -n '/^# Usage:/,/^# *.*--help/ { 749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^# // 750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^# *$// 751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\$progname/'$progname'/ 752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p 753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen }' < "$progpath" 754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "run \`$progname --help | more' for full usage" 756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $? 757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_help [NOEXIT] 760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo long help message to standard output and exit, 761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# unless 'noexit' is passed as argument. 762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_help () 763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -n '/^# Usage:/,/# Report bugs to/ { 767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen :print 768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^# // 769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^# *$// 770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s*\$progname*'$progname'* 771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s*\$host*'"$host"'* 772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s*\$SHELL*'"$SHELL"'* 773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s*\$LTCC*'"$LTCC"'* 774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s*\$LTCFLAGS*'"$LTCFLAGS"'* 775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s*\$LD*'"$LD"'* 776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\$with_gnu_ld/'"$with_gnu_ld"'/ 777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ 778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ 779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p 780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen d 781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^# .* home page:/b print 783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^# General help using/b print 784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ' < "$progpath" 785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ret=$? 786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$1"; then 787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $ret 788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_missing_arg argname 792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error and set global 793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# exit_cmd. 794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_missing_arg () 795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "missing argument for $1." 799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit_cmd=exit 800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_split_short_opt shortopt 804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Set func_split_short_opt_name and func_split_short_opt_arg shell 805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variables after splitting SHORTOPT after the 2nd character. 806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_split_short_opt () 807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_sed_short_opt='1s/^\(..\).*$/\1/;q' 809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_split_short_opt may be replaced by extended shell implementation 814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_split_long_opt longopt 817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Set func_split_long_opt_name and func_split_long_opt_arg shell 818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variables after splitting LONGOPT at the `=' sign. 819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_split_long_opt () 820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_sed_long_arg='1s/^--[^=]*=//' 823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_split_long_opt may be replaced by extended shell implementation 827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexit_cmd=: 829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmagic="%%%MAGIC variable%%%" 835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmagic_exe="%%%MAGIC EXE variable%%%" 836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Global variables. 838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennonopt= 839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpreserve_args= 840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlo2o="s/\\.lo\$/.${objext}/" 841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseno2lo="s/\\.${objext}\$/.lo/" 842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextracted_archives= 843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextracted_serial=0 844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If this variable is set in any of the actions, the command in it 846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# will be execed at the end. This prevents here-documents from being 847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# left over by shells. 848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexec_cmd= 849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_append var value 851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Append VALUE to the end of shell variable VAR. 852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append () 853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "${1}=\$${1}\${2}" 855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_append may be replaced by extended shell implementation 856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_append_quoted var value 858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Quote VALUE and append to the end of shell variable VAR, separated 859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# by a space. 860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append_quoted () 861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "${2}" 863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_append_quoted may be replaced by extended shell implementation 865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_arith arithmetic-term... 868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_arith () 869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith_result=`expr "${@}"` 871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_arith may be replaced by extended shell implementation 872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_len string 875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# STRING may not start with a hyphen. 876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_len () 877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_len may be replaced by extended shell implementation 880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_lo2o object 883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lo2o () 884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_lo2o may be replaced by extended shell implementation 887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_xform libobj-or-source 890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_xform () 891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} # func_xform may be replaced by extended shell implementation 894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_fatal_configuration arg... 897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echo program name prefixed message to standard error, followed by 898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a configuration failure hint, and exit. 899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fatal_configuration () 900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error ${1+"$@"} 902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "See the $PACKAGE documentation for more information." 903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "Fatal configuration error." 904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_config 908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Display the configuration for all the tags in this script. 909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_config () 910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen re_begincf='^# ### BEGIN LIBTOOL' 912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen re_endcf='^# ### END LIBTOOL' 913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Default configuration. 915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now print the configurations for the tags. 918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for tagname in $taglist; do 919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $? 923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_features 926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Display the features supported by this script. 927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_features () 928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "host: $host" 930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes; then 931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "enable shared libraries" 932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "disable shared libraries" 934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = yes; then 936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "enable static libraries" 937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "disable static libraries" 939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $? 942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_enable_tag tagname 945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Verify that TAGNAME is valid, and either flag an error and exit, or 946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variable here. 948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_enable_tag () 949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Global variable: 951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tagname="$1" 952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sed_extractcf="/$re_begincf/,/$re_endcf/p" 956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Validate tagname. 958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $tagname in 959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[!-_A-Za-z0-9,/]*) 960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "invalid tag name: $tagname" 961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't test for the "default" C tag, as we know it's 965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # there but not specially marked. 966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $tagname in 967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC) ;; 968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen taglist="$taglist $tagname" 971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Evaluate the configuration. Be careful to quote the path 973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and the sed script, to avoid splitting on whitespace, but 974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # also don't use non-portable quotes within backquotes within 975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # quotes we have to do it in 2 steps: 976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$extractedcf" 978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "ignoring unknown tag $tagname" 980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_check_version_match 986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Ensure that we are using m4 macros, and libtool script from the same 987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# release of libtool. 988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_check_version_match () 989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$package_revision" != "$macro_revision"; then 991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$VERSION" != "$macro_version"; then 992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$macro_version"; then 993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat >&2 <<_LT_EOF 994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: definition of this LT_INIT comes from an older release. 996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: and run autoconf again. 998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LT_EOF 999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat >&2 <<_LT_EOF 1001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 1002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 1003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 1004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: and run autoconf again. 1005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LT_EOF 1006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat >&2 <<_LT_EOF 1009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$progname: of $PACKAGE $VERSION and run autoconf again. 1013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LT_EOF 1014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_MISMATCH 1017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Shorthand for --mode=foo, only valid as the first argument 1022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencase $1 in 1023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenclean|clea|cle|cl) 1024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode clean ${1+"$@"}; shift 1025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompile|compil|compi|comp|com|co|c) 1027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode compile ${1+"$@"}; shift 1028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexecute|execut|execu|exec|exe|ex|e) 1030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode execute ${1+"$@"}; shift 1031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfinish|finis|fini|fin|fi|f) 1033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode finish ${1+"$@"}; shift 1034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninstall|instal|insta|inst|ins|in|i) 1036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode install ${1+"$@"}; shift 1037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlink|lin|li|l) 1039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode link ${1+"$@"}; shift 1040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift; set dummy --mode uninstall ${1+"$@"}; shift 1043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenesac 1045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Option defaults: 1049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_debug=: 1050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_dry_run=false 1051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_config=false 1052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_preserve_dup_deps=false 1053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_features=false 1054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_finish=false 1055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help=false 1056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help_all=false 1057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_silent=: 1058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_verbose=: 1059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_silent=false 1060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_verbose=false 1061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Parse options once, thoroughly. This comes as soon as possible in the 1064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# script to make things like `--version' happen as quickly as we can. 1065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # this just eases exit handling 1067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test $# -gt 0; do 1068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt="$1" 1069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $opt in 1071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --debug|-x) opt_debug='set -x' 1072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_echo "enabling shell trace mode" 1073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --dry-run|--dryrun|-n) 1076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_dry_run=: 1077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --config) 1079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_config=: 1080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_config 1081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --dlopen|-dlopen) 1083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen optarg="$1" 1084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_dlopen="${opt_dlopen+$opt_dlopen 1085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}$optarg" 1086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --preserve-dup-deps) 1089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_preserve_dup_deps=: 1090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --features) 1092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_features=: 1093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_features 1094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --finish) 1096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_finish=: 1097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenset dummy --mode finish ${1+"$@"}; shift 1098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --help) 1100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_help=: 1101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --help-all) 1103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_help_all=: 1104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_help=': help-all' 1105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --mode) 1107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test $# = 0 && func_missing_arg $opt && break 1108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen optarg="$1" 1109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_mode="$optarg" 1110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencase $optarg in 1111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Valid mode arguments: 1112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen clean|compile|execute|finish|install|link|relink|uninstall) ;; 1113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Catch anything else as an error 1115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_error "invalid argument for $opt" 1116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit_cmd=exit 1117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 1118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenesac 1120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --no-silent|--no-quiet) 1123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_silent=false 1124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt" 1125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --no-verbose) 1127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_verbose=false 1128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt" 1129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --silent|--quiet) 1131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_silent=: 1132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt" 1133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_verbose=false 1134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --verbose|-v) 1136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_verbose=: 1137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt" 1138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenopt_silent=false 1139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --tag) 1141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test $# = 0 && func_missing_arg $opt && break 1142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen optarg="$1" 1143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_tag="$optarg" 1144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_append preserve_args " $opt $optarg" 1145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_enable_tag "$optarg" 1146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -\?|-h) func_usage ;; 1150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --help) func_help ;; 1151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --version) func_version ;; 1152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Separate optargs to long options: 1154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --*=*) 1155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_split_long_opt "$opt" 1156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Separate non-argument short options: 1161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -\?*|-h*|-n*|-v*) 1162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_split_short_opt "$opt" 1163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --) break ;; 1168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -*) func_fatal_help "unrecognized option \`$opt'" ;; 1169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Validate options: 1174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # save first non-option argument 1176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$#" -gt 0; then 1177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonopt="$opt" 1178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 1179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # preserve --debug 1182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$opt_debug" = : || func_append preserve_args " --debug" 1183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 1185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *pw32* | *cegcc*) 1186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # don't eliminate duplications in $postdeps and $predeps 1187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_duplicate_compiler_generated_deps=: 1188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 1190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_help || { 1195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Sanity checks first: 1196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_check_version_match 1197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_configuration "not configured to build any kind of library" 1200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Darwin sucks 1203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval std_shrext=\"$shrext_cmds\" 1204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only execute mode is allowed to have -dlopen flags. 1206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "unrecognized option \`-dlopen'" 1208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$help" 1>&2 1209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_FAILURE 1210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Change the help message to a mode-specific one. 1213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen generic_help="$help" 1214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen help="Try \`$progname --help --mode=$opt_mode' for more information." 1215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 1216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Bail if the options were screwed 1219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $exit_cmd $EXIT_FAILURE 1220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen## ----------- ## 1226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen## Main. ## 1227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen## ----------- ## 1228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_lalib_p file 1230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool `.la' library or `.lo' object file. 1231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out 1232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters. 1233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lalib_p () 1234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -f "$1" && 1236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e 4q "$1" 2>/dev/null \ 1237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_lalib_unsafe_p file 1241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool `.la' library or `.lo' object file. 1242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function implements the same check as func_lalib_p without 1243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# resorting to external programs. To this end, it redirects stdin and 1244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# closes it afterwards, without saving the original file descriptor. 1245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# As a safety measure, use it only where a negative result would be 1246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# fatal anyway. Works if `file' does not exist. 1247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lalib_unsafe_p () 1248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lalib_p=no 1250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lalib_p_l in 1 2 3 4 1252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 1253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen read lalib_p_line 1254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$lalib_p_line" in 1255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exec 0<&5 5<&- 1259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$lalib_p" = yes 1261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_script_p file 1264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool wrapper script 1265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out 1266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters. 1267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_script_p () 1268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lalib_p "$1" 1270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_executable_p file 1273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool wrapper executable 1274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out 1275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters. 1276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_executable_p () 1277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_exec_suffix= 1279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $1 in 1280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.exe) ;; 1281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_ltwrapper_exec_suffix=.exe ;; 1282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_scriptname file 1287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Assumes file is an ltwrapper_executable 1288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# uses $file to determine the appropriate filename for a 1289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# temporary ltwrapper_script. 1290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_scriptname () 1291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_and_basename "$1" "" "." 1293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$func_basename_result" 1294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_ltwrapper_p file 1298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True iff FILE is a libtool wrapper script or wrapper executable 1299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This function is only a basic sanity check; it will hardly flush out 1300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# determined imposters. 1301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_ltwrapper_p () 1302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_execute_cmds commands fail_cmd 1308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Execute tilde-delimited COMMANDS. 1309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If FAIL_CMD is given, eval that upon failure. 1310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FAIL_CMD may read-access the current command in variable CMD! 1311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_execute_cmds () 1312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs=$IFS; IFS='~' 1315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for cmd in $1; do 1316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS=$save_ifs 1317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmd=\"$cmd\" 1318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$cmd" "${2-:}" 1319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS=$save_ifs 1321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_source file 1325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Source FILE, adding directory component if necessary. 1326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Note that it is not necessary on cygwin/mingw to append a dot to 1327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# behavior happens only for exec(3), not for open(2)! Also, sourcing 1329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# `FILE.' does not work on cygwin managed mounts. 1330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_source () 1331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $1 in 1334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */* | *\\*) . "$1" ;; 1335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) . "./$1" ;; 1336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_resolve_sysroot PATH 1341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Replace a leading = in PATH with a sysroot. Store the result into 1342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_resolve_sysroot_result 1343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_resolve_sysroot () 1344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot_result=$1 1346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $func_resolve_sysroot_result in 1347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen =*) 1348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '=' '' "$func_resolve_sysroot_result" 1349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_replace_sysroot PATH 1355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If PATH begins with the sysroot, replace it with = and 1356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# store the result into func_replace_sysroot_result. 1357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_replace_sysroot () 1358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$lt_sysroot:$1" in 1360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ?*:"$lt_sysroot"*) 1361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname "$lt_sysroot" '' "$1" 1362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_replace_sysroot_result="=$func_stripname_result" 1363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 1365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Including no sysroot. 1366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_replace_sysroot_result=$1 1367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_infer_tag arg 1372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Infer tagged configuration to use if any are available and 1373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if one wasn't chosen via the "--tag" command line option. 1374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Only attempt this if the compiler in the base compile 1375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# command doesn't match the default compiler. 1376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# arg is usually of the form 'gcc ...' 1377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_infer_tag () 1378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$available_tags" && test -z "$tagname"; then 1381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC_quoted= 1382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg in $CC; do 1383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append_quoted CC_quoted "$arg" 1384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC_expanded=`func_echo_all $CC` 1386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC_quoted_expanded=`func_echo_all $CC_quoted` 1387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $@ in 1388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Blanks in the command may have been stripped by the calling shell, 1389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # but not from the CC environment variable when configure was run. 1390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Blanks at the start of $base_compile will cause this to fail 1393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # if we don't check for them as well. 1394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 1395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for z in $available_tags; do 1396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Evaluate the configuration. 1398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC_quoted= 1400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg in $CC; do 1401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Double-quote args containing other shell metacharacters. 1402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append_quoted CC_quoted "$arg" 1403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC_expanded=`func_echo_all $CC` 1405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CC_quoted_expanded=`func_echo_all $CC_quoted` 1406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$@ " in 1407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The compiler in the base compile command matches 1410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the one in the tagged configuration. 1411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Assume this is the tagged configuration we want. 1412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tagname=$z 1413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 1414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If $tagname still isn't set, then no tagged configuration 1419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # was found and let the user know that the "--tag" command 1420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # line option must be used. 1421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$tagname"; then 1422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_echo "unable to infer tagged configuration" 1423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "specify a tag with \`--tag'" 1424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# else 1425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_verbose "using $tagname tagged configuration" 1426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_write_libtool_object output_name pic_name nonpic_name 1435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Create a libtool object file (analogous to a ".la" file), 1436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# but don't create it if we're doing a dry run. 1437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_write_libtool_object () 1438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen write_libobj=${1} 1440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes; then 1441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen write_lobj=\'${2}\' 1442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen write_lobj=none 1444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = yes; then 1447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen write_oldobj=\'${3}\' 1448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen write_oldobj=none 1450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 1453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat >${write_libobj}T <<EOF 1454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $write_libobj - a libtool object file 1455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Please DO NOT delete this file! 1458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# It is necessary for linking the library. 1459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Name of the PIC object. 1461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenpic_object=$write_lobj 1462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Name of the non-PIC object 1464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennon_pic_object=$write_oldobj 1465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1466548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 1467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MV "${write_libobj}T" "${write_libobj}" 1468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 1469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen################################################## 1473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen################################################## 1475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_core_file_wine_to_w32 ARG 1477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Helper function used by file name conversion functions when $build is *nix, 1478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# correctly configured wine environment available, with the winepath program 1480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in $build's $PATH. 1481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is the $build file name to be converted to w32 format. 1483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# be empty on error (or when ARG is empty) 1485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_core_file_wine_to_w32 () 1486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32_result="$1" 1489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Unfortunately, winepath does not exit with a non-zero error code, so we 1491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # are forced to check the contents of stdout. On the other hand, if the 1492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # command is not found, the shell will set an exit code of 127 and print 1493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # *an error message* to stdout. So we must check for both error code of 1494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # zero AND non-empty stdout, which explains the odd construction: 1495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e "$lt_sed_naive_backslashify"` 1499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32_result= 1501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end: func_convert_core_file_wine_to_w32 1505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_core_path_wine_to_w32 ARG 1508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Helper function used by path conversion functions when $build is *nix, and 1509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# configured wine environment available, with the winepath program in $build's 1511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $PATH. Assumes ARG has no leading or trailing path separator characters. 1512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is path to be converted from $build format to win32. 1514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in $func_convert_core_path_wine_to_w32_result. 1515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Unconvertible file (directory) names in ARG are skipped; if no directory names 1516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# are convertible, then the result may be empty. 1517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_core_path_wine_to_w32 () 1518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # unfortunately, winepath doesn't convert paths, only file names 1521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_path_wine_to_w32_result="" 1522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldIFS=$IFS 1524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS=: 1525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for func_convert_core_path_wine_to_w32_f in $1; do 1526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS=$oldIFS 1527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$func_convert_core_path_wine_to_w32_result"; then 1530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 1536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS=$oldIFS 1537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end: func_convert_core_path_wine_to_w32 1540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygpath ARGS... 1543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (2), returns the Cygwin file name or path in func_cygpath_result (input 1547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# file name or path is assumed to be in w32 format, as previously converted 1548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# or path in func_cygpath_result (input file name or path is assumed to be in 1550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Cygwin format). Returns an empty string on error. 1551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARGS are passed to cygpath, with the last one being the file name or path to 1553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# be converted. 1554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# environment variable; do not put it in $PATH. 1557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygpath () 1558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$?" -ne 0; then 1563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # on failure, ensure result is empty 1564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath_result= 1565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath_result= 1568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#end: func_cygpath 1572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_core_msys_to_w32 ARG 1575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name or path ARG from MSYS format to w32 format. Return 1576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# result in func_convert_core_msys_to_w32_result. 1577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_core_msys_to_w32 () 1578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # awkward: cmd appends spaces to result 1581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#end: func_convert_core_msys_to_w32 1585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_check ARG1 ARG2 1588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Verify that ARG1 (a file name in $build format) was converted to $host 1589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# format in ARG2. Otherwise, emit an error message, but continue (resetting 1590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result to ARG1). 1591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_check () 1592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$2" && test -n "$1" ; then 1595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "Could not determine host file name corresponding to" 1596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error " \`$1'" 1597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "Continuing, but uninstalled executables may not work." 1598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Fallback: 1599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_check 1603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Verify that FROM_PATH (a path in $build format) was converted to $host 1607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result to a simplistic fallback value (see below). 1609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_check () 1610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$4" && test -n "$3"; then 1613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "Could not determine the host path corresponding to" 1614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error " \`$3'" 1615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "Continuing, but uninstalled executables may not work." 1616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Fallback. This is a deliberately simplistic "conversion" and 1617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # should not be "improved". See libtool.info. 1618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x$1" != "x$2"; then 1619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_replace_pathsep_chars="s|$1|$2|g" 1620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result=`echo "$3" | 1621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e "$lt_replace_pathsep_chars"` 1622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 1623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$3" 1624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_check 1628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and appending REPL if ORIG matches BACKPAT. 1633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_front_back_pathsep () 1634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $4 in 1637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $4 in 1641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $2 ) func_append func_to_host_path_result "$3" 1642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_front_back_pathsep 1646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen################################################## 1649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $build to $host FILE NAME CONVERSION FUNCTIONS # 1650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen################################################## 1651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# invoked via `$to_host_file_cmd ARG' 1652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# In each case, ARG is the path to be converted from $build to $host format. 1654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result will be available in $func_to_host_file_result. 1655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file ARG 1658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Converts the file name ARG from $build format to $host format. Return result 1659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in func_to_host_file_result. 1660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_to_host_file () 1661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $to_host_file_cmd "$1" 1664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_to_host_file 1666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_tool_file ARG LAZY 1669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# converts the file name ARG from $build format to toolchain format. Return 1670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# result in func_to_tool_file_result. If the conversion in use is listed 1671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in (the comma separated) LAZY, no conversion takes place. 1672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_to_tool_file () 1673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case ,$2, in 1676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *,"$to_tool_file_cmd",*) 1677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file_result=$1 1678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 1680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $to_tool_file_cmd "$1" 1681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file_result=$func_to_host_file_result 1682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 1684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_to_tool_file 1686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_noop ARG 1689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Copy ARG to func_to_host_file_result. 1690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_noop () 1691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_noop 1695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_msys_to_w32 ARG 1698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# conversion to w32 is not available inside the cwrapper. Returns result in 1700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result. 1701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_msys_to_w32 () 1702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_msys_to_w32 "$1" 1707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_file_check "$1" "$func_to_host_file_result" 1710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_msys_to_w32 1712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_cygwin_to_w32 ARG 1715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from Cygwin to w32 format. Returns result in 1716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result. 1717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_cygwin_to_w32 () 1718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # LT_CYGPATH in this case. 1724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result=`cygpath -m "$1"` 1725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_file_check "$1" "$func_to_host_file_result" 1727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_cygwin_to_w32 1729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_nix_to_w32 ARG 1732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from *nix to w32 format. Requires a wine environment 1733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# and a working winepath. Returns result in func_to_host_file_result. 1734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_nix_to_w32 () 1735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32 "$1" 1740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_file_check "$1" "$func_to_host_file_result" 1743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_nix_to_w32 1745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_msys_to_cygwin ARG 1748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Returns result in func_to_host_file_result. 1750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_msys_to_cygwin () 1751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_msys_to_w32 "$1" 1756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath -u "$func_convert_core_msys_to_w32_result" 1757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$func_cygpath_result" 1758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_file_check "$1" "$func_to_host_file_result" 1760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_msys_to_cygwin 1762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_file_nix_to_cygwin ARG 1765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in func_to_host_file_result. 1768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_file_nix_to_cygwin () 1769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$1" 1772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_file_wine_to_w32 "$1" 1775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_file_result="$func_cygpath_result" 1777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_file_check "$1" "$func_to_host_file_result" 1779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_file_nix_to_cygwin 1781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen############################################# 1784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $build to $host PATH CONVERSION FUNCTIONS # 1785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen############################################# 1786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# invoked via `$to_host_path_cmd ARG' 1787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# In each case, ARG is the path to be converted from $build to $host format. 1789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The result will be available in $func_to_host_path_result. 1790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Path separators are also converted from $build format to $host format. If 1792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG begins or ends with a path separator character, it is preserved (but 1793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# converted to $host format) on output. 1794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 1795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# All path conversion functions are named using the following convention: 1796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# file name conversion function : func_convert_file_X_to_Y () 1797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# path conversion function : func_convert_path_X_to_Y () 1798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# where, for any given $build/$host combination the 'X_to_Y' value is the 1799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# same. If conversion functions are added for new $build/$host combinations, 1800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# will break. 1802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_init_to_host_path_cmd 1805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# appropriate value, based on the value of $to_host_file_cmd. 1807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissento_host_path_cmd= 1808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_init_to_host_path_cmd () 1809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$to_host_path_cmd"; then 1812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen to_host_path_cmd="func_convert_path_${func_stripname_result}" 1814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_path ARG 1819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Converts the path ARG from $build format to $host format. Return result 1820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in func_to_host_path_result. 1821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_to_host_path () 1822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_init_to_host_path_cmd 1825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $to_host_path_cmd "$1" 1826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_to_host_path 1828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_noop ARG 1831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Copy ARG to func_to_host_path_result. 1832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_noop () 1833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$1" 1835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_noop 1837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_msys_to_w32 ARG 1840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# conversion to w32 is not available inside the cwrapper. Returns result in 1842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_path_result. 1843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_msys_to_w32 () 1844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$1" 1847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove leading and trailing path separator characters from ARG. MSYS 1849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and winepath ignores them completely. 1851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname : : "$1" 1852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_tmp1=$func_stripname_result 1853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_check : ";" \ 1856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "$func_to_host_path_tmp1" "$func_to_host_path_result" 1857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_msys_to_w32 1861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_cygwin_to_w32 ARG 1864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from Cygwin to w32 format. Returns result in 1865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result. 1866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_cygwin_to_w32 () 1867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$1" 1870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See func_convert_path_msys_to_w32: 1872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname : : "$1" 1873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_tmp1=$func_stripname_result 1874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_check : ";" \ 1876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "$func_to_host_path_tmp1" "$func_to_host_path_result" 1877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_cygwin_to_w32 1881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_nix_to_w32 ARG 1884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from *nix to w32 format. Requires a wine environment and 1885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a working winepath. Returns result in func_to_host_file_result. 1886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_nix_to_w32 () 1887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$1" 1890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See func_convert_path_msys_to_w32: 1892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname : : "$1" 1893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_tmp1=$func_stripname_result 1894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_check : ";" \ 1897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "$func_to_host_path_tmp1" "$func_to_host_path_result" 1898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_nix_to_w32 1902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_msys_to_cygwin ARG 1905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Returns result in func_to_host_file_result. 1907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_msys_to_cygwin () 1908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$1" 1911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See func_convert_path_msys_to_w32: 1913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname : : "$1" 1914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_tmp1=$func_stripname_result 1915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$func_cygpath_result" 1918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_check : : \ 1919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "$func_to_host_path_tmp1" "$func_to_host_path_result" 1920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_msys_to_cygwin 1924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_convert_path_nix_to_cygwin ARG 1927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_to_host_file_result. 1930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_convert_path_nix_to_cygwin () 1931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$1" 1934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 1935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove leading and trailing path separator characters from 1936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # ARG. msys behavior is inconsistent here, cygpath turns them 1937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # into '.;' and ';.', and winepath ignores them completely. 1938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname : : "$1" 1939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_tmp1=$func_stripname_result 1940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path_result="$func_cygpath_result" 1943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_check : : \ 1944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "$func_to_host_path_tmp1" "$func_to_host_path_result" 1945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 1947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 1948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end func_convert_path_nix_to_cygwin 1949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_compile arg... 1952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_compile () 1953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 1954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 1955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Get the compilation command and the source file. 1956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen base_compile= 1957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen suppress_opt=yes 1959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen suppress_output= 1960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg_mode=normal 1961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobj= 1962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen later= 1963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pie_flag= 1964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg 1966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 1967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg_mode in 1968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg ) 1969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # do not "continue". Instead, add this to base_compile 1970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lastarg="$arg" 1971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg_mode=normal 1972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen target ) 1975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobj="$arg" 1976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg_mode=normal 1977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 1978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen normal ) 1981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Accept any command-line options. 1982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 1983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -o) 1984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$libobj" && \ 1985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "you cannot specify \`-o' more than once" 1986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg_mode=target 1987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 1988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -pie | -fpie | -fPIE) 1991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append pie_flag " $arg" 1992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 1993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shared | -static | -prefer-pic | -prefer-non-pic) 1996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append later " $arg" 1997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 1998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 1999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-suppress) 2001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen suppress_opt=no 2002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Xcompiler) 2006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg_mode=arg # the next one goes into the "base_compile" arg list 2007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue # The current "srcfile" will either be retained or 2008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; # replaced later. I would guess that would be a bug. 2009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Wc,*) 2011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-Wc,' '' "$arg" 2012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen args=$func_stripname_result 2013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lastarg= 2014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS=',' 2015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg in $args; do 2016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 2017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append_quoted lastarg "$arg" 2018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 2020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname ' ' '' "$lastarg" 2021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lastarg=$func_stripname_result 2022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add the arguments to base_compile. 2024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append base_compile " $lastarg" 2025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Accept the current argument as the source file. 2030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The previous "srcfile" becomes the current argument. 2031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 2032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lastarg="$srcfile" 2033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen srcfile="$arg" 2034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac # case $arg 2036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac # case $arg_mode 2038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Aesthetically quote the previous argument. 2040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append_quoted base_compile "$lastarg" 2041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # for arg 2042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg_mode in 2044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg) 2045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "you must specify an argument for -Xcompile" 2046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen target) 2048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "you must specify a target with \`-o'" 2049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Get the name of the library object. 2052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libobj" && { 2053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$srcfile" 2054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobj="$func_basename_result" 2055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 2056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Recognize several different file suffixes. 2060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the user specifies -o file.o, it is replaced with file.lo 2061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $libobj in 2062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.[cCFSifmso] | \ 2063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.ada | *.adb | *.ads | *.asm | \ 2064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) 2066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_xform "$libobj" 2067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobj=$func_xform_result 2068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $libobj in 2072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot determine name of library object from \`$libobj'" 2075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_infer_tag $base_compile 2079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg in $later; do 2081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 2082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shared) 2083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_libtool_libs" != yes && \ 2084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_configuration "can not build a shared library" 2085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=no 2086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static) 2090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 2091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 2092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -prefer-pic) 2096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_mode=yes 2097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -prefer-non-pic) 2101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_mode=no 2102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$libobj" 2108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobj" != "X$func_quote_for_eval_result" \ 2109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && func_warning "libobj name \`$libobj' may not contain shell special characters." 2111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_and_basename "$obj" "/" "" 2112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objname="$func_basename_result" 2113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xdir="$func_dirname_result" 2114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lobj=${xdir}$objdir/$objname 2115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$base_compile" && \ 2117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify a compilation command" 2118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete any leftover library objects. 2120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = yes; then 2121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen removelist="$obj $lobj $libobj ${libobj}T" 2122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen removelist="$lobj $libobj ${libobj}T" 2124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # On Cygwin there's no "real" PIC flag so we must build both object types 2127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host_os in 2128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cygwin* | mingw* | pw32* | os2* | cegcc*) 2129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_mode=default 2130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # non-PIC code in shared libraries is not supported 2134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_mode=default 2135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Calculate the filename of the output object if compiler does 2138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # not support -o with -c 2139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$compiler_c_o" = no; then 2140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lockfile="$output_obj.lock" 2142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_obj= 2144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen need_locks=no 2145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lockfile= 2146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Lock this critical section if it is needed 2149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We use this script file to make the link, it avoids creating a new file 2150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_locks" = yes; then 2151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_echo "Waiting for $lockfile to be removed" 2153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sleep 2 2154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$need_locks" = warn; then 2156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$lockfile"; then 2157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 2158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*** ERROR, $lockfile exists and contains: 2159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen`cat $lockfile 2>/dev/null` 2160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2161548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis indicates that another process is trying to use the same 2162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentemporary object file, and libtool could not work around it because 2163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenyour compiler does not support \`-c' and \`-o' together. If you 2164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrepeat this compilation, it may succeed, by chance, but you had better 2165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenavoid parallel builds (make -j) in this platform, or get a better 2166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompiler." 2167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $removelist 2169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_FAILURE 2170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append removelist " $output_obj" 2172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$srcfile" > "$lockfile" 2173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $removelist 2176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append removelist " $lockfile" 2177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen srcfile=$func_to_tool_file_result 2181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$srcfile" 2182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen qsrcfile=$func_quote_for_eval_result 2183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only build a PIC object if we are building libtool libraries. 2185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes; then 2186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Without this assignment, base_compile gets emptied. 2187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fbsd_hideous_sh_bug=$base_compile 2188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pic_mode" != no; then 2190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen command="$base_compile $qsrcfile $pic_flag" 2191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't build PIC code 2193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen command="$base_compile $qsrcfile" 2194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mkdir_p "$xdir$objdir" 2197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$output_obj"; then 2199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Place PIC objects in $objdir 2200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append command " -o $lobj" 2201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval_locale "$command" \ 2204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_locks" = warn && 2207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 2209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*** ERROR, $lockfile contains: 2210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen`cat $lockfile 2>/dev/null` 2211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbut it should contain: 2213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$srcfile 2214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2215548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis indicates that another process is trying to use the same 2216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentemporary object file, and libtool could not work around it because 2217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenyour compiler does not support \`-c' and \`-o' together. If you 2218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrepeat this compilation, it may succeed, by chance, but you had better 2219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenavoid parallel builds (make -j) in this platform, or get a better 2220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompiler." 2221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $removelist 2223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_FAILURE 2224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just move the object if needed, then go on to compile the next one 2227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$MV "$output_obj" "$lobj"' \ 2229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Allow error messages only from the first compilation. 2233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$suppress_opt" = yes; then 2234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen suppress_output=' >/dev/null 2>&1' 2235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only build a position-dependent object if we build old libraries. 2239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = yes; then 2240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pic_mode" != yes; then 2241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't build PIC code 2242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen command="$base_compile $qsrcfile$pie_flag" 2243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen command="$base_compile $qsrcfile $pic_flag" 2245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$compiler_c_o" = yes; then 2247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append command " -o $obj" 2248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Suppress compiler output if we already did a PIC compilation. 2251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append command "$suppress_output" 2252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval_locale "$command" \ 2253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_locks" = warn && 2256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 2258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*** ERROR, $lockfile contains: 2259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen`cat $lockfile 2>/dev/null` 2260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbut it should contain: 2262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$srcfile 2263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2264548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis indicates that another process is trying to use the same 2265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentemporary object file, and libtool could not work around it because 2266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenyour compiler does not support \`-c' and \`-o' together. If you 2267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrepeat this compilation, it may succeed, by chance, but you had better 2268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenavoid parallel builds (make -j) in this platform, or get a better 2269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencompiler." 2270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $removelist 2272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_FAILURE 2273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just move the object if needed 2276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$MV "$output_obj" "$obj"' \ 2278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 2283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Unlock the critical section if it was locked 2286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_locks" != no; then 2287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen removelist=$lockfile 2288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM "$lockfile" 2289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 2291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 2293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 2294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen$opt_help || { 2296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 2298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_help () 2300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 2301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need to display help for each of the modes. 2302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $opt_mode in 2303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "") 2304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Generic help is extracted from the usage comments 2305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # at the start of this file. 2306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_help 2307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen clean) 2310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2313548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRemove files from the build directory. 2314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2315548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRM is the name of the program to use to delete files associated with each FILE 2316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissento RM. 2318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2319548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf FILE is a libtool library, object or program, all the files associated 2320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenwith it are deleted. Otherwise, only FILE itself is deleted using RM." 2321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile) 2324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2327548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenCompile a source file into a libtool library object. 2328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2329548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis mode accepts the following additional options: 2330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-suppress do not suppress compiler output for multiple passes 2333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -prefer-pic try to build PIC objects only 2334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -prefer-non-pic try to build non-PIC objects only 2335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shared do not build a \`.o' file suitable for static linking 2336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static only build a \`.o' file suitable for static linking 2337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Wc,FLAG pass FLAG directly to the compiler 2338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2339548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfrom the given SOURCEFILE. 2341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2342548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe output file name is determined by removing the directory component from 2343548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenSOURCEFILE, then substituting the C source code suffix \`.c' with the 2344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlibrary object suffix, \`.lo'." 2345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen execute) 2348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2351548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenAutomatically set library path, then run a program. 2352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2353548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis mode accepts the following additional options: 2354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -dlopen FILE add the directory containing FILE to the library path 2356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2357548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThis mode sets the library path environment variable according to \`-dlopen' 2358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenflags. 2359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2360548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf any of the ARGS are libtool executable wrappers, then they are translated 2361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninto their corresponding uninstalled binary, and any of their required library 2362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendirectories are added to the library path. 2363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2364548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThen, COMMAND is executed, with ARGS as arguments." 2365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finish) 2368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2371548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenComplete the installation of libtool libraries. 2372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2373548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEach LIBDIR is a directory that contains libtool libraries. 2374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2375548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe commands that this mode executes may require superuser privileges. Use 2376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenthe \`--dry-run' option if you just want to see what would be executed." 2377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen install) 2380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2383548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenInstall executables or libraries. 2384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2385548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenINSTALL-COMMAND is the installation command. The first component should be 2386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseneither the \`install' or \`cp' program. 2387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2388548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe following components of INSTALL-COMMAND are treated specially: 2389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2392548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe rest of the components are interpreted as arguments to that command (only 2393548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenBSD-compatible install options are recognized)." 2394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link) 2397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2400548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLink object files or libraries together to form another library, or to 2401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencreate an executable program. 2402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2403548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLINK-COMMAND is a command using the C compiler that you would use to create 2404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissena program from several object files. 2405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2406548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenThe following components of LINK-COMMAND are treated specially: 2407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -all-static do not do any dynamic linking at all 2409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -avoid-version do not add a version suffix if possible 2410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -bindir BINDIR specify path to binaries directory (for systems where 2411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libraries must be found in the PATH setting at runtime) 2412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -export-symbols SYMFILE 2416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen try to export only the symbols listed in SYMFILE 2417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -export-symbols-regex REGEX 2418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen try to export only the symbols matching REGEX 2419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -LLIBDIR search LIBDIR for required installed libraries 2420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -lNAME OUTPUT-FILE requires the installed library libNAME 2421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -module build a library that can dlopened 2422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-fast-install disable the fast-install mode 2423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-install link a not-installable executable 2424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-undefined declare that a library does not refer to external symbols 2425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -objectlist FILE Use a list of object files found in FILE to specify objects 2427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -precious-files-regex REGEX 2428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen don't remove output files matching REGEX 2429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -release RELEASE specify package release information 2430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -rpath LIBDIR the created library will eventually be installed in LIBDIR 2431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shared only do dynamic linking of libtool libraries 2433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shrext SUFFIX override the standard shared library file extension 2434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static do not do any dynamic linking of uninstalled libtool libraries 2435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static-libtool-libs 2436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do not do any dynamic linking of libtool libraries 2437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -version-info CURRENT[:REVISION[:AGE]] 2438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen specify library version info [each variable defaults to 0] 2439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -weak LIBNAME declare that the target provides the LIBNAME interface 2440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Wc,FLAG 2441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Wl,FLAG 2443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Xlinker FLAG pass linker-specific FLAG directly to the linker 2444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2446548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenAll other options (arguments beginning with \`-') are ignored. 2447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2448548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEvery other argument is treated as a filename. Files ending in \`.la' are 2449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentreated as uninstalled libtool libraries, other files are standard or library 2450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenobject files. 2451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2452548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrequired, except when creating a convenience library. 2455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2456548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenusing \`ar' and \`ranlib', or on Windows using \`lib'. 2458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2459548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenis created, otherwise an executable program is created." 2461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen uninstall) 2464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \ 2465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2467548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRemove libraries from an installation directory. 2468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2469548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenRM is the name of the program to use to delete files associated with each FILE 2470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissento RM. 2472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2473548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenIf FILE is a libtool library, all the files associated with it are deleted. 2474548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenOtherwise, only FILE itself is deleted using RM." 2475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "invalid operation mode \`$opt_mode'" 2479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 2483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "Try \`$progname --help' for more information about other modes." 2484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 2485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Now that we've collected a possible --mode arg, show help if necessary 2487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif $opt_help; then 2488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_help" = :; then 2489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mode_help 2490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 2492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_help noexit 2493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for opt_mode in compile link execute install finish uninstall clean; do 2494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mode_help 2495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 2498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_help noexit 2499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for opt_mode in compile link execute install finish uninstall clean; do 2500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 2501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mode_help 2502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } | 2504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sed '1d 2505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^When reporting/,/^Report/{ 2506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen H 2507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen d 2508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 2509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $x 2510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /information about other modes/d 2511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /more detailed .*MODE/d 2512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $? 2515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi 2516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_execute arg... 2519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_execute () 2520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 2521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 2522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The first argument is the command name. 2523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmd="$nonopt" 2524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$cmd" && \ 2525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify a COMMAND" 2526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Handle -dlopen flags immediately. 2528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file in $opt_dlopen; do 2529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -f "$file" \ 2530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen || func_fatal_help "\`$file' is not a file" 2531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir= 2533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 2534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 2535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$file" 2536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=$func_resolve_sysroot_result 2537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that this really is a libtool archive. 2539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lalib_unsafe_p "$file" \ 2540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen || func_fatal_help "\`$lib' is not a valid libtool archive" 2541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Read the libtool library. 2543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlname= 2544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen library_names= 2545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$file" 2546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Skip this library if it cannot be dlopened. 2548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$dlname"; then 2549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Warn if it was a shared library. 2550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$library_names" && \ 2551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`$file' was not linked with \`-export-dynamic'" 2552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$file" "" "." 2556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$func_dirname_result" 2557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$dir/$objdir/$dlname"; then 2559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dir "/$objdir" 2560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -f "$dir/$dlname"; then 2562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) 2568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just add the directory containing the .lo file. 2569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$file" "" "." 2570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$func_dirname_result" 2571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Get the absolute pathname. 2580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir=`cd "$dir" && pwd` 2581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$absdir" && dir="$absdir" 2582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now add the directory to shlibpath_var. 2584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval "test -z \"\$$shlibpath_var\""; then 2585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$shlibpath_var=\"\$dir\"" 2586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This variable tells wrapper scripts just to set shlibpath_var 2592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # rather than running their programs. 2593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libtool_execute_magic="$magic" 2594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check if any of the arguments is a wrapper script. 2596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen args= 2597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file 2598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 2599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 2600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -* | *.la | *.lo ) ;; 2601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do a test to see if this is really a libtool program. 2603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_ltwrapper_script_p "$file"; then 2604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$file" 2605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Transform arg to wrapped name. 2606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file="$progdir/$program" 2607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif func_ltwrapper_executable_p "$file"; then 2608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_scriptname "$file" 2609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$func_ltwrapper_scriptname_result" 2610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Transform arg to wrapped name. 2611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file="$progdir/$program" 2612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Quote arguments (to preserve shell metacharacters). 2616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append_quoted args "$file" 2617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$opt_dry_run" = Xfalse; then 2620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$shlibpath_var"; then 2621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Export the shlibpath_var. 2622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "export $shlibpath_var" 2623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Restore saved environment variables 2626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 2628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "if test \"\${save_$lt_var+set}\" = set; then 2629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $lt_var=\$save_$lt_var; export $lt_var 2630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $lt_unset $lt_var 2632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi" 2633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now prepare to actually exec the command. 2636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exec_cmd="\$cmd$args" 2637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Display what would be done. 2639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$shlibpath_var"; then 2640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "export $shlibpath_var" 2642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$cmd$args" 2644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 2645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 2647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_finish arg... 2652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_finish () 2653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 2654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 2655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libs= 2656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdirs= 2657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen admincmds= 2658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for opt in "$nonopt" ${1+"$@"} 2660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 2661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -d "$opt"; then 2662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libdirs " $opt" 2663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -f "$opt"; then 2665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_lalib_unsafe_p "$opt"; then 2666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libs " $opt" 2667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`$opt' is not a valid libtool archive" 2669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "invalid argument \`$opt'" 2673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$libs"; then 2677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$lt_sysroot"; then 2678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sysroot_cmd= 2682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove sysroot references 2685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_dry_run; then 2686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $libs; do 2687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmpdir=`func_mktempdir` 2691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $libs; do 2692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen > $tmpdir/tmp-la 2694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen mv -f $tmpdir/tmp-la $lib 2695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ${RM}r "$tmpdir" 2697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $libdirs; do 2702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$finish_cmds"; then 2703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each command in the finish commands. 2704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen'"$cmd"'"' 2706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$finish_eval"; then 2708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do the single finish_eval. 2709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmds=\"$finish_eval\" 2710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval "$cmds" || func_append admincmds " 2711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $cmds" 2712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Exit here if they wanted silent mode. 2717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_silent && exit $EXIT_SUCCESS 2718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "----------------------------------------------------------------------" 2721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "Libraries have been installed in:" 2722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $libdirs; do 2723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO " $libdir" 2724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 2726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "If you ever happen to want to link against installed libraries" 2727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "in a given directory, LIBDIR, you must either use libtool, and" 2728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "flag during linking and do at least one of the following:" 2730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$shlibpath_var"; then 2731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo " during execution" 2733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$runpath_var"; then 2735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo " - add LIBDIR to the \`$runpath_var' environment variable" 2736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo " during linking" 2737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_flag_spec"; then 2739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir=LIBDIR 2740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval flag=\"$hardcode_libdir_flag_spec\" 2741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO " - use the \`$flag' linker flag" 2743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$admincmds"; then 2745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO " - have your system administrator run these commands:$admincmds" 2746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f /etc/ld.so.conf; then 2748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 2751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "See any operating system documentation about shared libraries for" 2753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 2754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen solaris2.[6789]|solaris2.1[0-9]) 2755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "pages." 2757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "more information, such as the ld(1) and ld.so(8) manual pages." 2760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "----------------------------------------------------------------------" 2763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 2765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 2766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_install arg... 2771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_install () 2772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 2773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 2774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # There may be an optional sh(1) argument at the beginning of 2775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # install_prog (especially on Windows NT). 2776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Allow the use of GNU shtool's install command. 2778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $nonopt in *shtool*) :;; *) false;; esac; then 2779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Aesthetically quote it. 2780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$nonopt" 2781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen install_prog="$func_quote_for_eval_result " 2782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg=$1 2783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 2784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen install_prog= 2786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg=$nonopt 2787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The real first argument should be the name of the installation program. 2790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Aesthetically quote it. 2791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 2792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append install_prog "$func_quote_for_eval_result" 2793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen install_shared_prog=$install_prog 2794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $install_prog " in 2795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\\\ /]cp\ *) install_cp=: ;; 2796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) install_cp=false ;; 2797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need to accept at least all the BSD install flags. 2800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dest= 2801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen files= 2802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen opts= 2803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 2804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen install_type= 2805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen isdir=no 2806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen stripme= 2807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen no_mode=: 2808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg 2809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 2810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg2= 2811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dest"; then 2812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append files " $dest" 2813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dest=$arg 2814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 2818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -d) isdir=yes ;; 2819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -f) 2820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $install_cp; then :; else 2821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=$arg 2822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -g | -m | -o) 2825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=$arg 2826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -s) 2828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen stripme=" -s" 2829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -*) 2832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the previous option needed an argument, then skip it. 2835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$prev"; then 2836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x$prev" = x-m && test -n "$install_override_mode"; then 2837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg2=$install_override_mode 2838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen no_mode=false 2839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 2841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dest=$arg 2843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 2844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Aesthetically quote the argument. 2849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 2850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append install_prog " $func_quote_for_eval_result" 2851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$arg2"; then 2852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg2" 2853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append install_shared_prog " $func_quote_for_eval_result" 2855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$install_prog" && \ 2858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify an install program" 2859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$prev" && \ 2861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "the \`$prev' option requires an argument" 2862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$install_override_mode" && $no_mode; then 2864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $install_cp; then :; else 2865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$install_override_mode" 2866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append install_shared_prog " -m $func_quote_for_eval_result" 2867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$files"; then 2871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$dest"; then 2872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "no file or destination specified" 2873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify a destination" 2875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Strip any trailing slash from the destination. 2879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '/' "$dest" 2880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dest=$func_stripname_result 2881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that the destination is a directory. 2883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -d "$dest" && isdir=yes 2884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$isdir" = yes; then 2885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destdir="$dest" 2886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destname= 2887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_and_basename "$dest" "" "." 2889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destdir="$func_dirname_result" 2890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destname="$func_basename_result" 2891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Not a directory, so check to see that there is only one file specified. 2893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $files; shift 2894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$#" -gt 1 && \ 2895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "\`$dest' is not a directory" 2896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $destdir in 2898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) ;; 2899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file in $files; do 2901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 2902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) ;; 2903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 2904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "\`$destdir' must be an absolute directory name" 2905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 2908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This variable tells wrapper scripts just to set variables rather 2912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # than running their programs. 2913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libtool_install_magic="$magic" 2914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen staticlibs= 2916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen future_libdirs= 2917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen current_libdirs= 2918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file in $files; do 2919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each installation. 2921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 2922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$libext) 2923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do the static libraries later. 2924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append staticlibs " $file" 2925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 2926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 2928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$file" 2929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=$func_resolve_sysroot_result 2930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that this really is a libtool archive. 2932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lalib_unsafe_p "$file" \ 2933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen || func_fatal_help "\`$file' is not a valid libtool archive" 2934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen library_names= 2936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_library= 2937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 2938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$file" 2939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add the libdir to current_libdirs if it is the destination. 2941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$destdir" = "X$libdir"; then 2942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$current_libdirs " in 2943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 2944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append current_libdirs " $libdir" ;; 2945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Note the libdir as a future libdir. 2948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$future_libdirs " in 2949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 2950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append future_libdirs " $libdir" ;; 2951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 2952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$file" "/" "" 2955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$func_dirname_result" 2956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dir "$objdir" 2957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$relink_command"; then 2959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Determine the prefix the user has applied to our future dir. 2960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't allow the user to place us outside of our expected 2963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # location b/c this prevents finding dependent libraries that 2964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # are installed to the same prefix. 2965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # At present, this check doesn't affect windows .dll's that 2966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # are installed into $libdir/../bin (currently, that works fine) 2967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # but it's something to keep an eye on. 2968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$inst_prefix_dir" = "$destdir" && \ 2969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inst_prefix_dir"; then 2972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Stick the inst_prefix_dir data into the link command. 2973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 2975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "relinking \`$file'" 2979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$relink_command" \ 2980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 2982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See the names of the shared library. 2984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $library_names; shift 2985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$1"; then 2986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen realname="$1" 2987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 2988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen srcname="$realname" 2990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$relink_command" && srcname="$realname"T 2991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 2992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Install the shared library and build the symlinks. 2993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 'exit $?' 2995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tstripme="$stripme" 2996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host_os in 2997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cygwin* | mingw* | pw32* | cegcc*) 2998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $realname in 2999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.dll.a) 3000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tstripme="" 3001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$tstripme" && test -n "$striplib"; then 3006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$striplib $destdir/$realname" 'exit $?' 3007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$#" -gt 0; then 3010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete the old symlinks, and create new ones. 3011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Try `ln -sf' first, because the `ln' binary might depend on 3012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the symlink we replace! Solaris /bin/ln does not understand -f, 3013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # so we also need to try rm && ln -s. 3014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for linkname 3015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 3016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$linkname" != "$realname" \ 3017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each command in the postinstall commands. 3022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib="$destdir/$realname" 3023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$postinstall_cmds" 'exit $?' 3024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Install the pseudo-library for information purposes. 3027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$file" 3028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 3029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen instname="$dir/$name"i 3030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Maybe install the static library, too. 3033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) 3037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Install (i.e. copy) a libtool object. 3038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Figure out destination file name, if it wasn't already specified. 3040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$destname"; then 3041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile="$destdir/$destname" 3042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$file" 3044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile="$func_basename_result" 3045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile="$destdir/$destfile" 3046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Deduce the name of the destination old-style object file. 3049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $destfile in 3050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) 3051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lo2o "$destfile" 3052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen staticdest=$func_lo2o_result 3053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$objext) 3055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen staticdest="$destfile" 3056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile= 3057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "cannot copy a libtool object to \`$destfile'" 3060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Install the libtool object if requested. 3064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$destfile" && \ 3065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$install_prog $file $destfile" 'exit $?' 3066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Install the old object if enabled. 3068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = yes; then 3069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Deduce the name of the old-style object file. 3070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lo2o "$file" 3071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen staticobj=$func_lo2o_result 3072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 3075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Figure out destination file name, if it wasn't already specified. 3079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$destname"; then 3080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile="$destdir/$destname" 3081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$file" 3083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile="$func_basename_result" 3084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile="$destdir/$destfile" 3085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the file is missing, and there is a .exe on the end, strip it 3088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # because it is most likely a libtool script we actually want to 3089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # install 3090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen stripped_ext="" 3091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 3092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.exe) 3093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -f "$file"; then 3094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$file" 3095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=$func_stripname_result 3096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen stripped_ext=".exe" 3097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do a test to see if this is really a libtool program. 3102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw*) 3104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_ltwrapper_executable_p "$file"; then 3105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_scriptname "$file" 3106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrapper=$func_ltwrapper_scriptname_result 3107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$file" 3109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrapper=$func_stripname_result 3110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrapper=$file 3114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_ltwrapper_script_p "$wrapper"; then 3117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen notinst_deplibs= 3118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 3119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$wrapper" 3121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check the variables that should have been set. 3123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$generated_by_libtool_version" && \ 3124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize=yes 3127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $notinst_deplibs; do 3128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that each library is installed. 3129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir= 3130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$lib"; then 3131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$lib" 3132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$libdir" && test ! -f "$libfile"; then 3135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`$lib' has not been installed in \`$libdir'" 3136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize=no 3137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 3141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$wrapper" 3142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen outputname= 3144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$fast_install" = no && test -n "$relink_command"; then 3145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$finalize" = yes; then 3147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmpdir=`func_mktempdir` 3148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$file$stripped_ext" 3149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file="$func_basename_result" 3150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen outputname="$tmpdir/$file" 3151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Replace the output file specification. 3152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_silent || { 3155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_expand "$relink_command" 3156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "func_echo $func_quote_for_expand_result" 3157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval "$relink_command"; then : 3159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "error: relink \`$file' with the above command before installing it" 3161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || ${RM}r "$tmpdir" 3162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 3163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file="$outputname" 3165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "cannot relink \`$file'" 3167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Install the binary that we compiled earlier. 3171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # remove .exe since cygwin /usr/bin/install will append another 3176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # one anyway 3177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $install_prog,$host in 3178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */usr/bin/install*,*cygwin*) 3179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file:$destfile in 3180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.exe:*.exe) 3181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # this is ok 3182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.exe:*) 3184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile=$destfile.exe 3185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *:*.exe) 3187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$destfile" 3188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destfile=$func_stripname_result 3189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || if test -n "$outputname"; then 3195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ${RM}r "$tmpdir" 3196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file in $staticlibs; do 3202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$file" 3203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 3204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Set up the ranlib parameters. 3206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlib="$destdir/$name" 3207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$stripme" && test -n "$old_striplib"; then 3211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$old_striplib $oldlib" 'exit $?' 3212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each command in the postinstall commands. 3215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$future_libdirs" && \ 3219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "remember to run \`$progname --finish$future_libdirs'" 3220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$current_libdirs"; then 3222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Maybe just do a dry run. 3223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 3227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_generate_dlsyms outputname originator pic_p 3234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Extract symbols from dlprefiles and create ${outputname}S.o with 3235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# a dlpreopen symbol table. 3236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_generate_dlsyms () 3237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_outputname="$1" 3240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_originator="$2" 3241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_pic_p="${3-no}" 3242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_dlsyms= 3244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_dlsyms="${my_outputname}S.c" 3248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "not configured to extract global symbols from dlpreopened files" 3250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$my_dlsyms"; then 3254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $my_dlsyms in 3255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "") ;; 3256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.c) 3257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Discover the nlist of each of the dlfiles. 3258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nlist="$output_objdir/${my_outputname}.nm" 3259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Parse the name list into a source file. 3263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating $output_objdir/$my_dlsyms" 3264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus 3270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextern \"C\" { 3271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 3272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 3276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_DLSYM_CONST 3282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__osf__) 3283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* This system does not cope well with relocations in const data. */ 3284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_DLSYM_CONST 3285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else 3286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_DLSYM_CONST const 3287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 3288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* External symbol declarations for the compiler. */\ 3290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 3291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$dlself" = yes; then 3293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "generating symbol list for \`$output'" 3294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add our own program objects to the symbol list. 3298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for progfile in $progfiles; do 3300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$exclude_expsyms"; then 3306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$MV "$nlist"T "$nlist"' 3309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols_regex"; then 3313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$MV "$nlist"T "$nlist"' 3316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prepare the list of exported symbols 3320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$export_symbols"; then 3321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols="$output_objdir/$outputname.exp" 3322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM $export_symbols 3324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *cegcc* ) 3327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$MV "$nlist"T "$nlist"' 3337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *cegcc* ) 3339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dlprefile in $dlprefiles; do 3348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "extracting global C symbols from \`$dlprefile'" 3349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$dlprefile" 3350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 3351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *cegcc* ) 3353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # if an import library, we need to obtain dlname 3354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_win32_import_lib_p "$dlprefile"; then 3355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_tr_sh "$dlprefile" 3356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefile_dlbasename="" 3358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Use subshell, to avoid clobbering current variable values 3360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlprefile_dlname" ; then 3362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$dlprefile_dlname" 3363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefile_dlbasename="$func_basename_result" 3364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # no lafile. user explicitly requested -dlpreopen <import library>. 3366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $sharedlib_from_linklib_cmd "$dlprefile" 3367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefile_dlbasename=$sharedlib_from_linklib_result 3368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlprefile_dlbasename" ; then 3372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "Could not compute DLL name from $name" 3375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$ECHO ": $name " >> "$nlist"' 3376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else # not an import lib 3382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$ECHO ": $name " >> "$nlist"' 3384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval '$ECHO ": $name " >> "$nlist"' 3392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure we have at least an empty file. 3401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -f "$nlist" || : > "$nlist" 3402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$exclude_expsyms"; then 3404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MV "$nlist"T "$nlist" 3406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Try sorting and uniquifying the output. 3409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $GREP -v "^: " < "$nlist" | 3410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if sort -k 3 </dev/null >/dev/null 2>&1; then 3411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sort -k 3 3412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sort +2 3414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi | 3415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen uniq > "$nlist"S; then 3416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 3417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $GREP -v "^: " < "$nlist" > "$nlist"S 3419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$nlist"S; then 3422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo >> "$output_objdir/$my_dlsyms" "\ 3428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* The mapping between symbol names and symbols. */ 3430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentypedef struct { 3431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *name; 3432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen void *address; 3433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} lt_dlsymlist; 3434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenextern LT_DLSYM_CONST lt_dlsymlist 3435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_${my_prefix}_LTX_preloaded_symbols[]; 3436548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenLT_DLSYM_CONST lt_dlsymlist 3437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_${my_prefix}_LTX_preloaded_symbols[] = 3438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{\ 3439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { \"$my_originator\", (void *) 0 }," 3440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $need_lib_prefix in 3442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen no) 3443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo >> "$output_objdir/$my_dlsyms" "\ 3450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen {0, (void *) 0} 3451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen}; 3452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* This works around a problem in FreeBSD linker */ 3454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef FREEBSD_WORKAROUND 3455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const void *lt_preloaded_setup() { 3456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return lt_${my_prefix}_LTX_preloaded_symbols; 3457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 3459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef __cplusplus 3461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif\ 3463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 3464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } # !$opt_dry_run 3465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_flag_for_symtable= 3467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$compile_command " in 3468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" -static "*) ;; 3469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # compiling the symbol table file with pic_flag works around 3472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # a FreeBSD bug that causes programs to crash when -lm is 3473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # linked before any other PIC object. But we must not use 3474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # pic_flag when linking with -static. The problem exists in 3475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-hpux*) 3479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_flag_for_symtable=" $pic_flag" ;; 3480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$my_pic_p" != Xno; then 3482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_flag_for_symtable=" $pic_flag" 3483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen symtab_cflags= 3489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg in $LTCFLAGS; do 3490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 3491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -pie | -fpie | -fPIE) ;; 3492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append symtab_cflags " $arg" ;; 3493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now compile the dynamic symbol file. 3497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Clean up the generated files. 3500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Transform the symbol file into the correct name. 3503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen symfileobj="$output_objdir/${my_outputname}S.$objext" 3504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *cegcc* ) 3506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$output_objdir/$my_outputname.def"; then 3507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We keep going just in case the user didn't refer to 3526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # really was required. 3528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Nullify the symbol file. 3530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_win32_libid arg 3536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# return the library type of file 'arg' 3537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Need a lot of goo to handle *both* DLLs and import libs 3539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Has to be a shell function in order to 'eat' the argument 3540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# that is supplied when $file_magic_command is called. 3541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Despite the name, also deal with 64 bit binaries. 3542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_win32_libid () 3543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen win32_libid_type="unknown" 3546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen win32_fileres=`file -L $1 2>/dev/null` 3547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $win32_fileres in 3548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *ar\ archive\ import\ library*) # definitely import 3549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen win32_libid_type="x86 archive import" 3550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *ar\ archive*) # could be an import, or static 3552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$1" func_convert_file_msys_to_w32 3556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -n -e ' 3558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 1,100{ 3559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen / I /{ 3560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s,.*,import, 3561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p 3562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen q 3563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen }'` 3565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $win32_nmres in 3566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen import*) win32_libid_type="x86 archive import";; 3567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) win32_libid_type="x86 archive static";; 3568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *DLL*) 3572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen win32_libid_type="x86 DLL" 3573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *executable*) # but shell scripts are "executable" too... 3575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $win32_fileres in 3576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *MS\ Windows\ PE\ Intel*) 3577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen win32_libid_type="x86 DLL" 3578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$win32_libid_type" 3583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_dll_for_implib ARG 3586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Platform-specific function to extract the 3588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# name of the DLL associated with the specified 3589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# import library ARG. 3590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Invoked by eval'ing the libtool variable 3591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $sharedlib_from_linklib_cmd 3592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in the variable 3593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $sharedlib_from_linklib_result 3594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_dll_for_implib () 3595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The is the core of a fallback implementation of a 3603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# platform-specific function to extract the name of the 3604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# DLL associated with the specified import library LIBNAME. 3605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# SECTION_NAME is either .idata$6 or .idata$7, depending 3607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# on the platform and compiler that created the implib. 3608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Echos the name of the DLL associated with the 3610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# specified import library. 3611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_dll_for_implib_fallback_core () 3612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED '/^Contents of section '"$match_literal"':/{ 3617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Place marker at beginning of archive member dllname section 3618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/.*/====MARK====/ 3619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p 3620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen d 3621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 3622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # These lines can sometimes be longer than 43 characters, but 3623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # are always uninteresting 3624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /:[ ]*file format pe[i]\{,1\}-/d 3625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^In archive [^:]*:/d 3626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Ensure marker is printed 3627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^====MARK====/p 3628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove all lines with less than 43 characters 3629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^.\{43\}/!d 3630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # From remaining lines, remove first 43 characters 3631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^.\{43\}//' | 3632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -n ' 3633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Join marker and all lines until next marker into a single line 3634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /^====MARK====/ b para 3635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen H 3636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ b para 3637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen b 3638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen :para 3639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen x 3640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/\n//g 3641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove the marker 3642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/^====MARK====// 3643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove trailing dots and whitespace 3644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen s/[\. \t]*$// 3645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Print 3646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /./p' | 3647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # we now have a list, one entry per line, of the stringified 3648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # contents of the appropriate section of all members of the 3649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # archive which possess that section. Heuristic: eliminate 3650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # all those which have a first or second character that is 3651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # a '.' (that is, objdump's representation of an unprintable 3652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # character.) This should work for all archives with less than 3653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 0x302f exports -- but will fail for DLLs whose name actually 3654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # begins with a literal '.' or a single character followed by 3655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # a '.'. 3656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 3657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Of those that remain, print the first one. 3658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e '/^\./d;/^.\./d;q' 3659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_gnu_implib_p ARG 3662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This predicate returns with zero status (TRUE) if 3663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is a GNU/binutils-style import library. Returns 3664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# with nonzero status (FALSE) otherwise. 3665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_gnu_implib_p () 3666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$1" func_convert_file_msys_to_w32 3669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` 3670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$func_cygming_gnu_implib_tmp" 3671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_ms_implib_p ARG 3674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This predicate returns with zero status (TRUE) if 3675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is an MS-style import library. Returns 3676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# with nonzero status (FALSE) otherwise. 3677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_ms_implib_p () 3678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$1" func_convert_file_msys_to_w32 3681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$func_cygming_ms_implib_tmp" 3683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_cygming_dll_for_implib_fallback ARG 3686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Platform-specific function to extract the 3687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# name of the DLL associated with the specified 3688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# import library ARG. 3689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This fallback implementation is for use when $DLLTOOL 3691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# does not support the --identify-strict option. 3692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Invoked by eval'ing the libtool variable 3693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $sharedlib_from_linklib_cmd 3694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Result is available in the variable 3695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $sharedlib_from_linklib_result 3696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_cygming_dll_for_implib_fallback () 3697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_cygming_gnu_implib_p "$1" ; then 3700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # binutils import library 3701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif func_cygming_ms_implib_p "$1" ; then 3703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # ms-generated import library 3704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # unknown 3707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sharedlib_from_linklib_result="" 3708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_extract_an_archive dir oldlib 3713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_extract_an_archive () 3714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen f_ex_an_ar_dir="$1"; shift 3717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen f_ex_an_ar_oldlib="$1" 3718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$lock_old_archive_extraction" = yes; then 3719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lockfile=$f_ex_an_ar_oldlib.lock 3720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_echo "Waiting for $lockfile to be removed" 3722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sleep 2 3723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 'stat=$?; rm -f "$lockfile"; exit $stat' 3727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$lock_old_archive_extraction" = yes; then 3728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || rm -f "$lockfile" 3729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 3732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_extract_archives gentop oldlib ... 3739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_extract_archives () 3740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 3742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_gentop="$1"; shift 3743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_oldlibs=${1+"$@"} 3744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_oldobjs="" 3745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xlib="" 3746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xabs="" 3747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xdir="" 3748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for my_xlib in $my_oldlibs; do 3750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract the objects. 3751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $my_xlib in 3752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) my_xabs=`pwd`"/$my_xlib" ;; 3754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$my_xlib" 3756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xlib="$func_basename_result" 3757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xlib_u=$my_xlib 3758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while :; do 3759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $extracted_archives " in 3760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $my_xlib_u "*) 3761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $extracted_serial + 1 3762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen extracted_serial=$func_arith_result 3763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) break ;; 3765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen extracted_archives="$extracted_archives $my_xlib_u" 3768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_xdir="$my_gentop/$my_xlib_u" 3769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mkdir_p "$my_xdir" 3771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-darwin*) 3774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "Extracting $my_xabs" 3775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do not bother doing anything if just a dry run 3776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 3777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_orig_dir=`pwd` 3778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cd $my_xdir || exit $? 3779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_archive=$my_xabs 3780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_curdir=`pwd` 3781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_base_archive=`basename "$darwin_archive"` 3782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$darwin_arches"; then 3784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_arch= 3786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for darwin_arch in $darwin_arches ; do 3788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cd "$darwin_curdir" 3793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # $darwin_arches 3795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_file= 3798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_files= 3799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for darwin_file in $darwin_filelist; do 3800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $LIPO -create -output "$darwin_file" $darwin_files 3802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # $darwin_filelist 3803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM -rf unfat-$$ 3804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cd "$darwin_orig_dir" 3805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 3806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cd $darwin_orig_dir 3807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_an_archive "$my_xdir" "$my_xabs" 3808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $darwin_arches 3809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } # !$opt_dry_run 3810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_an_archive "$my_xdir" "$my_xabs" 3813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_archives_result="$my_oldobjs" 3819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_emit_wrapper [arg=no] 3823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Emit a libtool wrapper script on stdout. 3825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Don't directly open a file because we may want to 3826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# incorporate the script contents within a cygwin/mingw 3827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# wrapper executable. Must ONLY be called from within 3828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_link because it depends on a number of variables 3829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# set therein. 3830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# variable will take. If 'yes', then the emitted script 3833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# will assume that the directory in which it is stored is 3834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the $objdir directory. This is a cygwin/mingw-specific 3835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# behavior. 3836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_emit_wrapper () 3837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_emit_wrapper_arg1=${1-no} 3839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 3841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#! $SHELL 3842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $output - temporary wrapper script for $objdir/$outputname 3844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The $output program cannot be directly executed until all the libtool 3847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# libraries that it depends on are installed. 3848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This wrapper script should never be moved out of the build directory. 3850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If it is, it will not operate correctly. 3851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Sed substitution that helps us do robust quoting. It backslashifies 3853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# metacharacters that are still active within double-quoted strings. 3854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissensed_quote_subst='$sed_quote_subst' 3855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Be Bourne compatible 3857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen emulate sh 3859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen NULLCMD=: 3860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # is contrary to our usage. Disable this feature. 3862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen setopt NO_GLOB_SUBST 3864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenelse 3865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi 3867548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenBIN_SH=xpg4; export BIN_SH # for Tru64 3868548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenDUALCASE=1; export DUALCASE # for MKS sh 3869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The HP-UX ksh and POSIX shell print the target directory to stdout 3871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# if CDPATH is set. 3872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrelink_command=\"$relink_command\" 3875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# This environment variable determines our operation mode. 3877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test \"\$libtool_install_magic\" = \"$magic\"; then 3878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # install mode needs the following variables: 3879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen generated_by_libtool_version='$macro_version' 3880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen notinst_deplibs='$notinst_deplibs' 3881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenelse 3882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=\"\$0\"" 3885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 3888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# A function that is used when there is no print builtin or printf. 3890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_fallback_echo () 3891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval 'cat <<_LTECHO_EOF 3893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen\$1 3894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen_LTECHO_EOF' 3895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ECHO=\"$qECHO\" 3897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Very basic option parsing. These options are (a) specific to 3900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the libtool wrapper, (b) are identical between the wrapper 3901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# /script/ and the wrapper /executable/ which is used only on 3902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# windows platforms, and (c) all begin with the string "--lt-" 3903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (application programs are unlikely to have options which match 3904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# this pattern). 3905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# There are only two supported options: --lt-debug and 3907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# --lt-dump-script. There is, deliberately, no --lt-help. 3908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 3909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The first argument to this parsing function should be the 3910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# script's $0 value, followed by "$@". 3911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_option_debug= 3912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_parse_lt_options () 3913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_script_arg0=\$0 3915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 3916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lt_opt 3917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 3918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case \"\$lt_opt\" in 3919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --lt-debug) lt_option_debug=1 ;; 3920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --lt-dump-script) 3921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat \"\$lt_dump_D/\$lt_dump_F\" 3925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit 0 3926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --lt-*) 3928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit 1 3930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Print the debug banner immediately: 3935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n \"\$lt_option_debug\"; then 3936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Used when --lt-debug. Prints its arguments to stdout 3941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# (redirection is the responsibility of the caller) 3942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_lt_dump_args () 3943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_dump_args_N=1; 3945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lt_arg 3946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 3947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Core function for launching the target application 3953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_exec_program_core () 3954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 3956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 3957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Backslashes separate directories on plain windows 3958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-mingw | *-*-os2* | *-cegcc*) 3959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 3960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n \"\$lt_option_debug\"; then 3961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lt_dump_args \${1+\"\$@\"} 1>&2 3963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 3966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 3969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 3970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n \"\$lt_option_debug\"; then 3971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lt_dump_args \${1+\"\$@\"} 1>&2 3973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 3974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 3976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 3977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 3979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit 1 3981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# A function to encapsulate launching the target application 3984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Strips options in the --lt-* namespace from \$@ and 3985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# launches target application with the remaining arguments. 3986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_exec_program () 3987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 3988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lt_wr_arg 3989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 3990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case \$lt_wr_arg in 3991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen --lt-*) ;; 3992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 3994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 3995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 3996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_exec_program_core \${1+\"\$@\"} 3997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 3998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 3999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Parse options 4000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Find the directory that this script lives in. 4003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Follow symbolic links until we get to the real thisdir. 4007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test -n \"\$file\"; do 4009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If there was a directory component, then change thisdir. 4012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test \"x\$destdir\" != \"x\$file\"; then 4013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case \"\$destdir\" in 4014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) thisdir=\"\$thisdir/\$destdir\" ;; 4016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 4017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 4022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Usually 'no', except on cygwin/mingw when embedded into 4024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the cwrapper. 4025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # special case for '.' 4028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test \"\$thisdir\" = \".\"; then 4029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen thisdir=\`pwd\` 4030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # remove .libs from thisdir 4032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case \"\$thisdir\" in 4033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $objdir ) thisdir=. ;; 4035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 4036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Try to get the absolute directory name. 4039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir=\`cd \"\$thisdir\" && pwd\` 4040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n \"\$absdir\" && thisdir=\"\$absdir\" 4041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 4042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$fast_install" = yes; then 4044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen program=lt-'$outputname'$exeext 4046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progdir=\"\$thisdir/$objdir\" 4047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -f \"\$progdir/\$program\" || 4049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=\"\$\$-\$program\" 4053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -d \"\$progdir\"; then 4055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MKDIR \"\$progdir\" 4056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM \"\$progdir/\$file\" 4058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi" 4059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # relink executable if necessary 4063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n \"\$relink_command\"; then 4064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO \"\$relink_command_output\" >&2 4067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM \"\$progdir/\$file\" 4068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit 1 4069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { $RM \"\$progdir/\$program\"; 4074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM \"\$progdir/\$file\" 4076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi" 4077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen program='$outputname' 4080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen progdir=\"\$thisdir/$objdir\" 4081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 4082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f \"\$progdir/\$program\"; then" 4087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # fixup the dll searchpath if we need to. 4089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 4090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Fix the DLL searchpath if we need to. Do this before prepending 4091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # to shlibpath, because on Windows, both are PATH and uninstalled 4092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # libraries must come first. 4093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dllsearchpath"; then 4094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add the dll search path components to the executable PATH 4096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen PATH=$dllsearchpath:\$PATH 4097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 4098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Export our shlibpath_var if we have one. 4101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add our own library path to $shlibpath_var 4104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Some systems cannot cope with colon-terminated $shlibpath_var 4107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The second colon is a workaround for a bug in BeOS R4 sed 4108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export $shlibpath_var 4111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 4112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "\ 4115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test \"\$libtool_execute_magic\" != \"$magic\"; then 4116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Run the actual program with our arguments. 4117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_exec_program \${1+\"\$@\"} 4118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The program doesn't exist. 4121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit 1 4125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi\ 4127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen" 4128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_emit_cwrapperexe_src 4132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# emit the source code for a wrapper executable on stdout 4133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Must ONLY be called from within func_mode_link because 4134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# it depends on a number of variable set therein. 4135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_emit_cwrapperexe_src () 4136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen The $output program cannot be directly executed until all the libtool 4143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libraries that it depends on are installed. 4144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen This wrapper executable should never be moved out of the build directory. 4146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen If it is, it will not operate correctly. 4147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*/ 4148548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef _MSC_VER 4151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define _CRT_SECURE_NO_DEPRECATE 1 4152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdio.h> 4154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdlib.h> 4155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef _MSC_VER 4156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <direct.h> 4157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <process.h> 4158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <io.h> 4159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else 4160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <unistd.h> 4161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <stdint.h> 4162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifdef __CYGWIN__ 4163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# include <io.h> 4164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif 4165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <malloc.h> 4167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <stdarg.h> 4168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <assert.h> 4169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <string.h> 4170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <ctype.h> 4171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <errno.h> 4172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <fcntl.h> 4173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#include <sys/stat.h> 4174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* declarations of non-ANSI functions */ 4176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(__MINGW32__) 4177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifdef __STRICT_ANSI__ 4178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint _putenv (const char *); 4179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif 4180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__CYGWIN__) 4181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifdef __STRICT_ANSI__ 4182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *realpath (const char *, char *); 4183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint putenv (char *); 4184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint setenv (const char *, const char *, int); 4185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif 4186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* #elif defined (other platforms) ... */ 4187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* portability defines, excluding path handling macros */ 4190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(_MSC_VER) 4191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define setmode _setmode 4192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define stat _stat 4193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define chmod _chmod 4194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define getcwd _getcwd 4195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define putenv _putenv 4196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define S_IXUSR _S_IEXEC 4197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifndef _INTPTR_T_DEFINED 4198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define _INTPTR_T_DEFINED 4199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define intptr_t int 4200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif 4201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__MINGW32__) 4202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define setmode _setmode 4203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define stat _stat 4204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define chmod _chmod 4205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define getcwd _getcwd 4206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define putenv _putenv 4207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(__CYGWIN__) 4208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define HAVE_SETENV 4209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define FOPEN_WB "wb" 4210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* #elif defined (other platforms) ... */ 4211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(PATH_MAX) 4214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_PATHMAX PATH_MAX 4215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#elif defined(MAXPATHLEN) 4216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_PATHMAX MAXPATHLEN 4217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else 4218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define LT_PATHMAX 1024 4219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef S_IXOTH 4222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define S_IXOTH 0 4223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef S_IXGRP 4225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define S_IXGRP 0 4226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* path handling portability macros */ 4229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef DIR_SEPARATOR 4230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define DIR_SEPARATOR '/' 4231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define PATH_SEPARATOR ':' 4232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen defined (__OS2__) 4236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define HAVE_DOS_BASED_FILE_SYSTEM 4237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define FOPEN_WB "wb" 4238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifndef DIR_SEPARATOR_2 4239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define DIR_SEPARATOR_2 '\\' 4240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif 4241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ifndef PATH_SEPARATOR_2 4242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define PATH_SEPARATOR_2 ';' 4243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# endif 4244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef DIR_SEPARATOR_2 4247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else /* DIR_SEPARATOR_2 */ 4249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_DIR_SEPARATOR(ch) \ 4250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* DIR_SEPARATOR_2 */ 4252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef PATH_SEPARATOR_2 4254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else /* PATH_SEPARATOR_2 */ 4256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif /* PATH_SEPARATOR_2 */ 4258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef FOPEN_WB 4260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define FOPEN_WB "w" 4261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef _O_BINARY 4263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# define _O_BINARY 0 4264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define XFREE(stale) do { \ 4268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (stale) { free ((void *) stale); stale = 0; } \ 4269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} while (0) 4270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined(LT_DEBUGWRAPPER) 4272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic int lt_debug = 1; 4273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else 4274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic int lt_debug = 0; 4275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid *xmalloc (size_t num); 4280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *xstrdup (const char *string); 4281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char *base_name (const char *name); 4282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *find_executable (const char *wrapper); 4283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *chase_symlinks (const char *pathspec); 4284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint make_executable (const char *path); 4285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint check_executable (const char *path); 4286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *strendzap (char *str, const char *pat); 4287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_fatal (const char *file, int line, const char *message, ...); 4289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *nonnull (const char *s); 4290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *nonempty (const char *s); 4291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_setenv (const char *name, const char *value); 4292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 4293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_update_exe_path (const char *name, const char *value); 4294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_update_lib_path (const char *name, const char *value); 4295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar **prepare_spawn (char **argv); 4296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_dump_script (FILE *f); 4297548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvolatile const char * MAGIC_EXE = "$magic_exe"; 4301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4302548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path "$temp_rpath" 4306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4308548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * LIB_PATH_VALUE = ""; 4312548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dllsearchpath"; then 4316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_host_path "$dllsearchpath:" 4317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VARNAME = "PATH"; 4319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4320548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VARNAME = ""; 4324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * EXE_PATH_VALUE = ""; 4325548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$fast_install" = yes; then 4329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4331548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4335548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 4337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define LTWRAPPER_OPTION_PREFIX "--lt-" 4342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint 4348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmain (int argc, char *argv[]) 4349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char **newargz; 4351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int newargc; 4352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *tmp_pathspec; 4353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *actual_cwrapper_path; 4354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *actual_cwrapper_name; 4355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *target_name; 4356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *lt_argv_zero; 4357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen intptr_t rval = 127; 4358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int i; 4360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen program_name = (char *) xstrdup (base_name (argv[0])); 4362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newargz = XMALLOC (char *, argc + 1); 4363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* very simple arg parsing; don't want to rely on getopt 4365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * also, copy all non cwrapper options to newargz, except 4366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * argz[0], which is handled differently 4367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 4368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newargc=0; 4369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (i = 1; i < argc; i++) 4370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (strcmp (argv[i], dumpscript_opt) == 0) 4372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4373548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$host" in 4375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *mingw* | *cygwin* ) 4376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # make stdout use "unix" line endings 4377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo " setmode(1,_O_BINARY);" 4378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 4379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 4380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_dump_script (stdout); 4383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 0; 4384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (strcmp (argv[i], debug_opt) == 0) 4386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debug = 1; 4388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue; 4389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen namespace, but it is not one of the ones we know about and 4394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen have already dealt with, above (inluding dump-script), then 4395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen report an error. Otherwise, targets might begin to believe 4396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen namespace. The first time any user complains about this, we'll 4398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen or a configure.ac-settable value. 4400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 4401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, 4402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "unrecognized %s option: '%s'", 4403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ltwrapper_option_prefix, argv[i]); 4404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* otherwise ... */ 4406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newargz[++newargc] = xstrdup (argv[i]); 4407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newargz[++newargc] = NULL; 4409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4410548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* The GNU banner must be the first non-error debug message */ 4413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4414548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = find_executable (argv[0]); 4420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (tmp_pathspec == NULL) 4421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(main) found exe (before symlink chase) at: %s\n", 4424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec); 4425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(main) found exe (after symlink chase) at: %s\n", 4429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen actual_cwrapper_path); 4430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (tmp_pathspec); 4431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strendzap (actual_cwrapper_path, actual_cwrapper_name); 4434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* wrapper name transforms */ 4436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strendzap (actual_cwrapper_name, ".exe"); 4437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (actual_cwrapper_name); 4439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen actual_cwrapper_name = tmp_pathspec; 4440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = 0; 4441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* target_name transforms -- use actual target program name; might have lt- prefix */ 4443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strendzap (target_name, ".exe"); 4445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (target_name); 4447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen target_name = tmp_pathspec; 4448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = 0; 4449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(main) libtool target name: %s\n", 4452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen target_name); 4453548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<EOF 4456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newargz[0] = 4457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XMALLOC (char, (strlen (actual_cwrapper_path) + 4458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (newargz[0], actual_cwrapper_path); 4460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcat (newargz[0], "$objdir"); 4461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcat (newargz[0], "/"); 4462548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* stop here, and copy so we don't have to do this twice */ 4466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = xstrdup (newargz[0]); 4467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcat (newargz[0], actual_cwrapper_name); 4470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* DO want the lt- prefix here if it exists, so use target_name */ 4472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (tmp_pathspec); 4474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = NULL; 4475548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host_os in 4478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen mingw*) 4479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char* p; 4482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while ((p = strchr (newargz[0], '\\')) != NULL) 4483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p = '/'; 4485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p = '/'; 4489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4491548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 4493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 4494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (target_name); 4497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (actual_cwrapper_path); 4498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (actual_cwrapper_name); 4499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen because on Windows, both *_VARNAMEs are PATH but uninstalled 4505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libraries must come first. */ 4506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonnull (lt_argv_zero)); 4511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (i = 0; i < newargc; i++) 4512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen i, nonnull (newargz[i])); 4515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4517548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host_os in 4520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen mingw*) 4521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* execv doesn't actually work on mingw as expected on unix */ 4523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newargz = prepare_spawn (newargz); 4524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (rval == -1) 4526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* failed to start process */ 4528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(main) failed to launch target \"%s\": %s\n", 4530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_argv_zero, nonnull (strerror (errno))); 4531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 127; 4532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return rval; 4534548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 4536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 4537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen execv (lt_argv_zero, newargz); 4539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return rval; /* =127, but avoids unused variable warning */ 4540548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 4542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 4543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid * 4548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenxmalloc (size_t num) 4549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen void *p = (void *) malloc (num); 4551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (!p) 4552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return p; 4555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar * 4558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenxstrdup (const char *string) 4559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen string) : NULL; 4562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenconst char * 4565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbase_name (const char *name) 4566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *base; 4568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Skip over the disk name in MSDOS pathnames. */ 4571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name += 2; 4573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (base = name; *name; name++) 4576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (IS_DIR_SEPARATOR (*name)) 4577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen base = name + 1; 4578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return base; 4579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint 4582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencheck_executable (const char *path) 4583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen struct stat st; 4585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonempty (path)); 4588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ((!path) || (!*path)) 4589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 0; 4590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ((stat (path, &st) >= 0) 4592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 1; 4594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 0; 4596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenint 4599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenmake_executable (const char *path) 4600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int rval = 0; 4602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen struct stat st; 4603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonempty (path)); 4606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ((!path) || (!*path)) 4607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return 0; 4608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (stat (path, &st) >= 0) 4610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return rval; 4614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Searches for the full path of the wrapper. Returns 4617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newly allocated full path name if found, NULL otherwise 4618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen Does not chase symlinks, even on platforms that support them. 4619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen*/ 4620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar * 4621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfind_executable (const char *wrapper) 4622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int has_slash = 0; 4624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *p; 4625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *p_next; 4626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* static buffer for getcwd */ 4627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char tmp[LT_PATHMAX + 1]; 4628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int tmp_len; 4629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *concat_name; 4630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonempty (wrapper)); 4633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ((wrapper == NULL) || (*wrapper == '\0')) 4635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return NULL; 4636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Absolute path? */ 4638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name = xstrdup (wrapper); 4642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (check_executable (concat_name)) 4643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return concat_name; 4644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (concat_name); 4645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (IS_DIR_SEPARATOR (wrapper[0])) 4650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name = xstrdup (wrapper); 4652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (check_executable (concat_name)) 4653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return concat_name; 4654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (concat_name); 4655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (p = wrapper; *p; p++) 4661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (*p == '/') 4662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen has_slash = 1; 4664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break; 4665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (!has_slash) 4667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* no slashes; search PATH */ 4669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *path = getenv ("PATH"); 4670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (path != NULL) 4671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (p = path; *p; p = p_next) 4673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *q; 4675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen size_t p_len; 4676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (q = p; *q; q++) 4677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (IS_PATH_SEPARATOR (*q)) 4678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break; 4679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p_len = q - p; 4680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p_next = (*q == '\0' ? q : q + 1); 4681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (p_len == 0) 4682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* empty path: current directory */ 4684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (getcwd (tmp, LT_PATHMAX) == NULL) 4685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonnull (strerror (errno))); 4687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_len = strlen (tmp); 4688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name = 4689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen memcpy (concat_name, tmp, tmp_len); 4691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name[tmp_len] = '/'; 4692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (concat_name + tmp_len + 1, wrapper); 4693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name = 4697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen memcpy (concat_name, p, p_len); 4699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name[p_len] = '/'; 4700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (concat_name + p_len + 1, wrapper); 4701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (check_executable (concat_name)) 4703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return concat_name; 4704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (concat_name); 4705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* not found in PATH; assume curdir */ 4708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Relative path | not found in path: prepend cwd */ 4710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (getcwd (tmp, LT_PATHMAX) == NULL) 4711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonnull (strerror (errno))); 4713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_len = strlen (tmp); 4714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen memcpy (concat_name, tmp, tmp_len); 4716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_name[tmp_len] = '/'; 4717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (concat_name + tmp_len + 1, wrapper); 4718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (check_executable (concat_name)) 4720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return concat_name; 4721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (concat_name); 4722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return NULL; 4723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar * 4726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchase_symlinks (const char *pathspec) 4727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifndef S_ISLNK 4729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return xstrdup (pathspec); 4730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else 4731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char buf[LT_PATHMAX]; 4732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen struct stat s; 4733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *tmp_pathspec = xstrdup (pathspec); 4734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *p; 4735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int has_symlinks = 0; 4736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while (strlen (tmp_pathspec) && !has_symlinks) 4737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "checking path component for symlinks: %s\n", 4740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec); 4741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (lstat (tmp_pathspec, &s) == 0) 4742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (S_ISLNK (s.st_mode) != 0) 4744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen has_symlinks = 1; 4746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break; 4747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* search backwards for last DIR_SEPARATOR */ 4750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p--; 4753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* no more DIR_SEPARATORS left */ 4756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break; 4757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p = '\0'; 4759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, 4763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "error accessing file \"%s\": %s", 4764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec, nonnull (strerror (errno))); 4765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (tmp_pathspec); 4768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (!has_symlinks) 4770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return xstrdup (pathspec); 4772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_pathspec = realpath (pathspec, buf); 4775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (tmp_pathspec == 0) 4776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_fatal (__FILE__, __LINE__, 4778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "could not follow symlinks for %s", pathspec); 4779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return xstrdup (tmp_pathspec); 4781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar * 4785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstrendzap (char *str, const char *pat) 4786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen size_t len, patlen; 4788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen assert (str != NULL); 4790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen assert (pat != NULL); 4791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len = strlen (str); 4793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen patlen = strlen (pat); 4794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (patlen <= len) 4796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen str += len - patlen; 4798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (strcmp (str, pat) == 0) 4799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *str = '\0'; 4800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return str; 4802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid 4805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_debugprintf (const char *file, int line, const char *fmt, ...) 4806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen va_list args; 4808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (lt_debug) 4809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen va_start (args, fmt); 4812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen (void) vfprintf (stderr, fmt, args); 4813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen va_end (args); 4814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic void 4818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_error_core (int exit_status, const char *file, 4819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int line, const char *mode, 4820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *message, va_list ap) 4821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen vfprintf (stderr, message, ap); 4824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fprintf (stderr, ".\n"); 4825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (exit_status >= 0) 4827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit (exit_status); 4828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid 4831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_fatal (const char *file, int line, const char *message, ...) 4832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen va_list ap; 4834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen va_start (ap, message); 4835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen va_end (ap); 4837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char * 4840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennonnull (const char *s) 4841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return s ? s : "(null)"; 4843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenstatic const char * 4846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissennonempty (const char *s) 4847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return (s && !*s) ? "(empty)" : nonnull (s); 4849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid 4852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_setenv (const char *name, const char *value) 4853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(lt_setenv) setting '%s' to '%s'\n", 4856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonnull (name), nonnull (value)); 4857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#ifdef HAVE_SETENV 4859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* always make a copy, for consistency with !HAVE_SETENV */ 4860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *str = xstrdup (value); 4861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen setenv (name, str, 1); 4862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#else 4863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int len = strlen (name) + 1 + strlen (value) + 1; 4864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *str = XMALLOC (char, len); 4865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sprintf (str, "%s=%s", name, value); 4866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (putenv (str) != EXIT_SUCCESS) 4867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (str); 4869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#endif 4871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar * 4875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_extend_str (const char *orig_value, const char *add, int to_end) 4876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *new_value; 4878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (orig_value && *orig_value) 4879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int orig_value_len = strlen (orig_value); 4881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int add_len = strlen (add); 4882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_value = XMALLOC (char, add_len + orig_value_len + 1); 4883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (to_end) 4884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (new_value, orig_value); 4886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (new_value + orig_value_len, add); 4887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (new_value, add); 4891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen strcpy (new_value + add_len, orig_value); 4892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 4895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_value = xstrdup (add); 4897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return new_value; 4899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid 4902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_update_exe_path (const char *name, const char *value) 4903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonnull (name), nonnull (value)); 4907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (name && *name && value && *value) 4909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *new_value = lt_extend_str (getenv (name), value, 0); 4911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* some systems can't cope with a ':'-terminated path #' */ 4912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int len = strlen (new_value); 4913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_value[len-1] = '\0'; 4916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_setenv (name, new_value); 4918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (new_value); 4919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid 4923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlt_update_lib_path (const char *name, const char *value) 4924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_debugprintf (__FILE__, __LINE__, 4926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonnull (name), nonnull (value)); 4928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (name && *name && value && *value) 4930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *new_value = lt_extend_str (getenv (name), value, 0); 4932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_setenv (name, new_value); 4933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen XFREE (new_value); 4934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 4935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 4936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4937548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 4938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host_os in 4939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen mingw*) 4940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 4941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen/* Prepares an argument vector before calling spawn(). 4943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen Note that spawn() does not by itself call the command interpreter 4944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen GetVersionEx(&v); 4947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen }) ? "cmd.exe" : "command.com"). 4949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen Instead it simply concatenates the arguments, separated by ' ', and calls 4950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen special way: 4953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen - Space and tab are interpreted as delimiters. They are not treated as 4954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen delimiters if they are surrounded by double quotes: "...". 4955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen - Unescaped double quotes are removed from the input. Their only effect is 4956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen that within double quotes, space and tab are treated like normal 4957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen characters. 4958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen - Backslashes not followed by double quotes are not special. 4959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen - But 2*n+1 backslashes followed by a double quote become 4960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen n backslashes followed by a double quote (n >= 0): 4961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \" -> " 4962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \\\" -> \" 4963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen \\\\\" -> \\" 4964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen */ 4965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" 4967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenchar ** 4968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenprepare_spawn (char **argv) 4969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 4970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen size_t argc; 4971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char **new_argv; 4972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen size_t i; 4973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Count number of arguments. */ 4975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (argc = 0; argv[argc] != NULL; argc++) 4976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ; 4977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Allocate new argument vector. */ 4979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_argv = XMALLOC (char *, argc + 1); 4980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen /* Put quoted arguments into the new argument vector. */ 4982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (i = 0; i < argc; i++) 4983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *string = argv[i]; 4985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (string[0] == '\0') 4987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_argv[i] = xstrdup ("\"\""); 4988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 4990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen size_t length; 4992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen unsigned int backslashes; 4993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen const char *s; 4994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *quoted_string; 4995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char *p; 4996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 4997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen length = 0; 4998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen backslashes = 0; 4999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (quote_around) 5000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen length++; 5001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (s = string; *s != '\0'; s++) 5002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 5003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char c = *s; 5004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (c == '"') 5005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen length += backslashes + 1; 5006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen length++; 5007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (c == '\\') 5008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen backslashes++; 5009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen backslashes = 0; 5011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 5012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (quote_around) 5013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen length += backslashes + 1; 5014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen quoted_string = XMALLOC (char, length + 1); 5016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen p = quoted_string; 5018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen backslashes = 0; 5019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (quote_around) 5020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p++ = '"'; 5021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (s = string; *s != '\0'; s++) 5022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 5023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen char c = *s; 5024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (c == '"') 5025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 5026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen unsigned int j; 5027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (j = backslashes + 1; j > 0; j--) 5028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p++ = '\\'; 5029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 5030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p++ = c; 5031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (c == '\\') 5032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen backslashes++; 5033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen backslashes = 0; 5035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 5036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (quote_around) 5037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { 5038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen unsigned int j; 5039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for (j = backslashes; j > 0; j--) 5040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p++ = '\\'; 5041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p++ = '"'; 5042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 5043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *p = '\0'; 5044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_argv[i] = quoted_string; 5046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 5047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_argv[i] = (char *) string; 5049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 5050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_argv[argc] = NULL; 5051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen return new_argv; 5053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 5054548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 5055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 5059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenvoid lt_dump_script (FILE* f) 5060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 5061548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 5062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_emit_wrapper yes | 5063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e 's/\([\\"]\)/\\\1/g' \ 5064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' 5065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat <<"EOF" 5067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 5068548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 5069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 5070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# end: func_emit_cwrapperexe_src 5071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_win32_import_lib_p ARG 5073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# True if ARG is an import lib, as indicated by $file_magic_cmd 5074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_win32_import_lib_p () 5075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 5076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 5077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *import*) : ;; 5079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) false ;; 5080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 5082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_link arg... 5084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_link () 5085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 5086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 5087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 5088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # It is impossible to link a dll without this setting, and 5090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # we shouldn't force the makefile maintainer to figure out 5091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # which system we are compiling for in order to pass an extra 5092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # flag for every libtool invocation. 5093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # allow_undefined=no 5094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FIXME: Unfortunately, there are problems with the above when trying 5096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # to make a dll which has undefined symbols, in which case not 5097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # even a static library is built. For now, we need to specify 5098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -no-undefined on the libtool link line when we can be certain 5099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # that all symbols are satisfied, otherwise we get a static library. 5100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen allow_undefined=yes 5101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen allow_undefined=yes 5104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libtool_args=$nonopt 5107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen base_compile="$nonopt $@" 5108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=$nonopt 5109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command=$nonopt 5110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_rpath= 5112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_rpath= 5113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_shlibpath= 5114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_shlibpath= 5115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen convenience= 5116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_convenience= 5117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs= 5118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_deplibs= 5119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compiler_flags= 5120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linker_flags= 5121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dllsearchpath= 5122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib_search_path=`pwd` 5123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen inst_prefix_dir= 5124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_inherited_linker_flags= 5125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen avoid_version=no 5127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen bindir= 5128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlfiles= 5129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefiles= 5130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlself=no 5131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_dynamic=no 5132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols= 5133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols_regex= 5134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen generated= 5135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobjs= 5136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ltlibs= 5137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen module=no 5138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen no_install=no 5139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objs= 5140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_objects= 5141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen precious_files_regex= 5142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prefer_static_libs=no 5143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen preload=no 5144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prevarg= 5146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen release= 5147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath= 5148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xrpath= 5149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen perm_rpath= 5150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen temp_rpath= 5151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen thread_safe=no 5152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen vinfo= 5153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen vinfo_number=no 5154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen weak_libs= 5155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen single_module="${wl}-single_module" 5156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_infer_tag $base_compile 5157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need to know -static, to get the right output filenames. 5159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg 5160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 5161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 5162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shared) 5163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_libtool_libs" != yes && \ 5164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_configuration "can not build a shared library" 5165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=no 5166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 5167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -all-static | -static | -static-libtool-libs) 5169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 5170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -all-static) 5171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "complete static linking is impossible in this configuration" 5173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$link_static_flag"; then 5175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopen_self=$dlopen_self_static 5176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prefer_static_libs=yes 5178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static) 5180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$pic_flag" && test -n "$link_static_flag"; then 5181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopen_self=$dlopen_self_static 5182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prefer_static_libs=built 5184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static-libtool-libs) 5186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$pic_flag" && test -n "$link_static_flag"; then 5187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopen_self=$dlopen_self_static 5188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prefer_static_libs=yes 5190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 5193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 5194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 5195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 5198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See if our shared archives depend on static archives. 5200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Go through the arguments, transforming them on the way. 5203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test "$#" -gt 0; do 5204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$1" 5205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 5206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 5207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen qarg=$func_quote_for_eval_unquoted_result 5208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libtool_args " $func_quote_for_eval_result" 5209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the previous option needs an argument, assign it. 5211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$prev"; then 5212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $prev in 5213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output) 5214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " @OUTPUT@" 5215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " @OUTPUT@" 5216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $prev in 5220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen bindir) 5221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen bindir="$arg" 5222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlfiles|dlprefiles) 5226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$preload" = no; then 5227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add the symbol object into the linking commands. 5228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " @SYMFILE@" 5229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " @SYMFILE@" 5230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen preload=yes 5231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 5233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la | *.lo) ;; # We handle these cases below. 5234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen force) 5235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$dlself" = no; then 5236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlself=needless 5237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_dynamic=yes 5238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen self) 5243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlprefiles; then 5244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlself=yes 5245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlself=yes 5247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlself=needless 5249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_dynamic=yes 5250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlfiles; then 5256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlfiles " $arg" 5257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlprefiles " $arg" 5259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen expsyms) 5266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols="$arg" 5267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -f "$arg" \ 5268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen || func_fatal_error "symbol file \`$arg' does not exist" 5269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen expsyms_regex) 5273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols_regex="$arg" 5274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen framework) 5278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 5279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-darwin*) 5280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$deplibs " in 5281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $qarg.ltframework "*) ;; 5282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append deplibs " $qarg.ltframework" # this is fixed later 5283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen inst_prefix) 5291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen inst_prefix_dir="$arg" 5292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objectlist) 5296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$arg"; then 5297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_arg=$arg 5298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen moreargs= 5299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for fil in `cat "$save_arg"` 5300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 5301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_append moreargs " $fil" 5302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg=$fil 5303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A libtool-controlled object. 5304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that this really is a libtool object. 5306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_lalib_unsafe_p "$arg"; then 5307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_object= 5308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object= 5309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Read the .lo file 5311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$arg" 5312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$pic_object" || 5314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$non_pic_object" || 5315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$pic_object" = none && 5316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$non_pic_object" = none; then 5317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot find name of object for \`$arg'" 5318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract subdirectory from the argument. 5321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$arg" "/" "" 5322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xdir="$func_dirname_result" 5323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pic_object" != none; then 5325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prepend the subdirectory the object is found in. 5326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_object="$xdir$pic_object" 5327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlfiles; then 5329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlfiles " $pic_object" 5331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If libtool objects are unsupported, then we need to preload. 5335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=dlprefiles 5336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # CHECK ME: I think I busted this. -Ossama 5340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlprefiles; then 5341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Preload the old-style object. 5342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlprefiles " $pic_object" 5343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A PIC object. 5347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $pic_object" 5348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$pic_object" 5349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Non-PIC object. 5352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$non_pic_object" != none; then 5353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prepend the subdirectory the object is found in. 5354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object="$xdir$non_pic_object" 5355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A standard non-PIC object 5357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append non_pic_objects " $non_pic_object" 5358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$pic_object" || test "$pic_object" = none ; then 5359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$non_pic_object" 5360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the PIC object exists, use it instead. 5363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # $xdir was prepended to $pic_object above. 5364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object="$pic_object" 5365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append non_pic_objects " $non_pic_object" 5366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only an error if not doing a dry-run. 5369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_dry_run; then 5370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract subdirectory from the argument. 5371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$arg" "/" "" 5372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xdir="$func_dirname_result" 5373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lo2o "$arg" 5375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_object=$xdir$objdir/$func_lo2o_result 5376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object=$xdir$func_lo2o_result 5377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $pic_object" 5378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append non_pic_objects " $non_pic_object" 5379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$arg' is not a valid libtool object" 5381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 5384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "link input file \`$arg' does not exist" 5386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg=$save_arg 5388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen precious_regex) 5392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen precious_files_regex="$arg" 5393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen release) 5397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen release="-$arg" 5398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath | xrpath) 5402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need an absolute path. 5403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 5404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) ;; 5405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "only absolute run-paths are allowed" 5407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = rpath; then 5410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$rpath " in 5411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $arg "*) ;; 5412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append rpath " $arg" ;; 5413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$xrpath " in 5416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $arg "*) ;; 5417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append xrpath " $arg" ;; 5418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shrext) 5424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shrext_cmds="$arg" 5425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen weak) 5429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append weak_libs " $arg" 5430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xcclinker) 5434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append linker_flags " $qarg" 5435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $qarg" 5436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $qarg" 5438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $qarg" 5439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xcompiler) 5442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $qarg" 5443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $qarg" 5445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $qarg" 5446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xlinker) 5449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append linker_flags " $qarg" 5450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $wl$qarg" 5451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $wl$qarg" 5453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $wl$qarg" 5454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$prev=\"\$arg\"" 5458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # test -n "$prev" 5463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prevarg="$arg" 5465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 5467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -all-static) 5468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$link_static_flag"; then 5469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See comment for -static flag below, for more details. 5470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $link_static_flag" 5471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $link_static_flag" 5472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -allow-undefined) 5477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FIXME: remove this flag sometime in the future. 5478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -avoid-version) 5482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen avoid_version=yes 5483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -bindir) 5487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=bindir 5488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -dlopen) 5492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=dlfiles 5493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -dlpreopen) 5497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=dlprefiles 5498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -export-dynamic) 5502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_dynamic=yes 5503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -export-symbols | -export-symbols-regex) 5507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "more than one -exported-symbols argument is not allowed" 5509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$arg" = "X-export-symbols"; then 5511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=expsyms 5512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=expsyms_regex 5514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -framework) 5519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=framework 5520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -inst-prefix-dir) 5524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=inst_prefix 5525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # so, if we see these flags be careful not to treat them like -L 5530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L[A-Z][A-Z]*:*) 5531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $with_gcc/$host in 5532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen no/*-*-irix* | /*-*-irix*) 5533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $arg" 5534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $arg" 5535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) 5541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname "-L" '' "$arg" 5542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$func_stripname_result"; then 5543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$#" -gt 0; then 5544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "require no space between \`-L' and \`$1'" 5545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "need path for \`-L' option" 5547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$func_stripname_result" 5550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir=$func_resolve_sysroot_result 5551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need an absolute path. 5552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $dir in 5553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) ;; 5554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir=`cd "$dir" && pwd` 5556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$absdir" && \ 5557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot determine absolute directory name of \`$dir'" 5558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$absdir" 5559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$deplibs " in 5562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" -L$dir "* | *" $arg "*) 5563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Will only happen for absolute or sysroot arguments 5564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Preserve sysroot, but never include relative directories 5567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $dir in 5568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append deplibs " -L$dir" ;; 5570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append lib_search_path " $dir" 5572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 5575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$dllsearchpath: in 5578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$dir:"*) ;; 5579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ::) dllsearchpath=$dir;; 5580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append dllsearchpath ":$dir";; 5581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$dllsearchpath: in 5583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$testbindir:"*) ;; 5584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ::) dllsearchpath=$testbindir;; 5585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append dllsearchpath ":$testbindir";; 5586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -l*) 5593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 5595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # These systems don't actually have a C or math library (as such) 5597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-os2*) 5600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # These systems don't actually have a C library (as such) 5601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$arg" = "X-lc" && continue 5602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do not include libc due to us having libc/libc_r. 5605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$arg" = "X-lc" && continue 5606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-rhapsody* | *-*-darwin1.[012]) 5608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Rhapsody C and math libraries are in the System framework 5609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append deplibs " System.ltframework" 5610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sco3.2v5* | *-*-sco5v6*) 5613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Causes problems with __ctype 5614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$arg" = "X-lc" && continue 5615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Compiler inserts libc in the correct place for threads to work 5618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$arg" = "X-lc" && continue 5619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "X$arg" = "X-lc_r"; then 5622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 5623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do not include libc_r directly, use -pthread flag. 5625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append deplibs " $arg" 5630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -module) 5634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen module=yes 5635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # classes, name mangling, and exception handling. 5640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Darwin uses the -arch flag to determine output architecture. 5641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -model|-arch|-isysroot|--sysroot) 5642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $arg" 5643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $arg" 5644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $arg" 5645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=xcompiler 5646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 5650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $arg" 5651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $arg" 5652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $arg" 5653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$new_inherited_linker_flags " in 5654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $arg "*) ;; 5655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * ) func_append new_inherited_linker_flags " $arg" ;; 5656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -multi_module) 5661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen single_module="${wl}-multi_module" 5662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-fast-install) 5666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fast_install=no 5667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-install) 5671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 5672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The PATH hackery in wrapper scripts is required on Windows 5674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and Darwin in order for the loader to find any dlls it needs. 5675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-no-install' is ignored for $host" 5676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "assuming \`-no-fast-install' instead" 5677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fast_install=no 5678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) no_install=yes ;; 5680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -no-undefined) 5685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen allow_undefined=no 5686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -objectlist) 5690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=objectlist 5691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -o) prev=output ;; 5695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -precious-files-regex) 5697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=precious_regex 5698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -release) 5702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=release 5703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -rpath) 5707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=rpath 5708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R) 5712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=xrpath 5713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R*) 5717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-R' '' "$arg" 5718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir=$func_stripname_result 5719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need an absolute path. 5720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $dir in 5721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) ;; 5722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen =*) 5723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '=' '' "$dir" 5724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir=$lt_sysroot$func_stripname_result 5725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "only absolute run-paths are allowed" 5728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$xrpath " in 5731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $dir "*) ;; 5732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append xrpath " $dir" ;; 5733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 5734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shared) 5738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The effects of -shared are defined in a previous loop. 5739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -shrext) 5743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=shrext 5744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -static | -static-libtool-libs) 5748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The effects of -static are defined in a previous loop. 5749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We used to do the same as -all-static on platforms that 5750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # didn't have a PIC flag, but the assumption that the effects 5751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # would be equivalent was wrong. It would break on at least 5752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Digital Unix and AIX. 5753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -thread-safe) 5757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen thread_safe=yes 5758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -version-info) 5762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=vinfo 5763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -version-number) 5767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=vinfo 5768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen vinfo_number=yes 5769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -weak) 5773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=weak 5774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Wc,*) 5778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-Wc,' '' "$arg" 5779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen args=$func_stripname_result 5780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg= 5781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS=',' 5782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for flag in $args; do 5783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 5784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$flag" 5785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append arg " $func_quote_for_eval_result" 5786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $func_quote_for_eval_result" 5787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 5788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 5789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname ' ' '' "$arg" 5790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg=$func_stripname_result 5791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Wl,*) 5794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-Wl,' '' "$arg" 5795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen args=$func_stripname_result 5796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg= 5797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS=',' 5798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for flag in $args; do 5799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 5800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$flag" 5801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append arg " $wl$func_quote_for_eval_result" 5802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $wl$func_quote_for_eval_result" 5803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append linker_flags " $func_quote_for_eval_result" 5804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 5805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 5806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname ' ' '' "$arg" 5807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg=$func_stripname_result 5808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Xcompiler) 5811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=xcompiler 5812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -Xlinker) 5816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=xlinker 5817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -XCClinker) 5821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=xcclinker 5822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -msg_* for osf cc 5826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -msg_*) 5827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 5828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$func_quote_for_eval_result" 5829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Flags to be passed through unchanged, with rationale: 5832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -r[0-9][0-9]* specify processor for the SGI compiler 5834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # +DA*, +DD* enable 64-bit mode for the HP compiler 5836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -q* compiler args for the IBM compiler 5837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -F/path path to uninstalled frameworks, gcc on darwin 5839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # @file GCC response files 5841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -tp=* Portland pgcc target processor selection 5842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # --sysroot=* for sysroot support 5843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 5848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$func_quote_for_eval_result" 5849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $arg" 5850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $arg" 5851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $arg" 5852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Some other compiler flag. 5856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -* | +*) 5857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 5858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$func_quote_for_eval_result" 5859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$objext) 5862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A standard object. 5863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append objs " $arg" 5864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) 5867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A libtool-controlled object. 5868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that this really is a libtool object. 5870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_lalib_unsafe_p "$arg"; then 5871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_object= 5872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object= 5873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Read the .lo file 5875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$arg" 5876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$pic_object" || 5878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$non_pic_object" || 5879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$pic_object" = none && 5880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$non_pic_object" = none; then 5881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot find name of object for \`$arg'" 5882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract subdirectory from the argument. 5885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$arg" "/" "" 5886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xdir="$func_dirname_result" 5887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pic_object" != none; then 5889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prepend the subdirectory the object is found in. 5890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_object="$xdir$pic_object" 5891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlfiles; then 5893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlfiles " $pic_object" 5895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If libtool objects are unsupported, then we need to preload. 5899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev=dlprefiles 5900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # CHECK ME: I think I busted this. -Ossama 5904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlprefiles; then 5905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Preload the old-style object. 5906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlprefiles " $pic_object" 5907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A PIC object. 5911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $pic_object" 5912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$pic_object" 5913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Non-PIC object. 5916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$non_pic_object" != none; then 5917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prepend the subdirectory the object is found in. 5918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object="$xdir$non_pic_object" 5919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A standard non-PIC object 5921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append non_pic_objects " $non_pic_object" 5922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$pic_object" || test "$pic_object" = none ; then 5923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$non_pic_object" 5924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the PIC object exists, use it instead. 5927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # $xdir was prepended to $pic_object above. 5928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object="$pic_object" 5929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append non_pic_objects " $non_pic_object" 5930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only an error if not doing a dry-run. 5933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_dry_run; then 5934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract subdirectory from the argument. 5935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$arg" "/" "" 5936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xdir="$func_dirname_result" 5937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lo2o "$arg" 5939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pic_object=$xdir$objdir/$func_lo2o_result 5940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen non_pic_object=$xdir$func_lo2o_result 5941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $pic_object" 5942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append non_pic_objects " $non_pic_object" 5943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$arg' is not a valid libtool object" 5945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$libext) 5950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # An archive. 5951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append deplibs " $arg" 5952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append old_deplibs " $arg" 5953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 5957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # A libtool-controlled library. 5958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$arg" 5960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$prev" = dlfiles; then 5961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This library was specified with -dlopen. 5962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlfiles " $func_resolve_sysroot_result" 5963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$prev" = dlprefiles; then 5965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The library was specified with -dlpreopen. 5966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlprefiles " $func_resolve_sysroot_result" 5967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prev= 5968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 5969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append deplibs " $func_resolve_sysroot_result" 5970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 5972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Some other compiler argument. 5975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 5976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Unknown arguments in both finalize_command and compile_command need 5977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # to be aesthetically quoted because they are evaled later. 5978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$arg" 5979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen arg="$func_quote_for_eval_result" 5980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 5981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac # arg 5982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now actually substitute the argument into the commands. 5984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$arg"; then 5985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $arg" 5986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $arg" 5987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # argument parsing loop 5989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$module" = yes ; then 5991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # [Mandriva] dropping ld option "--no-undefined" which is wrong for plugins 5992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linker_flags=`$ECHO "X $linker_flags" | $Xsed -e 's/ --no-undefined//'` 5993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compiler_flags=`$ECHO "X $compiler_flags" | $Xsed -e 's/ -Wl,--no-undefined//'` 5994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 5995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$prev" && \ 5997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "the \`$prevarg' option requires an argument" 5998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 5999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval arg=\"$export_dynamic_flag_spec\" 6001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $arg" 6002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $arg" 6003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlibs= 6006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # calculate the name of the file, without its directory 6007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$output" 6008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen outputname="$func_basename_result" 6009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobjs_save="$libobjs" 6010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$shlibpath_var"; then 6012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # get the directories listed in $shlibpath_var 6013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shlib_search_path= 6016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$output" "/" "" 6021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_objdir="$func_dirname_result$objdir" 6022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output_objdir/" 6023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tool_output_objdir=$func_to_tool_file_result 6024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Create the object directory. 6025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mkdir_p "$output_objdir" 6026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Determine the type of output 6028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $output in 6029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen "") 6030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify an output file" 6031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$libext) linkmode=oldlib ;; 6033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo | *.$objext) linkmode=obj ;; 6034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) linkmode=lib ;; 6035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) linkmode=prog ;; # Anything else should be a program. 6036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen specialdeplibs= 6039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libs= 6041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Find all interdependent deplibs by searching for libraries 6042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # that are linked more than once (e.g. -la -lb -la) 6043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $deplibs; do 6044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_preserve_dup_deps ; then 6045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$libs " in 6046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libs " $deplib" 6050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib; then 6053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libs="$predeps $libs $compiler_lib_search_path $postdeps" 6054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Compute libraries that are listed more than once in $predeps 6056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # $postdeps and mark them as special (i.e., whose duplicates are 6057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # not to be eliminated). 6058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pre_post_deps= 6059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_duplicate_compiler_generated_deps; then 6060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for pre_post_dep in $predeps $postdeps; do 6061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$pre_post_deps " in 6062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append pre_post_deps " $pre_post_dep" 6065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pre_post_deps= 6068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs= 6071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdependency_libs= 6072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newlib_search_path= 6073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen need_relink=no # whether we're linking any uninstalled libtool libraries 6074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen notinst_deplibs= # not-installed libtool libraries 6075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen notinst_path= # paths that contain not-installed libtool libraries 6076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $linkmode in 6078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib) 6079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen passes="conv dlpreopen link" 6080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file in $dlfiles $dlprefiles; do 6081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 6082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) ;; 6083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prog) 6090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs= 6091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs= 6092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen alldeplibs=no 6093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdlfiles= 6094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdlprefiles= 6095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen passes="conv scan dlopen dlpreopen link" 6096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) passes="conv" 6098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for pass in $passes; do 6102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The preopen pass in lib mode reverses $deplibs; put it back here 6103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # so that -L comes before libs that need it for instance... 6104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "lib,link"; then 6105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ## FIXME: Find the place where the list is rebuilt in the wrong 6106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ## order, and fix it there properly 6107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_deplibs= 6108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $deplibs; do 6109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_deplibs="$deplib $tmp_deplibs" 6110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$tmp_deplibs" 6112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "lib,link" || 6115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$linkmode,$pass" = "prog,scan"; then 6116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libs="$deplibs" 6117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs= 6118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog; then 6120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $pass in 6121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopen) libs="$dlfiles" ;; 6122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlpreopen) libs="$dlprefiles" ;; 6123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link) 6124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libs="$deplibs %DEPLIBS%" 6125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 6126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "lib,dlpreopen"; then 6130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Collect and forward deplibs of preopened libtool libs 6131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $dlprefiles; do 6132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Ignore non-libtool-libs 6133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs= 6134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$lib" 6135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $lib in 6136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) func_source "$func_resolve_sysroot_result" ;; 6137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Collect preopened libtool deplibs, except any this library 6140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # has declared as weak libs 6141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $dependency_libs; do 6142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$deplib" 6143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplib_base=$func_basename_result 6144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $weak_libs " in 6145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib_base "*) ;; 6146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append deplibs " $deplib" ;; 6147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libs="$dlprefiles" 6151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = dlopen; then 6153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Collect dlpreopened libraries 6154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_deplibs="$deplibs" 6155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs= 6156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $libs; do 6159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib= 6160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen found=no 6161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 6162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) 6163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "prog,link"; then 6164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " $deplib" 6168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib ; then 6169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$new_inherited_linker_flags " in 6170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 6171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * ) func_append new_inherited_linker_flags " $deplib" ;; 6172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -l*) 6178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" != lib && test "$linkmode" != prog; then 6179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-l' is ignored for archives/objects" 6180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-l' '' "$deplib" 6183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 6184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib; then 6185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for searchdir in $searchdirs; do 6190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for search_ext in .la $std_shrext .so .a; do 6191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Search the libtool library 6192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib="$searchdir/lib${name}${search_ext}" 6193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$lib"; then 6194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$search_ext" = ".la"; then 6195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen found=yes 6196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen found=no 6198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 2 6200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$found" != yes; then 6204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # deplib doesn't seem to be a libtool library 6205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "prog,link"; then 6206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else # deplib is a libtool library 6214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need to do some special things here, and not later. 6216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $predeps $postdeps " in 6218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) 6219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_lalib_p "$lib"; then 6220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen library_names= 6221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_library= 6222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$lib" 6223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for l in $old_library $library_names; do 6224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ll="$l" 6225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$ll" = "X$old_library" ; then # only static version available 6227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen found=no 6228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$lib" "" "." 6229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ladir="$func_dirname_result" 6230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib=$ladir/$old_library 6231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "prog,link"; then 6232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) ;; 6243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; # -l 6247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.ltframework) 6248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "prog,link"; then 6249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib ; then 6254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$new_inherited_linker_flags " in 6255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 6256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * ) func_append new_inherited_linker_flags " $deplib" ;; 6257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) 6263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $linkmode in 6264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib) 6265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$pass" = conv && continue 6267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdependency_libs="$deplib $newdependency_libs" 6268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-L' '' "$deplib" 6269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$func_stripname_result" 6270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newlib_search_path " $func_resolve_sysroot_result" 6271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prog) 6273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = conv; then 6274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = scan; then 6278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-L' '' "$deplib" 6284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$func_stripname_result" 6285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newlib_search_path " $func_resolve_sysroot_result" 6286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-L' is ignored for archives/objects" 6289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac # linkmode 6291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; # -L 6293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R*) 6294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = link; then 6295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '-R' '' "$deplib" 6296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$func_stripname_result" 6297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir=$func_resolve_sysroot_result 6298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure the xrpath contains only unique directories. 6299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$xrpath " in 6300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $dir "*) ;; 6301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append xrpath " $dir" ;; 6302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 6308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$deplib" 6309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib=$func_resolve_sysroot_result 6310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$libext) 6312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = conv; then 6313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $linkmode in 6317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib) 6318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Linking convenience modules into shared libraries is allowed, 6319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # but linking other static libraries is non-portable. 6320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $dlpreconveniencelibs " in 6321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 6322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen valid_a_lib=no 6324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplibs_check_method in 6325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen match_pattern*) 6326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $deplibs_check_method; shift 6327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen | $EGREP "$match_pattern_regex" > /dev/null; then 6330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen valid_a_lib=yes 6331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pass_all) 6334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen valid_a_lib=yes 6335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$valid_a_lib" != yes; then 6338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 6339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** I have the capability to make that library automatically link in when" 6341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** you link to this library. But I can only do this if you have a" 6342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** shared version of the library, which you do not appear to have" 6343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** because the file extensions .$libext of this argument makes me believe" 6344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** that it is just a static archive that I should not use here." 6345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 6347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: Linking the shared library $output against the" 6348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** static library $deplib is not portable!" 6349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prog) 6356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" != link; then 6357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac # linkmode 6365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; # *.$libext 6366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo | *.$objext) 6367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = conv; then 6368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$linkmode" = prog; then 6370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If there is no dlopen support or we're linking statically, 6372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # we need to preload. 6373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $deplib" 6374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$deplib $compile_deplibs" 6375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$deplib $finalize_deplibs" 6376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlfiles " $deplib" 6378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen %DEPLIBS%) 6383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen alldeplibs=yes 6384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac # case $deplib 6387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$found" = yes || test -f "$lib"; then : 6389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see that this really is a libtool archive. 6394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lalib_unsafe_p "$lib" \ 6395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen || func_fatal_error "\`$lib' is not a valid libtool archive" 6396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$lib" "" "." 6398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ladir="$func_dirname_result" 6399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlname= 6401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopen= 6402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlpreopen= 6403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir= 6404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen library_names= 6405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_library= 6406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen inherited_linker_flags= 6407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the library was installed with an old release of libtool, 6408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # it will not redefine variables installed, or shouldnotlink 6409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen installed=yes 6410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shouldnotlink=no 6411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen avoidtemprpath= 6412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Read the .la file 6415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source "$lib" 6416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Convert "-framework foo" to "foo.ltframework" 6418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inherited_linker_flags"; then 6419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $new_inherited_linker_flags " in 6422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $tmp_inherited_linker_flag "*) ;; 6423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "lib,link" || 6429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$linkmode,$pass" = "prog,scan" || 6430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$dlopen" && func_append dlfiles " $dlopen" 6432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = conv; then 6436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only check for convenience libraries 6437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$lib $deplibs" 6438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$libdir"; then 6439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$old_library"; then 6440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot find name of link library for \`$lib'" 6441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # It is a libtool convenience library, so add in its objects. 6443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append convenience " $ladir/$objdir/$old_library" 6444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append old_convenience " $ladir/$objdir/$old_library" 6445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$linkmode" != prog && test "$linkmode" != lib; then 6446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$lib' is not a convenience library" 6447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_libs= 6449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $dependency_libs; do 6450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_preserve_dup_deps ; then 6452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$tmp_libs " in 6453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append tmp_libs " $deplib" 6457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $pass = conv 6460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Get the name of the library we link against. 6463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linklib= 6464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$old_library" && 6465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test "$prefer_static_libs" = yes || 6466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$prefer_static_libs,$installed" = "built,no"; }; then 6467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linklib=$old_library 6468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for l in $old_library $library_names; do 6470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linklib="$l" 6471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$linklib"; then 6474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot find name of link library for \`$lib'" 6475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This library was specified with -dlopen. 6478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = dlopen; then 6479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$libdir"; then 6480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$dlname" || 6483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$dlopen_support" != yes || 6484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_libtool_libs" = no; then 6485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If there is no dlname, no dlopen support or we're linking 6486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # statically, we need to preload. We also need to preload any 6487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # dependent libraries so libltdl's deplib preloader doesn't 6488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # bomb out in the load deplibs phase. 6489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlprefiles " $lib $dependency_libs" 6490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlfiles " $lib" 6492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $pass = dlopen 6495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need an absolute path. 6497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $ladir in 6498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen abs_ladir=`cd "$ladir" && pwd` 6501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$abs_ladir"; then 6502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "cannot determine absolute directory name of \`$ladir'" 6503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "passing it literally to the linker, although it might fail" 6504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen abs_ladir="$ladir" 6505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$lib" 6509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen laname="$func_basename_result" 6510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Find the relevant object directory and library name. 6512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$installed" = Xyes; then 6513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "library \`$lib' was moved." 6515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$ladir" 6516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir="$abs_ladir" 6517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir="$abs_ladir" 6518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$lt_sysroot$libdir" 6520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir="$lt_sysroot$libdir" 6521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$ladir" 6526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir="$abs_ladir" 6527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove this search path later 6528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append notinst_path " $abs_ladir" 6529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$ladir/$objdir" 6531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir="$abs_ladir/$objdir" 6532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove this search path later 6533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append notinst_path " $abs_ladir" 6534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $installed = yes 6536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname 'lib' '.la' "$laname" 6537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 6538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This library was specified with -dlpreopen. 6540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = dlpreopen; then 6541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$libdir" && test "$linkmode" = prog; then 6542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$host" in 6545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # special handling for platforms with PE-DLLs. 6546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *cegcc* ) 6547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Linker will automatically link against shared library if both 6548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # static and shared are present. Therefore, ensure we extract 6549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # symbols from the import library if a shared library is present 6550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # (otherwise, the dlopen module name will be incorrect). We do 6551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # this by putting the import library name into $newdlprefiles. 6552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We recover the dlopen module name by 'saving' the la file 6553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # name in a special purpose variable, and (later) extracting the 6554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # dlname from the la file. 6555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlname"; then 6556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_tr_sh "$dir/$linklib" 6557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $dir/$linklib" 6559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $dir/$old_library" 6561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Keep a list of preopened convenience libraries to check 6562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # that they are being used correctly in the link pass. 6563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libdir" && \ 6564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlpreconveniencelibs " $dir/$old_library" 6565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * ) 6568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prefer using a static library (so that no silly _DYNAMIC symbols 6569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # are required to link). 6570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$old_library"; then 6571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $dir/$old_library" 6572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Keep a list of preopened convenience libraries to check 6573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # that they are being used correctly in the link pass. 6574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libdir" && \ 6575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dlpreconveniencelibs " $dir/$old_library" 6576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Otherwise, use the dlname, so that lt_dlopen finds it. 6577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$dlname"; then 6578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $dir/$dlname" 6579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $dir/$linklib" 6581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $pass = dlpreopen 6585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$libdir"; then 6587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Link the convenience library 6588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib; then 6589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$dir/$old_library $deplibs" 6590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$linkmode,$pass" = "prog,link"; then 6591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$dir/$old_library $compile_deplibs" 6592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$dir/$old_library $finalize_deplibs" 6593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$lib $deplibs" # used for prog,scan pass 6595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog && test "$pass" != link; then 6601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newlib_search_path " $ladir" 6602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$lib $deplibs" 6603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linkalldeplibs=no 6605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$link_all_deplibs" != no || test -z "$library_names" || 6606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_libtool_libs" = no; then 6607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linkalldeplibs=yes 6608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_libs= 6611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $dependency_libs; do 6612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 6613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) func_stripname '-L' '' "$deplib" 6614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$func_stripname_result" 6615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newlib_search_path " $func_resolve_sysroot_result" 6616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Need to link against all dependency_libs? 6619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkalldeplibs" = yes; then 6620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 6621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Need to hardcode shared library paths 6623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # or/and link against static libraries 6624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdependency_libs="$deplib $newdependency_libs" 6625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_preserve_dup_deps ; then 6627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$tmp_libs " in 6628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append tmp_libs " $deplib" 6632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # for deplib 6633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $linkmode = prog... 6635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" = "prog,link"; then 6637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$library_names" && 6638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { { test "$prefer_static_libs" = no || 6639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$prefer_static_libs,$installed" = "built,yes"; } || 6640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$old_library"; }; then 6641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need to hardcode the library path 6642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure the rpath contains only unique directories. 6644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$temp_rpath:" in 6645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *"$absdir:"*) ;; 6646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append temp_rpath "$absdir:" ;; 6647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Hardcode the library path. 6651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Skip directories that are in the system default run-time 6652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # search path. 6653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $sys_lib_dlsearch_path " in 6654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $absdir "*) ;; 6655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$compile_rpath " in 6657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $absdir "*) ;; 6658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append compile_rpath " $absdir" ;; 6659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $sys_lib_dlsearch_path " in 6663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 6664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$finalize_rpath " in 6666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 6667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_rpath " $libdir" ;; 6668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # $linkmode,$pass = prog,link... 6672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$alldeplibs" = yes && 6674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test "$deplibs_check_method" = pass_all || 6675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test "$build_libtool_libs" = yes && 6676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$library_names"; }; }; then 6677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We only need to search for static libraries 6678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 6679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_static=no # Whether the deplib will be linked statically 6683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen use_static_libs=$prefer_static_libs 6684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$use_static_libs" = built && test "$installed" = yes; then 6685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen use_static_libs=no 6686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$library_names" && 6688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test "$use_static_libs" = no || test -z "$old_library"; }; then 6689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 6690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* | *cegcc*) 6691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # No point in relinking DLLs because paths are not encoded 6692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append notinst_deplibs " $lib" 6693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen need_relink=no 6694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$installed" = no; then 6697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append notinst_deplibs " $lib" 6698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen need_relink=yes 6699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This is a shared library 6703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Warn about portability, can't link against -module's on some 6705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # systems (darwin). Don't bleat about dlopened modules though! 6706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopenmodule="" 6707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dlpremoduletest in $dlprefiles; do 6708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$dlpremoduletest" = "X$lib"; then 6709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlopenmodule="$dlpremoduletest" 6710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 6711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 6713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 6715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog; then 6716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: Linking the executable $output against the loadable module" 6717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** $linklib is not portable!" 6721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib && 6723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$hardcode_into_libs" = yes; then 6724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Hardcode the library path. 6725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Skip directories that are in the system default run-time 6726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # search path. 6727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $sys_lib_dlsearch_path " in 6728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $absdir "*) ;; 6729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$compile_rpath " in 6731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $absdir "*) ;; 6732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append compile_rpath " $absdir" ;; 6733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $sys_lib_dlsearch_path " in 6737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 6738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 6739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$finalize_rpath " in 6740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 6741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_rpath " $libdir" ;; 6742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$old_archive_from_expsyms_cmds"; then 6748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # figure out the soname 6749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $library_names 6750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 6751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen realname="$1" 6752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 6753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=`eval "\\$ECHO \"$libname_spec\""` 6754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # use dlname if we got it. it's perfectly good, no? 6755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlname"; then 6756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen soname="$dlname" 6757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$soname_spec"; then 6758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # bleh windows 6759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 6760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | mingw* | *cegcc*) 6761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age 6762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=$func_arith_result 6763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix="-$major" 6764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval soname=\"$soname_spec\" 6767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen soname="$realname" 6769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make a new name for the extract_expsyms_cmds to use 6772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen soroot="$soname" 6773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$soroot" 6774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen soname="$func_basename_result" 6775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname 'lib' '.dll' "$soname" 6776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newlib=libimp-$func_stripname_result.a 6777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the library has no export list, then create one now 6779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$output_objdir/$soname-def"; then : 6780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "extracting exported symbol list from \`$soname'" 6782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Create $newlib 6786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$output_objdir/$newlib"; then :; else 6787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "generating import library for \`$soname'" 6788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # make sure the library variables are pointing to the new library 6791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir=$output_objdir 6792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linklib=$newlib 6793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # test -n "$old_archive_from_expsyms_cmds" 6794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog || test "$opt_mode" != relink; then 6796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_shlibpath= 6797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_dir= 6798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add= 6799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib_linked=yes 6800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $hardcode_action in 6801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen immediate | unsupported) 6802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_direct" = no; then 6803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$dir/$linklib" 6804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 6805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-unixware7*) add_dir="-L$dir" ;; 6809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-darwin* ) 6810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # if the lib is a (non-dlopened) module then we can not 6811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # link against it, someone is ignoring the earlier warnings 6812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if /usr/bin/file -L $add 2> /dev/null | 6813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $GREP ": [^:]* bundle" >/dev/null ; then 6814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$dlopenmodule" != "X$lib"; then 6815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$old_library" ; then 6817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 6818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** And there doesn't seem to be a static archive available" 6819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** The link will probably fail, sorry" 6820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$dir/$old_library" 6822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$old_library"; then 6824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$dir/$old_library" 6825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_minus_L" = no; then 6829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 6830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sunos*) add_shlibpath="$dir" ;; 6831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_dir="-L$dir" 6833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_shlibpath_var" = no; then 6835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_shlibpath="$dir" 6836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib_linked=no 6839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink) 6842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_direct" = yes && 6843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$hardcode_direct_absolute" = no; then 6844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$dir/$linklib" 6845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_minus_L" = yes; then 6846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_dir="-L$dir" 6847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Try looking first in the location we're being installed to. 6848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inst_prefix_dir"; then 6849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $libdir in 6850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]*) 6851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append add_dir " -L$inst_prefix_dir$libdir" 6852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_shlibpath_var" = yes; then 6857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_shlibpath="$dir" 6858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib_linked=no 6861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) lib_linked=no ;; 6864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$lib_linked" != yes; then 6867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_configuration "unsupported hardcode properties" 6868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$add_shlibpath"; then 6871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$compile_shlibpath: in 6872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$add_shlibpath:"*) ;; 6873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append compile_shlibpath "$add_shlibpath:" ;; 6874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog; then 6877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add" && compile_deplibs="$add $compile_deplibs" 6879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add_dir" && deplibs="$add_dir $deplibs" 6881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add" && deplibs="$add $deplibs" 6882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_direct" != yes && 6883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$hardcode_minus_L" != yes && 6884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$hardcode_shlibpath_var" = yes; then 6885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$finalize_shlibpath: in 6886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$libdir:"*) ;; 6887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_shlibpath "$libdir:" ;; 6888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog || test "$opt_mode" = relink; then 6894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_shlibpath= 6895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_dir= 6896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add= 6897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Finalize command for both is simple: just hardcode it. 6898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_direct" = yes && 6899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$hardcode_direct_absolute" = no; then 6900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$libdir/$linklib" 6901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_minus_L" = yes; then 6902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_dir="-L$libdir" 6903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_shlibpath_var" = yes; then 6905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$finalize_shlibpath: in 6906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$libdir:"*) ;; 6907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_shlibpath "$libdir:" ;; 6908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$hardcode_automatic" = yes; then 6911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inst_prefix_dir" && 6912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -f "$inst_prefix_dir$libdir/$linklib" ; then 6913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$inst_prefix_dir$libdir/$linklib" 6914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="$libdir/$linklib" 6916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We cannot seem to hardcode it, guess we'll fake it. 6919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add_dir="-L$libdir" 6920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Try looking first in the location we're being installed to. 6921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inst_prefix_dir"; then 6922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $libdir in 6923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]*) 6924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append add_dir " -L$inst_prefix_dir$libdir" 6925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 6926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 6927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen add="-l$name" 6929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog; then 6932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add_dir" && deplibs="$add_dir $deplibs" 6936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$add" && deplibs="$add $deplibs" 6937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$linkmode" = prog; then 6940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Here we assume that one of hardcode_direct or hardcode_minus_L 6941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # is not unsupported. This is valid on all known static and 6942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # shared platforms. 6943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_direct" != unsupported; then 6944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$old_library" && linklib="$old_library" 6945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$dir/$linklib $compile_deplibs" 6946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$dir/$linklib $finalize_deplibs" 6947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="-l$name -L$dir $compile_deplibs" 6949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$build_libtool_libs" = yes; then 6952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Not a shared library 6953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$deplibs_check_method" != pass_all; then 6954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We're trying link a shared library against a static one 6955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # but the system doesn't support it. 6956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just print a warning and add the library to dependency_libs so 6958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # that the program can be linked against the static library. 6959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 6960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: This system can not link to static lib archive $lib." 6961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** I have the capability to make that library automatically link in when" 6962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** you link to this library. But I can only do this if you have a" 6963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** shared version of the library, which you do not appear to have." 6964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$module" = yes; then 6965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** But as you try to build a module library, libtool will still create " 6966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** a static module, that should work as long as the dlopening application" 6967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$global_symbol_pipe"; then 6969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 6970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** However, this would only work if libtool was able to extract symbol" 6971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** not find such a program. So, this module is probably useless." 6973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** \`nm' from GNU binutils and a full rebuild may help." 6974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = no; then 6976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=module 6977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 6978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 6980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 6983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$dir/$old_library $deplibs" 6984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_static=yes 6985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 6986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # link shared/static library? 6987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 6988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = lib; then 6989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dependency_libs" && 6990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test "$hardcode_into_libs" != yes || 6991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_old_libs" = yes || 6992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$link_static" = yes; }; then 6993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Extract -R from dependency_libs 6994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen temp_deplibs= 6995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $dependency_libs; do 6996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $libdir in 6997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R*) func_stripname '-R' '' "$libdir" 6998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen temp_xrpath=$func_stripname_result 6999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $xrpath " in 7000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $temp_xrpath "*) ;; 7001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append xrpath " $temp_xrpath";; 7002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac;; 7003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append temp_deplibs " $libdir";; 7004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs="$temp_deplibs" 7007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newlib_search_path " $absdir" 7010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Link against this library 7011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # ... and its dependency_libs 7013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_libs= 7014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $dependency_libs; do 7015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdependency_libs="$deplib $newdependency_libs" 7016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 7017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) func_stripname '-L' '' "$deplib" 7018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$func_stripname_result";; 7019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_resolve_sysroot "$deplib" ;; 7020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $opt_preserve_dup_deps ; then 7022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$tmp_libs " in 7023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $func_resolve_sysroot_result "*) 7024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append tmp_libs " $func_resolve_sysroot_result" 7028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$link_all_deplibs" != no; then 7031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add the search paths of all dependency libraries 7032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $dependency_libs; do 7033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen path= 7034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 7035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) path="$deplib" ;; 7036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 7037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_resolve_sysroot "$deplib" 7038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplib=$func_resolve_sysroot_result 7039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$deplib" "" "." 7040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir=$func_dirname_result 7041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We need an absolute path. 7042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $dir in 7043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir=`cd "$dir" && pwd` 7046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$absdir"; then 7047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "cannot determine absolute directory name of \`$dir'" 7048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen absdir="$dir" 7049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $GREP "^installed=no" $deplib > /dev/null; then 7053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 7054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-darwin*) 7055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen depdepl= 7056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$deplibrary_names" ; then 7058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for tmp in $deplibrary_names ; do 7059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen depdepl=$tmp 7060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$absdir/$objdir/$depdepl" ; then 7062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen depdepl="$absdir/$objdir/$depdepl" 7063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$darwin_install_name"; then 7065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen path= 7070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen path="-L$absdir/$objdir" 7075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libdir" && \ 7080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$deplib' is not a valid libtool archive" 7081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$absdir" != "$libdir" && \ 7082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`$deplib' seems to be moved" 7083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen path="-L$absdir" 7085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $deplibs " in 7089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $path "*) ;; 7090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) deplibs="$path $deplibs" ;; 7091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # link_all_deplibs != no 7094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi # linkmode = lib 7095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # for deplib in $libs 7096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = link; then 7097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = "prog"; then 7098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs="$newdependency_libs" 7105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" = dlpreopen; then 7106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Link the dlpreopened libraries before other libraries 7107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $save_deplibs; do 7108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$deplib $deplibs" 7109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" != dlopen; then 7112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$pass" != conv; then 7113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure lib_search_path contains only unique directories. 7114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib_search_path= 7115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dir in $newlib_search_path; do 7116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$lib_search_path " in 7117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $dir "*) ;; 7118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append lib_search_path " $dir" ;; 7119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newlib_search_path= 7122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode,$pass" != "prog,link"; then 7125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen vars="deplibs" 7126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen vars="compile_deplibs finalize_deplibs" 7128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for var in $vars dependency_libs; do 7130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add libraries to $var in reverse order 7131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval tmp_libs=\"\$$var\" 7132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_libs= 7133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $tmp_libs; do 7134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FIXME: Pedantically, this is the right thing to do, so 7135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # that some nasty dependency loop isn't accidentally 7136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # broken: 7137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen #new_libs="$deplib $new_libs" 7138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Pragmatically, this seems to cause very few problems in 7139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # practice: 7140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 7141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) new_libs="$deplib $new_libs" ;; 7142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R*) ;; 7143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # And here is the reason: when a library appears more 7145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # than once as an explicit dependence of a library, or 7146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # is implicitly linked in more than once by the 7147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # compiler, it is considered special, and multiple 7148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # occurrences thereof are not removed. Compare this 7149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # with having the same library being listed as a 7150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # dependency of multiple other libraries: in this case, 7151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # we know (pedantically, we assume) the library does not 7152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # need to be listed more than once, so we keep only the 7153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # last copy. This is not always right, but it is rare 7154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # enough that we require users that really mean to play 7155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # such unportable linking tricks to link the library 7156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # using -Wl,-lname, so that libtool does not consider it 7157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # for duplicate removal. 7158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $specialdeplibs " in 7159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) new_libs="$deplib $new_libs" ;; 7160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $new_libs " in 7162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 7163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) new_libs="$deplib $new_libs" ;; 7164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_libs= 7171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $new_libs; do 7172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 7173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) 7174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $tmp_libs " in 7175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 7176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append tmp_libs " $deplib" ;; 7177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append tmp_libs " $deplib" ;; 7180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval $var=\"$tmp_libs\" 7183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # for var 7184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Last step: remove runtime libs from dependency_libs 7186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # (they stay in deplibs) 7187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_libs= 7188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for i in $dependency_libs ; do 7189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $predeps $postdeps $compiler_lib_search_path " in 7190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $i "*) 7191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen i="" 7192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$i" ; then 7195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append tmp_libs " $i" 7196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs=$tmp_libs 7199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # for pass 7200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog; then 7201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlfiles="$newdlfiles" 7202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$linkmode" = prog || test "$linkmode" = lib; then 7204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefiles="$newdlprefiles" 7205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $linkmode in 7208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlib) 7209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-dlopen' is ignored for archives" 7211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $deplibs" in 7214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *\ -l* | *\ -L*) 7215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-l' and \`-L' are ignored for archives" ;; 7216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$rpath" && \ 7219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-rpath' is ignored for archives" 7220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$xrpath" && \ 7222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-R' is ignored for archives" 7223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$vinfo" && \ 7225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-version-info/-version-number' is ignored for archives" 7226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$release" && \ 7228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-release' is ignored for archives" 7229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$export_symbols$export_symbols_regex" && \ 7231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-export-symbols' is ignored for archives" 7232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now set the variables for building old libraries. 7234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 7235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlibs="$output" 7236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append objs "$old_deplibs" 7237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib) 7240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure we only generate libraries of the form `libNAME.la'. 7241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $outputname in 7242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib*) 7243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname 'lib' '.la' "$outputname" 7244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 7245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval shared_ext=\"$shrext_cmds\" 7246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libname=\"$libname_spec\" 7247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$module" = no && \ 7250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "libtool library \`$output' must begin with \`lib'" 7251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_lib_prefix" != no; then 7253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add the "lib" prefix for modules if required 7254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.la' "$outputname" 7255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 7256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval shared_ext=\"$shrext_cmds\" 7257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libname=\"$libname_spec\" 7258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.la' "$outputname" 7260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=$func_stripname_result 7261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$objs"; then 7266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$deplibs_check_method" != pass_all; then 7267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** objects $objs is not portable!" 7272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $objs" 7273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$dlself" != no && \ 7277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-dlopen self' is ignored for libtool libraries" 7278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $rpath 7280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 7281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$#" -gt 1 && \ 7282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "ignoring multiple \`-rpath's for a libtool library" 7283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen install_libdir="$1" 7285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlibs= 7287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$rpath"; then 7288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes; then 7289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Building a libtool convenience library. 7290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Some compilers have problems with a `.al' extension so 7291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # convenience libraries should have the same extension an 7292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # archive normally would. 7293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlibs="$output_objdir/$libname.$libext $oldlibs" 7294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=convenience 7295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 7296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$vinfo" && \ 7299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$release" && \ 7302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-release' is ignored for convenience libraries" 7303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Parse the version information argument. 7306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS=':' 7307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $vinfo 0 0 0 7308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 7309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 7310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$7" && \ 7312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "too many parameters to \`-version-info'" 7313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # convert absolute version numbers to libtool ages 7315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # this retains compatibility with .la files and attempts 7316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # to make the code below a bit more comprehensible 7317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $vinfo_number in 7319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen yes) 7320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen number_major="$1" 7321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen number_minor="$2" 7322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen number_revision="$3" 7323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 7324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # There are really only two kinds -- those that 7325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # use the current revision as the major version 7326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and those that subtract age and use age as 7327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # a minor version. But, then there is irix 7328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # which has an extra 1 added just for fun 7329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 7330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $version_type in 7331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin|linux|osf|windows|none) 7332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $number_major + $number_minor 7333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen current=$func_arith_result 7334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen age="$number_minor" 7335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen revision="$number_revision" 7336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen freebsd-aout|freebsd-elf|qnx|sunos) 7338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen current="$number_major" 7339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen revision="$number_minor" 7340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen age="0" 7341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen irix|nonstopux) 7343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $number_major + $number_minor 7344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen current=$func_arith_result 7345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen age="$number_minor" 7346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen revision="$number_minor" 7347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_irix_increment=no 7348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen no) 7352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen current="$1" 7353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen revision="$2" 7354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen age="$3" 7355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check that each of the things are valid numbers. 7359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $current in 7360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 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]) ;; 7361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "CURRENT \`$current' must be a nonnegative integer" 7363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$vinfo' is not valid version information" 7364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $revision in 7368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 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]) ;; 7369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "REVISION \`$revision' must be a nonnegative integer" 7371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$vinfo' is not valid version information" 7372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $age in 7376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 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]) ;; 7377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "AGE \`$age' must be a nonnegative integer" 7379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$vinfo' is not valid version information" 7380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$age" -gt "$current"; then 7384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_error "AGE \`$age' is greater than the current interface number \`$current'" 7385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$vinfo' is not valid version information" 7386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Calculate the version variables. 7389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major= 7390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix= 7391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring= 7392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $version_type in 7393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen none) ;; 7394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin) 7396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Like Linux, but with the current version available in 7397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # verstring for coding it into the library header 7398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age 7399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=.$func_arith_result 7400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix="$major.$age.$revision" 7401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Darwin ld doesn't like 0 for these options... 7402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current + 1 7403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen minor_current=$func_arith_result 7404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen freebsd-aout) 7409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=".$current" 7410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=".$current.$revision"; 7411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen freebsd-elf) 7414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=".$current" 7415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=".$current" 7416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen irix | nonstopux) 7419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$lt_irix_increment" = "Xno"; then 7420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age 7421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age + 1 7423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=$func_arith_result 7425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $version_type in 7427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen nonstopux) verstring_prefix=nonstopux ;; 7428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) verstring_prefix=sgi ;; 7429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="$verstring_prefix$major.$revision" 7431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add in all the interfaces that we are compatible with. 7433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen loop=$revision 7434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test "$loop" -ne 0; do 7435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $revision - $loop 7436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen iface=$func_arith_result 7437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $loop - 1 7438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen loop=$func_arith_result 7439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="$verstring_prefix$major.$iface:$verstring" 7440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Before this point, $major must not contain `.'. 7443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=.$major 7444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix="$major.$revision" 7445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linux) 7448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age 7449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=.$func_arith_result 7450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix="$major.$age.$revision" 7451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen osf) 7454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age 7455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=.$func_arith_result 7456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=".$current.$age.$revision" 7457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="$current.$age.$revision" 7458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add in all the interfaces that we are compatible with. 7460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen loop=$age 7461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test "$loop" -ne 0; do 7462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $loop 7463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen iface=$func_arith_result 7464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $loop - 1 7465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen loop=$func_arith_result 7466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="$verstring:${iface}.0" 7467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make executables depend on our current version. 7470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append verstring ":${current}.0" 7471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen qnx) 7474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=".$current" 7475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=".$current" 7476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen sunos) 7479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=".$current" 7480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=".$current.$revision" 7481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen windows) 7484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Use '-' rather than '.', since we only want one 7485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # extension on DOS 8.3 filesystems. 7486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $current - $age 7487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=$func_arith_result 7488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix="-$major" 7489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_configuration "unknown library version type \`$version_type'" 7493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Clear the version info if we defaulted, and they specified a release. 7497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$vinfo" && test -n "$release"; then 7498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major= 7499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $version_type in 7500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen darwin) 7501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # we can't check for "0.0" in archive_cmds due to quoting 7502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # problems, so we reset it completely 7503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring= 7504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="0.0" 7507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_version" = no; then 7510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix= 7511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=".0.0" 7513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove version info from name if versioning should be avoided 7517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$avoid_version" = yes && test "$need_version" = no; then 7518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major= 7519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix= 7520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen verstring="" 7521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Check to see if the archive will have undefined symbols. 7524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$allow_undefined" = yes; then 7525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$allow_undefined_flag" = unsupported; then 7526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "undefined symbols not allowed in $host shared libraries" 7527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 7528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 7529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't allow undefined symbols. 7532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen allow_undefined_flag="$no_undefined_flag" 7533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_generate_dlsyms "$libname" "$libname" "yes" 7538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $symfileobj" 7539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobjs" = "X " && libobjs= 7540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" != relink; then 7542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remove our outputs, but don't remove object files since they 7543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # may have been created when compiling PIC objects. 7544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen removelist= 7545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tempremovelist=`$ECHO "$output_objdir/*"` 7546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for p in $tempremovelist; do 7547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $p in 7548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.$objext | *.gcno) 7549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$precious_files_regex" != "X"; then 7552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen then 7554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 7555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append removelist " $p" 7558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) ;; 7560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$removelist" && \ 7563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "${RM}r \$removelist" 7564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now set the variables for building old libraries. 7567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append oldlibs " $output_objdir/$libname.$libext" 7569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Transform .lo files to .o files. 7571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Eliminate all temporary directories. 7575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen #for path in $notinst_path; do 7576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen #done 7580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$xrpath"; then 7582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the user specified any rpath flags, then add them. 7583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen temp_xrpath= 7584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $xrpath; do 7585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_replace_sysroot "$libdir" 7586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append temp_xrpath " -R$func_replace_sysroot_result" 7587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$finalize_rpath " in 7588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 7589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_rpath " $libdir" ;; 7590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs="$temp_xrpath $dependency_libs" 7594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure dlfiles contains only unique files that won't be dlpreopened 7598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_dlfiles="$dlfiles" 7599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlfiles= 7600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $old_dlfiles; do 7601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $dlprefiles $dlfiles " in 7602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $lib "*) ;; 7603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append dlfiles " $lib" ;; 7604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure dlprefiles contains only unique files 7608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_dlprefiles="$dlprefiles" 7609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefiles= 7610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $old_dlprefiles; do 7611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$dlprefiles " in 7612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $lib "*) ;; 7613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append dlprefiles " $lib" ;; 7614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes; then 7618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$rpath"; then 7619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 7620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # these systems don't actually have a c library (as such)! 7622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-rhapsody* | *-*-darwin1.[012]) 7624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Rhapsody C library is in the System framework 7625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append deplibs " System.ltframework" 7626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-netbsd*) 7628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't link with libc until the a.out ld.so is fixed. 7629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do not include libc due to us having libc/libc_r. 7632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sco3.2v5* | *-*-sco5v6*) 7634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Causes problems with __ctype 7635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Compiler inserts libc in the correct place for threads to work 7638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add libc to deplibs on all other systems if necessary. 7641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_need_lc" = "yes"; then 7642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append deplibs " -lc" 7643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Transform deplibs into only deplibs that can be linked in shared. 7649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name_save=$name 7650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname_save=$libname 7651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen release_save=$release 7652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix_save=$versuffix 7653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major_save=$major 7654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # I'm not sure if I'm treating the release correctly. I think 7655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # release should show up in the -l (ie -lgmp5) so we don't want to 7656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # add it in twice. Is that correct? 7657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen release="" 7658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix="" 7659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major="" 7660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdeplibs= 7661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=no 7662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplibs_check_method in 7663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen pass_all) 7664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't check for shared/static. Everything works. 7665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This might be a little naive. We might want to check 7666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # whether the library exists or not. But this is on 7667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # osf3 & osf4 and I'm not really sure... Just 7668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # implementing what was already the behavior. 7669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdeplibs=$deplibs 7670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test_compile) 7672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This code stresses the "libraries are programs" paradigm to its 7673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # limits. Maybe even breaks it. We compile a program, linking it 7674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # against the deplibs as a proxy for the library. Then we can check 7675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # whether they linked in statically or dynamically with ldd. 7676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM conftest.c 7677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cat > conftest.c <<EOF 7678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen int main() { return 0; } 7679548dde4863e9a2315e3f327efe63ff55949addb8Marco NelissenEOF 7680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM conftest 7681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ldd_output=`ldd conftest` 7683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for i in $deplibs; do 7684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $i in 7685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -l*) 7686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname -l '' "$i" 7687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 7688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $predeps $postdeps " in 7690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $i "*) 7691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $i" 7692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen i="" 7693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$i" ; then 7697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=`eval "\\$ECHO \"$libname_spec\""` 7698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $deplib_matches; shift 7700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplib_match=$1 7701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $i" 7703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=yes 7705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** I have the capability to make that library automatically link in when" 7708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** you link to this library. But I can only do this if you have a" 7709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** shared version of the library, which I believe you do not have" 7710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** because a test_compile did reveal that the linker did not use it for" 7711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** its dynamic dependency list that programs get resolved with at runtime." 7712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $i" 7717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Error occurred in the first compile. Let's try to salvage 7722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the situation: Compile a separate program for each library. 7723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for i in $deplibs; do 7724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $i in 7725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -l*) 7726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname -l '' "$i" 7727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 7728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM conftest 7729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ldd_output=`ldd conftest` 7731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $predeps $postdeps " in 7733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $i "*) 7734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $i" 7735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen i="" 7736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$i" ; then 7740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=`eval "\\$ECHO \"$libname_spec\""` 7741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $deplib_matches; shift 7743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplib_match=$1 7744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $i" 7746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=yes 7748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** I have the capability to make that library automatically link in when" 7751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** you link to this library. But I can only do this if you have a" 7752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** shared version of the library, which you do not appear to have" 7753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** because a test_compile did reveal that the linker did not use this one" 7754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=yes 7759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** make it link in! You will probably need to install it or some" 7762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** library that it depends on before this library will be fully" 7763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** functional. Installing it before continuing would be even better." 7764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $i" 7768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file_magic*) 7774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $deplibs_check_method; shift 7775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for a_deplib in $deplibs; do 7777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $a_deplib in 7778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -l*) 7779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname -l '' "$a_deplib" 7780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 7781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $predeps $postdeps " in 7783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $a_deplib "*) 7784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $a_deplib" 7785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen a_deplib="" 7786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$a_deplib" ; then 7790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=`eval "\\$ECHO \"$libname_spec\""` 7791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$file_magic_glob"; then 7792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libnameglob=$libname 7795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$want_nocaseglob" = yes; then 7799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shopt -s nocaseglob 7800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $nocaseglob 7802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for potent_lib in $potential_libs; do 7806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Follow soft links. 7807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ls -lLd "$potent_lib" 2>/dev/null | 7808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $GREP " -> " >/dev/null; then 7809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 7810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The statement above tries to avoid entering an 7812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # endless loop below, in case of cyclic links. 7813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We might still enter an endless loop, since a link 7814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # loop can be closed while we follow links, 7815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # but so what? 7816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen potlib="$potent_lib" 7817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while test -h "$potlib" 2>/dev/null; do 7818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $potliblink in 7820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $SED -e 10q | 7826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $EGREP "$file_magic_regex" > /dev/null; then 7827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $a_deplib" 7828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen a_deplib="" 7829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 2 7830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$a_deplib" ; then 7835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=yes 7836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** I have the capability to make that library automatically link in when" 7839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** you link to this library. But I can only do this if you have a" 7840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** shared version of the library, which you do not appear to have" 7841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** because I did check the linker path looking for a file starting" 7842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$potlib" ; then 7843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** with $libname and none of the candidates passed a file format test" 7846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** using a file magic. Last file checked: $potlib" 7847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add a -L argument. 7852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $a_deplib" 7853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # Gone through all deplibs. 7856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen match_pattern*) 7858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $deplibs_check_method; shift 7859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for a_deplib in $deplibs; do 7861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $a_deplib in 7862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -l*) 7863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname -l '' "$a_deplib" 7864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$func_stripname_result 7865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $predeps $postdeps " in 7867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $a_deplib "*) 7868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $a_deplib" 7869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen a_deplib="" 7870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$a_deplib" ; then 7874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=`eval "\\$ECHO \"$libname_spec\""` 7875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for potent_lib in $potential_libs; do 7878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen potlib="$potent_lib" # see symlink-check above in file_magic test 7879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $EGREP "$match_pattern_regex" > /dev/null; then 7881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $a_deplib" 7882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen a_deplib="" 7883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 2 7884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$a_deplib" ; then 7889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=yes 7890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** I have the capability to make that library automatically link in when" 7893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** you link to this library. But I can only do this if you have a" 7894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** shared version of the library, which you do not appear to have" 7895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** because I did check the linker path looking for a file starting" 7896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$potlib" ; then 7897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** with $libname and none of the candidates passed a file format test" 7900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** using a regex pattern. Last file checked: $potlib" 7901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 7905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add a -L argument. 7906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdeplibs " $a_deplib" 7907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done # Gone through all deplibs. 7910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen none | unknown | *) 7912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdeplibs="" 7913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for i in $predeps $postdeps ; do 7916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # can't use Xsed below, because $i might contain '/' 7917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 7919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $tmp_deplibs in 7921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[!\ \ ]*) 7922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$deplibs_check_method" = "Xnone"; then 7924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** Warning: inter-library dependencies are not supported in this platform." 7925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** Warning: inter-library dependencies are not known to be supported." 7927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** All declared inter-library dependencies are being dropped." 7929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen droppeddeps=yes 7930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen versuffix=$versuffix_save 7935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen major=$major_save 7936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen release=$release_save 7937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libname=$libname_save 7938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name=$name_save 7939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 7941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-rhapsody* | *-*-darwin1.[012]) 7942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # On Rhapsody replace the C library with the System framework 7943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 7946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$droppeddeps" = yes; then 7948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$module" = yes; then 7949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** Warning: libtool could not satisfy all declared inter-library" 7951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** a static module, that should work as long as the dlopening" 7953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** application is linked with the -dlopen flag." 7954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$global_symbol_pipe"; then 7955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** However, this would only work if libtool was able to extract symbol" 7957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** not find such a program. So, this module is probably useless." 7959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** \`nm' from GNU binutils and a full rebuild may help." 7960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = no; then 7962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlibs="$output_objdir/$libname.$libext" 7963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=module 7964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 7965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 7967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** The inter-library dependencies that have been dropped here will be" 7970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** automatically added whenever a program is linked with this library" 7971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** or is declared to -dlopen it." 7972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 7973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$allow_undefined" = no; then 7974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 7975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** Since this library must not contain undefined symbols," 7976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** because either the platform does not support them or" 7977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** it was explicitly requested with -no-undefined," 7978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "*** libtool will only create a static version of it." 7979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_old_libs" = no; then 7980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldlibs="$output_objdir/$libname.$libext" 7981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=module 7982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_old_libs=yes 7983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 7984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 7985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Done checking deplibs! 7990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs=$newdeplibs 7991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 7992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 7994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-darwin*) 7995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 7999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # move library search paths that coincide with paths to not yet 8002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # installed libraries to the beginning of the library search list 8003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_libs= 8004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for path in $notinst_path; do 8005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $new_libs " in 8006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" -L$path/$objdir "*) ;; 8007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $deplibs " in 8009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" -L$path/$objdir "*) 8010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append new_libs " -L$path/$objdir" ;; 8011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $deplibs; do 8016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 8017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) 8018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $new_libs " in 8019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 8020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append new_libs " $deplib" ;; 8021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append new_libs " $deplib" ;; 8024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$new_libs" 8027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # All the library-specific variables (install_libdir is set above). 8029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen library_names= 8030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_library= 8031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlname= 8032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Test again, we may have decided not to build it any more 8034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = yes; then 8035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_into_libs" = yes; then 8036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Hardcode the library paths 8037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen hardcode_libdirs= 8038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dep_rpath= 8039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath="$finalize_rpath" 8040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $rpath; do 8042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_flag_spec"; then 8043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_separator"; then 8044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_replace_sysroot "$libdir" 8045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir=$func_replace_sysroot_result 8046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$hardcode_libdirs"; then 8047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen hardcode_libdirs="$libdir" 8048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just accumulate the unique libdirs. 8050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval flag=\"$hardcode_libdir_flag_spec\" 8060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append dep_rpath " $flag" 8061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$runpath_var"; then 8063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$perm_rpath " in 8064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 8065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_apped perm_rpath " $libdir" ;; 8066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Substitute the hardcoded libdirs into the rpath. 8070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_separator" && 8071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$hardcode_libdirs"; then 8072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir="$hardcode_libdirs" 8073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_flag_spec_ld"; then 8074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" 8075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval dep_rpath=\"$hardcode_libdir_flag_spec\" 8077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$runpath_var" && test -n "$perm_rpath"; then 8080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We should set the runpath_var. 8081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath= 8082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dir in $perm_rpath; do 8083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rpath "$dir:" 8084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shlibpath="$finalize_shlibpath" 8091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$shlibpath"; then 8093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Get the real and link names of the library. 8097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval shared_ext=\"$shrext_cmds\" 8098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval library_names=\"$library_names_spec\" 8099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set dummy $library_names 8100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 8101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen realname="$1" 8102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 8103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$soname_spec"; then 8105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval soname=\"$soname_spec\" 8106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen soname="$realname" 8108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$dlname"; then 8110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlname=$soname 8111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lib="$output_objdir/$realname" 8114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen linknames= 8115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for link 8116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 8117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append linknames " $link" 8118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Use standard objects if they are pic 8121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobjs" = "X " && libobjs= 8123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen delfiles= 8125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$include_expsyms"; then 8126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols="$output_objdir/$libname.uexp" 8128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $export_symbols" 8129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen orig_export_symbols= 8132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host_os in 8133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cygwin* | mingw* | cegcc*) 8134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # exporting using user supplied symfile 8136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and it's NOT already a .def file. Must figure out 8138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # which of the given symbols are data symbols and tag 8139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # them as such. So, trigger use of export_symbols_cmds. 8140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # export_symbols gets reassigned inside the "prepare 8141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the list of exported symbols" if statement, so the 8142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # include_expsyms logic still works. 8143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen orig_export_symbols="$export_symbols" 8144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols= 8145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen always_export_symbols=yes 8146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Prepare the list of exported symbols 8152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$export_symbols"; then 8153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "generating symbol list for \`$libname.la'" 8155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols="$output_objdir/$libname.exp" 8156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $export_symbols 8157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$export_symbols_cmds 8158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS='~' 8159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for cmd1 in $cmds; do 8160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 8161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Take the normal branch if the nm_file_list_spec branch 8162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # doesn't work or if tool conversion is not needed. 8163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $nm_file_list_spec~$to_tool_file_cmd in 8164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen try_normal_branch=yes 8166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmd=\"$cmd1\" 8167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $cmd" 8168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$func_len_result 8169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen try_normal_branch=no 8172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$try_normal_branch" = yes \ 8175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && { test "$len" -lt "$max_cmd_len" \ 8176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen || test "$max_cmd_len" -le -1; } 8177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen then 8178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$cmd" 'exit $?' 8179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen skipped_export=false 8180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$nm_file_list_spec"; then 8181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$output" 8182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_la=$func_basename_result 8183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_libobjs=$libobjs 8184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_output=$output 8185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=${output_objdir}/${output_la}.nm 8186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output" 8187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobjs=$nm_file_list_spec$func_to_tool_file_result 8188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $output" 8189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating $NM input file list: $output" 8190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $save_libobjs; do 8191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$obj" 8192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$func_to_tool_file_result" 8193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done > "$output" 8194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmd=\"$cmd1\" 8195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$cmd" 'exit $?' 8196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$save_output 8197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobjs=$save_libobjs 8198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen skipped_export=false 8199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The command line is too long to execute in one step. 8201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "using reloadable object file for export list..." 8202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen skipped_export=: 8203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Break out early, otherwise skipped_export may be 8204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # set to false by a later but shorter cmd. 8205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 8206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 8209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$include_expsyms"; then 8217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_export_symbols="$export_symbols" 8218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The given exports_symbols file has to be filtered, so filter it. 8224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FIXME: $output_objdir/$libname.filter potentially contains lots of 8226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 's' commands which not all seds can handle. GNU sed should be fine 8227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # though. Also, the filter scales superlinearly with the number of 8228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # global variables. join(1) would be nice here, but unfortunately 8229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # isn't a blessed tool. 8230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols=$output_objdir/$libname.def 8233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_deplibs= 8237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen inst_prefix_arg= 8238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for test_deplib in $deplibs; do 8239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $convenience " in 8240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $test_deplib "*) ;; 8241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inst_prefix_dir" && test "$inst_prefix_dir" != "/" && (echo "$test_deplib" | grep -- "$inst_prefix_dir" >/dev/null); then 8243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append inst_prefix_arg " $test_deplib" 8244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append tmp_deplibs " $test_deplib" 8246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$tmp_deplibs" 8251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$inst_prefix_arg"; then 8252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen deplibs="$inst_prefix_arg $deplibs" 8253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$convenience"; then 8256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$whole_archive_flag_spec" && 8257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$compiler_needs_object" = yes && 8258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libobjs"; then 8259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # extract the archives, so we have objects to list. 8260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # TODO: could optimize this to just extract one archive. 8261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen whole_archive_flag_spec= 8262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$whole_archive_flag_spec"; then 8264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_libobjs=$libobjs 8265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobjs" = "X " && libobjs= 8267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop="$output_objdir/${outputname}x" 8269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append generated " $gentop" 8270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_archives $gentop $convenience 8272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $func_extract_archives_result" 8273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobjs" = "X " && libobjs= 8274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval flag=\"$thread_safe_flag_spec\" 8279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append linker_flags " $flag" 8280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make a backup of the uninstalled library when relinking 8283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" = relink; then 8284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each of the archive commands. 8288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$module" = yes && test -n "$module_cmds" ; then 8289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval test_cmds=\"$module_expsym_cmds\" 8291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$module_expsym_cmds 8292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval test_cmds=\"$module_cmds\" 8294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$module_cmds 8295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval test_cmds=\"$archive_expsym_cmds\" 8299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$archive_expsym_cmds 8300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval test_cmds=\"$archive_cmds\" 8302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$archive_cmds 8303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$skipped_export" != "X:" && 8307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $test_cmds" && 8308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$func_len_result && 8309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 8311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The command line is too long to link in one step, link piecewise 8313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # or, if using GNU ld and skipped_export is not :, use a linker 8314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # script. 8315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Save the value of $output and $libobjs because we want to 8317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # use them later. If we have whole_archive_flag_spec, we 8318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # want to use save_libobjs as it was before 8319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # whole_archive_flag_spec was expanded, because we can't 8320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # assume the linker understands whole_archive_flag_spec. 8321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This may have to be revisited, in case too many 8322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # convenience libraries get linked in and end up exceeding 8323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the spec. 8324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_libobjs=$libobjs 8326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_output=$output 8328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$output" 8329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_la=$func_basename_result 8330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Clear the reloadable object creation command queue and 8332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # initialize k to one. 8333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test_cmds= 8334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_cmds= 8335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objlist= 8336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen last_robj= 8337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen k=1 8338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=${output_objdir}/${output_la}.lnkscript 8341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating GNU ld script: $output" 8342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo 'INPUT (' > $output 8343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $save_libobjs 8344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 8345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$obj" 8346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$func_to_tool_file_result" >> $output 8347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo ')' >> $output 8349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $output" 8350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output" 8351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$func_to_tool_file_result 8352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=${output_objdir}/${output_la}.lnk 8354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating linker input file list: $output" 8355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : > $output 8356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen set x $save_libobjs 8357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 8358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen firstobj= 8359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$compiler_needs_object" = yes; then 8360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen firstobj="$1 " 8361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen shift 8362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj 8364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 8365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$obj" 8366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$func_to_tool_file_result" >> $output 8367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $output" 8369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output" 8370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$save_libobjs"; then 8373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating reloadable object files..." 8374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$output_objdir/$output_la-${k}.$objext 8375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval test_cmds=\"$reload_cmds\" 8376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $test_cmds" 8377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len0=$func_len_result 8378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$len0 8379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Loop over the list of objects to be linked. 8381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $save_libobjs 8382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 8383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $obj" 8384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $len + $func_len_result 8385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$func_arith_result 8386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$objlist" = X || 8387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$len" -lt "$max_cmd_len"; then 8388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append objlist " $obj" 8389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The command $test_cmds is almost too long, add a 8391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # command to the queue. 8392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$k" -eq 1 ; then 8393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The first file doesn't have a previous command to add. 8394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_objs=$objlist 8395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"$reload_cmds\" 8396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # All subsequent reloadable object files will link in 8398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the last one created. 8399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_objs="$objlist $last_robj" 8400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen last_robj=$output_objdir/$output_la-${k}.$objext 8403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $k + 1 8404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen k=$func_arith_result 8405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$output_objdir/$output_la-${k}.$objext 8406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objlist=" $obj" 8407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $last_robj" 8408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $len0 + $func_len_result 8409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$func_arith_result 8410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Handle the remaining objects by creating one last 8413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # reloadable object file. All subsequent reloadable object 8414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # files will link in the last one created. 8415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_objs="$objlist $last_robj" 8417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$last_robj"; then 8419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $output" 8422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output= 8425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ${skipped_export-false}; then 8428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "generating symbol list for \`$libname.la'" 8429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols="$output_objdir/$libname.exp" 8430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $export_symbols 8431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobjs=$output 8432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Append the command to create the export file. 8433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$last_robj"; then 8436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$save_libobjs" && 8441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating a temporary reloadable object file: $output" 8442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Loop through the commands generated above and execute them. 8444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS='~' 8445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for cmd in $concat_cmds; do 8446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 8447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_silent || { 8448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_expand "$cmd" 8449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "func_echo $func_quote_for_expand_result" 8450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 8451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval "$cmd" || { 8452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_exit=$? 8453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Restore the uninstalled library and exit 8455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" = relink; then 8456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ( cd "$output_objdir" && \ 8457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM "${realname}T" && \ 8458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MV "${realname}U" "$realname" ) 8459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $lt_exit 8462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 8463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 8465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if ${skipped_export-false}; then 8473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$include_expsyms"; then 8474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tmp_export_symbols="$export_symbols" 8475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$orig_export_symbols"; then 8480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The given exports_symbols file has to be filtered, so filter it. 8481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FIXME: $output_objdir/$libname.filter potentially contains lots of 8483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # 's' commands which not all seds can handle. GNU sed should be fine 8484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # though. Also, the filter scales superlinearly with the number of 8485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # global variables. join(1) would be nice here, but unfortunately 8486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # isn't a blessed tool. 8487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen export_symbols=$output_objdir/$libname.def 8490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobjs=$output 8495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Restore the value of output. 8496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$save_output 8497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobjs" = "X " && libobjs= 8501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Expand the library linking commands again to reset the 8503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # value of $libobjs for piecewise linking. 8504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each of the archive commands. 8506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$module" = yes && test -n "$module_cmds" ; then 8507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$module_expsym_cmds 8509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$module_cmds 8511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$archive_expsym_cmds 8515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$archive_cmds 8517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$delfiles"; then 8522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Append the command to remove temporary files to $cmds. 8523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmds=\"\$cmds~\$RM $delfiles\" 8524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add any objects from preloaded convenience libraries 8527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlprefiles"; then 8528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop="$output_objdir/${outputname}x" 8529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append generated " $gentop" 8530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_archives $gentop $dlprefiles 8532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append libobjs " $func_extract_archives_result" 8533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "X$libobjs" = "X " && libobjs= 8534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_ifs="$IFS"; IFS='~' 8537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for cmd in $cmds; do 8538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 8539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmd=\"$cmd\" 8540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_silent || { 8541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_expand "$cmd" 8542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval "func_echo $func_quote_for_expand_result" 8543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 8544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval "$cmd" || { 8545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen lt_exit=$? 8546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Restore the uninstalled library and exit 8548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" = relink; then 8549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ( cd "$output_objdir" && \ 8550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM "${realname}T" && \ 8551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $MV "${realname}U" "$realname" ) 8552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $lt_exit 8555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 8556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen IFS="$save_ifs" 8558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Restore the uninstalled library and exit 8560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" = relink; then 8561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$convenience"; then 8564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$whole_archive_flag_spec"; then 8565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '${RM}r "$gentop"' 8566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 8570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Create links to the real library. 8573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for linkname in $linknames; do 8574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$realname" != "$linkname"; then 8575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If -module or -export-dynamic was specified, set the dlname. 8580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$module" = yes || test "$export_dynamic" = yes; then 8581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # On all known operating systems, these are identical. 8582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlname="$soname" 8583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen obj) 8588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-dlopen' is ignored for objects" 8590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $deplibs" in 8593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *\ -l* | *\ -L*) 8594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-l' and \`-L' are ignored for objects" ;; 8595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$rpath" && \ 8598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-rpath' is ignored for objects" 8599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$xrpath" && \ 8601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-R' is ignored for objects" 8602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$vinfo" && \ 8604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-version-info' is ignored for objects" 8605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$release" && \ 8607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-release' is ignored for objects" 8608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $output in 8610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) 8611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$objs$old_deplibs" && \ 8612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobj=$output 8615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_lo2o "$libobj" 8616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen obj=$func_lo2o_result 8617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libobj= 8620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen obj="$output" 8621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete the old objects. 8625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $obj $libobj 8626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Objects from convenience libraries. This assumes 8628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # single-version convenience libraries. Whenever we create 8629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # different ones for PIC/non-PIC, this we'll have to duplicate 8630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the extraction. 8631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_conv_objs= 8632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop= 8633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # reload_cmds runs $LD directly, so let us get rid of 8634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # -Wl from whole_archive_flag_spec and hope we can get by with 8635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # turning comma into space.. 8636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wl= 8637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$convenience"; then 8639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$whole_archive_flag_spec"; then 8640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop="$output_objdir/${obj}x" 8644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append generated " $gentop" 8645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_archives $gentop $convenience 8647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_conv_objs="$reload_objs $func_extract_archives_result" 8648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If we're not building shared, we need to use non_pic_objs 8652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Create the old-style object. 8655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8657548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output="$obj" 8658548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$reload_cmds" 'exit $?' 8659548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8660548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Exit if we aren't doing a library object file. 8661548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$libobj"; then 8662548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$gentop"; then 8663548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '${RM}r "$gentop"' 8664548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8665548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8666548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 8667548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8668548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8669548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" != yes; then 8670548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$gentop"; then 8671548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '${RM}r "$gentop"' 8672548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8673548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8674548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Create an invalid libtool object if no PIC, so that we don't 8675548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # accidentally link it into a program. 8676548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # $show "echo timestamp > $libobj" 8677548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8678548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 8679548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8680548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8681548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$pic_flag" || test "$pic_mode" != default; then 8682548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only do commands if we really have different PIC objects. 8683548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen reload_objs="$libobjs $reload_conv_objs" 8684548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output="$libobj" 8685548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$reload_cmds" 'exit $?' 8686548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8687548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8688548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$gentop"; then 8689548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '${RM}r "$gentop"' 8690548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8691548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8692548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 8693548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8694548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8695548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen prog) 8696548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 8697548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin*) func_stripname '' '.exe' "$output" 8698548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$func_stripname_result.exe;; 8699548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8700548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$vinfo" && \ 8701548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-version-info' is ignored for programs" 8702548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8703548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$release" && \ 8704548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`-release' is ignored for programs" 8705548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8706548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$preload" = yes \ 8707548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && test "$dlopen_support" = unknown \ 8708548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && test "$dlopen_self" = unknown \ 8709548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen && test "$dlopen_self_static" = unknown && \ 8710548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8711548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8712548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 8713548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-rhapsody* | *-*-darwin1.[012]) 8714548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # On Rhapsody replace the C library is the System framework 8715548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8716548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8717548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8718548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8719548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8720548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 8721548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-darwin*) 8722548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't allow lazy linking, it breaks C++ global constructors 8723548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # But is supposedly fixed on 10.4 or later (yay!). 8724548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$tagname" = CXX ; then 8725548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8726548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 10.[0123]) 8727548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " ${wl}-bind_at_load" 8728548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " ${wl}-bind_at_load" 8729548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8730548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8731548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8732548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8733548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8734548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8735548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8736548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8737548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8738548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8739548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # move library search paths that coincide with paths to not yet 8740548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # installed libraries to the beginning of the library search list 8741548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen new_libs= 8742548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for path in $notinst_path; do 8743548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $new_libs " in 8744548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" -L$path/$objdir "*) ;; 8745548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8746548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $compile_deplibs " in 8747548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" -L$path/$objdir "*) 8748548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append new_libs " -L$path/$objdir" ;; 8749548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8750548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8751548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8752548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8753548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $compile_deplibs; do 8754548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 8755548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) 8756548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $new_libs " in 8757548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $deplib "*) ;; 8758548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append new_libs " $deplib" ;; 8759548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8760548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8761548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append new_libs " $deplib" ;; 8762548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8763548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8764548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_deplibs="$new_libs" 8765548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8766548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8767548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append compile_command " $compile_deplibs" 8768548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append finalize_command " $finalize_deplibs" 8769548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8770548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$rpath$xrpath"; then 8771548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If the user specified any rpath flags, then add them. 8772548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $rpath $xrpath; do 8773548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This is the magic to use -rpath. 8774548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$finalize_rpath " in 8775548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 8776548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_rpath " $libdir" ;; 8777548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8778548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8779548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8780548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8781548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now hardcode the library paths 8782548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath= 8783548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen hardcode_libdirs= 8784548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $compile_rpath $finalize_rpath; do 8785548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_flag_spec"; then 8786548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_separator"; then 8787548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$hardcode_libdirs"; then 8788548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen hardcode_libdirs="$libdir" 8789548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8790548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just accumulate the unique libdirs. 8791548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8792548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8793548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8794548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8795548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8796548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8797548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8798548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8799548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8800548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval flag=\"$hardcode_libdir_flag_spec\" 8801548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rpath " $flag" 8802548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8803548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$runpath_var"; then 8804548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$perm_rpath " in 8805548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 8806548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append perm_rpath " $libdir" ;; 8807548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8808548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8809548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 8810548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8811548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8812548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$dllsearchpath: in 8813548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$libdir:"*) ;; 8814548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ::) dllsearchpath=$libdir;; 8815548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append dllsearchpath ":$libdir";; 8816548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8817548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case :$dllsearchpath: in 8818548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *":$testbindir:"*) ;; 8819548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ::) dllsearchpath=$testbindir;; 8820548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append dllsearchpath ":$testbindir";; 8821548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8822548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8823548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8824548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8825548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Substitute the hardcoded libdirs into the rpath. 8826548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_separator" && 8827548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$hardcode_libdirs"; then 8828548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir="$hardcode_libdirs" 8829548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval rpath=\" $hardcode_libdir_flag_spec\" 8830548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8831548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_rpath="$rpath" 8832548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8833548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath= 8834548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen hardcode_libdirs= 8835548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for libdir in $finalize_rpath; do 8836548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_flag_spec"; then 8837548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_separator"; then 8838548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$hardcode_libdirs"; then 8839548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen hardcode_libdirs="$libdir" 8840548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8841548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Just accumulate the unique libdirs. 8842548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8843548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8844548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8845548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8846548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8847548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8848548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8849548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8850548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8851548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval flag=\"$hardcode_libdir_flag_spec\" 8852548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rpath " $flag" 8853548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8854548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$runpath_var"; then 8855548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$finalize_perm_rpath " in 8856548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $libdir "*) ;; 8857548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append finalize_perm_rpath " $libdir" ;; 8858548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8859548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8860548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8861548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Substitute the hardcoded libdirs into the rpath. 8862548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$hardcode_libdir_separator" && 8863548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$hardcode_libdirs"; then 8864548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libdir="$hardcode_libdirs" 8865548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval rpath=\" $hardcode_libdir_flag_spec\" 8866548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8867548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_rpath="$rpath" 8868548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8869548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$libobjs" && test "$build_old_libs" = yes; then 8870548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Transform all the library objects into standard objects. 8871548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8872548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8873548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8874548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8875548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8876548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8877548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # template prelinking step 8878548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$prelink_cmds"; then 8879548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$prelink_cmds" 'exit $?' 8880548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8881548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8882548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrappers_required=yes 8883548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 8884548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cegcc* | *mingw32ce*) 8885548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8886548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrappers_required=no 8887548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8888548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* ) 8889548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" != yes; then 8890548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrappers_required=no 8891548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8892548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8893548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 8894548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8895548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen wrappers_required=no 8896548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8897548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 8898548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 8899548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$wrappers_required" = no; then 8900548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Replace the output file specification. 8901548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8902548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command="$compile_command$compile_rpath" 8903548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8904548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We have no uninstalled library dependencies, so finalize right now. 8905548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit_status=0 8906548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$link_command" 'exit_status=$?' 8907548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8908548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$postlink_cmds"; then 8909548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output" 8910548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8911548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$postlink_cmds" 'exit $?' 8912548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8913548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8914548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete the generated files. 8915548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -f "$output_objdir/${outputname}S.${objext}"; then 8916548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8917548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8918548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8919548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $exit_status 8920548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8921548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8922548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$compile_shlibpath$finalize_shlibpath"; then 8923548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8924548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8925548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$finalize_shlibpath"; then 8926548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8927548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8928548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8929548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_var= 8930548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_var= 8931548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$runpath_var"; then 8932548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$perm_rpath"; then 8933548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We should set the runpath_var. 8934548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath= 8935548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dir in $perm_rpath; do 8936548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rpath "$dir:" 8937548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8938548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8939548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8940548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$finalize_perm_rpath"; then 8941548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We should set the runpath_var. 8942548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rpath= 8943548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dir in $finalize_perm_rpath; do 8944548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rpath "$dir:" 8945548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 8946548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8947548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8948548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8949548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8950548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$no_install" = yes; then 8951548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # We don't need to create a wrapper script. 8952548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command="$compile_var$compile_command$compile_rpath" 8953548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Replace the output file specification. 8954548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8955548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete the old output file. 8956548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $output 8957548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Link the executable and exit 8958548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$link_command" 'exit $?' 8959548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8960548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$postlink_cmds"; then 8961548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output" 8962548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8963548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$postlink_cmds" 'exit $?' 8964548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8965548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8966548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 8967548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8968548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8969548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_action" = relink; then 8970548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Fast installation is not supported 8971548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command="$compile_var$compile_command$compile_rpath" 8972548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="$finalize_var$finalize_command$finalize_rpath" 8973548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8974548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "this platform does not like uninstalled shared libraries" 8975548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_warning "\`$output' will be relinked during installation" 8976548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8977548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$fast_install" != no; then 8978548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command="$finalize_var$compile_command$finalize_rpath" 8979548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$fast_install" = yes; then 8980548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8981548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8982548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # fast_install is set to needless 8983548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 8984548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8985548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 8986548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command="$compile_var$compile_command$compile_rpath" 8987548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="$finalize_var$finalize_command$finalize_rpath" 8988548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8989548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 8990548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8991548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Replace the output file specification. 8992548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8993548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8994548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete the old output files. 8995548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8996548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8997548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$link_command" 'exit $?' 8998548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 8999548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$postlink_cmds"; then 9000548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output_objdir/$outputname" 9001548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 9002548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$postlink_cmds" 'exit $?' 9003548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9004548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9005548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now create the wrapper script. 9006548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating $output" 9007548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9008548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Quote the relink command for shipping. 9009548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$relink_command"; then 9010548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Preserve any variables that may affect compiler behavior 9011548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for var in $variables_saved_for_relink; do 9012548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval test -z \"\${$var+set}\"; then 9013548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9014548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif eval var_value=\$$var; test -z "$var_value"; then 9015548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="$var=; export $var; $relink_command" 9016548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9017548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$var_value" 9018548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9019548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9020548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9021548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="(cd `pwd`; $relink_command)" 9022548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9023548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9024548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9025548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only actually do things if not in dry run mode. 9026548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 9027548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # win32 will think the script is a binary if it has 9028548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # a .exe suffix, so we strip it off here. 9029548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $output in 9030548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.exe) func_stripname '' '.exe' "$output" 9031548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output=$func_stripname_result ;; 9032548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9033548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # test for cygwin because mv fails w/o .exe extensions 9034548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 9035548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin*) 9036548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exeext=.exe 9037548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$outputname" 9038548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen outputname=$func_stripname_result ;; 9039548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) exeext= ;; 9040548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9041548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host in 9042548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin* | *mingw* ) 9043548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname_and_basename "$output" "" "." 9044548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_name=$func_basename_result 9045548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output_path=$func_dirname_result 9046548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cwrappersource="$output_path/$objdir/lt-$output_name.c" 9047548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cwrapper="$output_path/$output_name.exe" 9048548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM $cwrappersource $cwrapper 9049548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9050548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9051548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_emit_cwrapperexe_src > $cwrappersource 9052548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9053548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # The wrapper executable is built using the $host compiler, 9054548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # because it contains $host paths and files. If cross- 9055548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # compiling, it, like the target executable, must be 9056548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # executed on the $host or under an emulation environment. 9057548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 9058548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9059548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $STRIP $cwrapper 9060548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 9061548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9062548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now, create the wrapper script for func_source use: 9063548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_scriptname $cwrapper 9064548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM $func_ltwrapper_scriptname_result 9065548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9066548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 9067548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # note: this script will not be executed, so do not chmod. 9068548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x$build" = "x$host" ; then 9069548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9070548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9071548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_emit_wrapper no > $func_ltwrapper_scriptname_result 9072548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9073548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 9074548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9075548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen * ) 9076548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM $output 9077548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9078548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9079548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_emit_wrapper no > $output 9080548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen chmod +x $output 9081548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9082548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9083548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 9084548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 9085548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9086548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9087548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9088548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # See if we need to build an old-fashioned archive. 9089548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for oldlib in $oldlibs; do 9090548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9091548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = convenience; then 9092548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs="$libobjs_save $symfileobj" 9093548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen addlibs="$convenience" 9094548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 9095548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9096548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$build_libtool_libs" = module; then 9097548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs="$libobjs_save" 9098548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen build_libtool_libs=no 9099548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9100548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs="$old_deplibs $non_pic_objects" 9101548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$preload" = yes && test -f "$symfileobj"; then 9102548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append oldobjs " $symfileobj" 9103548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9104548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9105548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen addlibs="$old_convenience" 9106548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9107548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9108548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$addlibs"; then 9109548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop="$output_objdir/${outputname}x" 9110548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append generated " $gentop" 9111548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9112548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_archives $gentop $addlibs 9113548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append oldobjs " $func_extract_archives_result" 9114548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9115548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9116548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each command in the archive commands. 9117548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9118548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$old_archive_from_new_cmds 9119548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9120548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9121548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add any objects from preloaded convenience libraries 9122548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$dlprefiles"; then 9123548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop="$output_objdir/${outputname}x" 9124548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append generated " $gentop" 9125548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9126548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_extract_archives $gentop $dlprefiles 9127548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append oldobjs " $func_extract_archives_result" 9128548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9129548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9130548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # POSIX demands no paths to be encoded in archives. We have 9131548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # to avoid creating archives with duplicate basenames if we 9132548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # might have to extract them afterwards, e.g., when creating a 9133548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # static archive out of a convenience library, or when linking 9134548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the entirety of a libtool archive into another (currently 9135548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # not supported by libtool). 9136548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if (for obj in $oldobjs 9137548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 9138548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$obj" 9139548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$func_basename_result" 9140548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done | sort | sort -uc >/dev/null 2>&1); then 9141548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 9142548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9143548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen echo "copying selected object files to avoid basename conflicts..." 9144548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen gentop="$output_objdir/${outputname}x" 9145548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append generated " $gentop" 9146548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mkdir_p "$gentop" 9147548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_oldobjs=$oldobjs 9148548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs= 9149548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen counter=1 9150548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $save_oldobjs 9151548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 9152548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$obj" 9153548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objbase="$func_basename_result" 9154548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $oldobjs " in 9155548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen " ") oldobjs=$obj ;; 9156548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\ /]"$objbase "*) 9157548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen while :; do 9158548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Make sure we don't pick an alternate name that also 9159548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # overlaps. 9160548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newobj=lt$counter-$objbase 9161548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $counter + 1 9162548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen counter=$func_arith_result 9163548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $oldobjs " in 9164548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *[\ /]"$newobj "*) ;; 9165548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9166548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9167548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9168548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9169548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append oldobjs " $gentop/$newobj" 9170548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9171548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append oldobjs " $obj" ;; 9172548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9173548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9174548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9175548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmds=\"$old_archive_cmds\" 9176548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9177548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $cmds" 9178548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$func_len_result 9179548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9180548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$old_archive_cmds 9181548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -n "$archiver_list_spec"; then 9182548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "using command file archive linking..." 9183548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $oldobjs 9184548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 9185548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$obj" 9186548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO "$func_to_tool_file_result" 9187548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done > $output_objdir/$libname.libcmd 9188548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_to_tool_file "$output_objdir/$libname.libcmd" 9189548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9190548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen cmds=$old_archive_cmds 9191548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9192548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the command line is too long to link in one step, link in parts 9193548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "using piecewise archive linking..." 9194548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_RANLIB=$RANLIB 9195548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen RANLIB=: 9196548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objlist= 9197548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen concat_cmds= 9198548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen save_oldobjs=$oldobjs 9199548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs= 9200548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Is there a better way of finding the last object in the list? 9201548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $save_oldobjs 9202548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 9203548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen last_oldobj=$obj 9204548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9205548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval test_cmds=\"$old_archive_cmds\" 9206548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $test_cmds" 9207548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len0=$func_len_result 9208548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$len0 9209548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for obj in $save_oldobjs 9210548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 9211548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_len " $obj" 9212548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_arith $len + $func_len_result 9213548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$func_arith_result 9214548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append objlist " $obj" 9215548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$len" -lt "$max_cmd_len"; then 9216548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 9217548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9218548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the above command should be used before it gets too long 9219548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs=$objlist 9220548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$obj" = "$last_oldobj" ; then 9221548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen RANLIB=$save_RANLIB 9222548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9223548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9224548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9225548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen objlist= 9226548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen len=$len0 9227548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9228548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9229548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen RANLIB=$save_RANLIB 9230548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen oldobjs=$objlist 9231548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$oldobjs" = "X" ; then 9232548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmds=\"\$concat_cmds\" 9233548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9234548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9235548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9236548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9237548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9238548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$cmds" 'exit $?' 9239548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9240548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9241548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$generated" && \ 9242548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "${RM}r$generated" 9243548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9244548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Now create the libtool archive. 9245548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $output in 9246548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 9247548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen old_library= 9248548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$build_old_libs" = yes && old_library="$libname.$libext" 9249548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_verbose "creating $output" 9250548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9251548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Preserve any variables that may affect compiler behavior 9252548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for var in $variables_saved_for_relink; do 9253548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if eval test -z \"\${$var+set}\"; then 9254548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9255548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif eval var_value=\$$var; test -z "$var_value"; then 9256548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="$var=; export $var; $relink_command" 9257548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9258548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_quote_for_eval "$var_value" 9259548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9260548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9261548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9262548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Quote the link command for shipping. 9263548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9264548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9265548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$hardcode_automatic" = yes ; then 9266548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 9267548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9268548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9269548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only create the output if not a dry run. 9270548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_dry_run || { 9271548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for installed in no yes; do 9272548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$installed" = yes; then 9273548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -z "$install_libdir"; then 9274548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen break 9275548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9276548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen output="$output_objdir/$outputname"i 9277548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Replace all uninstalled libtool libraries with the installed ones 9278548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdependency_libs= 9279548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for deplib in $dependency_libs; do 9280548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $deplib in 9281548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 9282548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$deplib" 9283548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 9284548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 9285548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libdir" && \ 9286548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$deplib' is not a valid libtool archive" 9287548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9288548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9289548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -L*) 9290548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname -L '' "$deplib" 9291548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_replace_sysroot "$func_stripname_result" 9292548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdependency_libs " -L$func_replace_sysroot_result" 9293548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9294548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -R*) 9295548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname -R '' "$deplib" 9296548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_replace_sysroot "$func_stripname_result" 9297548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdependency_libs " -R$func_replace_sysroot_result" 9298548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9299548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append newdependency_libs " $deplib" ;; 9300548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9301548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9302548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dependency_libs="$newdependency_libs" 9303548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdlfiles= 9304548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9305548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $dlfiles; do 9306548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $lib in 9307548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 9308548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$lib" 9309548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 9310548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9311548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libdir" && \ 9312548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$lib' is not a valid libtool archive" 9313548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9314548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9315548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append newdlfiles " $lib" ;; 9316548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9317548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9318548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlfiles="$newdlfiles" 9319548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdlprefiles= 9320548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $dlprefiles; do 9321548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $lib in 9322548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 9323548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Only pass preopened files to the pseudo-archive (for 9324548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # eventual linking with the app. that links it) if we 9325548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # didn't already link the preopened objects directly into 9326548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # the library: 9327548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$lib" 9328548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 9329548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9330548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$libdir" && \ 9331548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_error "\`$lib' is not a valid libtool archive" 9332548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9333548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9334548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9335548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9336548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefiles="$newdlprefiles" 9337548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9338548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdlfiles= 9339548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $dlfiles; do 9340548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $lib in 9341548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9342548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) abs=`pwd`"/$lib" ;; 9343548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9344548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlfiles " $abs" 9345548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9346548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlfiles="$newdlfiles" 9347548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen newdlprefiles= 9348548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for lib in $dlprefiles; do 9349548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $lib in 9350548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9351548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) abs=`pwd`"/$lib" ;; 9352548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9353548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append newdlprefiles " $abs" 9354548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9355548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dlprefiles="$newdlprefiles" 9356548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9357548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $RM $output 9358548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # place dlname in correct position for cygwin 9359548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # In fact, it would be nice if we could use this code for all target 9360548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # systems that can't hard-code library paths into their executables 9361548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # and that have no shared library path variable independent of PATH, 9362548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # but it turns out we can't easily determine that from inspecting 9363548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # libtool variables, so we have to hard-code the OSs to which it 9364548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # applies here; at the moment, that means platforms that use the PE 9365548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # object format with DLL files. See the long comment at the top of 9366548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # tests/bindir.at for full details. 9367548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tdlname=$dlname 9368548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $host,$output,$installed,$module,$dlname in 9369548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9370548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # If a -bindir argument was supplied, place the dll there. 9371548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "x$bindir" != x ; 9372548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen then 9373548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_relative_path "$install_libdir" "$bindir" 9374548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tdlname=$func_relative_path_result$dlname 9375548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9376548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Otherwise fall back on heuristic. 9377548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen tdlname=../bin/$dlname 9378548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9379548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9380548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9381548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO > $output "\ 9382548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# $outputname - a libtool library file 9383548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9384548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# 9385548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Please DO NOT delete this file! 9386548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# It is necessary for linking the library. 9387548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9388548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The name that we can dlopen(3). 9389548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendlname='$tdlname' 9390548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9391548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Names of this library. 9392548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlibrary_names='$library_names' 9393548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9394548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The name of the static archive. 9395548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenold_library='$old_library' 9396548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9397548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Linker flags that can not go in dependency_libs. 9398548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninherited_linker_flags='$new_inherited_linker_flags' 9399548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9400548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Libraries that this one depends upon. 9401548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendependency_libs='$dependency_libs' 9402548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9403548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Names of additional weak libraries provided by this library 9404548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenweak_library_names='$weak_libs' 9405548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9406548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Version information for $libname. 9407548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissencurrent=$current 9408548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenage=$age 9409548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrevision=$revision 9410548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9411548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Is this an already installed library? 9412548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelisseninstalled=$installed 9413548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9414548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Should we warn about portability when linking against -modules? 9415548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenshouldnotlink=$module 9416548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9417548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Files to dlopen/dlpreopen 9418548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendlopen='$dlfiles' 9419548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissendlpreopen='$dlprefiles' 9420548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9421548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Directory that this library needs to be installed in: 9422548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenlibdir='$install_libdir'" 9423548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$installed" = no && test "$need_relink" = yes; then 9424548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $ECHO >> $output "\ 9425548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenrelink_command=\"$relink_command\"" 9426548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9427548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9428548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen } 9429548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9430548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do a symbolic link so that the libtool archive can be found in 9431548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # LD_LIBRARY_PATH before the program is installed. 9432548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9433548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9434548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9435548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_SUCCESS 9436548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 9437548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9438548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9439548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mode_link ${1+"$@"} 9440548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9441548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9442548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# func_mode_uninstall arg... 9443548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfunc_mode_uninstall () 9444548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ 9445548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen $opt_debug 9446548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen RM="$nonopt" 9447548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen files= 9448548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rmforce= 9449548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit_status=0 9450548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9451548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # This variable tells wrapper scripts just to set variables rather 9452548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # than running their programs. 9453548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen libtool_install_magic="$magic" 9454548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9455548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for arg 9456548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen do 9457548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $arg in 9458548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -f) func_append RM " $arg"; rmforce=yes ;; 9459548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen -*) func_append RM " $arg" ;; 9460548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append files " $arg" ;; 9461548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9462548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9463548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9464548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -z "$RM" && \ 9465548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify an RM program" 9466548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9467548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rmdirs= 9468548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9469548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for file in $files; do 9470548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_dirname "$file" "" "." 9471548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen dir="$func_dirname_result" 9472548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$dir" = X.; then 9473548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen odir="$objdir" 9474548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9475548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen odir="$dir/$objdir" 9476548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9477548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_basename "$file" 9478548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen name="$func_basename_result" 9479548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$opt_mode" = uninstall && odir="$dir" 9480548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9481548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Remember odir for removal later, being careful to avoid duplicates 9482548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" = clean; then 9483548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $rmdirs " in 9484548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $odir "*) ;; 9485548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) func_append rmdirs " $odir" ;; 9486548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9487548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9488548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9489548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Don't error if the file doesn't exist and rm -f was used. 9490548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if { test -L "$file"; } >/dev/null 2>&1 || 9491548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen { test -h "$file"; } >/dev/null 2>&1 || 9492548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -f "$file"; then 9493548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen : 9494548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test -d "$file"; then 9495548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit_status=1 9496548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 9497548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen elif test "$rmforce" = yes; then 9498548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen continue 9499548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9500548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9501548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen rmfiles="$file" 9502548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9503548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $name in 9504548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.la) 9505548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Possibly a libtool archive, so verify it. 9506548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_lalib_p "$file"; then 9507548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source $dir/$name 9508548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9509548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Delete the libtool libraries and symlinks. 9510548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for n in $library_names; do 9511548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $odir/$n" 9512548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9513548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9514548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9515548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case "$opt_mode" in 9516548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen clean) 9517548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case " $library_names " in 9518548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *" $dlname "*) ;; 9519548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9520548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9521548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9522548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9523548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen uninstall) 9524548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$library_names"; then 9525548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each command in the postuninstall commands. 9526548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9527548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9528548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9529548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$old_library"; then 9530548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do each command in the old_postuninstall commands. 9531548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9532548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9533548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # FIXME: should reinstall the best remaining shared library. 9534548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9535548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9536548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9537548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9538548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9539548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.lo) 9540548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Possibly a libtool object, so verify it. 9541548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_lalib_p "$file"; then 9542548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9543548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Read the .lo file 9544548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source $dir/$name 9545548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9546548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add PIC object to the list of files to remove. 9547548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$pic_object" && 9548548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$pic_object" != none; then 9549548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $dir/$pic_object" 9550548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9551548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9552548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Add non-PIC object to the list of files to remove. 9553548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -n "$non_pic_object" && 9554548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen test "$non_pic_object" != none; then 9555548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $dir/$non_pic_object" 9556548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9557548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9558548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9559548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9560548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *) 9561548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$opt_mode" = clean ; then 9562548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen noexename=$name 9563548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen case $file in 9564548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen *.exe) 9565548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$file" 9566548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen file=$func_stripname_result 9567548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_stripname '' '.exe' "$name" 9568548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen noexename=$func_stripname_result 9569548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # $file with .exe has already been added to rmfiles, 9570548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # add $file without .exe 9571548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $file" 9572548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9573548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9574548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Do a test to see if this is a libtool program. 9575548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_ltwrapper_p "$file"; then 9576548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if func_ltwrapper_executable_p "$file"; then 9577548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_ltwrapper_scriptname "$file" 9578548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 9579548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source $func_ltwrapper_scriptname_result 9580548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $func_ltwrapper_scriptname_result" 9581548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen else 9582548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen relink_command= 9583548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_source $dir/$noexename 9584548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9585548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9586548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # note $name still contains .exe if it was in $file originally 9587548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # as does the version of $file that was added into $rmfiles 9588548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9589548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "$fast_install" = yes && test -n "$relink_command"; then 9590548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $odir/lt-$name" 9591548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9592548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test "X$noexename" != "X$name" ; then 9593548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_append rmfiles " $odir/lt-${noexename}.c" 9594548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9595548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9596548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9597548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen ;; 9598548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen esac 9599548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "$RM $rmfiles" 'exit_status=1' 9600548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9601548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9602548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen # Try to remove the ${objdir}s in the directories where we deleted files 9603548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen for dir in $rmdirs; do 9604548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen if test -d "$dir"; then 9605548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_show_eval "rmdir $dir >/dev/null 2>&1" 9606548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen fi 9607548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen done 9608548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9609548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $exit_status 9610548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 9611548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9612548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9613548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_mode_uninstall ${1+"$@"} 9614548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9615548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest -z "$opt_mode" && { 9616548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen help="$generic_help" 9617548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "you must specify a MODE" 9618548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen} 9619548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9620548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissentest -z "$exec_cmd" && \ 9621548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen func_fatal_help "invalid operation mode \`$opt_mode'" 9622548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9623548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenif test -n "$exec_cmd"; then 9624548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen eval exec "$exec_cmd" 9625548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen exit $EXIT_FAILURE 9626548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenfi 9627548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9628548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenexit $exit_status 9629548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9630548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9631548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# The TAGs below are defined such that we never get into a situation 9632548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# in which we disable both kinds of libraries. Given conflicting 9633548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# choices, we go for a static library, that is the most portable, 9634548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# since we can't tell whether shared libraries were disabled because 9635548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# the user asked for that or because the platform doesn't support 9636548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# them. This is particularly important on AIX, because we don't 9637548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# support having both static and shared libraries enabled at the same 9638548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# time on that platform, so we default to a shared-only configuration. 9639548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# If a disable-shared tag is given, we'll fallback to a static-only 9640548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# configuration. But we'll never go from static-only to shared-only. 9641548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9642548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9643548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbuild_libtool_libs=no 9644548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbuild_old_libs=yes 9645548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### END LIBTOOL TAG CONFIG: disable-shared 9646548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9647548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9648548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissenbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9649548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# ### END LIBTOOL TAG CONFIG: disable-static 9650548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9651548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# Local Variables: 9652548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# mode:shell-script 9653548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# sh-indentation:2 9654548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# End: 9655548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen# vi:sw=2 9656548dde4863e9a2315e3f327efe63ff55949addb8Marco Nelissen 9657