1748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# libtool (GNU libtool) 2.4.2 3748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This is free software; see the source for copying conditions. There is NO 8748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 10748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# GNU Libtool is free software; you can redistribute it and/or modify 11748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# it under the terms of the GNU General Public License as published by 12748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the Free Software Foundation; either version 2 of the License, or 13748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (at your option) any later version. 14748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 15748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# As a special exception to the GNU General Public License, 16748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if you distribute this file as part of a program or library that 17748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is built using GNU Libtool, you may include this file under the 18748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# same distribution terms that you use for the rest of that program. 19748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 20748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# GNU Libtool is distributed in the hope that it will be useful, but 21748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# WITHOUT ANY WARRANTY; without even the implied warranty of 22748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# General Public License for more details. 24748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 25748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# You should have received a copy of the GNU General Public License 26748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# along with GNU Libtool; see the file COPYING. If not, a copy 27748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# or obtained by writing to the Free Software Foundation, Inc., 29748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 31748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Usage: $progname [OPTION]... [MODE-ARG]... 32748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 33748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Provide generalized library-building support services. 34748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 35748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --config show all configuration variables 36748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --debug enable verbose shell tracing 37748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# -n, --dry-run display commands without modifying any files 38748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --features display basic configuration information and exit 39748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --mode=MODE use operation mode MODE 40748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --preserve-dup-deps don't remove duplicate dependency libraries 41748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --quiet, --silent don't print informational messages 42748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --no-quiet, --no-silent 43748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# print informational messages (default) 44748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --no-warn don't display warning messages 45748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --tag=TAG use configuration variables from tag TAG 46748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# -v, --verbose print more informational messages than default 47748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --no-verbose don't print the extra informational messages 48748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --version print version information 49748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# -h, --help, --help-all print short, long, or detailed help message 50748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 51748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# MODE must be one of the following: 52748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 53748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# clean remove files from the build directory 54748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# compile compile a source file into a libtool object 55748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# execute automatically set library path, then run a program 56748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# finish complete the installation of libtool libraries 57748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# install install libraries or executables 58748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# link create a library or an executable 59748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# uninstall remove libraries from an installed directory 60748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 61748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# MODE-ARGS vary depending on the MODE. When passed as first option, 62748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 65748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# When reporting a bug, please describe a test case to reproduce it and 66748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include the following information: 67748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 68748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# host-triplet: $host 69748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# shell: $SHELL 70748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# compiler: $LTCC 71748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# compiler flags: $LTCFLAGS 72748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# linker: $LD (gnu? $with_gnu_ld) 73748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11 74748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# automake: $automake_version 75748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# autoconf: $autoconf_version 76748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 77748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Report bugs to <bug-libtool@gnu.org>. 78748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# General help using GNU software: <http://www.gnu.org/gethelp/>. 80748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 81748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratPROGRAM=libtool 82748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratPACKAGE=libtool 83748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratVERSION="2.4.2 Debian-2.4.2-1.11" 84748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratTIMESTAMP="" 85748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpackage_revision=1.3337 86748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 87748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Be Bourne compatible 88748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat emulate sh 90748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat NULLCMD=: 91748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # is contrary to our usage. Disable this feature. 93748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat alias -g '${1+"$@"}'='"$@"' 94748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat setopt NO_GLOB_SUBST 95748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratelse 96748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi 98748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratBIN_SH=xpg4; export BIN_SH # for Tru64 99748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratDUALCASE=1; export DUALCASE # for MKS sh 100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# A function that is used when there is no print builtin or printf. 102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fallback_echo () 103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval 'cat <<_LTECHO_EOF 105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$1 106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LTECHO_EOF' 107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# NLS nuisances: We save the old values to restore during execute mode. 110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_user_locale= 111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_safe_locale= 112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdo 114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "if test \"\${$lt_var+set}\" = set; then 115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_$lt_var=\$$lt_var 116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $lt_var=C 117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export $lt_var 118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi" 121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdone 122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLC_ALL=C 123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLANGUAGE=C 124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexport LANGUAGE LC_ALL 125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$lt_unset CDPATH 127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is ksh but when the shell is invoked as "sh" and the current value of 131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the _XPG environment variable is not equal to 1 (one), the special 132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# positional parameter $0, within a function call, is the name of the 133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# function. 134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratprogpath="$0" 135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${CP="cp -f"} 139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${MAKE="make"} 141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${MKDIR="mkdir"} 142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${MV="mv -f"} 143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${RM="rm -f"} 144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat: ${Xsed="$SED -e 1s/^X//"} 146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Global variables: 148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_SUCCESS=0 149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_FAILURE=1 150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexit_status=$EXIT_SUCCESS 154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make sure IFS has a sensible default 156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_nl=' 157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat' 158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIFS=" $lt_nl" 159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdirname="s,/[^/]*$,," 161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbasename="s,^.*/,," 162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_dirname file append nondir_replacement 164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Compute the dirname of FILE. If nonempty, add APPEND to the result, 165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# otherwise set result to NONDIR_REPLACEMENT. 166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_dirname () 167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$func_dirname_result" = "X${1}"; then 170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_result="${3}" 171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_result="$func_dirname_result${2}" 173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_dirname may be replaced by extended shell implementation 175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_basename file 178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_basename () 179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_basename may be replaced by extended shell implementation 182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_dirname_and_basename file append nondir_replacement 185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# perform func_basename and func_dirname in a single function 186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# call: 187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# dirname: Compute the dirname of FILE. If nonempty, 188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# add APPEND to the result, otherwise set result 189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# to NONDIR_REPLACEMENT. 190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# value returned in "$func_dirname_result" 191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# basename: Compute filename of FILE. 192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# value retuned in "$func_basename_result" 193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Implementation must be kept synchronized with func_dirname 194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and func_basename. For efficiency, we do not delegate to 195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# those functions but instead duplicate the functionality here. 196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_dirname_and_basename () 197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract subdirectory from the argument. 199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$func_dirname_result" = "X${1}"; then 201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_result="${3}" 202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_result="$func_dirname_result${2}" 204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_dirname_and_basename may be replaced by extended shell implementation 207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_stripname prefix suffix name 210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# strip PREFIX and SUFFIX off of NAME. 211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# PREFIX and SUFFIX must not contain globbing or regex special 212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# characters, hashes, percent signs, but SUFFIX may contain a leading 213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# dot (in which case that matches only a dot). 214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_strip_suffix prefix name 215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_stripname () 216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case ${2} in 218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_stripname may be replaced by extended shell implementation 222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# These SED scripts presuppose an absolute path with a trailing slash. 225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpathcar='s,^/\([^/]*\).*$,\1,' 226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpathcdr='s,^/[^/]*,,' 227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratremovedotparts=':dotsl 228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s@/\./@/@g 229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat t dotsl 230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s,/\.$,/,' 231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcollapseslashes='s@/\{1,\}@/@g' 232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfinalslash='s,/*$,/,' 233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_normal_abspath PATH 235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Remove doubled-up and trailing slashes, "." path components, 236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and cancel out any ".." path components in PATH after making 237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# it an absolute path. 238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# value returned in "$func_normal_abspath_result" 239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_normal_abspath () 240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Start from root dir and reassemble the path. 242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_result= 243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_tpath=$1 244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_altnamespace= 245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $func_normal_abspath_tpath in 246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "") 247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Empty path, that just means $cwd. 248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '/' "`pwd`" 249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_result=$func_stripname_result 250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The next three entries are used to spot a run of precisely 253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # two leading slashes without using negated character classes; 254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # we take advantage of case's first-match behaviour. 255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ///*) 256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Unusual form of absolute path, do nothing. 257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat //*) 259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Not necessarily an ordinary path; POSIX reserves leading '//' 260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and for example Cygwin uses it to access remote file shares 261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # over CIFS/SMB, so we conserve a leading double slash if found. 262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_altnamespace=/ 263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /*) 265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Absolute path, do nothing. 266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Relative path, prepend $cwd. 269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Cancel out all the simple stuff to save iterations. We also want 273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the path to end with a slash for ease of parsing, so make sure 274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # there is one (and only one) here. 275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while :; do 278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Processed it all yet? 279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$func_normal_abspath_tpath" = / ; then 280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If we ascended to the root using ".." the result may be empty now. 281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$func_normal_abspath_result" ; then 282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_result=/ 283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -e "$pathcar"` 288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -e "$pathcdr"` 290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Figure out what to do with it 291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $func_normal_abspath_tcomponent in 292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "") 293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Trailing empty path component, ignore it. 294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ..) 296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Parent dir; strip last assembled component from result. 297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$func_normal_abspath_result" 298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_result=$func_dirname_result 299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Actual path component, append it. 302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Restore leading double-slash if one was found on entry. 307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_relative_path SRCDIR DSTDIR 311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# generates a relative path from SRCDIR to DSTDIR, with a trailing 312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# slash if non-empty, suitable for immediately appending a filename 313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# without needing to append a separator. 314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# value returned in "$func_relative_path_result" 315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_relative_path () 316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result= 318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath "$1" 319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_tlibdir=$func_normal_abspath_result 320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_normal_abspath "$2" 321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_tbindir=$func_normal_abspath_result 322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Ascend the tree starting from libdir 324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while :; do 325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # check if we have found a prefix of bindir 326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $func_relative_path_tbindir in 327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $func_relative_path_tlibdir) 328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # found an exact match 329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_tcancelled= 330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $func_relative_path_tlibdir*) 333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # found a matching prefix 334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_tcancelled=$func_stripname_result 336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$func_relative_path_result"; then 337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result=. 338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname $func_relative_path_tlibdir 343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_tlibdir=${func_dirname_result} 344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x$func_relative_path_tlibdir" = x ; then 345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Have to descend all the way to the root! 346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result=../$func_relative_path_result 347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_tcancelled=$func_relative_path_tbindir 348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result=../$func_relative_path_result 351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now calculate path; take care to avoid doubling-up slashes. 356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '/' "$func_relative_path_result" 357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result=$func_stripname_result 358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '/' '/' "$func_relative_path_tcancelled" 359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x$func_stripname_result" != x ; then 360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Normalisation. If bindir is libdir, return empty string, 364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # else relative path ending with a slash; either way, target 365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # file name can be directly appended. 366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -z "$func_relative_path_result"; then 367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname './' '' "$func_relative_path_result/" 368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path_result=$func_stripname_result 369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The name of this program: 373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_dirname_and_basename "$progpath" 374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratprogname=$func_basename_result 375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make sure we have an absolute path for reexecution: 377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcase $progpath in 378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]*|[A-Za-z]:\\*) ;; 379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\\/]*) 380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progdir=$func_dirname_result 381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progdir=`cd "$progdir" && pwd` 382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progpath="$progdir/$progname" 383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_IFS="$IFS" 386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS=${PATH_SEPARATOR-:} 387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for progdir in $PATH; do 388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_IFS" 389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -x "$progdir/$progname" && break 390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_IFS" 392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$progdir" || progdir=`pwd` 393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progpath="$progdir/$progname" 394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratesac 396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that helps us do robust quoting. It backslashifies 398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# metacharacters that are still active within double-quoted strings. 399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratXsed="${SED}"' -e 1s/^X//' 400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Same as above, but do not quote variable references. 403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that turns a string into a regex matching for the 406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# string literally. 407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that converts a w32 file name or path 410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# which contains forward slashes, into one that contains 411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (escaped) backslashes. A very naive implementation. 412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Re-`\' parameter expansions in output of double_quote_subst that were 415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in input to double_quote_subst, that '$' was protected from expansion. 417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Since each input `\' is now two `\'s, look for any number of runs of 418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbs='\\' 420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbs2='\\\\' 421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbs4='\\\\\\\\' 422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdollar='\$' 423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_double_backslash="\ 424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/$bs4/&\\ 425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/g 426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^$bs2$dollar/$bs&/ 427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\n//g" 429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Standard options: 431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_dry_run=false 432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help=false 433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_quiet=false 434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_verbose=false 435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_warning=: 436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_echo arg... 438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message, along with the current mode 439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# name if it has been set yet. 440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_echo () 441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_verbose arg... 446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message in verbose mode only. 447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_verbose () 448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_verbose && func_echo ${1+"$@"} 450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A bug in bash halts the script if the last line of a function 452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # fails when set -e is in force, so we need another command to 453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # work around that: 454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_echo_all arg... 458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Invoke $ECHO with all args, space-separated. 459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_echo_all () 460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$*" 462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_error arg... 465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error. 466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_error () 467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_warning arg... 472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed warning message to standard error. 473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_warning () 474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # bash bug again: 478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_fatal_error arg... 482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error, and exit. 483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fatal_error () 484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error ${1+"$@"} 486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_FAILURE 487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_fatal_help arg... 490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error, followed by 491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a help hint, and exit. 492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fatal_help () 493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error ${1+"$@"} 495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "$help" 496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erathelp="Try \`$progname --help' for more information." ## default 498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_grep expression filename 501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Check whether EXPRESSION matches any line of FILENAME, without output. 502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_grep () 503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $GREP "$1" "$2" >/dev/null 2>&1 505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mkdir_p directory-path 509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make sure the entire path to DIRECTORY-PATH is available. 510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mkdir_p () 511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_directory_path="$1" 513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_dir_list= 514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Protect directory names starting with `-' 518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $my_directory_path in 519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -*) my_directory_path="./$my_directory_path" ;; 520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # While some portion of DIR does not yet exist... 523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test ! -d "$my_directory_path"; do 524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # ...make a list in topmost first order. Use a colon delimited 525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # list incase some portion of path contains whitespace. 526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_dir_list="$my_directory_path:$my_dir_list" 527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the last portion added has no slash in it, the list is done 529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $my_directory_path in */*) ;; *) break ;; esac 530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # ...otherwise throw away the child directory and loop 532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_mkdir_p_IFS="$IFS"; IFS=':' 537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for my_dir in $my_dir_list; do 538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_mkdir_p_IFS" 539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # mkdir can fail with a `File exist' error if two processes 540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # try to create one of the directories concurrently. Don't 541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # stop in that case! 542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MKDIR "$my_dir" 2>/dev/null || : 543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_mkdir_p_IFS" 545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Bail out if we (or some other process) failed to create a directory. 547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -d "$my_directory_path" || \ 548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "Failed to create \`$1'" 549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mktempdir [string] 554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Make a temporary directory that won't clash with other running 555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# libtool processes, and avoids race conditions if possible. If 556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# given, STRING is the basename for that directory. 557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mktempdir () 558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_template="${TMPDIR-/tmp}/${1-$progname}" 560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_dry_run" = ":"; then 562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Return a directory name, but don't create it in dry-run mode 563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_tmpdir="${my_template}-$$" 564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If mktemp works, use that first and foremost 567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -d "$my_tmpdir"; then 570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Failing that, at least try and use $RANDOM to avoid a race 571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_tmpdir="${my_template}-${RANDOM-0}$$" 572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_mktempdir_umask=`umask` 574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat umask 0077 575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MKDIR "$my_tmpdir" 576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat umask $save_mktempdir_umask 577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If we're not in dry-run mode, bomb out on failure 580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -d "$my_tmpdir" || \ 581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$my_tmpdir" 585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_quote_for_eval arg 589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Aesthetically quote ARG to be evaled later. 590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is double-quoted, suitable for a subsequent eval, whereas 592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# which are still active within double quotes backslashified. 594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_quote_for_eval () 595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $1 in 597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\\\`\"\$]*) 598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval_unquoted_result="$1" ;; 601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $func_quote_for_eval_unquoted_result in 604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Double-quote args containing shell metacharacters to delay 605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # word splitting, command substitution and and variable 606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # expansion for a subsequent eval. 607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Many Bourne shells cannot handle close brackets correctly 608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # in scan sets, so we specify it separately. 609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_quote_for_expand arg 619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Aesthetically quote ARG to be evaled later; same as above, 620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# but do not quote variable references. 621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_quote_for_expand () 622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $1 in 624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\\\`\"]*) 625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_arg=`$ECHO "$1" | $SED \ 626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_arg="$1" ;; 629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $my_arg in 632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Double-quote args containing shell metacharacters to delay 633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # word splitting and command substitution for a subsequent eval. 634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Many Bourne shells cannot handle close brackets correctly 635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # in scan sets, so we specify it separately. 636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_arg="\"$my_arg\"" 638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_expand_result="$my_arg" 642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_show_eval cmd [fail_exp] 646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is given, then evaluate it. 649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_show_eval () 650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_cmd="$1" 652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_fail_exp="${2-:}" 653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ${opt_silent-false} || { 655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_expand "$my_cmd" 656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "func_echo $func_quote_for_expand_result" 657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ${opt_dry_run-false}; then :; else 660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$my_cmd" 661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_status=$? 662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$my_status" -eq 0; then :; else 663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "(exit $my_status); $my_fail_exp" 664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_show_eval_locale cmd [fail_exp] 670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# is given, then evaluate it. Use the saved locale for evaluation. 673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_show_eval_locale () 674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_cmd="$1" 676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_fail_exp="${2-:}" 677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ${opt_silent-false} || { 679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_expand "$my_cmd" 680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "func_echo $func_quote_for_expand_result" 681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ${opt_dry_run-false}; then :; else 684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$lt_user_locale 685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $my_cmd" 686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_status=$? 687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$lt_safe_locale" 688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$my_status" -eq 0; then :; else 689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "(exit $my_status); $my_fail_exp" 690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_tr_sh 695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Turn $1 into a string suitable for a shell variable name. 696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is stored in $func_tr_sh_result. All characters 697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if $1 begins with a digit, a '_' is prepended as well. 699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_tr_sh () 700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $1 in 702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [0-9]* | *[!a-zA-Z0-9_]*) 703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * ) 706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_tr_sh_result=$1 707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_version 713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo version message to standard output and exit. 714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_version () 715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n '/(C)/!b go 719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat :more 720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /\./!{ 721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat N 722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\n# / / 723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat b more 724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat :go 726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^# '$PROGRAM' (GNU /,/# warranty; / { 727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^# // 728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^# *$// 729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p 731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat }' < "$progpath" 732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $? 733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_usage 736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo short help message to standard output and exit. 737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_usage () 738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n '/^# Usage:/,/^# *.*--help/ { 742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^# // 743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^# *$// 744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\$progname/'$progname'/ 745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p 746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat }' < "$progpath" 747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "run \`$progname --help | more' for full usage" 749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $? 750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_help [NOEXIT] 753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo long help message to standard output and exit, 754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# unless 'noexit' is passed as argument. 755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_help () 756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n '/^# Usage:/,/# Report bugs to/ { 760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat :print 761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^# // 762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^# *$// 763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s*\$progname*'$progname'* 764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s*\$host*'"$host"'* 765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s*\$SHELL*'"$SHELL"'* 766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s*\$LTCC*'"$LTCC"'* 767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s*\$LTCFLAGS*'"$LTCFLAGS"'* 768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s*\$LD*'"$LD"'* 769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p 773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat d 774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^# .* home page:/b print 776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^# General help using/b print 777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ' < "$progpath" 778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ret=$? 779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$1"; then 780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $ret 781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_missing_arg argname 785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error and set global 786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# exit_cmd. 787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_missing_arg () 788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "missing argument for $1." 792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit_cmd=exit 793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_split_short_opt shortopt 797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Set func_split_short_opt_name and func_split_short_opt_arg shell 798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variables after splitting SHORTOPT after the 2nd character. 799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_split_short_opt () 800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_split_short_opt may be replaced by extended shell implementation 807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_split_long_opt longopt 810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Set func_split_long_opt_name and func_split_long_opt_arg shell 811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variables after splitting LONGOPT at the `=' sign. 812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_split_long_opt () 813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_sed_long_arg='1s/^--[^=]*=//' 816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_split_long_opt may be replaced by extended shell implementation 820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexit_cmd=: 822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmagic="%%%MAGIC variable%%%" 828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmagic_exe="%%%MAGIC EXE variable%%%" 829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Global variables. 831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnonopt= 832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpreserve_args= 833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlo2o="s/\\.lo\$/.${objext}/" 834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erato2lo="s/\\.${objext}\$/.lo/" 835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextracted_archives= 836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextracted_serial=0 837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If this variable is set in any of the actions, the command in it 839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# will be execed at the end. This prevents here-documents from being 840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# left over by shells. 841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexec_cmd= 842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_append var value 844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Append VALUE to the end of shell variable VAR. 845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append () 846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "${1}=\$${1}\${2}" 848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_append may be replaced by extended shell implementation 849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_append_quoted var value 851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Quote VALUE and append to the end of shell variable VAR, separated 852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# by a space. 853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append_quoted () 854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "${2}" 856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_append_quoted may be replaced by extended shell implementation 858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_arith arithmetic-term... 861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_arith () 862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith_result=`expr "${@}"` 864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_arith may be replaced by extended shell implementation 865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_len string 868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# STRING may not start with a hyphen. 869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_len () 870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_len may be replaced by extended shell implementation 873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_lo2o object 876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lo2o () 877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_lo2o may be replaced by extended shell implementation 880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_xform libobj-or-source 883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_xform () 884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} # func_xform may be replaced by extended shell implementation 887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_fatal_configuration arg... 890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echo program name prefixed message to standard error, followed by 891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a configuration failure hint, and exit. 892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fatal_configuration () 893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error ${1+"$@"} 895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "See the $PACKAGE documentation for more information." 896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "Fatal configuration error." 897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_config 901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Display the configuration for all the tags in this script. 902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_config () 903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat re_begincf='^# ### BEGIN LIBTOOL' 905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat re_endcf='^# ### END LIBTOOL' 906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Default configuration. 908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now print the configurations for the tags. 911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for tagname in $taglist; do 912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $? 916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_features 919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Display the features supported by this script. 920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_features () 921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "host: $host" 923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes; then 924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "enable shared libraries" 925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "disable shared libraries" 927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = yes; then 929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "enable static libraries" 930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "disable static libraries" 932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $? 935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_enable_tag tagname 938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Verify that TAGNAME is valid, and either flag an error and exit, or 939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variable here. 941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_enable_tag () 942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Global variable: 944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tagname="$1" 945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sed_extractcf="/$re_begincf/,/$re_endcf/p" 949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Validate tagname. 951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $tagname in 952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[!-_A-Za-z0-9,/]*) 953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "invalid tag name: $tagname" 954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't test for the "default" C tag, as we know it's 958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # there but not specially marked. 959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $tagname in 960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC) ;; 961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat taglist="$taglist $tagname" 964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Evaluate the configuration. Be careful to quote the path 966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and the sed script, to avoid splitting on whitespace, but 967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # also don't use non-portable quotes within backquotes within 968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # quotes we have to do it in 2 steps: 969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$extractedcf" 971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "ignoring unknown tag $tagname" 973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_check_version_match 979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Ensure that we are using m4 macros, and libtool script from the same 980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# release of libtool. 981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_check_version_match () 982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$package_revision" != "$macro_revision"; then 984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$VERSION" != "$macro_version"; then 985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$macro_version"; then 986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat >&2 <<_LT_EOF 987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: definition of this LT_INIT comes from an older release. 989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: and run autoconf again. 991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LT_EOF 992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat >&2 <<_LT_EOF 994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: and run autoconf again. 998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LT_EOF 999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat >&2 <<_LT_EOF 1002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$progname: of $PACKAGE $VERSION and run autoconf again. 1006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LT_EOF 1007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_MISMATCH 1010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Shorthand for --mode=foo, only valid as the first argument 1015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcase $1 in 1016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratclean|clea|cle|cl) 1017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode clean ${1+"$@"}; shift 1018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompile|compil|compi|comp|com|co|c) 1020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode compile ${1+"$@"}; shift 1021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexecute|execut|execu|exec|exe|ex|e) 1023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode execute ${1+"$@"}; shift 1024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfinish|finis|fini|fin|fi|f) 1026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode finish ${1+"$@"}; shift 1027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinstall|instal|insta|inst|ins|in|i) 1029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode install ${1+"$@"}; shift 1030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlink|lin|li|l) 1032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode link ${1+"$@"}; shift 1033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift; set dummy --mode uninstall ${1+"$@"}; shift 1036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratesac 1038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Option defaults: 1042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_debug=: 1043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_dry_run=false 1044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_config=false 1045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_preserve_dup_deps=false 1046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_features=false 1047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_finish=false 1048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help=false 1049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help_all=false 1050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_silent=: 1051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_warning=: 1052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_verbose=: 1053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_silent=false 1054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_verbose=false 1055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Parse options once, thoroughly. This comes as soon as possible in the 1058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# script to make things like `--version' happen as quickly as we can. 1059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # this just eases exit handling 1061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test $# -gt 0; do 1062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt="$1" 1063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $opt in 1065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --debug|-x) opt_debug='set -x' 1066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_echo "enabling shell trace mode" 1067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --dry-run|--dryrun|-n) 1070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_dry_run=: 1071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --config) 1073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_config=: 1074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_config 1075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --dlopen|-dlopen) 1077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat optarg="$1" 1078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_dlopen="${opt_dlopen+$opt_dlopen 1079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}$optarg" 1080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --preserve-dup-deps) 1083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_preserve_dup_deps=: 1084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --features) 1086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_features=: 1087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_features 1088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --finish) 1090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_finish=: 1091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratset dummy --mode finish ${1+"$@"}; shift 1092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --help) 1094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_help=: 1095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --help-all) 1097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_help_all=: 1098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_help=': help-all' 1099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --mode) 1101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test $# = 0 && func_missing_arg $opt && break 1102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat optarg="$1" 1103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_mode="$optarg" 1104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcase $optarg in 1105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Valid mode arguments: 1106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Catch anything else as an error 1109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_error "invalid argument for $opt" 1110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit_cmd=exit 1111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 1112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratesac 1114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --no-silent|--no-quiet) 1117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_silent=false 1118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt" 1119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --no-warning|--no-warn) 1121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_warning=false 1122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt" 1123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --no-verbose) 1125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_verbose=false 1126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt" 1127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --silent|--quiet) 1129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_silent=: 1130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt" 1131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_verbose=false 1132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --verbose|-v) 1134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_verbose=: 1135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt" 1136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratopt_silent=false 1137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --tag) 1139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test $# = 0 && func_missing_arg $opt && break 1140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat optarg="$1" 1141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_tag="$optarg" 1142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_append preserve_args " $opt $optarg" 1143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_enable_tag "$optarg" 1144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -\?|-h) func_usage ;; 1148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --help) func_help ;; 1149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --version) func_version ;; 1150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Separate optargs to long options: 1152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --*=*) 1153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_split_long_opt "$opt" 1154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Separate non-argument short options: 1159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -\?*|-h*|-n*|-v*) 1160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_split_short_opt "$opt" 1161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --) break ;; 1166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Validate options: 1172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # save first non-option argument 1174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$#" -gt 0; then 1175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonopt="$opt" 1176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 1177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # preserve --debug 1180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$opt_debug" = : || func_append preserve_args " --debug" 1181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 1183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *pw32* | *cegcc*) 1184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # don't eliminate duplications in $postdeps and $predeps 1185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_duplicate_compiler_generated_deps=: 1186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 1188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_help || { 1193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Sanity checks first: 1194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_check_version_match 1195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_configuration "not configured to build any kind of library" 1198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Darwin sucks 1201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval std_shrext=\"$shrext_cmds\" 1202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only execute mode is allowed to have -dlopen flags. 1204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "unrecognized option \`-dlopen'" 1206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$help" 1>&2 1207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_FAILURE 1208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Change the help message to a mode-specific one. 1211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat generic_help="$help" 1212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat help="Try \`$progname --help --mode=$opt_mode' for more information." 1213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 1214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Bail if the options were screwed 1217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $exit_cmd $EXIT_FAILURE 1218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat## ----------- ## 1224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat## Main. ## 1225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat## ----------- ## 1226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_lalib_p file 1228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool `.la' library or `.lo' object file. 1229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out 1230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters. 1231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lalib_p () 1232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -f "$1" && 1234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e 4q "$1" 2>/dev/null \ 1235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_lalib_unsafe_p file 1239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool `.la' library or `.lo' object file. 1240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function implements the same check as func_lalib_p without 1241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# resorting to external programs. To this end, it redirects stdin and 1242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# closes it afterwards, without saving the original file descriptor. 1243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# As a safety measure, use it only where a negative result would be 1244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# fatal anyway. Works if `file' does not exist. 1245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lalib_unsafe_p () 1246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lalib_p=no 1248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lalib_p_l in 1 2 3 4 1250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 1251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat read lalib_p_line 1252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$lalib_p_line" in 1253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exec 0<&5 5<&- 1257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$lalib_p" = yes 1259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_script_p file 1262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool wrapper script 1263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out 1264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters. 1265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_script_p () 1266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lalib_p "$1" 1268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_executable_p file 1271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool wrapper executable 1272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out 1273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters. 1274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_executable_p () 1275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_exec_suffix= 1277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $1 in 1278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.exe) ;; 1279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_ltwrapper_exec_suffix=.exe ;; 1280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_scriptname file 1285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Assumes file is an ltwrapper_executable 1286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# uses $file to determine the appropriate filename for a 1287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# temporary ltwrapper_script. 1288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_scriptname () 1289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_and_basename "$1" "" "." 1291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$func_basename_result" 1292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_ltwrapper_p file 1296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True iff FILE is a libtool wrapper script or wrapper executable 1297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This function is only a basic sanity check; it will hardly flush out 1298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# determined imposters. 1299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_ltwrapper_p () 1300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_execute_cmds commands fail_cmd 1306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Execute tilde-delimited COMMANDS. 1307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If FAIL_CMD is given, eval that upon failure. 1308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FAIL_CMD may read-access the current command in variable CMD! 1309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_execute_cmds () 1310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs=$IFS; IFS='~' 1313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for cmd in $1; do 1314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS=$save_ifs 1315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmd=\"$cmd\" 1316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$cmd" "${2-:}" 1317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS=$save_ifs 1319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_source file 1323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Source FILE, adding directory component if necessary. 1324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Note that it is not necessary on cygwin/mingw to append a dot to 1325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# behavior happens only for exec(3), not for open(2)! Also, sourcing 1327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# `FILE.' does not work on cygwin managed mounts. 1328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_source () 1329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $1 in 1332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */* | *\\*) . "$1" ;; 1333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) . "./$1" ;; 1334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_resolve_sysroot PATH 1339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Replace a leading = in PATH with a sysroot. Store the result into 1340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_resolve_sysroot_result 1341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_resolve_sysroot () 1342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot_result=$1 1344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $func_resolve_sysroot_result in 1345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat =*) 1346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '=' '' "$func_resolve_sysroot_result" 1347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_replace_sysroot PATH 1353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If PATH begins with the sysroot, replace it with = and 1354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# store the result into func_replace_sysroot_result. 1355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_replace_sysroot () 1356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$lt_sysroot:$1" in 1358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ?*:"$lt_sysroot"*) 1359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname "$lt_sysroot" '' "$1" 1360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_replace_sysroot_result="=$func_stripname_result" 1361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 1363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Including no sysroot. 1364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_replace_sysroot_result=$1 1365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_infer_tag arg 1370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Infer tagged configuration to use if any are available and 1371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if one wasn't chosen via the "--tag" command line option. 1372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Only attempt this if the compiler in the base compile 1373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# command doesn't match the default compiler. 1374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# arg is usually of the form 'gcc ...' 1375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_infer_tag () 1376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$available_tags" && test -z "$tagname"; then 1379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC_quoted= 1380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg in $CC; do 1381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append_quoted CC_quoted "$arg" 1382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC_expanded=`func_echo_all $CC` 1384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC_quoted_expanded=`func_echo_all $CC_quoted` 1385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $@ in 1386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Blanks in the command may have been stripped by the calling shell, 1387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # but not from the CC environment variable when configure was run. 1388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Blanks at the start of $base_compile will cause this to fail 1391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # if we don't check for them as well. 1392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 1393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for z in $available_tags; do 1394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Evaluate the configuration. 1396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC_quoted= 1398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg in $CC; do 1399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Double-quote args containing other shell metacharacters. 1400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append_quoted CC_quoted "$arg" 1401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC_expanded=`func_echo_all $CC` 1403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CC_quoted_expanded=`func_echo_all $CC_quoted` 1404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$@ " in 1405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The compiler in the base compile command matches 1408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the one in the tagged configuration. 1409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Assume this is the tagged configuration we want. 1410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tagname=$z 1411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 1412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If $tagname still isn't set, then no tagged configuration 1417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # was found and let the user know that the "--tag" command 1418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # line option must be used. 1419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$tagname"; then 1420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_echo "unable to infer tagged configuration" 1421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "specify a tag with \`--tag'" 1422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# else 1423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_verbose "using $tagname tagged configuration" 1424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_write_libtool_object output_name pic_name nonpic_name 1433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Create a libtool object file (analogous to a ".la" file), 1434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# but don't create it if we're doing a dry run. 1435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_write_libtool_object () 1436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat write_libobj=${1} 1438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes; then 1439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat write_lobj=\'${2}\' 1440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat write_lobj=none 1442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = yes; then 1445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat write_oldobj=\'${3}\' 1446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat write_oldobj=none 1448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 1451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat >${write_libobj}T <<EOF 1452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $write_libobj - a libtool object file 1453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Please DO NOT delete this file! 1456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# It is necessary for linking the library. 1457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Name of the PIC object. 1459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratpic_object=$write_lobj 1460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Name of the non-PIC object 1462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnon_pic_object=$write_oldobj 1463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 1465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MV "${write_libobj}T" "${write_libobj}" 1466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 1467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat################################################## 1471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat################################################## 1473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_core_file_wine_to_w32 ARG 1475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Helper function used by file name conversion functions when $build is *nix, 1476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# correctly configured wine environment available, with the winepath program 1478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in $build's $PATH. 1479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is the $build file name to be converted to w32 format. 1481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# be empty on error (or when ARG is empty) 1483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_core_file_wine_to_w32 () 1484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32_result="$1" 1487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Unfortunately, winepath does not exit with a non-zero error code, so we 1489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # are forced to check the contents of stdout. On the other hand, if the 1490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # command is not found, the shell will set an exit code of 127 and print 1491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # *an error message* to stdout. So we must check for both error code of 1492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # zero AND non-empty stdout, which explains the odd construction: 1493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e "$lt_sed_naive_backslashify"` 1497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32_result= 1499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end: func_convert_core_file_wine_to_w32 1503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_core_path_wine_to_w32 ARG 1506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Helper function used by path conversion functions when $build is *nix, and 1507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# configured wine environment available, with the winepath program in $build's 1509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $PATH. Assumes ARG has no leading or trailing path separator characters. 1510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is path to be converted from $build format to win32. 1512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in $func_convert_core_path_wine_to_w32_result. 1513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Unconvertible file (directory) names in ARG are skipped; if no directory names 1514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# are convertible, then the result may be empty. 1515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_core_path_wine_to_w32 () 1516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # unfortunately, winepath doesn't convert paths, only file names 1519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_path_wine_to_w32_result="" 1520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldIFS=$IFS 1522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS=: 1523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for func_convert_core_path_wine_to_w32_f in $1; do 1524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS=$oldIFS 1525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 1534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS=$oldIFS 1535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end: func_convert_core_path_wine_to_w32 1538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygpath ARGS... 1541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (2), returns the Cygwin file name or path in func_cygpath_result (input 1545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# file name or path is assumed to be in w32 format, as previously converted 1546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# or path in func_cygpath_result (input file name or path is assumed to be in 1548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Cygwin format). Returns an empty string on error. 1549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARGS are passed to cygpath, with the last one being the file name or path to 1551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# be converted. 1552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# environment variable; do not put it in $PATH. 1555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygpath () 1556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$?" -ne 0; then 1561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # on failure, ensure result is empty 1562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath_result= 1563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath_result= 1566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#end: func_cygpath 1570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_core_msys_to_w32 ARG 1573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name or path ARG from MSYS format to w32 format. Return 1574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# result in func_convert_core_msys_to_w32_result. 1575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_core_msys_to_w32 () 1576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # awkward: cmd appends spaces to result 1579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#end: func_convert_core_msys_to_w32 1583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_check ARG1 ARG2 1586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Verify that ARG1 (a file name in $build format) was converted to $host 1587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# format in ARG2. Otherwise, emit an error message, but continue (resetting 1588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result to ARG1). 1589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_check () 1590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$2" && test -n "$1" ; then 1593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "Could not determine host file name corresponding to" 1594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error " \`$1'" 1595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "Continuing, but uninstalled executables may not work." 1596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Fallback: 1597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_check 1601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Verify that FROM_PATH (a path in $build format) was converted to $host 1605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result to a simplistic fallback value (see below). 1607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_check () 1608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$4" && test -n "$3"; then 1611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "Could not determine the host path corresponding to" 1612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error " \`$3'" 1613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "Continuing, but uninstalled executables may not work." 1614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Fallback. This is a deliberately simplistic "conversion" and 1615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # should not be "improved". See libtool.info. 1616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x$1" != "x$2"; then 1617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_replace_pathsep_chars="s|$1|$2|g" 1618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result=`echo "$3" | 1619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e "$lt_replace_pathsep_chars"` 1620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 1621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$3" 1622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_check 1626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and appending REPL if ORIG matches BACKPAT. 1631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_front_back_pathsep () 1632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $4 in 1635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $4 in 1639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $2 ) func_append func_to_host_path_result "$3" 1640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_front_back_pathsep 1644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat################################################## 1647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $build to $host FILE NAME CONVERSION FUNCTIONS # 1648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat################################################## 1649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# invoked via `$to_host_file_cmd ARG' 1650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# In each case, ARG is the path to be converted from $build to $host format. 1652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result will be available in $func_to_host_file_result. 1653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file ARG 1656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Converts the file name ARG from $build format to $host format. Return result 1657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in func_to_host_file_result. 1658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_to_host_file () 1659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $to_host_file_cmd "$1" 1662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_to_host_file 1664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_tool_file ARG LAZY 1667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# converts the file name ARG from $build format to toolchain format. Return 1668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# result in func_to_tool_file_result. If the conversion in use is listed 1669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in (the comma separated) LAZY, no conversion takes place. 1670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_to_tool_file () 1671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case ,$2, in 1674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *,"$to_tool_file_cmd",*) 1675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file_result=$1 1676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 1678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $to_tool_file_cmd "$1" 1679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file_result=$func_to_host_file_result 1680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 1682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_to_tool_file 1684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_noop ARG 1687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Copy ARG to func_to_host_file_result. 1688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_noop () 1689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_noop 1693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_msys_to_w32 ARG 1696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# conversion to w32 is not available inside the cwrapper. Returns result in 1698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result. 1699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_msys_to_w32 () 1700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_msys_to_w32 "$1" 1705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_file_check "$1" "$func_to_host_file_result" 1708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_msys_to_w32 1710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_cygwin_to_w32 ARG 1713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from Cygwin to w32 format. Returns result in 1714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result. 1715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_cygwin_to_w32 () 1716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # LT_CYGPATH in this case. 1722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result=`cygpath -m "$1"` 1723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_file_check "$1" "$func_to_host_file_result" 1725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_cygwin_to_w32 1727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_nix_to_w32 ARG 1730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from *nix to w32 format. Requires a wine environment 1731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# and a working winepath. Returns result in func_to_host_file_result. 1732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_nix_to_w32 () 1733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32 "$1" 1738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_file_check "$1" "$func_to_host_file_result" 1741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_nix_to_w32 1743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_msys_to_cygwin ARG 1746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Returns result in func_to_host_file_result. 1748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_msys_to_cygwin () 1749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_msys_to_w32 "$1" 1754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$func_cygpath_result" 1756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_file_check "$1" "$func_to_host_file_result" 1758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_msys_to_cygwin 1760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_file_nix_to_cygwin ARG 1763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in func_to_host_file_result. 1766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_file_nix_to_cygwin () 1767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$1" 1770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_file_wine_to_w32 "$1" 1773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_file_result="$func_cygpath_result" 1775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_file_check "$1" "$func_to_host_file_result" 1777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_file_nix_to_cygwin 1779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat############################################# 1782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $build to $host PATH CONVERSION FUNCTIONS # 1783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat############################################# 1784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# invoked via `$to_host_path_cmd ARG' 1785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# In each case, ARG is the path to be converted from $build to $host format. 1787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The result will be available in $func_to_host_path_result. 1788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Path separators are also converted from $build format to $host format. If 1790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG begins or ends with a path separator character, it is preserved (but 1791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# converted to $host format) on output. 1792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 1793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# All path conversion functions are named using the following convention: 1794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# file name conversion function : func_convert_file_X_to_Y () 1795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# path conversion function : func_convert_path_X_to_Y () 1796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# where, for any given $build/$host combination the 'X_to_Y' value is the 1797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# same. If conversion functions are added for new $build/$host combinations, 1798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# will break. 1800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_init_to_host_path_cmd 1803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# appropriate value, based on the value of $to_host_file_cmd. 1805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratto_host_path_cmd= 1806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_init_to_host_path_cmd () 1807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$to_host_path_cmd"; then 1810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_path ARG 1817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Converts the path ARG from $build format to $host format. Return result 1818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in func_to_host_path_result. 1819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_to_host_path () 1820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_init_to_host_path_cmd 1823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $to_host_path_cmd "$1" 1824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_to_host_path 1826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_noop ARG 1829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Copy ARG to func_to_host_path_result. 1830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_noop () 1831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$1" 1833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_noop 1835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_msys_to_w32 ARG 1838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# conversion to w32 is not available inside the cwrapper. Returns result in 1840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_path_result. 1841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_msys_to_w32 () 1842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$1" 1845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove leading and trailing path separator characters from ARG. MSYS 1847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and winepath ignores them completely. 1849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname : : "$1" 1850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_tmp1=$func_stripname_result 1851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_check : ";" \ 1854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_msys_to_w32 1859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_cygwin_to_w32 ARG 1862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from Cygwin to w32 format. Returns result in 1863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result. 1864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_cygwin_to_w32 () 1865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$1" 1868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See func_convert_path_msys_to_w32: 1870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname : : "$1" 1871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_tmp1=$func_stripname_result 1872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_check : ";" \ 1874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_cygwin_to_w32 1879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_nix_to_w32 ARG 1882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from *nix to w32 format. Requires a wine environment and 1883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a working winepath. Returns result in func_to_host_file_result. 1884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_nix_to_w32 () 1885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$1" 1888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See func_convert_path_msys_to_w32: 1890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname : : "$1" 1891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_tmp1=$func_stripname_result 1892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_check : ";" \ 1895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_nix_to_w32 1900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_msys_to_cygwin ARG 1903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Returns result in func_to_host_file_result. 1905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_msys_to_cygwin () 1906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$1" 1909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See func_convert_path_msys_to_w32: 1911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname : : "$1" 1912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_tmp1=$func_stripname_result 1913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$func_cygpath_result" 1916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_check : : \ 1917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_msys_to_cygwin 1922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_convert_path_nix_to_cygwin ARG 1925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_to_host_file_result. 1928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_convert_path_nix_to_cygwin () 1929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$1" 1932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 1933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove leading and trailing path separator characters from 1934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # ARG. msys behavior is inconsistent here, cygpath turns them 1935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # into '.;' and ';.', and winepath ignores them completely. 1936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname : : "$1" 1937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_tmp1=$func_stripname_result 1938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path_result="$func_cygpath_result" 1941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_check : : \ 1942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 1945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 1946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end func_convert_path_nix_to_cygwin 1947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_compile arg... 1950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_compile () 1951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 1952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 1953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Get the compilation command and the source file. 1954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat base_compile= 1955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat suppress_opt=yes 1957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat suppress_output= 1958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg_mode=normal 1959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobj= 1960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat later= 1961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pie_flag= 1962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg 1964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 1965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg_mode in 1966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg ) 1967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # do not "continue". Instead, add this to base_compile 1968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lastarg="$arg" 1969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg_mode=normal 1970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat target ) 1973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobj="$arg" 1974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg_mode=normal 1975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 1976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat normal ) 1979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Accept any command-line options. 1980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 1981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -o) 1982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$libobj" && \ 1983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "you cannot specify \`-o' more than once" 1984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg_mode=target 1985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 1986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -pie | -fpie | -fPIE) 1989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append pie_flag " $arg" 1990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 1991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shared | -static | -prefer-pic | -prefer-non-pic) 1994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append later " $arg" 1995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 1996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 1997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-suppress) 1999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat suppress_opt=no 2000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Xcompiler) 2004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg_mode=arg # the next one goes into the "base_compile" arg list 2005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue # The current "srcfile" will either be retained or 2006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; # replaced later. I would guess that would be a bug. 2007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Wc,*) 2009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-Wc,' '' "$arg" 2010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat args=$func_stripname_result 2011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lastarg= 2012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS=',' 2013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg in $args; do 2014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 2015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append_quoted lastarg "$arg" 2016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 2018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname ' ' '' "$lastarg" 2019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lastarg=$func_stripname_result 2020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add the arguments to base_compile. 2022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append base_compile " $lastarg" 2023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Accept the current argument as the source file. 2028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The previous "srcfile" becomes the current argument. 2029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 2030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lastarg="$srcfile" 2031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat srcfile="$arg" 2032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac # case $arg 2034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac # case $arg_mode 2036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Aesthetically quote the previous argument. 2038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append_quoted base_compile "$lastarg" 2039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # for arg 2040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg_mode in 2042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg) 2043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "you must specify an argument for -Xcompile" 2044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat target) 2046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "you must specify a target with \`-o'" 2047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Get the name of the library object. 2050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libobj" && { 2051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$srcfile" 2052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobj="$func_basename_result" 2053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 2054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Recognize several different file suffixes. 2058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the user specifies -o file.o, it is replaced with file.lo 2059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $libobj in 2060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.[cCFSifmso] | \ 2061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.ada | *.adb | *.ads | *.asm | \ 2062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_xform "$libobj" 2065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobj=$func_xform_result 2066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $libobj in 2070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot determine name of library object from \`$libobj'" 2073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_infer_tag $base_compile 2077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg in $later; do 2079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 2080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shared) 2081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_libtool_libs" != yes && \ 2082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_configuration "can not build a shared library" 2083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=no 2084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static) 2088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 2089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 2090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -prefer-pic) 2094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_mode=yes 2095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -prefer-non-pic) 2099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_mode=no 2100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$libobj" 2106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobj" != "X$func_quote_for_eval_result" \ 2107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_and_basename "$obj" "/" "" 2110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objname="$func_basename_result" 2111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xdir="$func_dirname_result" 2112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lobj=${xdir}$objdir/$objname 2113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$base_compile" && \ 2115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify a compilation command" 2116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete any leftover library objects. 2118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = yes; then 2119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat removelist="$obj $lobj $libobj ${libobj}T" 2120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat removelist="$lobj $libobj ${libobj}T" 2122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # On Cygwin there's no "real" PIC flag so we must build both object types 2125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host_os in 2126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cygwin* | mingw* | pw32* | os2* | cegcc*) 2127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_mode=default 2128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # non-PIC code in shared libraries is not supported 2132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_mode=default 2133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Calculate the filename of the output object if compiler does 2136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # not support -o with -c 2137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$compiler_c_o" = no; then 2138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lockfile="$output_obj.lock" 2140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_obj= 2142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat need_locks=no 2143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lockfile= 2144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Lock this critical section if it is needed 2147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We use this script file to make the link, it avoids creating a new file 2148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_locks" = yes; then 2149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_echo "Waiting for $lockfile to be removed" 2151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sleep 2 2152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$need_locks" = warn; then 2154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$lockfile"; then 2155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 2156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*** ERROR, $lockfile exists and contains: 2157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat`cat $lockfile 2>/dev/null` 2158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis indicates that another process is trying to use the same 2160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattemporary object file, and libtool could not work around it because 2161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratyour compiler does not support \`-c' and \`-o' together. If you 2162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrepeat this compilation, it may succeed, by chance, but you had better 2163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratavoid parallel builds (make -j) in this platform, or get a better 2164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompiler." 2165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $removelist 2167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_FAILURE 2168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append removelist " $output_obj" 2170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$srcfile" > "$lockfile" 2171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $removelist 2174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append removelist " $lockfile" 2175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat srcfile=$func_to_tool_file_result 2179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$srcfile" 2180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat qsrcfile=$func_quote_for_eval_result 2181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only build a PIC object if we are building libtool libraries. 2183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes; then 2184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Without this assignment, base_compile gets emptied. 2185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fbsd_hideous_sh_bug=$base_compile 2186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pic_mode" != no; then 2188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat command="$base_compile $qsrcfile $pic_flag" 2189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't build PIC code 2191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat command="$base_compile $qsrcfile" 2192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mkdir_p "$xdir$objdir" 2195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$output_obj"; then 2197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Place PIC objects in $objdir 2198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append command " -o $lobj" 2199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval_locale "$command" \ 2202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_locks" = warn && 2205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 2207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*** ERROR, $lockfile contains: 2208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat`cat $lockfile 2>/dev/null` 2209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbut it should contain: 2211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$srcfile 2212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis indicates that another process is trying to use the same 2214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattemporary object file, and libtool could not work around it because 2215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratyour compiler does not support \`-c' and \`-o' together. If you 2216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrepeat this compilation, it may succeed, by chance, but you had better 2217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratavoid parallel builds (make -j) in this platform, or get a better 2218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompiler." 2219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $removelist 2221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_FAILURE 2222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just move the object if needed, then go on to compile the next one 2225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$MV "$output_obj" "$lobj"' \ 2227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Allow error messages only from the first compilation. 2231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$suppress_opt" = yes; then 2232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat suppress_output=' >/dev/null 2>&1' 2233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only build a position-dependent object if we build old libraries. 2237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = yes; then 2238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pic_mode" != yes; then 2239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't build PIC code 2240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat command="$base_compile $qsrcfile$pie_flag" 2241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat command="$base_compile $qsrcfile $pic_flag" 2243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$compiler_c_o" = yes; then 2245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append command " -o $obj" 2246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Suppress compiler output if we already did a PIC compilation. 2249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append command "$suppress_output" 2250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval_locale "$command" \ 2251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_locks" = warn && 2254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 2256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*** ERROR, $lockfile contains: 2257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat`cat $lockfile 2>/dev/null` 2258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbut it should contain: 2260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$srcfile 2261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis indicates that another process is trying to use the same 2263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattemporary object file, and libtool could not work around it because 2264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratyour compiler does not support \`-c' and \`-o' together. If you 2265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrepeat this compilation, it may succeed, by chance, but you had better 2266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratavoid parallel builds (make -j) in this platform, or get a better 2267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcompiler." 2268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $removelist 2270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_FAILURE 2271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just move the object if needed 2274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$MV "$output_obj" "$obj"' \ 2276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 2281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Unlock the critical section if it was locked 2284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_locks" != no; then 2285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat removelist=$lockfile 2286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM "$lockfile" 2287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 2289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 2291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 2292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat$opt_help || { 2294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 2296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_help () 2298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 2299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need to display help for each of the modes. 2300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $opt_mode in 2301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "") 2302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Generic help is extracted from the usage comments 2303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # at the start of this file. 2304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_help 2305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat clean) 2308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRemove files from the build directory. 2312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRM is the name of the program to use to delete files associated with each FILE 2314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratto RM. 2316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf FILE is a libtool library, object or program, all the files associated 2318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratwith it are deleted. Otherwise, only FILE itself is deleted using RM." 2319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile) 2322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratCompile a source file into a libtool library object. 2326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis mode accepts the following additional options: 2328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-suppress do not suppress compiler output for multiple passes 2331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -prefer-pic try to build PIC objects only 2332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -prefer-non-pic try to build non-PIC objects only 2333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shared do not build a \`.o' file suitable for static linking 2334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static only build a \`.o' file suitable for static linking 2335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Wc,FLAG pass FLAG directly to the compiler 2336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfrom the given SOURCEFILE. 2339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe output file name is determined by removing the directory component from 2341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratSOURCEFILE, then substituting the C source code suffix \`.c' with the 2342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlibrary object suffix, \`.lo'." 2343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat execute) 2346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratAutomatically set library path, then run a program. 2350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis mode accepts the following additional options: 2352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -dlopen FILE add the directory containing FILE to the library path 2354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThis mode sets the library path environment variable according to \`-dlopen' 2356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratflags. 2357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf any of the ARGS are libtool executable wrappers, then they are translated 2359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinto their corresponding uninstalled binary, and any of their required library 2360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdirectories are added to the library path. 2361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThen, COMMAND is executed, with ARGS as arguments." 2363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finish) 2366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratComplete the installation of libtool libraries. 2370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEach LIBDIR is a directory that contains libtool libraries. 2372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe commands that this mode executes may require superuser privileges. Use 2374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratthe \`--dry-run' option if you just want to see what would be executed." 2375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat install) 2378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratInstall executables or libraries. 2382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratINSTALL-COMMAND is the installation command. The first component should be 2384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erateither the \`install' or \`cp' program. 2385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe following components of INSTALL-COMMAND are treated specially: 2387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe rest of the components are interpreted as arguments to that command (only 2391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratBSD-compatible install options are recognized)." 2392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link) 2395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLink object files or libraries together to form another library, or to 2399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcreate an executable program. 2400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLINK-COMMAND is a command using the C compiler that you would use to create 2402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erata program from several object files. 2403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratThe following components of LINK-COMMAND are treated specially: 2405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -all-static do not do any dynamic linking at all 2407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -avoid-version do not add a version suffix if possible 2408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -bindir BINDIR specify path to binaries directory (for systems where 2409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libraries must be found in the PATH setting at runtime) 2410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -export-symbols SYMFILE 2414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat try to export only the symbols listed in SYMFILE 2415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -export-symbols-regex REGEX 2416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat try to export only the symbols matching REGEX 2417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -LLIBDIR search LIBDIR for required installed libraries 2418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -lNAME OUTPUT-FILE requires the installed library libNAME 2419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -module build a library that can dlopened 2420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-fast-install disable the fast-install mode 2421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-install link a not-installable executable 2422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-undefined declare that a library does not refer to external symbols 2423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -objectlist FILE Use a list of object files found in FILE to specify objects 2425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -precious-files-regex REGEX 2426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat don't remove output files matching REGEX 2427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -release RELEASE specify package release information 2428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shared only do dynamic linking of libtool libraries 2431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shrext SUFFIX override the standard shared library file extension 2432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static do not do any dynamic linking of uninstalled libtool libraries 2433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static-libtool-libs 2434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do not do any dynamic linking of libtool libraries 2435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -version-info CURRENT[:REVISION[:AGE]] 2436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat specify library version info [each variable defaults to 0] 2437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -weak LIBNAME declare that the target provides the LIBNAME interface 2438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Wc,FLAG 2439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Wl,FLAG 2441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratAll other options (arguments beginning with \`-') are ignored. 2445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEvery other argument is treated as a filename. Files ending in \`.la' are 2447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattreated as uninstalled libtool libraries, other files are standard or library 2448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratobject files. 2449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrequired, except when creating a convenience library. 2453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratis created, otherwise an executable program is created." 2459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat uninstall) 2462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \ 2463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRemove libraries from an installation directory. 2466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratRM is the name of the program to use to delete files associated with each FILE 2468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratto RM. 2470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratIf FILE is a libtool library, all the files associated with it are deleted. 2472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratOtherwise, only FILE itself is deleted using RM." 2473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "invalid operation mode \`$opt_mode'" 2477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 2481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "Try \`$progname --help' for more information about other modes." 2482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 2483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Now that we've collected a possible --mode arg, show help if necessary 2485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif $opt_help; then 2486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_help" = :; then 2487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mode_help 2488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 2490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_help noexit 2491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for opt_mode in compile link execute install finish uninstall clean; do 2492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mode_help 2493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 2496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_help noexit 2497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for opt_mode in compile link execute install finish uninstall clean; do 2498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 2499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mode_help 2500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } | 2502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sed '1d 2503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^When reporting/,/^Report/{ 2504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat H 2505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat d 2506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 2507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $x 2508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /information about other modes/d 2509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /more detailed .*MODE/d 2510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $? 2513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi 2514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_execute arg... 2517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_execute () 2518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 2519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 2520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The first argument is the command name. 2521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmd="$nonopt" 2522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$cmd" && \ 2523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify a COMMAND" 2524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Handle -dlopen flags immediately. 2526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file in $opt_dlopen; do 2527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -f "$file" \ 2528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat || func_fatal_help "\`$file' is not a file" 2529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir= 2531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 2532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 2533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$file" 2534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=$func_resolve_sysroot_result 2535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that this really is a libtool archive. 2537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lalib_unsafe_p "$file" \ 2538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat || func_fatal_help "\`$lib' is not a valid libtool archive" 2539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Read the libtool library. 2541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlname= 2542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat library_names= 2543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$file" 2544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Skip this library if it cannot be dlopened. 2546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$dlname"; then 2547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Warn if it was a shared library. 2548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$library_names" && \ 2549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`$file' was not linked with \`-export-dynamic'" 2550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$file" "" "." 2554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$func_dirname_result" 2555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$dir/$objdir/$dlname"; then 2557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dir "/$objdir" 2558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -f "$dir/$dlname"; then 2560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) 2566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just add the directory containing the .lo file. 2567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$file" "" "." 2568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$func_dirname_result" 2569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Get the absolute pathname. 2578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir=`cd "$dir" && pwd` 2579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$absdir" && dir="$absdir" 2580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now add the directory to shlibpath_var. 2582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval "test -z \"\$$shlibpath_var\""; then 2583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$shlibpath_var=\"\$dir\"" 2584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This variable tells wrapper scripts just to set shlibpath_var 2590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # rather than running their programs. 2591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libtool_execute_magic="$magic" 2592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check if any of the arguments is a wrapper script. 2594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat args= 2595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file 2596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 2597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 2598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -* | *.la | *.lo ) ;; 2599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do a test to see if this is really a libtool program. 2601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_ltwrapper_script_p "$file"; then 2602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$file" 2603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Transform arg to wrapped name. 2604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file="$progdir/$program" 2605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif func_ltwrapper_executable_p "$file"; then 2606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_scriptname "$file" 2607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$func_ltwrapper_scriptname_result" 2608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Transform arg to wrapped name. 2609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file="$progdir/$program" 2610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Quote arguments (to preserve shell metacharacters). 2614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append_quoted args "$file" 2615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$opt_dry_run" = Xfalse; then 2618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$shlibpath_var"; then 2619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Export the shlibpath_var. 2620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "export $shlibpath_var" 2621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Restore saved environment variables 2624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 2626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "if test \"\${save_$lt_var+set}\" = set; then 2627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $lt_var=\$save_$lt_var; export $lt_var 2628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $lt_unset $lt_var 2630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi" 2631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now prepare to actually exec the command. 2634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exec_cmd="\$cmd$args" 2635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Display what would be done. 2637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$shlibpath_var"; then 2638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "export $shlibpath_var" 2640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$cmd$args" 2642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 2643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 2645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_finish arg... 2650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_finish () 2651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 2652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 2653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libs= 2654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdirs= 2655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat admincmds= 2656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for opt in "$nonopt" ${1+"$@"} 2658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 2659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -d "$opt"; then 2660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libdirs " $opt" 2661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -f "$opt"; then 2663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_lalib_unsafe_p "$opt"; then 2664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libs " $opt" 2665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`$opt' is not a valid libtool archive" 2667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "invalid argument \`$opt'" 2671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$libs"; then 2675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$lt_sysroot"; then 2676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sysroot_cmd= 2680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove sysroot references 2683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_dry_run; then 2684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $libs; do 2685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmpdir=`func_mktempdir` 2689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $libs; do 2690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat > $tmpdir/tmp-la 2692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat mv -f $tmpdir/tmp-la $lib 2693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ${RM}r "$tmpdir" 2695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $libdirs; do 2700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$finish_cmds"; then 2701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each command in the finish commands. 2702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat'"$cmd"'"' 2704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$finish_eval"; then 2706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do the single finish_eval. 2707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmds=\"$finish_eval\" 2708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval "$cmds" || func_append admincmds " 2709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $cmds" 2710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Exit here if they wanted silent mode. 2715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_silent && exit $EXIT_SUCCESS 2716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "----------------------------------------------------------------------" 2719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "Libraries have been installed in:" 2720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $libdirs; do 2721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO " $libdir" 2722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 2724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "If you ever happen to want to link against installed libraries" 2725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "in a given directory, LIBDIR, you must either use libtool, and" 2726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "flag during linking and do at least one of the following:" 2728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$shlibpath_var"; then 2729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo " during execution" 2731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$runpath_var"; then 2733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo " during linking" 2735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_flag_spec"; then 2737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir=LIBDIR 2738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval flag=\"$hardcode_libdir_flag_spec\" 2739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO " - use the \`$flag' linker flag" 2741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$admincmds"; then 2743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO " - have your system administrator run these commands:$admincmds" 2744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f /etc/ld.so.conf; then 2746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 2749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "See any operating system documentation about shared libraries for" 2751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 2752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat solaris2.[6789]|solaris2.1[0-9]) 2753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "pages." 2755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "----------------------------------------------------------------------" 2761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 2763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 2764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_install arg... 2769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_install () 2770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 2771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 2772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # There may be an optional sh(1) argument at the beginning of 2773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # install_prog (especially on Windows NT). 2774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Allow the use of GNU shtool's install command. 2776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $nonopt in *shtool*) :;; *) false;; esac; then 2777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Aesthetically quote it. 2778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$nonopt" 2779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat install_prog="$func_quote_for_eval_result " 2780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg=$1 2781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 2782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat install_prog= 2784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg=$nonopt 2785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The real first argument should be the name of the installation program. 2788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Aesthetically quote it. 2789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 2790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append install_prog "$func_quote_for_eval_result" 2791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat install_shared_prog=$install_prog 2792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $install_prog " in 2793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\\\ /]cp\ *) install_cp=: ;; 2794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) install_cp=false ;; 2795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need to accept at least all the BSD install flags. 2798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dest= 2799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat files= 2800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat opts= 2801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 2802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat install_type= 2803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat isdir=no 2804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat stripme= 2805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat no_mode=: 2806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg 2807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 2808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg2= 2809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dest"; then 2810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append files " $dest" 2811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dest=$arg 2812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 2816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -d) isdir=yes ;; 2817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -f) 2818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $install_cp; then :; else 2819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=$arg 2820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -g | -m | -o) 2823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=$arg 2824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -s) 2826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat stripme=" -s" 2827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -*) 2830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the previous option needed an argument, then skip it. 2833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$prev"; then 2834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg2=$install_override_mode 2836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat no_mode=false 2837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 2839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dest=$arg 2841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 2842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Aesthetically quote the argument. 2847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 2848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append install_prog " $func_quote_for_eval_result" 2849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$arg2"; then 2850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg2" 2851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append install_shared_prog " $func_quote_for_eval_result" 2853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$install_prog" && \ 2856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify an install program" 2857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$prev" && \ 2859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "the \`$prev' option requires an argument" 2860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$install_override_mode" && $no_mode; then 2862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $install_cp; then :; else 2863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$install_override_mode" 2864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append install_shared_prog " -m $func_quote_for_eval_result" 2865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$files"; then 2869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$dest"; then 2870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "no file or destination specified" 2871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify a destination" 2873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Strip any trailing slash from the destination. 2877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '/' "$dest" 2878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dest=$func_stripname_result 2879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that the destination is a directory. 2881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -d "$dest" && isdir=yes 2882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$isdir" = yes; then 2883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destdir="$dest" 2884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destname= 2885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_and_basename "$dest" "" "." 2887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destdir="$func_dirname_result" 2888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destname="$func_basename_result" 2889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Not a directory, so check to see that there is only one file specified. 2891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $files; shift 2892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$#" -gt 1 && \ 2893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "\`$dest' is not a directory" 2894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $destdir in 2896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) ;; 2897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file in $files; do 2899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 2900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) ;; 2901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 2902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "\`$destdir' must be an absolute directory name" 2903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 2906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This variable tells wrapper scripts just to set variables rather 2910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # than running their programs. 2911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libtool_install_magic="$magic" 2912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat staticlibs= 2914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat future_libdirs= 2915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat current_libdirs= 2916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file in $files; do 2917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each installation. 2919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 2920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$libext) 2921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do the static libraries later. 2922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append staticlibs " $file" 2923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 2924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 2926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$file" 2927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=$func_resolve_sysroot_result 2928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that this really is a libtool archive. 2930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lalib_unsafe_p "$file" \ 2931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat || func_fatal_help "\`$file' is not a valid libtool archive" 2932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat library_names= 2934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_library= 2935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 2936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$file" 2937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add the libdir to current_libdirs if it is the destination. 2939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$destdir" = "X$libdir"; then 2940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$current_libdirs " in 2941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 2942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append current_libdirs " $libdir" ;; 2943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Note the libdir as a future libdir. 2946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$future_libdirs " in 2947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 2948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append future_libdirs " $libdir" ;; 2949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 2950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$file" "/" "" 2953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$func_dirname_result" 2954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dir "$objdir" 2955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$relink_command"; then 2957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Determine the prefix the user has applied to our future dir. 2958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't allow the user to place us outside of our expected 2961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # location b/c this prevents finding dependent libraries that 2962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # are installed to the same prefix. 2963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # At present, this check doesn't affect windows .dll's that 2964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # are installed into $libdir/../bin (currently, that works fine) 2965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # but it's something to keep an eye on. 2966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$inst_prefix_dir" = "$destdir" && \ 2967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$inst_prefix_dir"; then 2970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Stick the inst_prefix_dir data into the link command. 2971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 2973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "relinking \`$file'" 2977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$relink_command" \ 2978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 2980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See the names of the shared library. 2982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $library_names; shift 2983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$1"; then 2984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat realname="$1" 2985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 2986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat srcname="$realname" 2988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$relink_command" && srcname="$realname"T 2989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 2990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Install the shared library and build the symlinks. 2991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 'exit $?' 2993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tstripme="$stripme" 2994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host_os in 2995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cygwin* | mingw* | pw32* | cegcc*) 2996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $realname in 2997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.dll.a) 2998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tstripme="" 2999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$tstripme" && test -n "$striplib"; then 3004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$#" -gt 0; then 3008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete the old symlinks, and create new ones. 3009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Try `ln -sf' first, because the `ln' binary might depend on 3010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the symlink we replace! Solaris /bin/ln does not understand -f, 3011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # so we also need to try rm && ln -s. 3012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for linkname 3013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 3014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$linkname" != "$realname" \ 3015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each command in the postinstall commands. 3020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib="$destdir/$realname" 3021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$postinstall_cmds" 'exit $?' 3022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Install the pseudo-library for information purposes. 3025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$file" 3026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 3027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat instname="$dir/$name"i 3028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Maybe install the static library, too. 3031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) 3035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Install (i.e. copy) a libtool object. 3036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Figure out destination file name, if it wasn't already specified. 3038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$destname"; then 3039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile="$destdir/$destname" 3040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$file" 3042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile="$func_basename_result" 3043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile="$destdir/$destfile" 3044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Deduce the name of the destination old-style object file. 3047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $destfile in 3048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) 3049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lo2o "$destfile" 3050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat staticdest=$func_lo2o_result 3051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$objext) 3053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat staticdest="$destfile" 3054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile= 3055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Install the libtool object if requested. 3062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$destfile" && \ 3063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$install_prog $file $destfile" 'exit $?' 3064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Install the old object if enabled. 3066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = yes; then 3067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Deduce the name of the old-style object file. 3068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lo2o "$file" 3069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat staticobj=$func_lo2o_result 3070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 3073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Figure out destination file name, if it wasn't already specified. 3077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$destname"; then 3078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile="$destdir/$destname" 3079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$file" 3081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile="$func_basename_result" 3082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile="$destdir/$destfile" 3083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the file is missing, and there is a .exe on the end, strip it 3086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # because it is most likely a libtool script we actually want to 3087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # install 3088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat stripped_ext="" 3089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 3090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.exe) 3091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -f "$file"; then 3092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$file" 3093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=$func_stripname_result 3094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat stripped_ext=".exe" 3095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do a test to see if this is really a libtool program. 3100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw*) 3102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_ltwrapper_executable_p "$file"; then 3103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_scriptname "$file" 3104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrapper=$func_ltwrapper_scriptname_result 3105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$file" 3107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrapper=$func_stripname_result 3108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrapper=$file 3112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_ltwrapper_script_p "$wrapper"; then 3115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat notinst_deplibs= 3116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 3117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$wrapper" 3119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check the variables that should have been set. 3121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$generated_by_libtool_version" && \ 3122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize=yes 3125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $notinst_deplibs; do 3126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that each library is installed. 3127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir= 3128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$lib"; then 3129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$lib" 3130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$libdir" && test ! -f "$libfile"; then 3133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`$lib' has not been installed in \`$libdir'" 3134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize=no 3135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 3139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$wrapper" 3140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat outputname= 3142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$fast_install" = no && test -n "$relink_command"; then 3143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$finalize" = yes; then 3145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmpdir=`func_mktempdir` 3146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$file$stripped_ext" 3147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file="$func_basename_result" 3148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat outputname="$tmpdir/$file" 3149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Replace the output file specification. 3150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_silent || { 3153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_expand "$relink_command" 3154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "func_echo $func_quote_for_expand_result" 3155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval "$relink_command"; then : 3157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "error: relink \`$file' with the above command before installing it" 3159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || ${RM}r "$tmpdir" 3160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 3161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file="$outputname" 3163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "cannot relink \`$file'" 3165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Install the binary that we compiled earlier. 3169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # remove .exe since cygwin /usr/bin/install will append another 3174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # one anyway 3175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $install_prog,$host in 3176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */usr/bin/install*,*cygwin*) 3177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file:$destfile in 3178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.exe:*.exe) 3179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # this is ok 3180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.exe:*) 3182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile=$destfile.exe 3183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *:*.exe) 3185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$destfile" 3186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destfile=$func_stripname_result 3187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || if test -n "$outputname"; then 3193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ${RM}r "$tmpdir" 3194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file in $staticlibs; do 3200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$file" 3201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 3202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Set up the ranlib parameters. 3204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlib="$destdir/$name" 3205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tool_oldlib=$func_to_tool_file_result 3207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$stripme" && test -n "$old_striplib"; then 3211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each command in the postinstall commands. 3215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$future_libdirs" && \ 3219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "remember to run \`$progname --finish$future_libdirs'" 3220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$current_libdirs"; then 3222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Maybe just do a dry run. 3223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 3227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_generate_dlsyms outputname originator pic_p 3234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Extract symbols from dlprefiles and create ${outputname}S.o with 3235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# a dlpreopen symbol table. 3236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_generate_dlsyms () 3237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_outputname="$1" 3240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_originator="$2" 3241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_pic_p="${3-no}" 3242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_dlsyms= 3244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_dlsyms="${my_outputname}S.c" 3248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "not configured to extract global symbols from dlpreopened files" 3250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$my_dlsyms"; then 3254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $my_dlsyms in 3255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "") ;; 3256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.c) 3257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Discover the nlist of each of the dlfiles. 3258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nlist="$output_objdir/${my_outputname}.nm" 3259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Parse the name list into a source file. 3263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating $output_objdir/$my_dlsyms" 3264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef __cplusplus 3270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextern \"C\" { 3271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 3272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 3276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_DLSYM_CONST 3282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__osf__) 3283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* This system does not cope well with relocations in const data. */ 3284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_DLSYM_CONST 3285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else 3286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_DLSYM_CONST const 3287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 3288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* External symbol declarations for the compiler. */\ 3290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 3291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$dlself" = yes; then 3293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "generating symbol list for \`$output'" 3294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add our own program objects to the symbol list. 3298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for progfile in $progfiles; do 3300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$exclude_expsyms"; then 3306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$MV "$nlist"T "$nlist"' 3309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols_regex"; then 3313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$MV "$nlist"T "$nlist"' 3316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prepare the list of exported symbols 3320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$export_symbols"; then 3321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols="$output_objdir/$outputname.exp" 3322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM $export_symbols 3324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *cegcc* ) 3327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$MV "$nlist"T "$nlist"' 3337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *cegcc* ) 3339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dlprefile in $dlprefiles; do 3348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "extracting global C symbols from \`$dlprefile'" 3349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$dlprefile" 3350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 3351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *cegcc* ) 3353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # if an import library, we need to obtain dlname 3354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_win32_import_lib_p "$dlprefile"; then 3355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_tr_sh "$dlprefile" 3356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefile_dlbasename="" 3358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Use subshell, to avoid clobbering current variable values 3360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlprefile_dlname" ; then 3362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$dlprefile_dlname" 3363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefile_dlbasename="$func_basename_result" 3364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # no lafile. user explicitly requested -dlpreopen <import library>. 3366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $sharedlib_from_linklib_cmd "$dlprefile" 3367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefile_dlbasename=$sharedlib_from_linklib_result 3368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlprefile_dlbasename" ; then 3372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "Could not compute DLL name from $name" 3375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$ECHO ": $name " >> "$nlist"' 3376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else # not an import lib 3382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$ECHO ": $name " >> "$nlist"' 3384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval '$ECHO ": $name " >> "$nlist"' 3392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure we have at least an empty file. 3401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -f "$nlist" || : > "$nlist" 3402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$exclude_expsyms"; then 3404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MV "$nlist"T "$nlist" 3406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Try sorting and uniquifying the output. 3409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $GREP -v "^: " < "$nlist" | 3410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if sort -k 3 </dev/null >/dev/null 2>&1; then 3411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sort -k 3 3412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sort +2 3414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi | 3415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat uniq > "$nlist"S; then 3416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 3417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $GREP -v "^: " < "$nlist" > "$nlist"S 3419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$nlist"S; then 3422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo >> "$output_objdir/$my_dlsyms" "\ 3428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* The mapping between symbol names and symbols. */ 3430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattypedef struct { 3431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *name; 3432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat void *address; 3433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} lt_dlsymlist; 3434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratextern LT_DLSYM_CONST lt_dlsymlist 3435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_${my_prefix}_LTX_preloaded_symbols[]; 3436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratLT_DLSYM_CONST lt_dlsymlist 3437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_${my_prefix}_LTX_preloaded_symbols[] = 3438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{\ 3439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { \"$my_originator\", (void *) 0 }," 3440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $need_lib_prefix in 3442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat no) 3443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo >> "$output_objdir/$my_dlsyms" "\ 3450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat {0, (void *) 0} 3451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat}; 3452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* This works around a problem in FreeBSD linker */ 3454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef FREEBSD_WORKAROUND 3455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const void *lt_preloaded_setup() { 3456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return lt_${my_prefix}_LTX_preloaded_symbols; 3457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 3459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef __cplusplus 3461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif\ 3463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 3464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } # !$opt_dry_run 3465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_flag_for_symtable= 3467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$compile_command " in 3468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" -static "*) ;; 3469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # compiling the symbol table file with pic_flag works around 3472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # a FreeBSD bug that causes programs to crash when -lm is 3473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # linked before any other PIC object. But we must not use 3474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # pic_flag when linking with -static. The problem exists in 3475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-hpux*) 3479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_flag_for_symtable=" $pic_flag" ;; 3480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$my_pic_p" != Xno; then 3482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_flag_for_symtable=" $pic_flag" 3483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat symtab_cflags= 3489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg in $LTCFLAGS; do 3490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 3491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -pie | -fpie | -fPIE) ;; 3492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append symtab_cflags " $arg" ;; 3493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now compile the dynamic symbol file. 3497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Clean up the generated files. 3500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Transform the symbol file into the correct name. 3503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat symfileobj="$output_objdir/${my_outputname}S.$objext" 3504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *cegcc* ) 3506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$output_objdir/$my_outputname.def"; then 3507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We keep going just in case the user didn't refer to 3526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # really was required. 3528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Nullify the symbol file. 3530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_win32_libid arg 3536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# return the library type of file 'arg' 3537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Need a lot of goo to handle *both* DLLs and import libs 3539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Has to be a shell function in order to 'eat' the argument 3540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# that is supplied when $file_magic_command is called. 3541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Despite the name, also deal with 64 bit binaries. 3542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_win32_libid () 3543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat win32_libid_type="unknown" 3546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat win32_fileres=`file -L $1 2>/dev/null` 3547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $win32_fileres in 3548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *ar\ archive\ import\ library*) # definitely import 3549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat win32_libid_type="x86 archive import" 3550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *ar\ archive*) # could be an import, or static 3552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$1" func_convert_file_msys_to_w32 3556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n -e ' 3558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 1,100{ 3559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat / I /{ 3560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s,.*,import, 3561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p 3562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat q 3563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat }'` 3565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $win32_nmres in 3566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat import*) win32_libid_type="x86 archive import";; 3567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) win32_libid_type="x86 archive static";; 3568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *DLL*) 3572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat win32_libid_type="x86 DLL" 3573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *executable*) # but shell scripts are "executable" too... 3575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $win32_fileres in 3576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *MS\ Windows\ PE\ Intel*) 3577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat win32_libid_type="x86 DLL" 3578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$win32_libid_type" 3583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_dll_for_implib ARG 3586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Platform-specific function to extract the 3588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# name of the DLL associated with the specified 3589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# import library ARG. 3590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Invoked by eval'ing the libtool variable 3591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $sharedlib_from_linklib_cmd 3592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in the variable 3593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $sharedlib_from_linklib_result 3594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_dll_for_implib () 3595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The is the core of a fallback implementation of a 3603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# platform-specific function to extract the name of the 3604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# DLL associated with the specified import library LIBNAME. 3605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# SECTION_NAME is either .idata$6 or .idata$7, depending 3607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# on the platform and compiler that created the implib. 3608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Echos the name of the DLL associated with the 3610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# specified import library. 3611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_dll_for_implib_fallback_core () 3612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED '/^Contents of section '"$match_literal"':/{ 3617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Place marker at beginning of archive member dllname section 3618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/.*/====MARK====/ 3619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p 3620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat d 3621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 3622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # These lines can sometimes be longer than 43 characters, but 3623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # are always uninteresting 3624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /:[ ]*file format pe[i]\{,1\}-/d 3625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^In archive [^:]*:/d 3626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Ensure marker is printed 3627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^====MARK====/p 3628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove all lines with less than 43 characters 3629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^.\{43\}/!d 3630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # From remaining lines, remove first 43 characters 3631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^.\{43\}//' | 3632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n ' 3633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Join marker and all lines until next marker into a single line 3634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /^====MARK====/ b para 3635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat H 3636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ b para 3637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat b 3638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat :para 3639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat x 3640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/\n//g 3641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove the marker 3642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/^====MARK====// 3643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove trailing dots and whitespace 3644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat s/[\. \t]*$// 3645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Print 3646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /./p' | 3647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # we now have a list, one entry per line, of the stringified 3648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # contents of the appropriate section of all members of the 3649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # archive which possess that section. Heuristic: eliminate 3650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # all those which have a first or second character that is 3651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # a '.' (that is, objdump's representation of an unprintable 3652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # character.) This should work for all archives with less than 3653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 0x302f exports -- but will fail for DLLs whose name actually 3654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # begins with a literal '.' or a single character followed by 3655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # a '.'. 3656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 3657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Of those that remain, print the first one. 3658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e '/^\./d;/^.\./d;q' 3659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_gnu_implib_p ARG 3662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This predicate returns with zero status (TRUE) if 3663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is a GNU/binutils-style import library. Returns 3664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# with nonzero status (FALSE) otherwise. 3665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_gnu_implib_p () 3666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$1" func_convert_file_msys_to_w32 3669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 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)$'` 3670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$func_cygming_gnu_implib_tmp" 3671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_ms_implib_p ARG 3674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This predicate returns with zero status (TRUE) if 3675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is an MS-style import library. Returns 3676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# with nonzero status (FALSE) otherwise. 3677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_ms_implib_p () 3678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$1" func_convert_file_msys_to_w32 3681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$func_cygming_ms_implib_tmp" 3683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_cygming_dll_for_implib_fallback ARG 3686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Platform-specific function to extract the 3687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# name of the DLL associated with the specified 3688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# import library ARG. 3689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This fallback implementation is for use when $DLLTOOL 3691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# does not support the --identify-strict option. 3692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Invoked by eval'ing the libtool variable 3693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $sharedlib_from_linklib_cmd 3694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Result is available in the variable 3695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $sharedlib_from_linklib_result 3696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_cygming_dll_for_implib_fallback () 3697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_cygming_gnu_implib_p "$1" ; then 3700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # binutils import library 3701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif func_cygming_ms_implib_p "$1" ; then 3703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # ms-generated import library 3704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # unknown 3707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sharedlib_from_linklib_result="" 3708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_extract_an_archive dir oldlib 3713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_extract_an_archive () 3714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat f_ex_an_ar_dir="$1"; shift 3717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat f_ex_an_ar_oldlib="$1" 3718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$lock_old_archive_extraction" = yes; then 3719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lockfile=$f_ex_an_ar_oldlib.lock 3720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_echo "Waiting for $lockfile to be removed" 3722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sleep 2 3723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 'stat=$?; rm -f "$lockfile"; exit $stat' 3727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$lock_old_archive_extraction" = yes; then 3728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || rm -f "$lockfile" 3729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 3732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_extract_archives gentop oldlib ... 3739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_extract_archives () 3740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 3742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_gentop="$1"; shift 3743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_oldlibs=${1+"$@"} 3744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_oldobjs="" 3745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xlib="" 3746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xabs="" 3747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xdir="" 3748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for my_xlib in $my_oldlibs; do 3750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract the objects. 3751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $my_xlib in 3752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) my_xabs=`pwd`"/$my_xlib" ;; 3754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$my_xlib" 3756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xlib="$func_basename_result" 3757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xlib_u=$my_xlib 3758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while :; do 3759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $extracted_archives " in 3760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $my_xlib_u "*) 3761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $extracted_serial + 1 3762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat extracted_serial=$func_arith_result 3763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) break ;; 3765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat extracted_archives="$extracted_archives $my_xlib_u" 3768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_xdir="$my_gentop/$my_xlib_u" 3769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mkdir_p "$my_xdir" 3771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-darwin*) 3774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "Extracting $my_xabs" 3775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do not bother doing anything if just a dry run 3776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 3777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_orig_dir=`pwd` 3778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cd $my_xdir || exit $? 3779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_archive=$my_xabs 3780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_curdir=`pwd` 3781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_base_archive=`basename "$darwin_archive"` 3782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$darwin_arches"; then 3784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_arch= 3786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for darwin_arch in $darwin_arches ; do 3788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cd "$darwin_curdir" 3793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # $darwin_arches 3795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_file= 3798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_files= 3799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for darwin_file in $darwin_filelist; do 3800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $LIPO -create -output "$darwin_file" $darwin_files 3802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # $darwin_filelist 3803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM -rf unfat-$$ 3804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cd "$darwin_orig_dir" 3805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 3806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cd $darwin_orig_dir 3807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_an_archive "$my_xdir" "$my_xabs" 3808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $darwin_arches 3809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } # !$opt_dry_run 3810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_an_archive "$my_xdir" "$my_xabs" 3813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_archives_result="$my_oldobjs" 3819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_emit_wrapper [arg=no] 3823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Emit a libtool wrapper script on stdout. 3825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Don't directly open a file because we may want to 3826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# incorporate the script contents within a cygwin/mingw 3827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# wrapper executable. Must ONLY be called from within 3828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_link because it depends on a number of variables 3829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# set therein. 3830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# variable will take. If 'yes', then the emitted script 3833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# will assume that the directory in which it is stored is 3834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the $objdir directory. This is a cygwin/mingw-specific 3835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# behavior. 3836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_emit_wrapper () 3837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_emit_wrapper_arg1=${1-no} 3839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 3841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#! $SHELL 3842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $output - temporary wrapper script for $objdir/$outputname 3844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The $output program cannot be directly executed until all the libtool 3847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# libraries that it depends on are installed. 3848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This wrapper script should never be moved out of the build directory. 3850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If it is, it will not operate correctly. 3851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Sed substitution that helps us do robust quoting. It backslashifies 3853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# metacharacters that are still active within double-quoted strings. 3854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratsed_quote_subst='$sed_quote_subst' 3855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Be Bourne compatible 3857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat emulate sh 3859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat NULLCMD=: 3860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # is contrary to our usage. Disable this feature. 3862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat setopt NO_GLOB_SUBST 3864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratelse 3865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi 3867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratBIN_SH=xpg4; export BIN_SH # for Tru64 3868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratDUALCASE=1; export DUALCASE # for MKS sh 3869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The HP-UX ksh and POSIX shell print the target directory to stdout 3871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# if CDPATH is set. 3872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrelink_command=\"$relink_command\" 3875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# This environment variable determines our operation mode. 3877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test \"\$libtool_install_magic\" = \"$magic\"; then 3878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # install mode needs the following variables: 3879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat generated_by_libtool_version='$macro_version' 3880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat notinst_deplibs='$notinst_deplibs' 3881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratelse 3882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=\"\$0\"" 3885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 3888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# A function that is used when there is no print builtin or printf. 3890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_fallback_echo () 3891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval 'cat <<_LTECHO_EOF 3893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat\$1 3894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat_LTECHO_EOF' 3895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ECHO=\"$qECHO\" 3897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Very basic option parsing. These options are (a) specific to 3900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the libtool wrapper, (b) are identical between the wrapper 3901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# /script/ and the wrapper /executable/ which is used only on 3902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# windows platforms, and (c) all begin with the string "--lt-" 3903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (application programs are unlikely to have options which match 3904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# this pattern). 3905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# There are only two supported options: --lt-debug and 3907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# --lt-dump-script. There is, deliberately, no --lt-help. 3908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 3909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The first argument to this parsing function should be the 3910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# script's $0 value, followed by "$@". 3911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_option_debug= 3912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_parse_lt_options () 3913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_script_arg0=\$0 3915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 3916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lt_opt 3917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 3918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case \"\$lt_opt\" in 3919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --lt-debug) lt_option_debug=1 ;; 3920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --lt-dump-script) 3921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat \"\$lt_dump_D/\$lt_dump_F\" 3925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit 0 3926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --lt-*) 3928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit 1 3930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Print the debug banner immediately: 3935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n \"\$lt_option_debug\"; then 3936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Used when --lt-debug. Prints its arguments to stdout 3941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# (redirection is the responsibility of the caller) 3942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_lt_dump_args () 3943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_dump_args_N=1; 3945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lt_arg 3946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 3947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 3950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Core function for launching the target application 3953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_exec_program_core () 3954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 3956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 3957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Backslashes separate directories on plain windows 3958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-mingw | *-*-os2* | *-cegcc*) 3959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 3960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n \"\$lt_option_debug\"; then 3961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lt_dump_args \${1+\"\$@\"} 1>&2 3963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 3966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 3969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 3970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n \"\$lt_option_debug\"; then 3971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lt_dump_args \${1+\"\$@\"} 1>&2 3973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 3974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 3976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 3977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 3979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit 1 3981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 3982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 3983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# A function to encapsulate launching the target application 3984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Strips options in the --lt-* namespace from \$@ and 3985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# launches target application with the remaining arguments. 3986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_exec_program () 3987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 3988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case \" \$* \" in 3989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *\\ --lt-*) 3990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lt_wr_arg 3991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 3992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case \$lt_wr_arg in 3993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat --lt-*) ;; 3994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 3997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done ;; 3998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 3999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_exec_program_core \${1+\"\$@\"} 4000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Parse options 4003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Find the directory that this script lives in. 4006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Follow symbolic links until we get to the real thisdir. 4010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test -n \"\$file\"; do 4012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If there was a directory component, then change thisdir. 4015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test \"x\$destdir\" != \"x\$file\"; then 4016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case \"\$destdir\" in 4017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) thisdir=\"\$thisdir/\$destdir\" ;; 4019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 4020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 4025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Usually 'no', except on cygwin/mingw when embedded into 4027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the cwrapper. 4028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # special case for '.' 4031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test \"\$thisdir\" = \".\"; then 4032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat thisdir=\`pwd\` 4033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # remove .libs from thisdir 4035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case \"\$thisdir\" in 4036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $objdir ) thisdir=. ;; 4038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 4039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Try to get the absolute directory name. 4042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir=\`cd \"\$thisdir\" && pwd\` 4043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 4045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$fast_install" = yes; then 4047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat program=lt-'$outputname'$exeext 4049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progdir=\"\$thisdir/$objdir\" 4050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -f \"\$progdir/\$program\" || 4052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=\"\$\$-\$program\" 4056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -d \"\$progdir\"; then 4058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MKDIR \"\$progdir\" 4059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM \"\$progdir/\$file\" 4061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi" 4062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # relink executable if necessary 4066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n \"\$relink_command\"; then 4067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO \"\$relink_command_output\" >&2 4070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM \"\$progdir/\$file\" 4071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit 1 4072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { $RM \"\$progdir/\$program\"; 4077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM \"\$progdir/\$file\" 4079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi" 4080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat program='$outputname' 4083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat progdir=\"\$thisdir/$objdir\" 4084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 4085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f \"\$progdir/\$program\"; then" 4090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # fixup the dll searchpath if we need to. 4092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 4093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Fix the DLL searchpath if we need to. Do this before prepending 4094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # to shlibpath, because on Windows, both are PATH and uninstalled 4095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # libraries must come first. 4096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dllsearchpath"; then 4097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add the dll search path components to the executable PATH 4099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat PATH=$dllsearchpath:\$PATH 4100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 4101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Export our shlibpath_var if we have one. 4104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add our own library path to $shlibpath_var 4107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Some systems cannot cope with colon-terminated $shlibpath_var 4110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The second colon is a workaround for a bug in BeOS R4 sed 4111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export $shlibpath_var 4114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 4115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "\ 4118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Run the actual program with our arguments. 4120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_exec_program \${1+\"\$@\"} 4121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The program doesn't exist. 4124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit 1 4128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi\ 4130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat" 4131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_emit_cwrapperexe_src 4135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# emit the source code for a wrapper executable on stdout 4136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Must ONLY be called from within func_mode_link because 4137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# it depends on a number of variable set therein. 4138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_emit_cwrapperexe_src () 4139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat The $output program cannot be directly executed until all the libtool 4146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libraries that it depends on are installed. 4147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat This wrapper executable should never be moved out of the build directory. 4149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat If it is, it will not operate correctly. 4150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*/ 4151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef _MSC_VER 4154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define _CRT_SECURE_NO_DEPRECATE 1 4155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <stdio.h> 4157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <stdlib.h> 4158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef _MSC_VER 4159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <direct.h> 4160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <process.h> 4161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <io.h> 4162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else 4163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <unistd.h> 4164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <stdint.h> 4165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifdef __CYGWIN__ 4166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# include <io.h> 4167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif 4168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <malloc.h> 4170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <stdarg.h> 4171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <assert.h> 4172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <string.h> 4173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <ctype.h> 4174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <errno.h> 4175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <fcntl.h> 4176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#include <sys/stat.h> 4177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* declarations of non-ANSI functions */ 4179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(__MINGW32__) 4180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifdef __STRICT_ANSI__ 4181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint _putenv (const char *); 4182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif 4183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__CYGWIN__) 4184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifdef __STRICT_ANSI__ 4185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *realpath (const char *, char *); 4186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint putenv (char *); 4187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint setenv (const char *, const char *, int); 4188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif 4189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* #elif defined (other platforms) ... */ 4190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* portability defines, excluding path handling macros */ 4193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(_MSC_VER) 4194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define setmode _setmode 4195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define stat _stat 4196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define chmod _chmod 4197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define getcwd _getcwd 4198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define putenv _putenv 4199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define S_IXUSR _S_IEXEC 4200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifndef _INTPTR_T_DEFINED 4201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define _INTPTR_T_DEFINED 4202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define intptr_t int 4203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif 4204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__MINGW32__) 4205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define setmode _setmode 4206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define stat _stat 4207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define chmod _chmod 4208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define getcwd _getcwd 4209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define putenv _putenv 4210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(__CYGWIN__) 4211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define HAVE_SETENV 4212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define FOPEN_WB "wb" 4213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* #elif defined (other platforms) ... */ 4214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(PATH_MAX) 4217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_PATHMAX PATH_MAX 4218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#elif defined(MAXPATHLEN) 4219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_PATHMAX MAXPATHLEN 4220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else 4221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define LT_PATHMAX 1024 4222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef S_IXOTH 4225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define S_IXOTH 0 4226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef S_IXGRP 4228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define S_IXGRP 0 4229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* path handling portability macros */ 4232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef DIR_SEPARATOR 4233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define DIR_SEPARATOR '/' 4234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define PATH_SEPARATOR ':' 4235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat defined (__OS2__) 4239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define HAVE_DOS_BASED_FILE_SYSTEM 4240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define FOPEN_WB "wb" 4241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifndef DIR_SEPARATOR_2 4242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define DIR_SEPARATOR_2 '\\' 4243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif 4244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ifndef PATH_SEPARATOR_2 4245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define PATH_SEPARATOR_2 ';' 4246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# endif 4247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef DIR_SEPARATOR_2 4250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else /* DIR_SEPARATOR_2 */ 4252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_DIR_SEPARATOR(ch) \ 4253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* DIR_SEPARATOR_2 */ 4255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef PATH_SEPARATOR_2 4257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else /* PATH_SEPARATOR_2 */ 4259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif /* PATH_SEPARATOR_2 */ 4261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef FOPEN_WB 4263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define FOPEN_WB "w" 4264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef _O_BINARY 4266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# define _O_BINARY 0 4267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define XFREE(stale) do { \ 4271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (stale) { free ((void *) stale); stale = 0; } \ 4272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} while (0) 4273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined(LT_DEBUGWRAPPER) 4275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic int lt_debug = 1; 4276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else 4277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic int lt_debug = 0; 4278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid *xmalloc (size_t num); 4283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *xstrdup (const char *string); 4284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char *base_name (const char *name); 4285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *find_executable (const char *wrapper); 4286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *chase_symlinks (const char *pathspec); 4287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint make_executable (const char *path); 4288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint check_executable (const char *path); 4289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *strendzap (char *str, const char *pat); 4290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_fatal (const char *file, int line, const char *message, ...); 4292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *nonnull (const char *s); 4293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *nonempty (const char *s); 4294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_setenv (const char *name, const char *value); 4295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 4296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_update_exe_path (const char *name, const char *value); 4297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_update_lib_path (const char *name, const char *value); 4298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar **prepare_spawn (char **argv); 4299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_dump_script (FILE *f); 4300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvolatile const char * MAGIC_EXE = "$magic_exe"; 4304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path "$temp_rpath" 4309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * LIB_PATH_VALUE = ""; 4315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dllsearchpath"; then 4319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_host_path "$dllsearchpath:" 4320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VARNAME = "PATH"; 4322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VARNAME = ""; 4327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * EXE_PATH_VALUE = ""; 4328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$fast_install" = yes; then 4332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 4340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#define LTWRAPPER_OPTION_PREFIX "--lt-" 4345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint 4351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmain (int argc, char *argv[]) 4352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char **newargz; 4354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int newargc; 4355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *tmp_pathspec; 4356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *actual_cwrapper_path; 4357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *actual_cwrapper_name; 4358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *target_name; 4359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *lt_argv_zero; 4360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat intptr_t rval = 127; 4361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int i; 4363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat program_name = (char *) xstrdup (base_name (argv[0])); 4365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newargz = XMALLOC (char *, argc + 1); 4366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* very simple arg parsing; don't want to rely on getopt 4368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * also, copy all non cwrapper options to newargz, except 4369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * argz[0], which is handled differently 4370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */ 4371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newargc=0; 4372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (i = 1; i < argc; i++) 4373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (strcmp (argv[i], dumpscript_opt) == 0) 4375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$host" in 4378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *mingw* | *cygwin* ) 4379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # make stdout use "unix" line endings 4380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo " setmode(1,_O_BINARY);" 4381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 4382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 4383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_dump_script (stdout); 4386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 0; 4387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (strcmp (argv[i], debug_opt) == 0) 4389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debug = 1; 4391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue; 4392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat namespace, but it is not one of the ones we know about and 4397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat have already dealt with, above (inluding dump-script), then 4398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat report an error. Otherwise, targets might begin to believe 4399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat namespace. The first time any user complains about this, we'll 4401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat or a configure.ac-settable value. 4403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */ 4404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, 4405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "unrecognized %s option: '%s'", 4406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ltwrapper_option_prefix, argv[i]); 4407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* otherwise ... */ 4409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newargz[++newargc] = xstrdup (argv[i]); 4410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newargz[++newargc] = NULL; 4412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* The GNU banner must be the first non-error debug message */ 4416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = find_executable (argv[0]); 4423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (tmp_pathspec == NULL) 4424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(main) found exe (before symlink chase) at: %s\n", 4427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec); 4428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(main) found exe (after symlink chase) at: %s\n", 4432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat actual_cwrapper_path); 4433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (tmp_pathspec); 4434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strendzap (actual_cwrapper_path, actual_cwrapper_name); 4437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* wrapper name transforms */ 4439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strendzap (actual_cwrapper_name, ".exe"); 4440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (actual_cwrapper_name); 4442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat actual_cwrapper_name = tmp_pathspec; 4443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = 0; 4444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* target_name transforms -- use actual target program name; might have lt- prefix */ 4446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strendzap (target_name, ".exe"); 4448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (target_name); 4450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat target_name = tmp_pathspec; 4451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = 0; 4452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(main) libtool target name: %s\n", 4455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat target_name); 4456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<EOF 4459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newargz[0] = 4460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XMALLOC (char, (strlen (actual_cwrapper_path) + 4461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (newargz[0], actual_cwrapper_path); 4463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcat (newargz[0], "$objdir"); 4464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcat (newargz[0], "/"); 4465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* stop here, and copy so we don't have to do this twice */ 4469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = xstrdup (newargz[0]); 4470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcat (newargz[0], actual_cwrapper_name); 4473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* DO want the lt- prefix here if it exists, so use target_name */ 4475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (tmp_pathspec); 4477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = NULL; 4478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host_os in 4481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat mingw*) 4482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char* p; 4485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while ((p = strchr (newargz[0], '\\')) != NULL) 4486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p = '/'; 4488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p = '/'; 4492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 4496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 4497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (target_name); 4500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (actual_cwrapper_path); 4501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (actual_cwrapper_name); 4502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat because on Windows, both *_VARNAMEs are PATH but uninstalled 4508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libraries must come first. */ 4509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonnull (lt_argv_zero)); 4514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (i = 0; i < newargc; i++) 4515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat i, nonnull (newargz[i])); 4518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host_os in 4523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat mingw*) 4524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* execv doesn't actually work on mingw as expected on unix */ 4526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newargz = prepare_spawn (newargz); 4527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (rval == -1) 4529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* failed to start process */ 4531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(main) failed to launch target \"%s\": %s\n", 4533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_argv_zero, nonnull (strerror (errno))); 4534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 127; 4535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return rval; 4537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 4539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 4540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat execv (lt_argv_zero, newargz); 4542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return rval; /* =127, but avoids unused variable warning */ 4543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 4545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 4546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid * 4551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratxmalloc (size_t num) 4552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat void *p = (void *) malloc (num); 4554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (!p) 4555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return p; 4558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar * 4561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratxstrdup (const char *string) 4562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat string) : NULL; 4565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratconst char * 4568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbase_name (const char *name) 4569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *base; 4571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Skip over the disk name in MSDOS pathnames. */ 4574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name += 2; 4576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (base = name; *name; name++) 4579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (IS_DIR_SEPARATOR (*name)) 4580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat base = name + 1; 4581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return base; 4582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint 4585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcheck_executable (const char *path) 4586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat struct stat st; 4588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonempty (path)); 4591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ((!path) || (!*path)) 4592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 0; 4593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ((stat (path, &st) >= 0) 4595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 1; 4597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 0; 4599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratint 4602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratmake_executable (const char *path) 4603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int rval = 0; 4605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat struct stat st; 4606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonempty (path)); 4609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ((!path) || (!*path)) 4610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return 0; 4611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (stat (path, &st) >= 0) 4613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return rval; 4617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Searches for the full path of the wrapper. Returns 4620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newly allocated full path name if found, NULL otherwise 4621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat Does not chase symlinks, even on platforms that support them. 4622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat*/ 4623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar * 4624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfind_executable (const char *wrapper) 4625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int has_slash = 0; 4627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *p; 4628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *p_next; 4629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* static buffer for getcwd */ 4630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char tmp[LT_PATHMAX + 1]; 4631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int tmp_len; 4632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *concat_name; 4633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonempty (wrapper)); 4636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ((wrapper == NULL) || (*wrapper == '\0')) 4638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return NULL; 4639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Absolute path? */ 4641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name = xstrdup (wrapper); 4645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (check_executable (concat_name)) 4646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return concat_name; 4647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (concat_name); 4648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (IS_DIR_SEPARATOR (wrapper[0])) 4653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name = xstrdup (wrapper); 4655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (check_executable (concat_name)) 4656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return concat_name; 4657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (concat_name); 4658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (p = wrapper; *p; p++) 4664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (*p == '/') 4665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat has_slash = 1; 4667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break; 4668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (!has_slash) 4670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* no slashes; search PATH */ 4672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *path = getenv ("PATH"); 4673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (path != NULL) 4674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (p = path; *p; p = p_next) 4676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *q; 4678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat size_t p_len; 4679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (q = p; *q; q++) 4680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (IS_PATH_SEPARATOR (*q)) 4681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break; 4682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p_len = q - p; 4683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p_next = (*q == '\0' ? q : q + 1); 4684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (p_len == 0) 4685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* empty path: current directory */ 4687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (getcwd (tmp, LT_PATHMAX) == NULL) 4688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonnull (strerror (errno))); 4690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_len = strlen (tmp); 4691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name = 4692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat memcpy (concat_name, tmp, tmp_len); 4694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name[tmp_len] = '/'; 4695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (concat_name + tmp_len + 1, wrapper); 4696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name = 4700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat memcpy (concat_name, p, p_len); 4702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name[p_len] = '/'; 4703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (concat_name + p_len + 1, wrapper); 4704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (check_executable (concat_name)) 4706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return concat_name; 4707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (concat_name); 4708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* not found in PATH; assume curdir */ 4711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Relative path | not found in path: prepend cwd */ 4713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (getcwd (tmp, LT_PATHMAX) == NULL) 4714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonnull (strerror (errno))); 4716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_len = strlen (tmp); 4717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat memcpy (concat_name, tmp, tmp_len); 4719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_name[tmp_len] = '/'; 4720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (concat_name + tmp_len + 1, wrapper); 4721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (check_executable (concat_name)) 4723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return concat_name; 4724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (concat_name); 4725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return NULL; 4726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar * 4729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchase_symlinks (const char *pathspec) 4730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifndef S_ISLNK 4732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return xstrdup (pathspec); 4733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else 4734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char buf[LT_PATHMAX]; 4735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat struct stat s; 4736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *tmp_pathspec = xstrdup (pathspec); 4737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *p; 4738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int has_symlinks = 0; 4739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while (strlen (tmp_pathspec) && !has_symlinks) 4740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "checking path component for symlinks: %s\n", 4743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec); 4744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (lstat (tmp_pathspec, &s) == 0) 4745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (S_ISLNK (s.st_mode) != 0) 4747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat has_symlinks = 1; 4749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break; 4750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* search backwards for last DIR_SEPARATOR */ 4753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p--; 4756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* no more DIR_SEPARATORS left */ 4759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break; 4760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p = '\0'; 4762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, 4766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "error accessing file \"%s\": %s", 4767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec, nonnull (strerror (errno))); 4768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (tmp_pathspec); 4771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (!has_symlinks) 4773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return xstrdup (pathspec); 4775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_pathspec = realpath (pathspec, buf); 4778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (tmp_pathspec == 0) 4779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_fatal (__FILE__, __LINE__, 4781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "could not follow symlinks for %s", pathspec); 4782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return xstrdup (tmp_pathspec); 4784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar * 4788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstrendzap (char *str, const char *pat) 4789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat size_t len, patlen; 4791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat assert (str != NULL); 4793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat assert (pat != NULL); 4794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len = strlen (str); 4796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat patlen = strlen (pat); 4797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (patlen <= len) 4799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat str += len - patlen; 4801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (strcmp (str, pat) == 0) 4802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *str = '\0'; 4803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return str; 4805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid 4808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_debugprintf (const char *file, int line, const char *fmt, ...) 4809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat va_list args; 4811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (lt_debug) 4812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat va_start (args, fmt); 4815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat (void) vfprintf (stderr, fmt, args); 4816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat va_end (args); 4817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic void 4821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_error_core (int exit_status, const char *file, 4822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int line, const char *mode, 4823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *message, va_list ap) 4824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat vfprintf (stderr, message, ap); 4827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fprintf (stderr, ".\n"); 4828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (exit_status >= 0) 4830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit (exit_status); 4831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid 4834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_fatal (const char *file, int line, const char *message, ...) 4835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat va_list ap; 4837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat va_start (ap, message); 4838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat va_end (ap); 4840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char * 4843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnonnull (const char *s) 4844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return s ? s : "(null)"; 4846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratstatic const char * 4849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratnonempty (const char *s) 4850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return (s && !*s) ? "(empty)" : nonnull (s); 4852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid 4855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_setenv (const char *name, const char *value) 4856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(lt_setenv) setting '%s' to '%s'\n", 4859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonnull (name), nonnull (value)); 4860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#ifdef HAVE_SETENV 4862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* always make a copy, for consistency with !HAVE_SETENV */ 4863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *str = xstrdup (value); 4864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat setenv (name, str, 1); 4865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#else 4866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int len = strlen (name) + 1 + strlen (value) + 1; 4867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *str = XMALLOC (char, len); 4868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sprintf (str, "%s=%s", name, value); 4869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (putenv (str) != EXIT_SUCCESS) 4870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (str); 4872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#endif 4874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar * 4878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_extend_str (const char *orig_value, const char *add, int to_end) 4879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *new_value; 4881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (orig_value && *orig_value) 4882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int orig_value_len = strlen (orig_value); 4884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int add_len = strlen (add); 4885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_value = XMALLOC (char, add_len + orig_value_len + 1); 4886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (to_end) 4887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (new_value, orig_value); 4889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (new_value + orig_value_len, add); 4890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (new_value, add); 4894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat strcpy (new_value + add_len, orig_value); 4895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 4898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_value = xstrdup (add); 4900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return new_value; 4902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid 4905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_update_exe_path (const char *name, const char *value) 4906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonnull (name), nonnull (value)); 4910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (name && *name && value && *value) 4912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *new_value = lt_extend_str (getenv (name), value, 0); 4914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* some systems can't cope with a ':'-terminated path #' */ 4915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int len = strlen (new_value); 4916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_value[len-1] = '\0'; 4919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_setenv (name, new_value); 4921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (new_value); 4922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid 4926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlt_update_lib_path (const char *name, const char *value) 4927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_debugprintf (__FILE__, __LINE__, 4929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonnull (name), nonnull (value)); 4931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (name && *name && value && *value) 4933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *new_value = lt_extend_str (getenv (name), value, 0); 4935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_setenv (name, new_value); 4936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat XFREE (new_value); 4937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 4938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 4939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 4941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host_os in 4942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat mingw*) 4943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 4944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat/* Prepares an argument vector before calling spawn(). 4946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat Note that spawn() does not by itself call the command interpreter 4947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat GetVersionEx(&v); 4950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat }) ? "cmd.exe" : "command.com"). 4952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat Instead it simply concatenates the arguments, separated by ' ', and calls 4953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat special way: 4956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat - Space and tab are interpreted as delimiters. They are not treated as 4957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat delimiters if they are surrounded by double quotes: "...". 4958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat - Unescaped double quotes are removed from the input. Their only effect is 4959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat that within double quotes, space and tab are treated like normal 4960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat characters. 4961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat - Backslashes not followed by double quotes are not special. 4962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat - But 2*n+1 backslashes followed by a double quote become 4963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat n backslashes followed by a double quote (n >= 0): 4964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \" -> " 4965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \\\" -> \" 4966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat \\\\\" -> \\" 4967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat */ 4968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#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" 4969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat#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" 4970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratchar ** 4971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratprepare_spawn (char **argv) 4972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 4973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat size_t argc; 4974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char **new_argv; 4975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat size_t i; 4976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Count number of arguments. */ 4978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (argc = 0; argv[argc] != NULL; argc++) 4979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ; 4980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Allocate new argument vector. */ 4982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_argv = XMALLOC (char *, argc + 1); 4983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat /* Put quoted arguments into the new argument vector. */ 4985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (i = 0; i < argc; i++) 4986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *string = argv[i]; 4988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 4989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (string[0] == '\0') 4990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_argv[i] = xstrdup ("\"\""); 4991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 4993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat size_t length; 4995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat unsigned int backslashes; 4996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat const char *s; 4997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *quoted_string; 4998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char *p; 4999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat length = 0; 5001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat backslashes = 0; 5002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (quote_around) 5003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat length++; 5004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (s = string; *s != '\0'; s++) 5005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 5006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char c = *s; 5007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (c == '"') 5008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat length += backslashes + 1; 5009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat length++; 5010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (c == '\\') 5011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat backslashes++; 5012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat backslashes = 0; 5014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 5015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (quote_around) 5016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat length += backslashes + 1; 5017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat quoted_string = XMALLOC (char, length + 1); 5019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat p = quoted_string; 5021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat backslashes = 0; 5022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (quote_around) 5023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p++ = '"'; 5024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (s = string; *s != '\0'; s++) 5025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 5026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat char c = *s; 5027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (c == '"') 5028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 5029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat unsigned int j; 5030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (j = backslashes + 1; j > 0; j--) 5031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p++ = '\\'; 5032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 5033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p++ = c; 5034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (c == '\\') 5035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat backslashes++; 5036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat backslashes = 0; 5038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 5039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (quote_around) 5040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { 5041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat unsigned int j; 5042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for (j = backslashes; j > 0; j--) 5043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p++ = '\\'; 5044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p++ = '"'; 5045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 5046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *p = '\0'; 5047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_argv[i] = quoted_string; 5049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 5050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_argv[i] = (char *) string; 5052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 5053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_argv[argc] = NULL; 5054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat return new_argv; 5056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 5057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 5058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 5062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratvoid lt_dump_script (FILE* f) 5063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 5064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 5065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_emit_wrapper yes | 5066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -n -e ' 5067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/^\(.\{79\}\)\(..*\)/\1\ 5068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat\2/ 5069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erath 5070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/\([\\"]\)/\\\1/g 5071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/$/\\n/ 5072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erats/\([^\n]*\).*/ fputs ("\1", f);/p 5073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratg 5074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratD' 5075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat <<"EOF" 5076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 5077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 5078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 5079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# end: func_emit_cwrapperexe_src 5080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_win32_import_lib_p ARG 5082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# True if ARG is an import lib, as indicated by $file_magic_cmd 5083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_win32_import_lib_p () 5084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 5085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 5086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *import*) : ;; 5088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) false ;; 5089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 5091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_link arg... 5093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_link () 5094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 5095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 5096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 5097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # It is impossible to link a dll without this setting, and 5099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # we shouldn't force the makefile maintainer to figure out 5100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # which system we are compiling for in order to pass an extra 5101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # flag for every libtool invocation. 5102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # allow_undefined=no 5103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: Unfortunately, there are problems with the above when trying 5105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # to make a dll which has undefined symbols, in which case not 5106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # even a static library is built. For now, we need to specify 5107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -no-undefined on the libtool link line when we can be certain 5108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # that all symbols are satisfied, otherwise we get a static library. 5109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat allow_undefined=yes 5110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat allow_undefined=yes 5113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libtool_args=$nonopt 5116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat base_compile="$nonopt $@" 5117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=$nonopt 5118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command=$nonopt 5119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_rpath= 5121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_rpath= 5122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_shlibpath= 5123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_shlibpath= 5124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat convenience= 5125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_convenience= 5126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs= 5127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_deplibs= 5128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compiler_flags= 5129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linker_flags= 5130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dllsearchpath= 5131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib_search_path=`pwd` 5132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat inst_prefix_dir= 5133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_inherited_linker_flags= 5134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat avoid_version=no 5136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat bindir= 5137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlfiles= 5138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefiles= 5139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlself=no 5140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_dynamic=no 5141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols= 5142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols_regex= 5143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat generated= 5144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobjs= 5145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ltlibs= 5146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat module=no 5147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat no_install=no 5148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objs= 5149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_objects= 5150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat precious_files_regex= 5151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prefer_static_libs=no 5152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat preload=no 5153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prevarg= 5155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat release= 5156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath= 5157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xrpath= 5158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat perm_rpath= 5159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat temp_rpath= 5160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat thread_safe=no 5161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat vinfo= 5162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat vinfo_number=no 5163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat weak_libs= 5164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat single_module="${wl}-single_module" 5165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_infer_tag $base_compile 5166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need to know -static, to get the right output filenames. 5168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg 5169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 5170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 5171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shared) 5172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_libtool_libs" != yes && \ 5173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_configuration "can not build a shared library" 5174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=no 5175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 5176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -all-static | -static | -static-libtool-libs) 5178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 5179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -all-static) 5180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "complete static linking is impossible in this configuration" 5182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$link_static_flag"; then 5184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopen_self=$dlopen_self_static 5185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prefer_static_libs=yes 5187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static) 5189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopen_self=$dlopen_self_static 5191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prefer_static_libs=built 5193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static-libtool-libs) 5195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopen_self=$dlopen_self_static 5197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prefer_static_libs=yes 5199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 5202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 5203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 5204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 5207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See if our shared archives depend on static archives. 5209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Go through the arguments, transforming them on the way. 5212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test "$#" -gt 0; do 5213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$1" 5214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 5215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 5216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat qarg=$func_quote_for_eval_unquoted_result 5217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libtool_args " $func_quote_for_eval_result" 5218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the previous option needs an argument, assign it. 5220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$prev"; then 5221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $prev in 5222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output) 5223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " @OUTPUT@" 5224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " @OUTPUT@" 5225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $prev in 5229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat bindir) 5230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat bindir="$arg" 5231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlfiles|dlprefiles) 5235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$preload" = no; then 5236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add the symbol object into the linking commands. 5237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " @SYMFILE@" 5238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " @SYMFILE@" 5239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat preload=yes 5240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 5242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la | *.lo) ;; # We handle these cases below. 5243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat force) 5244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$dlself" = no; then 5245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlself=needless 5246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_dynamic=yes 5247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat self) 5252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlprefiles; then 5253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlself=yes 5254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlself=yes 5256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlself=needless 5258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_dynamic=yes 5259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlfiles; then 5265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlfiles " $arg" 5266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlprefiles " $arg" 5268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat expsyms) 5275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols="$arg" 5276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -f "$arg" \ 5277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat || func_fatal_error "symbol file \`$arg' does not exist" 5278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat expsyms_regex) 5282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols_regex="$arg" 5283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat framework) 5287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 5288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-darwin*) 5289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$deplibs " in 5290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $qarg.ltframework "*) ;; 5291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat inst_prefix) 5300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat inst_prefix_dir="$arg" 5301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objectlist) 5305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$arg"; then 5306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_arg=$arg 5307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat moreargs= 5308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for fil in `cat "$save_arg"` 5309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 5310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_append moreargs " $fil" 5311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg=$fil 5312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A libtool-controlled object. 5313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that this really is a libtool object. 5315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_lalib_unsafe_p "$arg"; then 5316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_object= 5317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object= 5318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Read the .lo file 5320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$arg" 5321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$pic_object" || 5323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$non_pic_object" || 5324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$pic_object" = none && 5325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$non_pic_object" = none; then 5326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot find name of object for \`$arg'" 5327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract subdirectory from the argument. 5330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$arg" "/" "" 5331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xdir="$func_dirname_result" 5332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pic_object" != none; then 5334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prepend the subdirectory the object is found in. 5335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_object="$xdir$pic_object" 5336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlfiles; then 5338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlfiles " $pic_object" 5340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If libtool objects are unsupported, then we need to preload. 5344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=dlprefiles 5345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # CHECK ME: I think I busted this. -Ossama 5349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlprefiles; then 5350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Preload the old-style object. 5351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlprefiles " $pic_object" 5352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A PIC object. 5356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $pic_object" 5357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$pic_object" 5358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Non-PIC object. 5361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$non_pic_object" != none; then 5362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prepend the subdirectory the object is found in. 5363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object="$xdir$non_pic_object" 5364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A standard non-PIC object 5366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append non_pic_objects " $non_pic_object" 5367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$pic_object" || test "$pic_object" = none ; then 5368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$non_pic_object" 5369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the PIC object exists, use it instead. 5372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # $xdir was prepended to $pic_object above. 5373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object="$pic_object" 5374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append non_pic_objects " $non_pic_object" 5375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only an error if not doing a dry-run. 5378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_dry_run; then 5379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract subdirectory from the argument. 5380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$arg" "/" "" 5381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xdir="$func_dirname_result" 5382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lo2o "$arg" 5384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_object=$xdir$objdir/$func_lo2o_result 5385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object=$xdir$func_lo2o_result 5386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $pic_object" 5387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append non_pic_objects " $non_pic_object" 5388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$arg' is not a valid libtool object" 5390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 5393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "link input file \`$arg' does not exist" 5395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg=$save_arg 5397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat precious_regex) 5401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat precious_files_regex="$arg" 5402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat release) 5406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat release="-$arg" 5407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath | xrpath) 5411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need an absolute path. 5412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 5413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) ;; 5414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "only absolute run-paths are allowed" 5416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = rpath; then 5419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$rpath " in 5420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $arg "*) ;; 5421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append rpath " $arg" ;; 5422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$xrpath " in 5425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $arg "*) ;; 5426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append xrpath " $arg" ;; 5427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shrext) 5433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shrext_cmds="$arg" 5434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat weak) 5438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append weak_libs " $arg" 5439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xcclinker) 5443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append linker_flags " $qarg" 5444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $qarg" 5445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $qarg" 5447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $qarg" 5448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xcompiler) 5451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $qarg" 5452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $qarg" 5454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $qarg" 5455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xlinker) 5458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append linker_flags " $qarg" 5459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $wl$qarg" 5460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $wl$qarg" 5462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $wl$qarg" 5463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$prev=\"\$arg\"" 5467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # test -n "$prev" 5472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prevarg="$arg" 5474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 5476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -all-static) 5477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$link_static_flag"; then 5478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See comment for -static flag below, for more details. 5479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $link_static_flag" 5480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $link_static_flag" 5481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -allow-undefined) 5486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: remove this flag sometime in the future. 5487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -avoid-version) 5491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat avoid_version=yes 5492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -bindir) 5496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=bindir 5497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -dlopen) 5501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=dlfiles 5502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -dlpreopen) 5506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=dlprefiles 5507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -export-dynamic) 5511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_dynamic=yes 5512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -export-symbols | -export-symbols-regex) 5516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "more than one -exported-symbols argument is not allowed" 5518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$arg" = "X-export-symbols"; then 5520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=expsyms 5521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=expsyms_regex 5523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -framework) 5528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=framework 5529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -inst-prefix-dir) 5533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=inst_prefix 5534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # so, if we see these flags be careful not to treat them like -L 5539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L[A-Z][A-Z]*:*) 5540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $with_gcc/$host in 5541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat no/*-*-irix* | /*-*-irix*) 5542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $arg" 5543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $arg" 5544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) 5550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname "-L" '' "$arg" 5551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$func_stripname_result"; then 5552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$#" -gt 0; then 5553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "require no space between \`-L' and \`$1'" 5554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "need path for \`-L' option" 5556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$func_stripname_result" 5559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir=$func_resolve_sysroot_result 5560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need an absolute path. 5561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $dir in 5562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) ;; 5563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir=`cd "$dir" && pwd` 5565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$absdir" && \ 5566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$absdir" 5568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$deplibs " in 5571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" -L$dir "* | *" $arg "*) 5572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Will only happen for absolute or sysroot arguments 5573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Preserve sysroot, but never include relative directories 5576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $dir in 5577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append deplibs " -L$dir" ;; 5579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append lib_search_path " $dir" 5581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 5584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$dllsearchpath: in 5587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$dir:"*) ;; 5588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ::) dllsearchpath=$dir;; 5589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append dllsearchpath ":$dir";; 5590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$dllsearchpath: in 5592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$testbindir:"*) ;; 5593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ::) dllsearchpath=$testbindir;; 5594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append dllsearchpath ":$testbindir";; 5595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -l*) 5602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 5604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # These systems don't actually have a C or math library (as such) 5606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-os2*) 5609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # These systems don't actually have a C library (as such) 5610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$arg" = "X-lc" && continue 5611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do not include libc due to us having libc/libc_r. 5614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$arg" = "X-lc" && continue 5615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-rhapsody* | *-*-darwin1.[012]) 5617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Rhapsody C and math libraries are in the System framework 5618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append deplibs " System.ltframework" 5619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sco3.2v5* | *-*-sco5v6*) 5622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Causes problems with __ctype 5623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$arg" = "X-lc" && continue 5624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Compiler inserts libc in the correct place for threads to work 5627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$arg" = "X-lc" && continue 5628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "X$arg" = "X-lc_r"; then 5631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 5632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do not include libc_r directly, use -pthread flag. 5634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append deplibs " $arg" 5639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -module) 5643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat module=yes 5644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # classes, name mangling, and exception handling. 5649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Darwin uses the -arch flag to determine output architecture. 5650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -model|-arch|-isysroot|--sysroot) 5651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $arg" 5652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $arg" 5653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $arg" 5654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=xcompiler 5655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $arg" 5661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $arg" 5662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $arg" 5663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$new_inherited_linker_flags " in 5664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $arg "*) ;; 5665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * ) func_append new_inherited_linker_flags " $arg" ;; 5666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -multi_module) 5671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat single_module="${wl}-multi_module" 5672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-fast-install) 5676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fast_install=no 5677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-install) 5681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 5682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The PATH hackery in wrapper scripts is required on Windows 5684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and Darwin in order for the loader to find any dlls it needs. 5685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-no-install' is ignored for $host" 5686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "assuming \`-no-fast-install' instead" 5687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fast_install=no 5688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) no_install=yes ;; 5690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -no-undefined) 5695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat allow_undefined=no 5696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -objectlist) 5700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=objectlist 5701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -o) prev=output ;; 5705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -precious-files-regex) 5707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=precious_regex 5708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -release) 5712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=release 5713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -rpath) 5717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=rpath 5718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R) 5722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=xrpath 5723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R*) 5727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-R' '' "$arg" 5728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir=$func_stripname_result 5729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need an absolute path. 5730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $dir in 5731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) ;; 5732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat =*) 5733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '=' '' "$dir" 5734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir=$lt_sysroot$func_stripname_result 5735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "only absolute run-paths are allowed" 5738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$xrpath " in 5741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $dir "*) ;; 5742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append xrpath " $dir" ;; 5743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 5744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shared) 5748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The effects of -shared are defined in a previous loop. 5749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -shrext) 5753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=shrext 5754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -static | -static-libtool-libs) 5758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The effects of -static are defined in a previous loop. 5759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We used to do the same as -all-static on platforms that 5760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # didn't have a PIC flag, but the assumption that the effects 5761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # would be equivalent was wrong. It would break on at least 5762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Digital Unix and AIX. 5763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -thread-safe) 5767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat thread_safe=yes 5768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -version-info) 5772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=vinfo 5773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -version-number) 5777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=vinfo 5778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat vinfo_number=yes 5779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -weak) 5783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=weak 5784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Wc,*) 5788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-Wc,' '' "$arg" 5789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat args=$func_stripname_result 5790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg= 5791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS=',' 5792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for flag in $args; do 5793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 5794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$flag" 5795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append arg " $func_quote_for_eval_result" 5796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $func_quote_for_eval_result" 5797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 5798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 5799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname ' ' '' "$arg" 5800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg=$func_stripname_result 5801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Wl,*) 5804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-Wl,' '' "$arg" 5805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat args=$func_stripname_result 5806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg= 5807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS=',' 5808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for flag in $args; do 5809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 5810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$flag" 5811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append arg " $wl$func_quote_for_eval_result" 5812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $wl$func_quote_for_eval_result" 5813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append linker_flags " $func_quote_for_eval_result" 5814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 5815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 5816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname ' ' '' "$arg" 5817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg=$func_stripname_result 5818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Xcompiler) 5821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=xcompiler 5822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -Xlinker) 5826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=xlinker 5827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -XCClinker) 5831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=xcclinker 5832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -msg_* for osf cc 5836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -msg_*) 5837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 5838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$func_quote_for_eval_result" 5839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Flags to be passed through unchanged, with rationale: 5842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -r[0-9][0-9]* specify processor for the SGI compiler 5844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # +DA*, +DD* enable 64-bit mode for the HP compiler 5846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -q* compiler args for the IBM compiler 5847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -F/path path to uninstalled frameworks, gcc on darwin 5849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # @file GCC response files 5851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -tp=* Portland pgcc target processor selection 5852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # --sysroot=* for sysroot support 5853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 5858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$func_quote_for_eval_result" 5859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $arg" 5860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $arg" 5861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $arg" 5862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Some other compiler flag. 5866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -* | +*) 5867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 5868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$func_quote_for_eval_result" 5869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$objext) 5872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A standard object. 5873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append objs " $arg" 5874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) 5877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A libtool-controlled object. 5878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that this really is a libtool object. 5880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_lalib_unsafe_p "$arg"; then 5881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_object= 5882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object= 5883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Read the .lo file 5885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$arg" 5886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$pic_object" || 5888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$non_pic_object" || 5889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$pic_object" = none && 5890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$non_pic_object" = none; then 5891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot find name of object for \`$arg'" 5892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract subdirectory from the argument. 5895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$arg" "/" "" 5896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xdir="$func_dirname_result" 5897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pic_object" != none; then 5899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prepend the subdirectory the object is found in. 5900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_object="$xdir$pic_object" 5901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlfiles; then 5903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlfiles " $pic_object" 5905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If libtool objects are unsupported, then we need to preload. 5909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev=dlprefiles 5910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # CHECK ME: I think I busted this. -Ossama 5914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlprefiles; then 5915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Preload the old-style object. 5916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlprefiles " $pic_object" 5917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A PIC object. 5921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $pic_object" 5922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$pic_object" 5923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Non-PIC object. 5926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$non_pic_object" != none; then 5927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prepend the subdirectory the object is found in. 5928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object="$xdir$non_pic_object" 5929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A standard non-PIC object 5931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append non_pic_objects " $non_pic_object" 5932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$pic_object" || test "$pic_object" = none ; then 5933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$non_pic_object" 5934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the PIC object exists, use it instead. 5937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # $xdir was prepended to $pic_object above. 5938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object="$pic_object" 5939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append non_pic_objects " $non_pic_object" 5940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only an error if not doing a dry-run. 5943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_dry_run; then 5944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract subdirectory from the argument. 5945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$arg" "/" "" 5946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xdir="$func_dirname_result" 5947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lo2o "$arg" 5949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pic_object=$xdir$objdir/$func_lo2o_result 5950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat non_pic_object=$xdir$func_lo2o_result 5951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $pic_object" 5952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append non_pic_objects " $non_pic_object" 5953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$arg' is not a valid libtool object" 5955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$libext) 5960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # An archive. 5961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append deplibs " $arg" 5962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append old_deplibs " $arg" 5963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 5967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # A libtool-controlled library. 5968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$arg" 5970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$prev" = dlfiles; then 5971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This library was specified with -dlopen. 5972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlfiles " $func_resolve_sysroot_result" 5973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$prev" = dlprefiles; then 5975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The library was specified with -dlpreopen. 5976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlprefiles " $func_resolve_sysroot_result" 5977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prev= 5978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 5979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append deplibs " $func_resolve_sysroot_result" 5980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 5982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Some other compiler argument. 5985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 5986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Unknown arguments in both finalize_command and compile_command need 5987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # to be aesthetically quoted because they are evaled later. 5988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$arg" 5989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat arg="$func_quote_for_eval_result" 5990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 5991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac # arg 5992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 5993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now actually substitute the argument into the commands. 5994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$arg"; then 5995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $arg" 5996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $arg" 5997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 5998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # argument parsing loop 5999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$prev" && \ 6001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "the \`$prevarg' option requires an argument" 6002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval arg=\"$export_dynamic_flag_spec\" 6005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $arg" 6006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $arg" 6007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlibs= 6010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # calculate the name of the file, without its directory 6011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$output" 6012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat outputname="$func_basename_result" 6013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobjs_save="$libobjs" 6014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$shlibpath_var"; then 6016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # get the directories listed in $shlibpath_var 6017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shlib_search_path= 6020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$output" "/" "" 6025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_objdir="$func_dirname_result$objdir" 6026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output_objdir/" 6027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tool_output_objdir=$func_to_tool_file_result 6028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Create the object directory. 6029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mkdir_p "$output_objdir" 6030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Determine the type of output 6032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $output in 6033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat "") 6034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify an output file" 6035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$libext) linkmode=oldlib ;; 6037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo | *.$objext) linkmode=obj ;; 6038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) linkmode=lib ;; 6039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) linkmode=prog ;; # Anything else should be a program. 6040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat specialdeplibs= 6043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libs= 6045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Find all interdependent deplibs by searching for libraries 6046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # that are linked more than once (e.g. -la -lb -la) 6047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $deplibs; do 6048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_preserve_dup_deps ; then 6049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$libs " in 6050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libs " $deplib" 6054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib; then 6057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Compute libraries that are listed more than once in $predeps 6060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # $postdeps and mark them as special (i.e., whose duplicates are 6061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # not to be eliminated). 6062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pre_post_deps= 6063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_duplicate_compiler_generated_deps; then 6064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for pre_post_dep in $predeps $postdeps; do 6065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$pre_post_deps " in 6066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append pre_post_deps " $pre_post_dep" 6069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pre_post_deps= 6072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs= 6075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdependency_libs= 6076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newlib_search_path= 6077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat need_relink=no # whether we're linking any uninstalled libtool libraries 6078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat notinst_deplibs= # not-installed libtool libraries 6079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat notinst_path= # paths that contain not-installed libtool libraries 6080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $linkmode in 6082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib) 6083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat passes="conv dlpreopen link" 6084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file in $dlfiles $dlprefiles; do 6085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 6086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) ;; 6087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prog) 6094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs= 6095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs= 6096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat alldeplibs=no 6097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdlfiles= 6098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdlprefiles= 6099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat passes="conv scan dlopen dlpreopen link" 6100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) passes="conv" 6102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for pass in $passes; do 6106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The preopen pass in lib mode reverses $deplibs; put it back here 6107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # so that -L comes before libs that need it for instance... 6108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "lib,link"; then 6109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ## FIXME: Find the place where the list is rebuilt in the wrong 6110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ## order, and fix it there properly 6111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_deplibs= 6112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $deplibs; do 6113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_deplibs="$deplib $tmp_deplibs" 6114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$tmp_deplibs" 6116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "lib,link" || 6119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$linkmode,$pass" = "prog,scan"; then 6120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libs="$deplibs" 6121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs= 6122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog; then 6124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $pass in 6125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopen) libs="$dlfiles" ;; 6126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlpreopen) libs="$dlprefiles" ;; 6127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link) 6128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libs="$deplibs %DEPLIBS%" 6129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 6130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "lib,dlpreopen"; then 6134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Collect and forward deplibs of preopened libtool libs 6135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $dlprefiles; do 6136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Ignore non-libtool-libs 6137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs= 6138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$lib" 6139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $lib in 6140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) func_source "$func_resolve_sysroot_result" ;; 6141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Collect preopened libtool deplibs, except any this library 6144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # has declared as weak libs 6145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $dependency_libs; do 6146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$deplib" 6147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplib_base=$func_basename_result 6148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $weak_libs " in 6149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib_base "*) ;; 6150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append deplibs " $deplib" ;; 6151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libs="$dlprefiles" 6155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = dlopen; then 6157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Collect dlpreopened libraries 6158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_deplibs="$deplibs" 6159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs= 6160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $libs; do 6163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib= 6164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat found=no 6165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 6166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "prog,link"; then 6169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " $deplib" 6173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib ; then 6174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$new_inherited_linker_flags " in 6175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 6176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * ) func_append new_inherited_linker_flags " $deplib" ;; 6177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -l*) 6183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" != lib && test "$linkmode" != prog; then 6184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-l' is ignored for archives/objects" 6185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-l' '' "$deplib" 6188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 6189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib; then 6190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for searchdir in $searchdirs; do 6195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for search_ext in .la $std_shrext .so .a; do 6196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Search the libtool library 6197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib="$searchdir/lib${name}${search_ext}" 6198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$lib"; then 6199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$search_ext" = ".la"; then 6200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat found=yes 6201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat found=no 6203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 2 6205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$found" != yes; then 6209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # deplib doesn't seem to be a libtool library 6210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "prog,link"; then 6211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else # deplib is a libtool library 6219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need to do some special things here, and not later. 6221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $predeps $postdeps " in 6223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) 6224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_lalib_p "$lib"; then 6225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat library_names= 6226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_library= 6227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$lib" 6228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for l in $old_library $library_names; do 6229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ll="$l" 6230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$ll" = "X$old_library" ; then # only static version available 6232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat found=no 6233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$lib" "" "." 6234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ladir="$func_dirname_result" 6235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib=$ladir/$old_library 6236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "prog,link"; then 6237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) ;; 6248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; # -l 6252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.ltframework) 6253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "prog,link"; then 6254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib ; then 6259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$new_inherited_linker_flags " in 6260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 6261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * ) func_append new_inherited_linker_flags " $deplib" ;; 6262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) 6268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $linkmode in 6269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib) 6270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$pass" = conv && continue 6272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdependency_libs="$deplib $newdependency_libs" 6273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-L' '' "$deplib" 6274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$func_stripname_result" 6275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newlib_search_path " $func_resolve_sysroot_result" 6276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prog) 6278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = conv; then 6279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = scan; then 6283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-L' '' "$deplib" 6289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$func_stripname_result" 6290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newlib_search_path " $func_resolve_sysroot_result" 6291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-L' is ignored for archives/objects" 6294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac # linkmode 6296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; # -L 6298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R*) 6299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = link; then 6300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '-R' '' "$deplib" 6301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$func_stripname_result" 6302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir=$func_resolve_sysroot_result 6303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure the xrpath contains only unique directories. 6304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$xrpath " in 6305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $dir "*) ;; 6306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append xrpath " $dir" ;; 6307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 6313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$deplib" 6314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib=$func_resolve_sysroot_result 6315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$libext) 6317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = conv; then 6318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $linkmode in 6322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib) 6323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Linking convenience modules into shared libraries is allowed, 6324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # but linking other static libraries is non-portable. 6325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $dlpreconveniencelibs " in 6326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 6327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat valid_a_lib=no 6329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplibs_check_method in 6330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat match_pattern*) 6331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $deplibs_check_method; shift 6332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat | $EGREP "$match_pattern_regex" > /dev/null; then 6335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat valid_a_lib=yes 6336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pass_all) 6339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat valid_a_lib=yes 6340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$valid_a_lib" != yes; then 6343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 6344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** I have the capability to make that library automatically link in when" 6346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** you link to this library. But I can only do this if you have a" 6347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** shared version of the library, which you do not appear to have" 6348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** because the file extensions .$libext of this argument makes me believe" 6349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** that it is just a static archive that I should not use here." 6350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 6352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: Linking the shared library $output against the" 6353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** static library $deplib is not portable!" 6354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prog) 6361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" != link; then 6362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac # linkmode 6370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; # *.$libext 6371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo | *.$objext) 6372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = conv; then 6373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$linkmode" = prog; then 6375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If there is no dlopen support or we're linking statically, 6377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # we need to preload. 6378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $deplib" 6379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$deplib $compile_deplibs" 6380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$deplib $finalize_deplibs" 6381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlfiles " $deplib" 6383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat %DEPLIBS%) 6388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat alldeplibs=yes 6389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac # case $deplib 6392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$found" = yes || test -f "$lib"; then : 6394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see that this really is a libtool archive. 6399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lalib_unsafe_p "$lib" \ 6400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat || func_fatal_error "\`$lib' is not a valid libtool archive" 6401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$lib" "" "." 6403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ladir="$func_dirname_result" 6404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlname= 6406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopen= 6407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlpreopen= 6408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir= 6409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat library_names= 6410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_library= 6411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat inherited_linker_flags= 6412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the library was installed with an old release of libtool, 6413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # it will not redefine variables installed, or shouldnotlink 6414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat installed=yes 6415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shouldnotlink=no 6416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat avoidtemprpath= 6417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Read the .la file 6420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source "$lib" 6421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Convert "-framework foo" to "foo.ltframework" 6423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$inherited_linker_flags"; then 6424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $new_inherited_linker_flags " in 6427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $tmp_inherited_linker_flag "*) ;; 6428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "lib,link" || 6434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$linkmode,$pass" = "prog,scan" || 6435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$dlopen" && func_append dlfiles " $dlopen" 6437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = conv; then 6441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only check for convenience libraries 6442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$lib $deplibs" 6443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$libdir"; then 6444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$old_library"; then 6445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot find name of link library for \`$lib'" 6446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # It is a libtool convenience library, so add in its objects. 6448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append convenience " $ladir/$objdir/$old_library" 6449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append old_convenience " $ladir/$objdir/$old_library" 6450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_libs= 6451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $dependency_libs; do 6452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_preserve_dup_deps ; then 6454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$tmp_libs " in 6455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append tmp_libs " $deplib" 6459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$linkmode" != prog && test "$linkmode" != lib; then 6461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$lib' is not a convenience library" 6462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $pass = conv 6465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Get the name of the library we link against. 6468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linklib= 6469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$old_library" && 6470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test "$prefer_static_libs" = yes || 6471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$prefer_static_libs,$installed" = "built,no"; }; then 6472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linklib=$old_library 6473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for l in $old_library $library_names; do 6475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linklib="$l" 6476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$linklib"; then 6479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot find name of link library for \`$lib'" 6480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This library was specified with -dlopen. 6483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = dlopen; then 6484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$libdir"; then 6485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$dlname" || 6488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$dlopen_support" != yes || 6489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_libtool_libs" = no; then 6490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If there is no dlname, no dlopen support or we're linking 6491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # statically, we need to preload. We also need to preload any 6492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # dependent libraries so libltdl's deplib preloader doesn't 6493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # bomb out in the load deplibs phase. 6494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlprefiles " $lib $dependency_libs" 6495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlfiles " $lib" 6497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $pass = dlopen 6500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need an absolute path. 6502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $ladir in 6503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat abs_ladir=`cd "$ladir" && pwd` 6506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$abs_ladir"; then 6507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "cannot determine absolute directory name of \`$ladir'" 6508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "passing it literally to the linker, although it might fail" 6509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat abs_ladir="$ladir" 6510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$lib" 6514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat laname="$func_basename_result" 6515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Find the relevant object directory and library name. 6517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$installed" = Xyes; then 6518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "library \`$lib' was moved." 6520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$ladir" 6521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir="$abs_ladir" 6522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir="$abs_ladir" 6523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$lt_sysroot$libdir" 6525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir="$lt_sysroot$libdir" 6526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$ladir" 6531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir="$abs_ladir" 6532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove this search path later 6533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append notinst_path " $abs_ladir" 6534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$ladir/$objdir" 6536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir="$abs_ladir/$objdir" 6537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove this search path later 6538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append notinst_path " $abs_ladir" 6539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $installed = yes 6541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname 'lib' '.la' "$laname" 6542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 6543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This library was specified with -dlpreopen. 6545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = dlpreopen; then 6546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$libdir" && test "$linkmode" = prog; then 6547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$host" in 6550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # special handling for platforms with PE-DLLs. 6551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *cegcc* ) 6552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Linker will automatically link against shared library if both 6553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # static and shared are present. Therefore, ensure we extract 6554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # symbols from the import library if a shared library is present 6555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # (otherwise, the dlopen module name will be incorrect). We do 6556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # this by putting the import library name into $newdlprefiles. 6557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We recover the dlopen module name by 'saving' the la file 6558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # name in a special purpose variable, and (later) extracting the 6559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # dlname from the la file. 6560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlname"; then 6561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_tr_sh "$dir/$linklib" 6562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $dir/$linklib" 6564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $dir/$old_library" 6566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Keep a list of preopened convenience libraries to check 6567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # that they are being used correctly in the link pass. 6568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libdir" && \ 6569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlpreconveniencelibs " $dir/$old_library" 6570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * ) 6573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prefer using a static library (so that no silly _DYNAMIC symbols 6574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # are required to link). 6575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$old_library"; then 6576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $dir/$old_library" 6577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Keep a list of preopened convenience libraries to check 6578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # that they are being used correctly in the link pass. 6579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libdir" && \ 6580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dlpreconveniencelibs " $dir/$old_library" 6581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Otherwise, use the dlname, so that lt_dlopen finds it. 6582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$dlname"; then 6583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $dir/$dlname" 6584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $dir/$linklib" 6586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $pass = dlpreopen 6590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$libdir"; then 6592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Link the convenience library 6593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib; then 6594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$dir/$old_library $deplibs" 6595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$linkmode,$pass" = "prog,link"; then 6596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$dir/$old_library $compile_deplibs" 6597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$dir/$old_library $finalize_deplibs" 6598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$lib $deplibs" # used for prog,scan pass 6600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog && test "$pass" != link; then 6606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newlib_search_path " $ladir" 6607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$lib $deplibs" 6608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linkalldeplibs=no 6610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$link_all_deplibs" != no || test -z "$library_names" || 6611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_libtool_libs" = no; then 6612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linkalldeplibs=yes 6613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_libs= 6616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $dependency_libs; do 6617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 6618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) func_stripname '-L' '' "$deplib" 6619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$func_stripname_result" 6620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newlib_search_path " $func_resolve_sysroot_result" 6621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Need to link against all dependency_libs? 6624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkalldeplibs" = yes; then 6625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 6626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Need to hardcode shared library paths 6628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # or/and link against static libraries 6629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdependency_libs="$deplib $newdependency_libs" 6630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_preserve_dup_deps ; then 6632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$tmp_libs " in 6633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append tmp_libs " $deplib" 6637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # for deplib 6638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $linkmode = prog... 6640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" = "prog,link"; then 6642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$library_names" && 6643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { { test "$prefer_static_libs" = no || 6644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$prefer_static_libs,$installed" = "built,yes"; } || 6645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$old_library"; }; then 6646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need to hardcode the library path 6647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure the rpath contains only unique directories. 6649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$temp_rpath:" in 6650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *"$absdir:"*) ;; 6651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append temp_rpath "$absdir:" ;; 6652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Hardcode the library path. 6656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Skip directories that are in the system default run-time 6657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # search path. 6658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $sys_lib_dlsearch_path " in 6659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $absdir "*) ;; 6660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$compile_rpath " in 6662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $absdir "*) ;; 6663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append compile_rpath " $absdir" ;; 6664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $sys_lib_dlsearch_path " in 6668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 6669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$finalize_rpath " in 6671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 6672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_rpath " $libdir" ;; 6673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # $linkmode,$pass = prog,link... 6677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$alldeplibs" = yes && 6679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test "$deplibs_check_method" = pass_all || 6680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test "$build_libtool_libs" = yes && 6681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$library_names"; }; }; then 6682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We only need to search for static libraries 6683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 6684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_static=no # Whether the deplib will be linked statically 6688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat use_static_libs=$prefer_static_libs 6689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$use_static_libs" = built && test "$installed" = yes; then 6690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat use_static_libs=no 6691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$library_names" && 6693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test "$use_static_libs" = no || test -z "$old_library"; }; then 6694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 6695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* | *cegcc*) 6696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # No point in relinking DLLs because paths are not encoded 6697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append notinst_deplibs " $lib" 6698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat need_relink=no 6699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$installed" = no; then 6702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append notinst_deplibs " $lib" 6703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat need_relink=yes 6704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This is a shared library 6708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Warn about portability, can't link against -module's on some 6710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # systems (darwin). Don't bleat about dlopened modules though! 6711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopenmodule="" 6712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dlpremoduletest in $dlprefiles; do 6713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$dlpremoduletest" = "X$lib"; then 6714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlopenmodule="$dlpremoduletest" 6715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 6716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 6718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 6720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog; then 6721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: Linking the executable $output against the loadable module" 6722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** $linklib is not portable!" 6726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib && 6728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$hardcode_into_libs" = yes; then 6729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Hardcode the library path. 6730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Skip directories that are in the system default run-time 6731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # search path. 6732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $sys_lib_dlsearch_path " in 6733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $absdir "*) ;; 6734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$compile_rpath " in 6736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $absdir "*) ;; 6737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append compile_rpath " $absdir" ;; 6738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $sys_lib_dlsearch_path " in 6742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 6743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 6744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$finalize_rpath " in 6745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 6746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_rpath " $libdir" ;; 6747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$old_archive_from_expsyms_cmds"; then 6753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # figure out the soname 6754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $library_names 6755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 6756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat realname="$1" 6757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 6758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=`eval "\\$ECHO \"$libname_spec\""` 6759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # use dlname if we got it. it's perfectly good, no? 6760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlname"; then 6761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat soname="$dlname" 6762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$soname_spec"; then 6763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # bleh windows 6764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 6765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | mingw* | *cegcc*) 6766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age 6767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=$func_arith_result 6768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix="-$major" 6769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval soname=\"$soname_spec\" 6772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat soname="$realname" 6774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make a new name for the extract_expsyms_cmds to use 6777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat soroot="$soname" 6778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$soroot" 6779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat soname="$func_basename_result" 6780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname 'lib' '.dll' "$soname" 6781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newlib=libimp-$func_stripname_result.a 6782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the library has no export list, then create one now 6784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$output_objdir/$soname-def"; then : 6785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "extracting exported symbol list from \`$soname'" 6787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Create $newlib 6791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$output_objdir/$newlib"; then :; else 6792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "generating import library for \`$soname'" 6793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # make sure the library variables are pointing to the new library 6796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir=$output_objdir 6797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linklib=$newlib 6798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # test -n "$old_archive_from_expsyms_cmds" 6799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog || test "$opt_mode" != relink; then 6801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_shlibpath= 6802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_dir= 6803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add= 6804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib_linked=yes 6805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $hardcode_action in 6806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat immediate | unsupported) 6807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_direct" = no; then 6808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$dir/$linklib" 6809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 6810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-unixware7*) add_dir="-L$dir" ;; 6814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-darwin* ) 6815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # if the lib is a (non-dlopened) module then we can not 6816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # link against it, someone is ignoring the earlier warnings 6817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if /usr/bin/file -L $add 2> /dev/null | 6818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $GREP ": [^:]* bundle" >/dev/null ; then 6819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$dlopenmodule" != "X$lib"; then 6820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$old_library" ; then 6822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 6823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** And there doesn't seem to be a static archive available" 6824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** The link will probably fail, sorry" 6825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$dir/$old_library" 6827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$old_library"; then 6829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$dir/$old_library" 6830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_minus_L" = no; then 6834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 6835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sunos*) add_shlibpath="$dir" ;; 6836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_dir="-L$dir" 6838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_shlibpath_var" = no; then 6840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_shlibpath="$dir" 6841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib_linked=no 6844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink) 6847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_direct" = yes && 6848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$hardcode_direct_absolute" = no; then 6849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$dir/$linklib" 6850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_minus_L" = yes; then 6851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_dir="-L$absdir" 6852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Try looking first in the location we're being installed to. 6853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$inst_prefix_dir"; then 6854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $libdir in 6855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]*) 6856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append add_dir " -L$inst_prefix_dir$libdir" 6857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_shlibpath_var" = yes; then 6862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_shlibpath="$dir" 6863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib_linked=no 6866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) lib_linked=no ;; 6869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$lib_linked" != yes; then 6872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_configuration "unsupported hardcode properties" 6873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$add_shlibpath"; then 6876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$compile_shlibpath: in 6877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$add_shlibpath:"*) ;; 6878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append compile_shlibpath "$add_shlibpath:" ;; 6879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog; then 6882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add" && compile_deplibs="$add $compile_deplibs" 6884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add_dir" && deplibs="$add_dir $deplibs" 6886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add" && deplibs="$add $deplibs" 6887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_direct" != yes && 6888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$hardcode_minus_L" != yes && 6889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$hardcode_shlibpath_var" = yes; then 6890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$finalize_shlibpath: in 6891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$libdir:"*) ;; 6892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_shlibpath "$libdir:" ;; 6893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog || test "$opt_mode" = relink; then 6899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_shlibpath= 6900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_dir= 6901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add= 6902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Finalize command for both is simple: just hardcode it. 6903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_direct" = yes && 6904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$hardcode_direct_absolute" = no; then 6905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$libdir/$linklib" 6906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_minus_L" = yes; then 6907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_dir="-L$libdir" 6908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_shlibpath_var" = yes; then 6910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$finalize_shlibpath: in 6911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$libdir:"*) ;; 6912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_shlibpath "$libdir:" ;; 6913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$hardcode_automatic" = yes; then 6916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$inst_prefix_dir" && 6917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -f "$inst_prefix_dir$libdir/$linklib" ; then 6918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$inst_prefix_dir$libdir/$linklib" 6919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="$libdir/$linklib" 6921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We cannot seem to hardcode it, guess we'll fake it. 6924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add_dir="-L$libdir" 6925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Try looking first in the location we're being installed to. 6926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$inst_prefix_dir"; then 6927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $libdir in 6928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]*) 6929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append add_dir " -L$inst_prefix_dir$libdir" 6930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 6931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 6932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat add="-l$name" 6934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog; then 6937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add_dir" && deplibs="$add_dir $deplibs" 6941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$add" && deplibs="$add $deplibs" 6942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$linkmode" = prog; then 6945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Here we assume that one of hardcode_direct or hardcode_minus_L 6946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # is not unsupported. This is valid on all known static and 6947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # shared platforms. 6948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_direct" != unsupported; then 6949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$old_library" && linklib="$old_library" 6950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$dir/$linklib $compile_deplibs" 6951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$dir/$linklib $finalize_deplibs" 6952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="-l$name -L$dir $compile_deplibs" 6954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$build_libtool_libs" = yes; then 6957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Not a shared library 6958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$deplibs_check_method" != pass_all; then 6959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We're trying link a shared library against a static one 6960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # but the system doesn't support it. 6961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just print a warning and add the library to dependency_libs so 6963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # that the program can be linked against the static library. 6964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 6965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: This system can not link to static lib archive $lib." 6966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** I have the capability to make that library automatically link in when" 6967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** you link to this library. But I can only do this if you have a" 6968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** shared version of the library, which you do not appear to have." 6969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$module" = yes; then 6970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** But as you try to build a module library, libtool will still create " 6971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** a static module, that should work as long as the dlopening application" 6972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$global_symbol_pipe"; then 6974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 6975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** However, this would only work if libtool was able to extract symbol" 6976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** not find such a program. So, this module is probably useless." 6978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** \`nm' from GNU binutils and a full rebuild may help." 6979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = no; then 6981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=module 6982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 6983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 6985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 6988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$dir/$old_library $deplibs" 6989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_static=yes 6990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 6991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # link shared/static library? 6992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 6993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = lib; then 6994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dependency_libs" && 6995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test "$hardcode_into_libs" != yes || 6996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_old_libs" = yes || 6997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$link_static" = yes; }; then 6998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Extract -R from dependency_libs 6999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat temp_deplibs= 7000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $dependency_libs; do 7001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $libdir in 7002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R*) func_stripname '-R' '' "$libdir" 7003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat temp_xrpath=$func_stripname_result 7004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $xrpath " in 7005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $temp_xrpath "*) ;; 7006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append xrpath " $temp_xrpath";; 7007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac;; 7008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append temp_deplibs " $libdir";; 7009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs="$temp_deplibs" 7012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newlib_search_path " $absdir" 7015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Link against this library 7016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # ... and its dependency_libs 7018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_libs= 7019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $dependency_libs; do 7020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdependency_libs="$deplib $newdependency_libs" 7021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 7022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) func_stripname '-L' '' "$deplib" 7023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$func_stripname_result";; 7024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_resolve_sysroot "$deplib" ;; 7025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $opt_preserve_dup_deps ; then 7027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$tmp_libs " in 7028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $func_resolve_sysroot_result "*) 7029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append tmp_libs " $func_resolve_sysroot_result" 7033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$link_all_deplibs" != no; then 7036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add the search paths of all dependency libraries 7037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $dependency_libs; do 7038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat path= 7039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 7040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) path="$deplib" ;; 7041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 7042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$deplib" 7043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplib=$func_resolve_sysroot_result 7044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$deplib" "" "." 7045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir=$func_dirname_result 7046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We need an absolute path. 7047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $dir in 7048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir=`cd "$dir" && pwd` 7051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$absdir"; then 7052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "cannot determine absolute directory name of \`$dir'" 7053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat absdir="$dir" 7054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $GREP "^installed=no" $deplib > /dev/null; then 7058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 7059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-darwin*) 7060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat depdepl= 7061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$deplibrary_names" ; then 7063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for tmp in $deplibrary_names ; do 7064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat depdepl=$tmp 7065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$absdir/$objdir/$depdepl" ; then 7067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat depdepl="$absdir/$objdir/$depdepl" 7068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$darwin_install_name"; then 7070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat path= 7075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat path="-L$absdir/$objdir" 7080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libdir" && \ 7085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$deplib' is not a valid libtool archive" 7086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$absdir" != "$libdir" && \ 7087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`$deplib' seems to be moved" 7088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat path="-L$absdir" 7090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $deplibs " in 7094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $path "*) ;; 7095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) deplibs="$path $deplibs" ;; 7096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # link_all_deplibs != no 7099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi # linkmode = lib 7100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # for deplib in $libs 7101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = link; then 7102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = "prog"; then 7103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs="$newdependency_libs" 7110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" = dlpreopen; then 7111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Link the dlpreopened libraries before other libraries 7112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $save_deplibs; do 7113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$deplib $deplibs" 7114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" != dlopen; then 7117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$pass" != conv; then 7118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure lib_search_path contains only unique directories. 7119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib_search_path= 7120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dir in $newlib_search_path; do 7121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$lib_search_path " in 7122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $dir "*) ;; 7123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append lib_search_path " $dir" ;; 7124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newlib_search_path= 7127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode,$pass" != "prog,link"; then 7130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat vars="deplibs" 7131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat vars="compile_deplibs finalize_deplibs" 7133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for var in $vars dependency_libs; do 7135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add libraries to $var in reverse order 7136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval tmp_libs=\"\$$var\" 7137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_libs= 7138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $tmp_libs; do 7139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: Pedantically, this is the right thing to do, so 7140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # that some nasty dependency loop isn't accidentally 7141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # broken: 7142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat #new_libs="$deplib $new_libs" 7143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Pragmatically, this seems to cause very few problems in 7144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # practice: 7145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 7146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) new_libs="$deplib $new_libs" ;; 7147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R*) ;; 7148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # And here is the reason: when a library appears more 7150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # than once as an explicit dependence of a library, or 7151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # is implicitly linked in more than once by the 7152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # compiler, it is considered special, and multiple 7153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # occurrences thereof are not removed. Compare this 7154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # with having the same library being listed as a 7155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # dependency of multiple other libraries: in this case, 7156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # we know (pedantically, we assume) the library does not 7157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # need to be listed more than once, so we keep only the 7158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # last copy. This is not always right, but it is rare 7159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # enough that we require users that really mean to play 7160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # such unportable linking tricks to link the library 7161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # using -Wl,-lname, so that libtool does not consider it 7162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # for duplicate removal. 7163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $specialdeplibs " in 7164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) new_libs="$deplib $new_libs" ;; 7165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $new_libs " in 7167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 7168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) new_libs="$deplib $new_libs" ;; 7169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_libs= 7176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $new_libs; do 7177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 7178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) 7179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $tmp_libs " in 7180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 7181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append tmp_libs " $deplib" ;; 7182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append tmp_libs " $deplib" ;; 7185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval $var=\"$tmp_libs\" 7188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # for var 7189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Last step: remove runtime libs from dependency_libs 7191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # (they stay in deplibs) 7192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_libs= 7193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for i in $dependency_libs ; do 7194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $predeps $postdeps $compiler_lib_search_path " in 7195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $i "*) 7196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat i="" 7197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$i" ; then 7200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append tmp_libs " $i" 7201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs=$tmp_libs 7204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # for pass 7205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog; then 7206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlfiles="$newdlfiles" 7207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$linkmode" = prog || test "$linkmode" = lib; then 7209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefiles="$newdlprefiles" 7210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $linkmode in 7213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlib) 7214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-dlopen' is ignored for archives" 7216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $deplibs" in 7219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *\ -l* | *\ -L*) 7220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-l' and \`-L' are ignored for archives" ;; 7221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$rpath" && \ 7224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-rpath' is ignored for archives" 7225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$xrpath" && \ 7227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-R' is ignored for archives" 7228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$vinfo" && \ 7230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-version-info/-version-number' is ignored for archives" 7231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$release" && \ 7233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-release' is ignored for archives" 7234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$export_symbols$export_symbols_regex" && \ 7236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-export-symbols' is ignored for archives" 7237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now set the variables for building old libraries. 7239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 7240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlibs="$output" 7241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append objs "$old_deplibs" 7242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib) 7245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure we only generate libraries of the form `libNAME.la'. 7246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $outputname in 7247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib*) 7248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname 'lib' '.la' "$outputname" 7249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 7250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval shared_ext=\"$shrext_cmds\" 7251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libname=\"$libname_spec\" 7252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$module" = no && \ 7255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "libtool library \`$output' must begin with \`lib'" 7256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_lib_prefix" != no; then 7258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add the "lib" prefix for modules if required 7259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.la' "$outputname" 7260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 7261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval shared_ext=\"$shrext_cmds\" 7262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libname=\"$libname_spec\" 7263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.la' "$outputname" 7265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=$func_stripname_result 7266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$objs"; then 7271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$deplibs_check_method" != pass_all; then 7272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** objects $objs is not portable!" 7277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $objs" 7278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$dlself" != no && \ 7282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-dlopen self' is ignored for libtool libraries" 7283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $rpath 7285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 7286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$#" -gt 1 && \ 7287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "ignoring multiple \`-rpath's for a libtool library" 7288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat install_libdir="$1" 7290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlibs= 7292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$rpath"; then 7293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes; then 7294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Building a libtool convenience library. 7295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Some compilers have problems with a `.al' extension so 7296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # convenience libraries should have the same extension an 7297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # archive normally would. 7298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlibs="$output_objdir/$libname.$libext $oldlibs" 7299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=convenience 7300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 7301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$vinfo" && \ 7304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$release" && \ 7307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-release' is ignored for convenience libraries" 7308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Parse the version information argument. 7311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS=':' 7312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $vinfo 0 0 0 7313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 7314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 7315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$7" && \ 7317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "too many parameters to \`-version-info'" 7318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # convert absolute version numbers to libtool ages 7320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # this retains compatibility with .la files and attempts 7321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # to make the code below a bit more comprehensible 7322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $vinfo_number in 7324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat yes) 7325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat number_major="$1" 7326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat number_minor="$2" 7327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat number_revision="$3" 7328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 7329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # There are really only two kinds -- those that 7330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # use the current revision as the major version 7331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and those that subtract age and use age as 7332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # a minor version. But, then there is irix 7333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # which has an extra 1 added just for fun 7334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 7335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $version_type in 7336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # correct linux to gnu/linux during the next big refactor 7337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin|linux|osf|windows|none) 7338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $number_major + $number_minor 7339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat current=$func_arith_result 7340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat age="$number_minor" 7341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat revision="$number_revision" 7342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat freebsd-aout|freebsd-elf|qnx|sunos) 7344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat current="$number_major" 7345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat revision="$number_minor" 7346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat age="0" 7347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat irix|nonstopux) 7349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $number_major + $number_minor 7350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat current=$func_arith_result 7351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat age="$number_minor" 7352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat revision="$number_minor" 7353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_irix_increment=no 7354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_configuration "$modename: unknown library version type \`$version_type'" 7357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat no) 7361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat current="$1" 7362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat revision="$2" 7363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat age="$3" 7364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check that each of the things are valid numbers. 7368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $current in 7369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 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]) ;; 7370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "CURRENT \`$current' must be a nonnegative integer" 7372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$vinfo' is not valid version information" 7373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $revision in 7377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 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]) ;; 7378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "REVISION \`$revision' must be a nonnegative integer" 7380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$vinfo' is not valid version information" 7381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $age in 7385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 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]) ;; 7386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "AGE \`$age' must be a nonnegative integer" 7388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$vinfo' is not valid version information" 7389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$age" -gt "$current"; then 7393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_error "AGE \`$age' is greater than the current interface number \`$current'" 7394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$vinfo' is not valid version information" 7395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Calculate the version variables. 7398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major= 7399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix= 7400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring= 7401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $version_type in 7402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat none) ;; 7403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin) 7405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Like Linux, but with the current version available in 7406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # verstring for coding it into the library header 7407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age 7408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=.$func_arith_result 7409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix="$major.$age.$revision" 7410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Darwin ld doesn't like 0 for these options... 7411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current + 1 7412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat minor_current=$func_arith_result 7413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat freebsd-aout) 7418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=".$current" 7419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=".$current.$revision"; 7420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat freebsd-elf) 7423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=".$current" 7424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=".$current" 7425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat irix | nonstopux) 7428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$lt_irix_increment" = "Xno"; then 7429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age 7430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age + 1 7432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=$func_arith_result 7434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $version_type in 7436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat nonstopux) verstring_prefix=nonstopux ;; 7437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) verstring_prefix=sgi ;; 7438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="$verstring_prefix$major.$revision" 7440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add in all the interfaces that we are compatible with. 7442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat loop=$revision 7443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test "$loop" -ne 0; do 7444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $revision - $loop 7445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat iface=$func_arith_result 7446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $loop - 1 7447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat loop=$func_arith_result 7448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="$verstring_prefix$major.$iface:$verstring" 7449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Before this point, $major must not contain `.'. 7452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=.$major 7453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix="$major.$revision" 7454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linux) # correct to gnu/linux during the next big refactor 7457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age 7458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=.$func_arith_result 7459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix="$major.$age.$revision" 7460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat osf) 7463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age 7464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=.$func_arith_result 7465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=".$current.$age.$revision" 7466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="$current.$age.$revision" 7467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add in all the interfaces that we are compatible with. 7469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat loop=$age 7470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test "$loop" -ne 0; do 7471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $loop 7472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat iface=$func_arith_result 7473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $loop - 1 7474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat loop=$func_arith_result 7475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="$verstring:${iface}.0" 7476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make executables depend on our current version. 7479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append verstring ":${current}.0" 7480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat qnx) 7483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=".$current" 7484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=".$current" 7485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat sunos) 7488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=".$current" 7489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=".$current.$revision" 7490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat windows) 7493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Use '-' rather than '.', since we only want one 7494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # extension on DOS 8.3 filesystems. 7495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $current - $age 7496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=$func_arith_result 7497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix="-$major" 7498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_configuration "unknown library version type \`$version_type'" 7502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Clear the version info if we defaulted, and they specified a release. 7506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$vinfo" && test -n "$release"; then 7507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major= 7508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $version_type in 7509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat darwin) 7510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # we can't check for "0.0" in archive_cmds due to quoting 7511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # problems, so we reset it completely 7512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring= 7513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="0.0" 7516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_version" = no; then 7519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix= 7520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=".0.0" 7522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove version info from name if versioning should be avoided 7526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$avoid_version" = yes && test "$need_version" = no; then 7527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major= 7528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix= 7529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat verstring="" 7530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Check to see if the archive will have undefined symbols. 7533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$allow_undefined" = yes; then 7534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$allow_undefined_flag" = unsupported; then 7535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "undefined symbols not allowed in $host shared libraries" 7536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 7537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 7538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't allow undefined symbols. 7541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat allow_undefined_flag="$no_undefined_flag" 7542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_generate_dlsyms "$libname" "$libname" "yes" 7547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $symfileobj" 7548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobjs" = "X " && libobjs= 7549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" != relink; then 7551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove our outputs, but don't remove object files since they 7552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # may have been created when compiling PIC objects. 7553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat removelist= 7554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tempremovelist=`$ECHO "$output_objdir/*"` 7555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for p in $tempremovelist; do 7556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $p in 7557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.$objext | *.gcno) 7558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$precious_files_regex" != "X"; then 7561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat then 7563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 7564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append removelist " $p" 7567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) ;; 7569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$removelist" && \ 7572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "${RM}r \$removelist" 7573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now set the variables for building old libraries. 7576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append oldlibs " $output_objdir/$libname.$libext" 7578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Transform .lo files to .o files. 7580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Eliminate all temporary directories. 7584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat #for path in $notinst_path; do 7585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat #done 7589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$xrpath"; then 7591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the user specified any rpath flags, then add them. 7592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat temp_xrpath= 7593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $xrpath; do 7594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_replace_sysroot "$libdir" 7595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append temp_xrpath " -R$func_replace_sysroot_result" 7596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$finalize_rpath " in 7597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 7598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_rpath " $libdir" ;; 7599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs="$temp_xrpath $dependency_libs" 7603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure dlfiles contains only unique files that won't be dlpreopened 7607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_dlfiles="$dlfiles" 7608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlfiles= 7609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $old_dlfiles; do 7610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $dlprefiles $dlfiles " in 7611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $lib "*) ;; 7612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append dlfiles " $lib" ;; 7613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure dlprefiles contains only unique files 7617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_dlprefiles="$dlprefiles" 7618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefiles= 7619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $old_dlprefiles; do 7620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$dlprefiles " in 7621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $lib "*) ;; 7622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append dlprefiles " $lib" ;; 7623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes; then 7627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$rpath"; then 7628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 7629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # these systems don't actually have a c library (as such)! 7631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-rhapsody* | *-*-darwin1.[012]) 7633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Rhapsody C library is in the System framework 7634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append deplibs " System.ltframework" 7635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-netbsd*) 7637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't link with libc until the a.out ld.so is fixed. 7638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do not include libc due to us having libc/libc_r. 7641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sco3.2v5* | *-*-sco5v6*) 7643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Causes problems with __ctype 7644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Compiler inserts libc in the correct place for threads to work 7647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add libc to deplibs on all other systems if necessary. 7650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_need_lc" = "yes"; then 7651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append deplibs " -lc" 7652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Transform deplibs into only deplibs that can be linked in shared. 7658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name_save=$name 7659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname_save=$libname 7660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat release_save=$release 7661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix_save=$versuffix 7662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major_save=$major 7663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # I'm not sure if I'm treating the release correctly. I think 7664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # release should show up in the -l (ie -lgmp5) so we don't want to 7665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # add it in twice. Is that correct? 7666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat release="" 7667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix="" 7668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major="" 7669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdeplibs= 7670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=no 7671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplibs_check_method in 7672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat pass_all) 7673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't check for shared/static. Everything works. 7674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This might be a little naive. We might want to check 7675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # whether the library exists or not. But this is on 7676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # osf3 & osf4 and I'm not really sure... Just 7677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # implementing what was already the behavior. 7678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdeplibs=$deplibs 7679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test_compile) 7681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This code stresses the "libraries are programs" paradigm to its 7682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # limits. Maybe even breaks it. We compile a program, linking it 7683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # against the deplibs as a proxy for the library. Then we can check 7684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # whether they linked in statically or dynamically with ldd. 7685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM conftest.c 7686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cat > conftest.c <<EOF 7687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat int main() { return 0; } 7688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel EratEOF 7689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM conftest 7690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ldd_output=`ldd conftest` 7692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for i in $deplibs; do 7693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $i in 7694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -l*) 7695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname -l '' "$i" 7696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 7697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $predeps $postdeps " in 7699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $i "*) 7700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $i" 7701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat i="" 7702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$i" ; then 7706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=`eval "\\$ECHO \"$libname_spec\""` 7707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $deplib_matches; shift 7709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplib_match=$1 7710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $i" 7712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=yes 7714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** I have the capability to make that library automatically link in when" 7717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** you link to this library. But I can only do this if you have a" 7718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** shared version of the library, which I believe you do not have" 7719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** because a test_compile did reveal that the linker did not use it for" 7720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** its dynamic dependency list that programs get resolved with at runtime." 7721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $i" 7726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Error occurred in the first compile. Let's try to salvage 7731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the situation: Compile a separate program for each library. 7732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for i in $deplibs; do 7733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $i in 7734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -l*) 7735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname -l '' "$i" 7736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 7737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM conftest 7738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ldd_output=`ldd conftest` 7740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $predeps $postdeps " in 7742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $i "*) 7743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $i" 7744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat i="" 7745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$i" ; then 7749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=`eval "\\$ECHO \"$libname_spec\""` 7750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $deplib_matches; shift 7752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplib_match=$1 7753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $i" 7755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=yes 7757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** I have the capability to make that library automatically link in when" 7760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** you link to this library. But I can only do this if you have a" 7761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** shared version of the library, which you do not appear to have" 7762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** because a test_compile did reveal that the linker did not use this one" 7763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=yes 7768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** make it link in! You will probably need to install it or some" 7771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** library that it depends on before this library will be fully" 7772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** functional. Installing it before continuing would be even better." 7773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $i" 7777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file_magic*) 7783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $deplibs_check_method; shift 7784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for a_deplib in $deplibs; do 7786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $a_deplib in 7787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -l*) 7788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname -l '' "$a_deplib" 7789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 7790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $predeps $postdeps " in 7792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $a_deplib "*) 7793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $a_deplib" 7794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat a_deplib="" 7795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$a_deplib" ; then 7799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=`eval "\\$ECHO \"$libname_spec\""` 7800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$file_magic_glob"; then 7801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libnameglob=$libname 7804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$want_nocaseglob" = yes; then 7808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shopt -s nocaseglob 7809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $nocaseglob 7811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for potent_lib in $potential_libs; do 7815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Follow soft links. 7816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ls -lLd "$potent_lib" 2>/dev/null | 7817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $GREP " -> " >/dev/null; then 7818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 7819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The statement above tries to avoid entering an 7821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # endless loop below, in case of cyclic links. 7822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We might still enter an endless loop, since a link 7823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # loop can be closed while we follow links, 7824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # but so what? 7825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat potlib="$potent_lib" 7826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while test -h "$potlib" 2>/dev/null; do 7827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $potliblink in 7829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $SED -e 10q | 7835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $EGREP "$file_magic_regex" > /dev/null; then 7836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $a_deplib" 7837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat a_deplib="" 7838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 2 7839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$a_deplib" ; then 7844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=yes 7845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** I have the capability to make that library automatically link in when" 7848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** you link to this library. But I can only do this if you have a" 7849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** shared version of the library, which you do not appear to have" 7850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** because I did check the linker path looking for a file starting" 7851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$potlib" ; then 7852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** with $libname and none of the candidates passed a file format test" 7855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** using a file magic. Last file checked: $potlib" 7856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add a -L argument. 7861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $a_deplib" 7862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # Gone through all deplibs. 7865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat match_pattern*) 7867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $deplibs_check_method; shift 7868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for a_deplib in $deplibs; do 7870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $a_deplib in 7871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -l*) 7872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname -l '' "$a_deplib" 7873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$func_stripname_result 7874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $predeps $postdeps " in 7876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $a_deplib "*) 7877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $a_deplib" 7878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat a_deplib="" 7879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$a_deplib" ; then 7883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=`eval "\\$ECHO \"$libname_spec\""` 7884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for potent_lib in $potential_libs; do 7887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat potlib="$potent_lib" # see symlink-check above in file_magic test 7888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $EGREP "$match_pattern_regex" > /dev/null; then 7890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $a_deplib" 7891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat a_deplib="" 7892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 2 7893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$a_deplib" ; then 7898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=yes 7899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** I have the capability to make that library automatically link in when" 7902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** you link to this library. But I can only do this if you have a" 7903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** shared version of the library, which you do not appear to have" 7904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** because I did check the linker path looking for a file starting" 7905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$potlib" ; then 7906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** with $libname and none of the candidates passed a file format test" 7909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** using a regex pattern. Last file checked: $potlib" 7910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 7914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add a -L argument. 7915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdeplibs " $a_deplib" 7916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done # Gone through all deplibs. 7919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat none | unknown | *) 7921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdeplibs="" 7922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for i in $predeps $postdeps ; do 7925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # can't use Xsed below, because $i might contain '/' 7926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 7928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $tmp_deplibs in 7930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[!\ \ ]*) 7931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$deplibs_check_method" = "Xnone"; then 7933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** Warning: inter-library dependencies are not supported in this platform." 7934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** Warning: inter-library dependencies are not known to be supported." 7936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** All declared inter-library dependencies are being dropped." 7938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat droppeddeps=yes 7939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat versuffix=$versuffix_save 7944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat major=$major_save 7945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat release=$release_save 7946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libname=$libname_save 7947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name=$name_save 7948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 7950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-rhapsody* | *-*-darwin1.[012]) 7951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # On Rhapsody replace the C library with the System framework 7952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 7954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 7955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$droppeddeps" = yes; then 7957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$module" = yes; then 7958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** Warning: libtool could not satisfy all declared inter-library" 7960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** a static module, that should work as long as the dlopening" 7962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** application is linked with the -dlopen flag." 7963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$global_symbol_pipe"; then 7964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** However, this would only work if libtool was able to extract symbol" 7966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** not find such a program. So, this module is probably useless." 7968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** \`nm' from GNU binutils and a full rebuild may help." 7969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = no; then 7971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlibs="$output_objdir/$libname.$libext" 7972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=module 7973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 7974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 7976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** The inter-library dependencies that have been dropped here will be" 7979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** automatically added whenever a program is linked with this library" 7980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** or is declared to -dlopen it." 7981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 7982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$allow_undefined" = no; then 7983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 7984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** Since this library must not contain undefined symbols," 7985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** because either the platform does not support them or" 7986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** it was explicitly requested with -no-undefined," 7987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "*** libtool will only create a static version of it." 7988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_old_libs" = no; then 7989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldlibs="$output_objdir/$libname.$libext" 7990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=module 7991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_old_libs=yes 7992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 7993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 7994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 7998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Done checking deplibs! 7999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs=$newdeplibs 8000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 8003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-darwin*) 8004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # move library search paths that coincide with paths to not yet 8011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # installed libraries to the beginning of the library search list 8012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_libs= 8013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for path in $notinst_path; do 8014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $new_libs " in 8015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" -L$path/$objdir "*) ;; 8016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $deplibs " in 8018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" -L$path/$objdir "*) 8019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append new_libs " -L$path/$objdir" ;; 8020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $deplibs; do 8025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 8026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) 8027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $new_libs " in 8028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 8029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append new_libs " $deplib" ;; 8030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append new_libs " $deplib" ;; 8033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$new_libs" 8036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # All the library-specific variables (install_libdir is set above). 8038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat library_names= 8039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_library= 8040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlname= 8041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Test again, we may have decided not to build it any more 8043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = yes; then 8044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remove ${wl} instances when linking with ld. 8045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: should test the right _cmds variable. 8046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $archive_cmds in 8047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *\$LD\ *) wl= ;; 8048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_into_libs" = yes; then 8050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Hardcode the library paths 8051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat hardcode_libdirs= 8052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dep_rpath= 8053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath="$finalize_rpath" 8054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $rpath; do 8056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_flag_spec"; then 8057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_separator"; then 8058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_replace_sysroot "$libdir" 8059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir=$func_replace_sysroot_result 8060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$hardcode_libdirs"; then 8061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat hardcode_libdirs="$libdir" 8062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just accumulate the unique libdirs. 8064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval flag=\"$hardcode_libdir_flag_spec\" 8074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append dep_rpath " $flag" 8075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$runpath_var"; then 8077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$perm_rpath " in 8078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 8079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append perm_rpath " $libdir" ;; 8080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Substitute the hardcoded libdirs into the rpath. 8084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_separator" && 8085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$hardcode_libdirs"; then 8086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir="$hardcode_libdirs" 8087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$runpath_var" && test -n "$perm_rpath"; then 8090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We should set the runpath_var. 8091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath= 8092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dir in $perm_rpath; do 8093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rpath "$dir:" 8094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shlibpath="$finalize_shlibpath" 8101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$shlibpath"; then 8103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Get the real and link names of the library. 8107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval shared_ext=\"$shrext_cmds\" 8108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval library_names=\"$library_names_spec\" 8109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set dummy $library_names 8110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 8111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat realname="$1" 8112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 8113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$soname_spec"; then 8115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval soname=\"$soname_spec\" 8116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat soname="$realname" 8118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$dlname"; then 8120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlname=$soname 8121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lib="$output_objdir/$realname" 8124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat linknames= 8125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for link 8126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 8127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append linknames " $link" 8128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Use standard objects if they are pic 8131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobjs" = "X " && libobjs= 8133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat delfiles= 8135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$include_expsyms"; then 8136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols="$output_objdir/$libname.uexp" 8138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $export_symbols" 8139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat orig_export_symbols= 8142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host_os in 8143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cygwin* | mingw* | cegcc*) 8144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # exporting using user supplied symfile 8146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and it's NOT already a .def file. Must figure out 8148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # which of the given symbols are data symbols and tag 8149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # them as such. So, trigger use of export_symbols_cmds. 8150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # export_symbols gets reassigned inside the "prepare 8151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the list of exported symbols" if statement, so the 8152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # include_expsyms logic still works. 8153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat orig_export_symbols="$export_symbols" 8154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols= 8155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat always_export_symbols=yes 8156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Prepare the list of exported symbols 8162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$export_symbols"; then 8163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "generating symbol list for \`$libname.la'" 8165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols="$output_objdir/$libname.exp" 8166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $export_symbols 8167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$export_symbols_cmds 8168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS='~' 8169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for cmd1 in $cmds; do 8170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 8171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Take the normal branch if the nm_file_list_spec branch 8172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # doesn't work or if tool conversion is not needed. 8173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $nm_file_list_spec~$to_tool_file_cmd in 8174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat try_normal_branch=yes 8176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmd=\"$cmd1\" 8177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $cmd" 8178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$func_len_result 8179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat try_normal_branch=no 8182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$try_normal_branch" = yes \ 8185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && { test "$len" -lt "$max_cmd_len" \ 8186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat || test "$max_cmd_len" -le -1; } 8187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat then 8188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$cmd" 'exit $?' 8189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat skipped_export=false 8190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$nm_file_list_spec"; then 8191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$output" 8192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_la=$func_basename_result 8193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_libobjs=$libobjs 8194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_output=$output 8195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=${output_objdir}/${output_la}.nm 8196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output" 8197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobjs=$nm_file_list_spec$func_to_tool_file_result 8198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $output" 8199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating $NM input file list: $output" 8200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $save_libobjs; do 8201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$obj" 8202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$func_to_tool_file_result" 8203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done > "$output" 8204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmd=\"$cmd1\" 8205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$cmd" 'exit $?' 8206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$save_output 8207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobjs=$save_libobjs 8208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat skipped_export=false 8209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The command line is too long to execute in one step. 8211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "using reloadable object file for export list..." 8212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat skipped_export=: 8213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Break out early, otherwise skipped_export may be 8214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # set to false by a later but shorter cmd. 8215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 8216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 8219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$include_expsyms"; then 8227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_export_symbols="$export_symbols" 8228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The given exports_symbols file has to be filtered, so filter it. 8234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: $output_objdir/$libname.filter potentially contains lots of 8236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 's' commands which not all seds can handle. GNU sed should be fine 8237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # though. Also, the filter scales superlinearly with the number of 8238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # global variables. join(1) would be nice here, but unfortunately 8239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # isn't a blessed tool. 8240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols=$output_objdir/$libname.def 8243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_deplibs= 8247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for test_deplib in $deplibs; do 8248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $convenience " in 8249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $test_deplib "*) ;; 8250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append tmp_deplibs " $test_deplib" 8252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat deplibs="$tmp_deplibs" 8256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$convenience"; then 8258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$whole_archive_flag_spec" && 8259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$compiler_needs_object" = yes && 8260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libobjs"; then 8261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # extract the archives, so we have objects to list. 8262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # TODO: could optimize this to just extract one archive. 8263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat whole_archive_flag_spec= 8264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$whole_archive_flag_spec"; then 8266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_libobjs=$libobjs 8267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobjs" = "X " && libobjs= 8269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop="$output_objdir/${outputname}x" 8271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append generated " $gentop" 8272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_archives $gentop $convenience 8274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $func_extract_archives_result" 8275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobjs" = "X " && libobjs= 8276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval flag=\"$thread_safe_flag_spec\" 8281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append linker_flags " $flag" 8282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make a backup of the uninstalled library when relinking 8285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" = relink; then 8286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each of the archive commands. 8290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$module" = yes && test -n "$module_cmds" ; then 8291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval test_cmds=\"$module_expsym_cmds\" 8293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$module_expsym_cmds 8294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval test_cmds=\"$module_cmds\" 8296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$module_cmds 8297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval test_cmds=\"$archive_expsym_cmds\" 8301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$archive_expsym_cmds 8302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval test_cmds=\"$archive_cmds\" 8304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$archive_cmds 8305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$skipped_export" != "X:" && 8309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $test_cmds" && 8310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$func_len_result && 8311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 8313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The command line is too long to link in one step, link piecewise 8315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # or, if using GNU ld and skipped_export is not :, use a linker 8316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # script. 8317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Save the value of $output and $libobjs because we want to 8319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # use them later. If we have whole_archive_flag_spec, we 8320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # want to use save_libobjs as it was before 8321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # whole_archive_flag_spec was expanded, because we can't 8322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # assume the linker understands whole_archive_flag_spec. 8323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This may have to be revisited, in case too many 8324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # convenience libraries get linked in and end up exceeding 8325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the spec. 8326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_libobjs=$libobjs 8328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_output=$output 8330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$output" 8331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_la=$func_basename_result 8332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Clear the reloadable object creation command queue and 8334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # initialize k to one. 8335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test_cmds= 8336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_cmds= 8337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objlist= 8338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat last_robj= 8339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat k=1 8340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=${output_objdir}/${output_la}.lnkscript 8343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating GNU ld script: $output" 8344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo 'INPUT (' > $output 8345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $save_libobjs 8346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 8347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$obj" 8348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$func_to_tool_file_result" >> $output 8349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo ')' >> $output 8351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $output" 8352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output" 8353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$func_to_tool_file_result 8354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=${output_objdir}/${output_la}.lnk 8356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating linker input file list: $output" 8357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : > $output 8358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat set x $save_libobjs 8359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 8360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat firstobj= 8361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$compiler_needs_object" = yes; then 8362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat firstobj="$1 " 8363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat shift 8364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj 8366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 8367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$obj" 8368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$func_to_tool_file_result" >> $output 8369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $output" 8371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output" 8372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$save_libobjs"; then 8375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating reloadable object files..." 8376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$output_objdir/$output_la-${k}.$objext 8377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval test_cmds=\"$reload_cmds\" 8378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $test_cmds" 8379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len0=$func_len_result 8380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$len0 8381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Loop over the list of objects to be linked. 8383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $save_libobjs 8384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 8385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $obj" 8386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $len + $func_len_result 8387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$func_arith_result 8388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$objlist" = X || 8389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$len" -lt "$max_cmd_len"; then 8390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append objlist " $obj" 8391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The command $test_cmds is almost too long, add a 8393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # command to the queue. 8394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$k" -eq 1 ; then 8395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The first file doesn't have a previous command to add. 8396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_objs=$objlist 8397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"$reload_cmds\" 8398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # All subsequent reloadable object files will link in 8400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the last one created. 8401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_objs="$objlist $last_robj" 8402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat last_robj=$output_objdir/$output_la-${k}.$objext 8405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $k + 1 8406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat k=$func_arith_result 8407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$output_objdir/$output_la-${k}.$objext 8408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objlist=" $obj" 8409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $last_robj" 8410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $len0 + $func_len_result 8411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$func_arith_result 8412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Handle the remaining objects by creating one last 8415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # reloadable object file. All subsequent reloadable object 8416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # files will link in the last one created. 8417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_objs="$objlist $last_robj" 8419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$last_robj"; then 8421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $output" 8424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output= 8427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ${skipped_export-false}; then 8430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "generating symbol list for \`$libname.la'" 8431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols="$output_objdir/$libname.exp" 8432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $export_symbols 8433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobjs=$output 8434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Append the command to create the export file. 8435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$last_robj"; then 8438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$save_libobjs" && 8443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating a temporary reloadable object file: $output" 8444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Loop through the commands generated above and execute them. 8446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS='~' 8447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for cmd in $concat_cmds; do 8448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 8449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_silent || { 8450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_expand "$cmd" 8451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "func_echo $func_quote_for_expand_result" 8452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 8453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval "$cmd" || { 8454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_exit=$? 8455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Restore the uninstalled library and exit 8457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" = relink; then 8458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ( cd "$output_objdir" && \ 8459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM "${realname}T" && \ 8460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MV "${realname}U" "$realname" ) 8461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $lt_exit 8464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 8465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 8467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if ${skipped_export-false}; then 8475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$include_expsyms"; then 8476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tmp_export_symbols="$export_symbols" 8477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$orig_export_symbols"; then 8482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The given exports_symbols file has to be filtered, so filter it. 8483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: $output_objdir/$libname.filter potentially contains lots of 8485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # 's' commands which not all seds can handle. GNU sed should be fine 8486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # though. Also, the filter scales superlinearly with the number of 8487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # global variables. join(1) would be nice here, but unfortunately 8488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # isn't a blessed tool. 8489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat export_symbols=$output_objdir/$libname.def 8492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobjs=$output 8497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Restore the value of output. 8498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$save_output 8499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobjs" = "X " && libobjs= 8503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Expand the library linking commands again to reset the 8505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # value of $libobjs for piecewise linking. 8506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each of the archive commands. 8508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$module" = yes && test -n "$module_cmds" ; then 8509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$module_expsym_cmds 8511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$module_cmds 8513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$archive_expsym_cmds 8517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$archive_cmds 8519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$delfiles"; then 8524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Append the command to remove temporary files to $cmds. 8525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmds=\"\$cmds~\$RM $delfiles\" 8526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add any objects from preloaded convenience libraries 8529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlprefiles"; then 8530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop="$output_objdir/${outputname}x" 8531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append generated " $gentop" 8532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_archives $gentop $dlprefiles 8534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append libobjs " $func_extract_archives_result" 8535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "X$libobjs" = "X " && libobjs= 8536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_ifs="$IFS"; IFS='~' 8539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for cmd in $cmds; do 8540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 8541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmd=\"$cmd\" 8542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_silent || { 8543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_expand "$cmd" 8544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval "func_echo $func_quote_for_expand_result" 8545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 8546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval "$cmd" || { 8547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat lt_exit=$? 8548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Restore the uninstalled library and exit 8550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" = relink; then 8551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ( cd "$output_objdir" && \ 8552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM "${realname}T" && \ 8553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $MV "${realname}U" "$realname" ) 8554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $lt_exit 8557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 8558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat IFS="$save_ifs" 8560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Restore the uninstalled library and exit 8562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" = relink; then 8563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$convenience"; then 8566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$whole_archive_flag_spec"; then 8567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '${RM}r "$gentop"' 8568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 8572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Create links to the real library. 8575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for linkname in $linknames; do 8576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$realname" != "$linkname"; then 8577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If -module or -export-dynamic was specified, set the dlname. 8582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$module" = yes || test "$export_dynamic" = yes; then 8583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # On all known operating systems, these are identical. 8584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlname="$soname" 8585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat obj) 8590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-dlopen' is ignored for objects" 8592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $deplibs" in 8595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *\ -l* | *\ -L*) 8596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-l' and \`-L' are ignored for objects" ;; 8597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$rpath" && \ 8600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-rpath' is ignored for objects" 8601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$xrpath" && \ 8603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-R' is ignored for objects" 8604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$vinfo" && \ 8606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-version-info' is ignored for objects" 8607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$release" && \ 8609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-release' is ignored for objects" 8610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $output in 8612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) 8613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$objs$old_deplibs" && \ 8614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobj=$output 8617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_lo2o "$libobj" 8618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat obj=$func_lo2o_result 8619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libobj= 8622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat obj="$output" 8623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete the old objects. 8627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $obj $libobj 8628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Objects from convenience libraries. This assumes 8630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # single-version convenience libraries. Whenever we create 8631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # different ones for PIC/non-PIC, this we'll have to duplicate 8632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the extraction. 8633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_conv_objs= 8634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop= 8635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # reload_cmds runs $LD directly, so let us get rid of 8636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # -Wl from whole_archive_flag_spec and hope we can get by with 8637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # turning comma into space.. 8638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wl= 8639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$convenience"; then 8641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$whole_archive_flag_spec"; then 8642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop="$output_objdir/${obj}x" 8646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append generated " $gentop" 8647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_archives $gentop $convenience 8649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_conv_objs="$reload_objs $func_extract_archives_result" 8650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If we're not building shared, we need to use non_pic_objs 8654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Create the old-style object. 8657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output="$obj" 8660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$reload_cmds" 'exit $?' 8661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8662748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Exit if we aren't doing a library object file. 8663748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$libobj"; then 8664748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$gentop"; then 8665748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '${RM}r "$gentop"' 8666748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8667748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8668748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 8669748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8670748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8671748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" != yes; then 8672748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$gentop"; then 8673748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '${RM}r "$gentop"' 8674748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8675748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8676748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Create an invalid libtool object if no PIC, so that we don't 8677748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # accidentally link it into a program. 8678748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # $show "echo timestamp > $libobj" 8679748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8680748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 8681748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8682748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8683748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$pic_flag" || test "$pic_mode" != default; then 8684748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only do commands if we really have different PIC objects. 8685748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat reload_objs="$libobjs $reload_conv_objs" 8686748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output="$libobj" 8687748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$reload_cmds" 'exit $?' 8688748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8689748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8690748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$gentop"; then 8691748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '${RM}r "$gentop"' 8692748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8693748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8694748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 8695748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8696748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8697748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat prog) 8698748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 8699748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin*) func_stripname '' '.exe' "$output" 8700748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$func_stripname_result.exe;; 8701748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8702748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$vinfo" && \ 8703748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-version-info' is ignored for programs" 8704748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8705748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$release" && \ 8706748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`-release' is ignored for programs" 8707748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8708748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$preload" = yes \ 8709748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && test "$dlopen_support" = unknown \ 8710748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && test "$dlopen_self" = unknown \ 8711748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat && test "$dlopen_self_static" = unknown && \ 8712748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8713748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8714748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 8715748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-rhapsody* | *-*-darwin1.[012]) 8716748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # On Rhapsody replace the C library is the System framework 8717748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8718748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8719748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8720748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8721748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8722748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 8723748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-darwin*) 8724748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't allow lazy linking, it breaks C++ global constructors 8725748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # But is supposedly fixed on 10.4 or later (yay!). 8726748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$tagname" = CXX ; then 8727748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8728748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 10.[0123]) 8729748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " ${wl}-bind_at_load" 8730748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " ${wl}-bind_at_load" 8731748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8732748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8733748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8734748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8735748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8736748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8737748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8738748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8739748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8740748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8741748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # move library search paths that coincide with paths to not yet 8742748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # installed libraries to the beginning of the library search list 8743748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat new_libs= 8744748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for path in $notinst_path; do 8745748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $new_libs " in 8746748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" -L$path/$objdir "*) ;; 8747748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8748748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $compile_deplibs " in 8749748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" -L$path/$objdir "*) 8750748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append new_libs " -L$path/$objdir" ;; 8751748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8752748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8753748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8754748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8755748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $compile_deplibs; do 8756748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 8757748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) 8758748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $new_libs " in 8759748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $deplib "*) ;; 8760748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append new_libs " $deplib" ;; 8761748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8762748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8763748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append new_libs " $deplib" ;; 8764748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8765748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8766748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_deplibs="$new_libs" 8767748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8768748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8769748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append compile_command " $compile_deplibs" 8770748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append finalize_command " $finalize_deplibs" 8771748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8772748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$rpath$xrpath"; then 8773748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If the user specified any rpath flags, then add them. 8774748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $rpath $xrpath; do 8775748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This is the magic to use -rpath. 8776748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$finalize_rpath " in 8777748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 8778748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_rpath " $libdir" ;; 8779748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8780748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8781748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8782748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8783748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now hardcode the library paths 8784748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath= 8785748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat hardcode_libdirs= 8786748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $compile_rpath $finalize_rpath; do 8787748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_flag_spec"; then 8788748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_separator"; then 8789748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$hardcode_libdirs"; then 8790748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat hardcode_libdirs="$libdir" 8791748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8792748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just accumulate the unique libdirs. 8793748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8794748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8795748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8796748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8797748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8798748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8799748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8800748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8801748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8802748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval flag=\"$hardcode_libdir_flag_spec\" 8803748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rpath " $flag" 8804748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8805748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$runpath_var"; then 8806748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$perm_rpath " in 8807748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 8808748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append perm_rpath " $libdir" ;; 8809748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8810748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8811748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 8812748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8813748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8814748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$dllsearchpath: in 8815748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$libdir:"*) ;; 8816748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ::) dllsearchpath=$libdir;; 8817748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append dllsearchpath ":$libdir";; 8818748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8819748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case :$dllsearchpath: in 8820748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *":$testbindir:"*) ;; 8821748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ::) dllsearchpath=$testbindir;; 8822748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append dllsearchpath ":$testbindir";; 8823748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8824748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8825748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8826748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8827748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Substitute the hardcoded libdirs into the rpath. 8828748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_separator" && 8829748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$hardcode_libdirs"; then 8830748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir="$hardcode_libdirs" 8831748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval rpath=\" $hardcode_libdir_flag_spec\" 8832748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8833748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_rpath="$rpath" 8834748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8835748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath= 8836748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat hardcode_libdirs= 8837748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for libdir in $finalize_rpath; do 8838748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_flag_spec"; then 8839748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_separator"; then 8840748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$hardcode_libdirs"; then 8841748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat hardcode_libdirs="$libdir" 8842748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8843748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Just accumulate the unique libdirs. 8844748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8845748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8846748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8847748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8848748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8849748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8850748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8851748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8852748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8853748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval flag=\"$hardcode_libdir_flag_spec\" 8854748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rpath " $flag" 8855748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8856748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$runpath_var"; then 8857748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$finalize_perm_rpath " in 8858748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $libdir "*) ;; 8859748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append finalize_perm_rpath " $libdir" ;; 8860748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8861748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8862748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8863748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Substitute the hardcoded libdirs into the rpath. 8864748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$hardcode_libdir_separator" && 8865748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$hardcode_libdirs"; then 8866748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libdir="$hardcode_libdirs" 8867748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval rpath=\" $hardcode_libdir_flag_spec\" 8868748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8869748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_rpath="$rpath" 8870748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8871748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$libobjs" && test "$build_old_libs" = yes; then 8872748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Transform all the library objects into standard objects. 8873748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8874748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8875748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8876748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8877748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8878748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8879748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # template prelinking step 8880748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$prelink_cmds"; then 8881748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$prelink_cmds" 'exit $?' 8882748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8883748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8884748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrappers_required=yes 8885748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 8886748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cegcc* | *mingw32ce*) 8887748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8888748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrappers_required=no 8889748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8890748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* ) 8891748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" != yes; then 8892748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrappers_required=no 8893748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8894748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8895748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 8896748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8897748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat wrappers_required=no 8898748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8899748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 8900748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 8901748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$wrappers_required" = no; then 8902748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Replace the output file specification. 8903748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8904748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command="$compile_command$compile_rpath" 8905748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8906748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We have no uninstalled library dependencies, so finalize right now. 8907748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit_status=0 8908748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$link_command" 'exit_status=$?' 8909748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8910748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$postlink_cmds"; then 8911748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output" 8912748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8913748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$postlink_cmds" 'exit $?' 8914748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8915748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8916748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete the generated files. 8917748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -f "$output_objdir/${outputname}S.${objext}"; then 8918748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8919748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8920748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8921748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $exit_status 8922748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8923748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8924748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$compile_shlibpath$finalize_shlibpath"; then 8925748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8926748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8927748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$finalize_shlibpath"; then 8928748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8929748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8930748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8931748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_var= 8932748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_var= 8933748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$runpath_var"; then 8934748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$perm_rpath"; then 8935748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We should set the runpath_var. 8936748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath= 8937748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dir in $perm_rpath; do 8938748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rpath "$dir:" 8939748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8940748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8941748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8942748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$finalize_perm_rpath"; then 8943748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We should set the runpath_var. 8944748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rpath= 8945748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dir in $finalize_perm_rpath; do 8946748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rpath "$dir:" 8947748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 8948748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8949748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8950748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8951748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8952748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$no_install" = yes; then 8953748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # We don't need to create a wrapper script. 8954748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command="$compile_var$compile_command$compile_rpath" 8955748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Replace the output file specification. 8956748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8957748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete the old output file. 8958748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $output 8959748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Link the executable and exit 8960748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$link_command" 'exit $?' 8961748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8962748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$postlink_cmds"; then 8963748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output" 8964748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8965748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$postlink_cmds" 'exit $?' 8966748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8967748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8968748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 8969748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8970748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8971748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_action" = relink; then 8972748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Fast installation is not supported 8973748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command="$compile_var$compile_command$compile_rpath" 8974748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="$finalize_var$finalize_command$finalize_rpath" 8975748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8976748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "this platform does not like uninstalled shared libraries" 8977748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_warning "\`$output' will be relinked during installation" 8978748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8979748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$fast_install" != no; then 8980748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command="$finalize_var$compile_command$finalize_rpath" 8981748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$fast_install" = yes; then 8982748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8983748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8984748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # fast_install is set to needless 8985748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 8986748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8987748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 8988748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command="$compile_var$compile_command$compile_rpath" 8989748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="$finalize_var$finalize_command$finalize_rpath" 8990748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8991748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 8992748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8993748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Replace the output file specification. 8994748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8995748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8996748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete the old output files. 8997748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8998748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 8999748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$link_command" 'exit $?' 9000748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9001748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$postlink_cmds"; then 9002748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output_objdir/$outputname" 9003748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 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'` 9004748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$postlink_cmds" 'exit $?' 9005748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9006748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9007748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now create the wrapper script. 9008748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating $output" 9009748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9010748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Quote the relink command for shipping. 9011748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$relink_command"; then 9012748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Preserve any variables that may affect compiler behavior 9013748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for var in $variables_saved_for_relink; do 9014748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval test -z \"\${$var+set}\"; then 9015748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9016748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif eval var_value=\$$var; test -z "$var_value"; then 9017748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="$var=; export $var; $relink_command" 9018748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9019748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$var_value" 9020748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9021748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9022748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9023748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="(cd `pwd`; $relink_command)" 9024748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9025748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9026748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9027748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only actually do things if not in dry run mode. 9028748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 9029748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # win32 will think the script is a binary if it has 9030748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # a .exe suffix, so we strip it off here. 9031748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $output in 9032748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.exe) func_stripname '' '.exe' "$output" 9033748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output=$func_stripname_result ;; 9034748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9035748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # test for cygwin because mv fails w/o .exe extensions 9036748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 9037748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin*) 9038748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exeext=.exe 9039748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$outputname" 9040748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat outputname=$func_stripname_result ;; 9041748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) exeext= ;; 9042748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9043748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host in 9044748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin* | *mingw* ) 9045748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname_and_basename "$output" "" "." 9046748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_name=$func_basename_result 9047748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output_path=$func_dirname_result 9048748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cwrappersource="$output_path/$objdir/lt-$output_name.c" 9049748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cwrapper="$output_path/$output_name.exe" 9050748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM $cwrappersource $cwrapper 9051748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9052748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9053748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_emit_cwrapperexe_src > $cwrappersource 9054748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9055748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # The wrapper executable is built using the $host compiler, 9056748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # because it contains $host paths and files. If cross- 9057748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # compiling, it, like the target executable, must be 9058748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # executed on the $host or under an emulation environment. 9059748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 9060748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9061748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $STRIP $cwrapper 9062748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 9063748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9064748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now, create the wrapper script for func_source use: 9065748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_scriptname $cwrapper 9066748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM $func_ltwrapper_scriptname_result 9067748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9068748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 9069748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # note: this script will not be executed, so do not chmod. 9070748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x$build" = "x$host" ; then 9071748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9072748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9073748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_emit_wrapper no > $func_ltwrapper_scriptname_result 9074748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9075748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 9076748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9077748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat * ) 9078748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM $output 9079748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9080748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9081748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_emit_wrapper no > $output 9082748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat chmod +x $output 9083748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9084748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9085748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 9086748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 9087748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9088748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9089748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9090748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # See if we need to build an old-fashioned archive. 9091748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for oldlib in $oldlibs; do 9092748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9093748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = convenience; then 9094748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs="$libobjs_save $symfileobj" 9095748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat addlibs="$convenience" 9096748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 9097748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9098748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$build_libtool_libs" = module; then 9099748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs="$libobjs_save" 9100748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat build_libtool_libs=no 9101748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9102748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs="$old_deplibs $non_pic_objects" 9103748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$preload" = yes && test -f "$symfileobj"; then 9104748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append oldobjs " $symfileobj" 9105748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9106748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9107748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat addlibs="$old_convenience" 9108748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9109748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9110748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$addlibs"; then 9111748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop="$output_objdir/${outputname}x" 9112748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append generated " $gentop" 9113748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9114748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_archives $gentop $addlibs 9115748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append oldobjs " $func_extract_archives_result" 9116748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9117748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9118748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each command in the archive commands. 9119748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9120748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$old_archive_from_new_cmds 9121748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9122748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9123748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add any objects from preloaded convenience libraries 9124748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$dlprefiles"; then 9125748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop="$output_objdir/${outputname}x" 9126748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append generated " $gentop" 9127748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9128748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_extract_archives $gentop $dlprefiles 9129748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append oldobjs " $func_extract_archives_result" 9130748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9131748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9132748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # POSIX demands no paths to be encoded in archives. We have 9133748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # to avoid creating archives with duplicate basenames if we 9134748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # might have to extract them afterwards, e.g., when creating a 9135748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # static archive out of a convenience library, or when linking 9136748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the entirety of a libtool archive into another (currently 9137748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # not supported by libtool). 9138748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if (for obj in $oldobjs 9139748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 9140748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$obj" 9141748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$func_basename_result" 9142748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done | sort | sort -uc >/dev/null 2>&1); then 9143748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 9144748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9145748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat echo "copying selected object files to avoid basename conflicts..." 9146748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat gentop="$output_objdir/${outputname}x" 9147748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append generated " $gentop" 9148748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mkdir_p "$gentop" 9149748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_oldobjs=$oldobjs 9150748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs= 9151748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat counter=1 9152748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $save_oldobjs 9153748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 9154748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$obj" 9155748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objbase="$func_basename_result" 9156748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $oldobjs " in 9157748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat " ") oldobjs=$obj ;; 9158748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\ /]"$objbase "*) 9159748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat while :; do 9160748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Make sure we don't pick an alternate name that also 9161748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # overlaps. 9162748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newobj=lt$counter-$objbase 9163748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $counter + 1 9164748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat counter=$func_arith_result 9165748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $oldobjs " in 9166748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *[\ /]"$newobj "*) ;; 9167748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9168748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9169748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9170748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9171748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append oldobjs " $gentop/$newobj" 9172748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9173748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append oldobjs " $obj" ;; 9174748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9175748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9176748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9177748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9178748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tool_oldlib=$func_to_tool_file_result 9179748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmds=\"$old_archive_cmds\" 9180748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9181748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $cmds" 9182748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$func_len_result 9183748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9184748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$old_archive_cmds 9185748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -n "$archiver_list_spec"; then 9186748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "using command file archive linking..." 9187748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $oldobjs 9188748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 9189748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$obj" 9190748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO "$func_to_tool_file_result" 9191748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done > $output_objdir/$libname.libcmd 9192748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_to_tool_file "$output_objdir/$libname.libcmd" 9193748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9194748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat cmds=$old_archive_cmds 9195748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9196748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the command line is too long to link in one step, link in parts 9197748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "using piecewise archive linking..." 9198748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_RANLIB=$RANLIB 9199748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat RANLIB=: 9200748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objlist= 9201748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat concat_cmds= 9202748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat save_oldobjs=$oldobjs 9203748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs= 9204748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Is there a better way of finding the last object in the list? 9205748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $save_oldobjs 9206748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 9207748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat last_oldobj=$obj 9208748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9209748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval test_cmds=\"$old_archive_cmds\" 9210748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $test_cmds" 9211748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len0=$func_len_result 9212748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$len0 9213748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for obj in $save_oldobjs 9214748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 9215748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_len " $obj" 9216748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_arith $len + $func_len_result 9217748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$func_arith_result 9218748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append objlist " $obj" 9219748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$len" -lt "$max_cmd_len"; then 9220748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 9221748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9222748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the above command should be used before it gets too long 9223748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs=$objlist 9224748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$obj" = "$last_oldobj" ; then 9225748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat RANLIB=$save_RANLIB 9226748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9227748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9228748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9229748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat objlist= 9230748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat len=$len0 9231748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9232748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9233748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat RANLIB=$save_RANLIB 9234748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat oldobjs=$objlist 9235748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$oldobjs" = "X" ; then 9236748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmds=\"\$concat_cmds\" 9237748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9238748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9239748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9240748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9241748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9242748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$cmds" 'exit $?' 9243748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9244748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9245748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$generated" && \ 9246748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "${RM}r$generated" 9247748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9248748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Now create the libtool archive. 9249748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $output in 9250748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 9251748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat old_library= 9252748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$build_old_libs" = yes && old_library="$libname.$libext" 9253748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_verbose "creating $output" 9254748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9255748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Preserve any variables that may affect compiler behavior 9256748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for var in $variables_saved_for_relink; do 9257748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if eval test -z \"\${$var+set}\"; then 9258748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9259748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif eval var_value=\$$var; test -z "$var_value"; then 9260748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="$var=; export $var; $relink_command" 9261748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9262748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_quote_for_eval "$var_value" 9263748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9264748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9265748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9266748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Quote the link command for shipping. 9267748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9268748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9269748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$hardcode_automatic" = yes ; then 9270748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 9271748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9272748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9273748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only create the output if not a dry run. 9274748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_dry_run || { 9275748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for installed in no yes; do 9276748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$installed" = yes; then 9277748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -z "$install_libdir"; then 9278748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat break 9279748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9280748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat output="$output_objdir/$outputname"i 9281748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Replace all uninstalled libtool libraries with the installed ones 9282748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdependency_libs= 9283748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for deplib in $dependency_libs; do 9284748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $deplib in 9285748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 9286748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$deplib" 9287748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 9288748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_resolve_sysroot "$deplib" 9289748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9290748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libdir" && \ 9291748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$deplib' is not a valid libtool archive" 9292748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9293748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9294748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -L*) 9295748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname -L '' "$deplib" 9296748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_replace_sysroot "$func_stripname_result" 9297748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdependency_libs " -L$func_replace_sysroot_result" 9298748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9299748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -R*) 9300748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname -R '' "$deplib" 9301748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_replace_sysroot "$func_stripname_result" 9302748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdependency_libs " -R$func_replace_sysroot_result" 9303748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9304748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append newdependency_libs " $deplib" ;; 9305748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9306748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9307748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dependency_libs="$newdependency_libs" 9308748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdlfiles= 9309748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9310748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $dlfiles; do 9311748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $lib in 9312748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 9313748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$lib" 9314748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 9315748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9316748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libdir" && \ 9317748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$lib' is not a valid libtool archive" 9318748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9319748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9320748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append newdlfiles " $lib" ;; 9321748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9322748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9323748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlfiles="$newdlfiles" 9324748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdlprefiles= 9325748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $dlprefiles; do 9326748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $lib in 9327748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 9328748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Only pass preopened files to the pseudo-archive (for 9329748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # eventual linking with the app. that links it) if we 9330748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # didn't already link the preopened objects directly into 9331748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # the library: 9332748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$lib" 9333748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 9334748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9335748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$libdir" && \ 9336748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_error "\`$lib' is not a valid libtool archive" 9337748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9338748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9339748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9340748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9341748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefiles="$newdlprefiles" 9342748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9343748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdlfiles= 9344748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $dlfiles; do 9345748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $lib in 9346748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9347748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) abs=`pwd`"/$lib" ;; 9348748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9349748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlfiles " $abs" 9350748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9351748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlfiles="$newdlfiles" 9352748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat newdlprefiles= 9353748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for lib in $dlprefiles; do 9354748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $lib in 9355748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9356748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) abs=`pwd`"/$lib" ;; 9357748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9358748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append newdlprefiles " $abs" 9359748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9360748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dlprefiles="$newdlprefiles" 9361748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9362748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $RM $output 9363748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # place dlname in correct position for cygwin 9364748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # In fact, it would be nice if we could use this code for all target 9365748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # systems that can't hard-code library paths into their executables 9366748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # and that have no shared library path variable independent of PATH, 9367748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # but it turns out we can't easily determine that from inspecting 9368748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # libtool variables, so we have to hard-code the OSs to which it 9369748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # applies here; at the moment, that means platforms that use the PE 9370748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # object format with DLL files. See the long comment at the top of 9371748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # tests/bindir.at for full details. 9372748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tdlname=$dlname 9373748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $host,$output,$installed,$module,$dlname in 9374748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9375748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # If a -bindir argument was supplied, place the dll there. 9376748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "x$bindir" != x ; 9377748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat then 9378748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_relative_path "$install_libdir" "$bindir" 9379748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tdlname=$func_relative_path_result$dlname 9380748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9381748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Otherwise fall back on heuristic. 9382748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat tdlname=../bin/$dlname 9383748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9384748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9385748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9386748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO > $output "\ 9387748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# $outputname - a libtool library file 9388748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9389748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# 9390748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Please DO NOT delete this file! 9391748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# It is necessary for linking the library. 9392748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9393748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The name that we can dlopen(3). 9394748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdlname='$tdlname' 9395748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9396748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Names of this library. 9397748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlibrary_names='$library_names' 9398748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9399748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The name of the static archive. 9400748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratold_library='$old_library' 9401748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9402748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Linker flags that can not go in dependency_libs. 9403748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinherited_linker_flags='$new_inherited_linker_flags' 9404748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9405748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Libraries that this one depends upon. 9406748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdependency_libs='$dependency_libs' 9407748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9408748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Names of additional weak libraries provided by this library 9409748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratweak_library_names='$weak_libs' 9410748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9411748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Version information for $libname. 9412748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratcurrent=$current 9413748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratage=$age 9414748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrevision=$revision 9415748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9416748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Is this an already installed library? 9417748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratinstalled=$installed 9418748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9419748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Should we warn about portability when linking against -modules? 9420748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratshouldnotlink=$module 9421748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9422748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Files to dlopen/dlpreopen 9423748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdlopen='$dlfiles' 9424748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratdlpreopen='$dlprefiles' 9425748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9426748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Directory that this library needs to be installed in: 9427748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratlibdir='$install_libdir'" 9428748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$installed" = no && test "$need_relink" = yes; then 9429748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $ECHO >> $output "\ 9430748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratrelink_command=\"$relink_command\"" 9431748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9432748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9433748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat } 9434748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9435748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do a symbolic link so that the libtool archive can be found in 9436748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # LD_LIBRARY_PATH before the program is installed. 9437748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9438748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9439748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9440748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_SUCCESS 9441748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 9442748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9443748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9444748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mode_link ${1+"$@"} 9445748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9446748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9447748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# func_mode_uninstall arg... 9448748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfunc_mode_uninstall () 9449748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ 9450748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat $opt_debug 9451748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat RM="$nonopt" 9452748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat files= 9453748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rmforce= 9454748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit_status=0 9455748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9456748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # This variable tells wrapper scripts just to set variables rather 9457748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # than running their programs. 9458748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat libtool_install_magic="$magic" 9459748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9460748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for arg 9461748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat do 9462748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $arg in 9463748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -f) func_append RM " $arg"; rmforce=yes ;; 9464748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat -*) func_append RM " $arg" ;; 9465748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append files " $arg" ;; 9466748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9467748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9468748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9469748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -z "$RM" && \ 9470748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify an RM program" 9471748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9472748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rmdirs= 9473748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9474748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for file in $files; do 9475748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_dirname "$file" "" "." 9476748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat dir="$func_dirname_result" 9477748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$dir" = X.; then 9478748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat odir="$objdir" 9479748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9480748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat odir="$dir/$objdir" 9481748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9482748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_basename "$file" 9483748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat name="$func_basename_result" 9484748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$opt_mode" = uninstall && odir="$dir" 9485748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9486748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Remember odir for removal later, being careful to avoid duplicates 9487748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" = clean; then 9488748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $rmdirs " in 9489748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $odir "*) ;; 9490748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) func_append rmdirs " $odir" ;; 9491748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9492748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9493748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9494748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Don't error if the file doesn't exist and rm -f was used. 9495748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if { test -L "$file"; } >/dev/null 2>&1 || 9496748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat { test -h "$file"; } >/dev/null 2>&1 || 9497748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -f "$file"; then 9498748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat : 9499748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test -d "$file"; then 9500748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit_status=1 9501748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 9502748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat elif test "$rmforce" = yes; then 9503748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat continue 9504748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9505748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9506748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat rmfiles="$file" 9507748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9508748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $name in 9509748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.la) 9510748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Possibly a libtool archive, so verify it. 9511748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_lalib_p "$file"; then 9512748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source $dir/$name 9513748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9514748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Delete the libtool libraries and symlinks. 9515748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for n in $library_names; do 9516748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $odir/$n" 9517748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9518748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9519748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9520748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case "$opt_mode" in 9521748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat clean) 9522748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case " $library_names " in 9523748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *" $dlname "*) ;; 9524748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9525748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9526748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9527748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9528748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat uninstall) 9529748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$library_names"; then 9530748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each command in the postuninstall commands. 9531748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9532748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9533748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9534748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$old_library"; then 9535748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do each command in the old_postuninstall commands. 9536748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9537748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9538748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # FIXME: should reinstall the best remaining shared library. 9539748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9540748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9541748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9542748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9543748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9544748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.lo) 9545748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Possibly a libtool object, so verify it. 9546748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_lalib_p "$file"; then 9547748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9548748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Read the .lo file 9549748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source $dir/$name 9550748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9551748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add PIC object to the list of files to remove. 9552748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$pic_object" && 9553748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$pic_object" != none; then 9554748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $dir/$pic_object" 9555748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9556748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9557748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Add non-PIC object to the list of files to remove. 9558748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -n "$non_pic_object" && 9559748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat test "$non_pic_object" != none; then 9560748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $dir/$non_pic_object" 9561748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9562748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9563748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9564748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9565748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *) 9566748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$opt_mode" = clean ; then 9567748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat noexename=$name 9568748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat case $file in 9569748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat *.exe) 9570748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$file" 9571748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat file=$func_stripname_result 9572748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_stripname '' '.exe' "$name" 9573748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat noexename=$func_stripname_result 9574748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # $file with .exe has already been added to rmfiles, 9575748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # add $file without .exe 9576748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $file" 9577748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9578748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9579748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Do a test to see if this is a libtool program. 9580748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_ltwrapper_p "$file"; then 9581748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if func_ltwrapper_executable_p "$file"; then 9582748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_ltwrapper_scriptname "$file" 9583748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 9584748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source $func_ltwrapper_scriptname_result 9585748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $func_ltwrapper_scriptname_result" 9586748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat else 9587748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat relink_command= 9588748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_source $dir/$noexename 9589748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9590748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9591748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # note $name still contains .exe if it was in $file originally 9592748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # as does the version of $file that was added into $rmfiles 9593748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9594748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "$fast_install" = yes && test -n "$relink_command"; then 9595748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $odir/lt-$name" 9596748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9597748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test "X$noexename" != "X$name" ; then 9598748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_append rmfiles " $odir/lt-${noexename}.c" 9599748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9600748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9601748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9602748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat ;; 9603748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat esac 9604748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "$RM $rmfiles" 'exit_status=1' 9605748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9606748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9607748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat # Try to remove the ${objdir}s in the directories where we deleted files 9608748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat for dir in $rmdirs; do 9609748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat if test -d "$dir"; then 9610748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_show_eval "rmdir $dir >/dev/null 2>&1" 9611748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat fi 9612748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat done 9613748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9614748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $exit_status 9615748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 9616748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9617748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9618748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_mode_uninstall ${1+"$@"} 9619748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9620748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest -z "$opt_mode" && { 9621748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat help="$generic_help" 9622748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "you must specify a MODE" 9623748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat} 9624748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9625748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erattest -z "$exec_cmd" && \ 9626748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat func_fatal_help "invalid operation mode \`$opt_mode'" 9627748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9628748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratif test -n "$exec_cmd"; then 9629748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat eval exec "$exec_cmd" 9630748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat exit $EXIT_FAILURE 9631748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratfi 9632748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9633748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratexit $exit_status 9634748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9635748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9636748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# The TAGs below are defined such that we never get into a situation 9637748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# in which we disable both kinds of libraries. Given conflicting 9638748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# choices, we go for a static library, that is the most portable, 9639748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# since we can't tell whether shared libraries were disabled because 9640748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# the user asked for that or because the platform doesn't support 9641748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# them. This is particularly important on AIX, because we don't 9642748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# support having both static and shared libraries enabled at the same 9643748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# time on that platform, so we default to a shared-only configuration. 9644748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# If a disable-shared tag is given, we'll fallback to a static-only 9645748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# configuration. But we'll never go from static-only to shared-only. 9646748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9647748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9648748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbuild_libtool_libs=no 9649748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbuild_old_libs=yes 9650748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### END LIBTOOL TAG CONFIG: disable-shared 9651748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9652748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9653748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Eratbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9654748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# ### END LIBTOOL TAG CONFIG: disable-static 9655748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9656748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# Local Variables: 9657748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# mode:shell-script 9658748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# sh-indentation:2 9659748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# End: 9660748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat# vi:sw=2 9661748945ec6f1c67b7efc934ab0808e1d32f2fb98dDaniel Erat 9662