1f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# libtool (GNU libtool) 2.4.2 3f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This is free software; see the source for copying conditions. There is NO 8f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 10f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# GNU Libtool is free software; you can redistribute it and/or modify 11f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# it under the terms of the GNU General Public License as published by 12f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the Free Software Foundation; either version 2 of the License, or 13f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# (at your option) any later version. 14f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 15f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# As a special exception to the GNU General Public License, 16f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# if you distribute this file as part of a program or library that 17f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# is built using GNU Libtool, you may include this file under the 18f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# same distribution terms that you use for the rest of that program. 19f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 20f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# GNU Libtool is distributed in the hope that it will be useful, but 21f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# WITHOUT ANY WARRANTY; without even the implied warranty of 22f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# General Public License for more details. 24f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 25f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# You should have received a copy of the GNU General Public License 26f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# along with GNU Libtool; see the file COPYING. If not, a copy 27f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# or obtained by writing to the Free Software Foundation, Inc., 29f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 31f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Usage: $progname [OPTION]... [MODE-ARG]... 32f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 33f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Provide generalized library-building support services. 34f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 35f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --config show all configuration variables 36f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --debug enable verbose shell tracing 37f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# -n, --dry-run display commands without modifying any files 38f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --features display basic configuration information and exit 39f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --mode=MODE use operation mode MODE 40f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --preserve-dup-deps don't remove duplicate dependency libraries 41f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --quiet, --silent don't print informational messages 42f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --no-quiet, --no-silent 43f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# print informational messages (default) 44f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --no-warn don't display warning messages 45f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --tag=TAG use configuration variables from tag TAG 46f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# -v, --verbose print more informational messages than default 47f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --no-verbose don't print the extra informational messages 48f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --version print version information 49f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# -h, --help, --help-all print short, long, or detailed help message 50f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 51f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# MODE must be one of the following: 52f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 53f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# clean remove files from the build directory 54f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# compile compile a source file into a libtool object 55f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# execute automatically set library path, then run a program 56f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# finish complete the installation of libtool libraries 57f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# install install libraries or executables 58f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# link create a library or an executable 59f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# uninstall remove libraries from an installed directory 60f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 61f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# MODE-ARGS vary depending on the MODE. When passed as first option, 62f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 65f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# When reporting a bug, please describe a test case to reproduce it and 66f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include the following information: 67f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 68f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# host-triplet: $host 69f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# shell: $SHELL 70f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# compiler: $LTCC 71f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# compiler flags: $LTCFLAGS 72f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# linker: $LD (gnu? $with_gnu_ld) 73f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $progname: (GNU libtool) 2.4.2 74f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# automake: $automake_version 75f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# autoconf: $autoconf_version 76f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 77f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Report bugs to <bug-libtool@gnu.org>. 78f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# General help using GNU software: <http://www.gnu.org/gethelp/>. 80f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 81f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichPROGRAM=libtool 82f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichPACKAGE=libtool 83f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichVERSION=2.4.2 84f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichTIMESTAMP="" 85f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichpackage_revision=1.3337 86f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 87f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Be Bourne compatible 88f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich emulate sh 90f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich NULLCMD=: 91f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # is contrary to our usage. Disable this feature. 93f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich alias -g '${1+"$@"}'='"$@"' 94f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich setopt NO_GLOB_SUBST 95f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichelse 96f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi 98f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichBIN_SH=xpg4; export BIN_SH # for Tru64 99f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichDUALCASE=1; export DUALCASE # for MKS sh 100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# A function that is used when there is no print builtin or printf. 102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_fallback_echo () 103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval 'cat <<_LTECHO_EOF 105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$1 106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich_LTECHO_EOF' 107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# NLS nuisances: We save the old values to restore during execute mode. 110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_user_locale= 111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_safe_locale= 112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdo 114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "if test \"\${$lt_var+set}\" = set; then 115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_$lt_var=\$$lt_var 116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $lt_var=C 117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export $lt_var 118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi" 121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdone 122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichLC_ALL=C 123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichLANGUAGE=C 124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichexport LANGUAGE LC_ALL 125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$lt_unset CDPATH 127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# is ksh but when the shell is invoked as "sh" and the current value of 131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the _XPG environment variable is not equal to 1 (one), the special 132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# positional parameter $0, within a function call, is the name of the 133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# function. 134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichprogpath="$0" 135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${CP="cp -f"} 139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${MAKE="make"} 141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${MKDIR="mkdir"} 142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${MV="mv -f"} 143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${RM="rm -f"} 144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich: ${Xsed="$SED -e 1s/^X//"} 146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Global variables: 148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEXIT_SUCCESS=0 149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEXIT_FAILURE=1 150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichexit_status=$EXIT_SUCCESS 154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Make sure IFS has a sensible default 156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_nl=' 157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich' 158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIFS=" $lt_nl" 159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdirname="s,/[^/]*$,," 161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbasename="s,^.*/,," 162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_dirname file append nondir_replacement 164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Compute the dirname of FILE. If nonempty, add APPEND to the result, 165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# otherwise set result to NONDIR_REPLACEMENT. 166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_dirname () 167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$func_dirname_result" = "X${1}"; then 170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_result="${3}" 171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_result="$func_dirname_result${2}" 173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_dirname may be replaced by extended shell implementation 175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_basename file 178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_basename () 179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_basename may be replaced by extended shell implementation 182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_dirname_and_basename file append nondir_replacement 185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# perform func_basename and func_dirname in a single function 186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# call: 187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# dirname: Compute the dirname of FILE. If nonempty, 188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# add APPEND to the result, otherwise set result 189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# to NONDIR_REPLACEMENT. 190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# value returned in "$func_dirname_result" 191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# basename: Compute filename of FILE. 192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# value retuned in "$func_basename_result" 193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Implementation must be kept synchronized with func_dirname 194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# and func_basename. For efficiency, we do not delegate to 195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# those functions but instead duplicate the functionality here. 196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_dirname_and_basename () 197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract subdirectory from the argument. 199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$func_dirname_result" = "X${1}"; then 201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_result="${3}" 202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_result="$func_dirname_result${2}" 204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_dirname_and_basename may be replaced by extended shell implementation 207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_stripname prefix suffix name 210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# strip PREFIX and SUFFIX off of NAME. 211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# PREFIX and SUFFIX must not contain globbing or regex special 212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# characters, hashes, percent signs, but SUFFIX may contain a leading 213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# dot (in which case that matches only a dot). 214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_strip_suffix prefix name 215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_stripname () 216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case ${2} in 218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_stripname may be replaced by extended shell implementation 222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# These SED scripts presuppose an absolute path with a trailing slash. 225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichpathcar='s,^/\([^/]*\).*$,\1,' 226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichpathcdr='s,^/[^/]*,,' 227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichremovedotparts=':dotsl 228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s@/\./@/@g 229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich t dotsl 230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s,/\.$,/,' 231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcollapseslashes='s@/\{1,\}@/@g' 232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfinalslash='s,/*$,/,' 233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_normal_abspath PATH 235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Remove doubled-up and trailing slashes, "." path components, 236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# and cancel out any ".." path components in PATH after making 237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# it an absolute path. 238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# value returned in "$func_normal_abspath_result" 239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_normal_abspath () 240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Start from root dir and reassemble the path. 242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_result= 243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_tpath=$1 244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_altnamespace= 245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $func_normal_abspath_tpath in 246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "") 247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Empty path, that just means $cwd. 248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '/' "`pwd`" 249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_result=$func_stripname_result 250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The next three entries are used to spot a run of precisely 253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # two leading slashes without using negated character classes; 254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # we take advantage of case's first-match behaviour. 255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ///*) 256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Unusual form of absolute path, do nothing. 257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich //*) 259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Not necessarily an ordinary path; POSIX reserves leading '//' 260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and for example Cygwin uses it to access remote file shares 261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # over CIFS/SMB, so we conserve a leading double slash if found. 262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_altnamespace=/ 263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /*) 265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Absolute path, do nothing. 266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Relative path, prepend $cwd. 269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Cancel out all the simple stuff to save iterations. We also want 273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the path to end with a slash for ease of parsing, so make sure 274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # there is one (and only one) here. 275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while :; do 278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Processed it all yet? 279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$func_normal_abspath_tpath" = / ; then 280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If we ascended to the root using ".." the result may be empty now. 281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$func_normal_abspath_result" ; then 282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_result=/ 283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -e "$pathcar"` 288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -e "$pathcdr"` 290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Figure out what to do with it 291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $func_normal_abspath_tcomponent in 292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "") 293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Trailing empty path component, ignore it. 294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ..) 296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Parent dir; strip last assembled component from result. 297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$func_normal_abspath_result" 298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_result=$func_dirname_result 299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Actual path component, append it. 302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Restore leading double-slash if one was found on entry. 307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_relative_path SRCDIR DSTDIR 311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# generates a relative path from SRCDIR to DSTDIR, with a trailing 312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# slash if non-empty, suitable for immediately appending a filename 313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# without needing to append a separator. 314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# value returned in "$func_relative_path_result" 315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_relative_path () 316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result= 318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath "$1" 319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_tlibdir=$func_normal_abspath_result 320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_normal_abspath "$2" 321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_tbindir=$func_normal_abspath_result 322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Ascend the tree starting from libdir 324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while :; do 325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # check if we have found a prefix of bindir 326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $func_relative_path_tbindir in 327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $func_relative_path_tlibdir) 328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # found an exact match 329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_tcancelled= 330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $func_relative_path_tlibdir*) 333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # found a matching prefix 334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_tcancelled=$func_stripname_result 336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$func_relative_path_result"; then 337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result=. 338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname $func_relative_path_tlibdir 343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_tlibdir=${func_dirname_result} 344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x$func_relative_path_tlibdir" = x ; then 345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Have to descend all the way to the root! 346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result=../$func_relative_path_result 347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_tcancelled=$func_relative_path_tbindir 348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result=../$func_relative_path_result 351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now calculate path; take care to avoid doubling-up slashes. 356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '/' "$func_relative_path_result" 357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result=$func_stripname_result 358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '/' '/' "$func_relative_path_tcancelled" 359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x$func_stripname_result" != x ; then 360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Normalisation. If bindir is libdir, return empty string, 364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # else relative path ending with a slash; either way, target 365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # file name can be directly appended. 366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -z "$func_relative_path_result"; then 367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname './' '' "$func_relative_path_result/" 368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path_result=$func_stripname_result 369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The name of this program: 373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_dirname_and_basename "$progpath" 374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichprogname=$func_basename_result 375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Make sure we have an absolute path for reexecution: 377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcase $progpath in 378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]*|[A-Za-z]:\\*) ;; 379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\\/]*) 380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progdir=$func_dirname_result 381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progdir=`cd "$progdir" && pwd` 382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progpath="$progdir/$progname" 383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_IFS="$IFS" 386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS=${PATH_SEPARATOR-:} 387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for progdir in $PATH; do 388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_IFS" 389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -x "$progdir/$progname" && break 390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_IFS" 392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$progdir" || progdir=`pwd` 393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progpath="$progdir/$progname" 394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichesac 396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Sed substitution that helps us do robust quoting. It backslashifies 398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# metacharacters that are still active within double-quoted strings. 399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichXsed="${SED}"' -e 1s/^X//' 400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Same as above, but do not quote variable references. 403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Sed substitution that turns a string into a regex matching for the 406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# string literally. 407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Sed substitution that converts a w32 file name or path 410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# which contains forward slashes, into one that contains 411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# (escaped) backslashes. A very naive implementation. 412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Re-`\' parameter expansions in output of double_quote_subst that were 415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in input to double_quote_subst, that '$' was protected from expansion. 417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Since each input `\' is now two `\'s, look for any number of runs of 418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbs='\\' 420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbs2='\\\\' 421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbs4='\\\\\\\\' 422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdollar='\$' 423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichsed_double_backslash="\ 424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/$bs4/&\\ 425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/g 426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^$bs2$dollar/$bs&/ 427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\n//g" 429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Standard options: 431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_dry_run=false 432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_help=false 433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_quiet=false 434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_verbose=false 435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_warning=: 436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_echo arg... 438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message, along with the current mode 439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# name if it has been set yet. 440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_echo () 441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_verbose arg... 446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message in verbose mode only. 447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_verbose () 448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_verbose && func_echo ${1+"$@"} 450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A bug in bash halts the script if the last line of a function 452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # fails when set -e is in force, so we need another command to 453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # work around that: 454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_echo_all arg... 458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Invoke $ECHO with all args, space-separated. 459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_echo_all () 460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$*" 462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_error arg... 465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message to standard error. 466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_error () 467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_warning arg... 472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed warning message to standard error. 473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_warning () 474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # bash bug again: 478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_fatal_error arg... 482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message to standard error, and exit. 483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_fatal_error () 484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error ${1+"$@"} 486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_FAILURE 487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_fatal_help arg... 490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message to standard error, followed by 491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# a help hint, and exit. 492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_fatal_help () 493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error ${1+"$@"} 495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "$help" 496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichhelp="Try \`$progname --help' for more information." ## default 498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_grep expression filename 501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Check whether EXPRESSION matches any line of FILENAME, without output. 502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_grep () 503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $GREP "$1" "$2" >/dev/null 2>&1 505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mkdir_p directory-path 509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Make sure the entire path to DIRECTORY-PATH is available. 510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mkdir_p () 511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_directory_path="$1" 513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_dir_list= 514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Protect directory names starting with `-' 518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $my_directory_path in 519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -*) my_directory_path="./$my_directory_path" ;; 520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # While some portion of DIR does not yet exist... 523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test ! -d "$my_directory_path"; do 524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # ...make a list in topmost first order. Use a colon delimited 525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # list incase some portion of path contains whitespace. 526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_dir_list="$my_directory_path:$my_dir_list" 527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the last portion added has no slash in it, the list is done 529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $my_directory_path in */*) ;; *) break ;; esac 530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # ...otherwise throw away the child directory and loop 532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_mkdir_p_IFS="$IFS"; IFS=':' 537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for my_dir in $my_dir_list; do 538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_mkdir_p_IFS" 539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # mkdir can fail with a `File exist' error if two processes 540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # try to create one of the directories concurrently. Don't 541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # stop in that case! 542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MKDIR "$my_dir" 2>/dev/null || : 543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_mkdir_p_IFS" 545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Bail out if we (or some other process) failed to create a directory. 547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -d "$my_directory_path" || \ 548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "Failed to create \`$1'" 549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mktempdir [string] 554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Make a temporary directory that won't clash with other running 555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# libtool processes, and avoids race conditions if possible. If 556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# given, STRING is the basename for that directory. 557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mktempdir () 558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_template="${TMPDIR-/tmp}/${1-$progname}" 560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_dry_run" = ":"; then 562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Return a directory name, but don't create it in dry-run mode 563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_tmpdir="${my_template}-$$" 564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If mktemp works, use that first and foremost 567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -d "$my_tmpdir"; then 570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Failing that, at least try and use $RANDOM to avoid a race 571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_tmpdir="${my_template}-${RANDOM-0}$$" 572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_mktempdir_umask=`umask` 574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich umask 0077 575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MKDIR "$my_tmpdir" 576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich umask $save_mktempdir_umask 577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If we're not in dry-run mode, bomb out on failure 580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -d "$my_tmpdir" || \ 581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$my_tmpdir" 585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_quote_for_eval arg 589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Aesthetically quote ARG to be evaled later. 590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# is double-quoted, suitable for a subsequent eval, whereas 592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# which are still active within double quotes backslashified. 594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_quote_for_eval () 595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\\\`\"\$]*) 598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval_unquoted_result="$1" ;; 601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $func_quote_for_eval_unquoted_result in 604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Double-quote args containing shell metacharacters to delay 605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # word splitting, command substitution and and variable 606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # expansion for a subsequent eval. 607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Many Bourne shells cannot handle close brackets correctly 608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # in scan sets, so we specify it separately. 609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_quote_for_expand arg 619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Aesthetically quote ARG to be evaled later; same as above, 620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# but do not quote variable references. 621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_quote_for_expand () 622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\\\`\"]*) 625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_arg=`$ECHO "$1" | $SED \ 626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_arg="$1" ;; 629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $my_arg in 632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Double-quote args containing shell metacharacters to delay 633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # word splitting and command substitution for a subsequent eval. 634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Many Bourne shells cannot handle close brackets correctly 635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # in scan sets, so we specify it separately. 636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_arg="\"$my_arg\"" 638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_expand_result="$my_arg" 642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_show_eval cmd [fail_exp] 646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# is given, then evaluate it. 649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_show_eval () 650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_cmd="$1" 652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_fail_exp="${2-:}" 653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ${opt_silent-false} || { 655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_expand "$my_cmd" 656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "func_echo $func_quote_for_expand_result" 657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ${opt_dry_run-false}; then :; else 660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$my_cmd" 661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_status=$? 662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$my_status" -eq 0; then :; else 663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "(exit $my_status); $my_fail_exp" 664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_show_eval_locale cmd [fail_exp] 670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# is given, then evaluate it. Use the saved locale for evaluation. 673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_show_eval_locale () 674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_cmd="$1" 676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_fail_exp="${2-:}" 677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ${opt_silent-false} || { 679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_expand "$my_cmd" 680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "func_echo $func_quote_for_expand_result" 681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ${opt_dry_run-false}; then :; else 684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$lt_user_locale 685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $my_cmd" 686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_status=$? 687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$lt_safe_locale" 688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$my_status" -eq 0; then :; else 689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "(exit $my_status); $my_fail_exp" 690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_tr_sh 695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Turn $1 into a string suitable for a shell variable name. 696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Result is stored in $func_tr_sh_result. All characters 697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# if $1 begins with a digit, a '_' is prepended as well. 699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_tr_sh () 700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [0-9]* | *[!a-zA-Z0-9_]*) 703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * ) 706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_tr_sh_result=$1 707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_version 713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo version message to standard output and exit. 714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_version () 715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n '/(C)/!b go 719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich :more 720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /\./!{ 721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich N 722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\n# / / 723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich b more 724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich :go 726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^# '$PROGRAM' (GNU /,/# warranty; / { 727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^# // 728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^# *$// 729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p 731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich }' < "$progpath" 732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_usage 736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo short help message to standard output and exit. 737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_usage () 738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n '/^# Usage:/,/^# *.*--help/ { 742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^# // 743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^# *$// 744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\$progname/'$progname'/ 745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p 746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich }' < "$progpath" 747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "run \`$progname --help | more' for full usage" 749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_help [NOEXIT] 753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo long help message to standard output and exit, 754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# unless 'noexit' is passed as argument. 755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_help () 756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n '/^# Usage:/,/# Report bugs to/ { 760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich :print 761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^# // 762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^# *$// 763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*\$progname*'$progname'* 764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*\$host*'"$host"'* 765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*\$SHELL*'"$SHELL"'* 766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*\$LTCC*'"$LTCC"'* 767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*\$LTCFLAGS*'"$LTCFLAGS"'* 768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*\$LD*'"$LD"'* 769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p 773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich d 774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^# .* home page:/b print 776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^# General help using/b print 777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ' < "$progpath" 778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ret=$? 779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$1"; then 780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $ret 781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_missing_arg argname 785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message to standard error and set global 786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# exit_cmd. 787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_missing_arg () 788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "missing argument for $1." 792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit_cmd=exit 793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_split_short_opt shortopt 797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Set func_split_short_opt_name and func_split_short_opt_arg shell 798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# variables after splitting SHORTOPT after the 2nd character. 799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_split_short_opt () 800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_split_short_opt may be replaced by extended shell implementation 807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_split_long_opt longopt 810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Set func_split_long_opt_name and func_split_long_opt_arg shell 811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# variables after splitting LONGOPT at the `=' sign. 812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_split_long_opt () 813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_sed_long_arg='1s/^--[^=]*=//' 816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_split_long_opt may be replaced by extended shell implementation 820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichexit_cmd=: 822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichmagic="%%%MAGIC variable%%%" 828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichmagic_exe="%%%MAGIC EXE variable%%%" 829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Global variables. 831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichnonopt= 832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichpreserve_args= 833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlo2o="s/\\.lo\$/.${objext}/" 834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevicho2lo="s/\\.${objext}\$/.lo/" 835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichextracted_archives= 836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichextracted_serial=0 837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# If this variable is set in any of the actions, the command in it 839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# will be execed at the end. This prevents here-documents from being 840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# left over by shells. 841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichexec_cmd= 842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_append var value 844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Append VALUE to the end of shell variable VAR. 845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append () 846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "${1}=\$${1}\${2}" 848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_append may be replaced by extended shell implementation 849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_append_quoted var value 851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Quote VALUE and append to the end of shell variable VAR, separated 852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# by a space. 853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append_quoted () 854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "${2}" 856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_append_quoted may be replaced by extended shell implementation 858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_arith arithmetic-term... 861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_arith () 862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith_result=`expr "${@}"` 864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_arith may be replaced by extended shell implementation 865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_len string 868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# STRING may not start with a hyphen. 869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_len () 870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_len may be replaced by extended shell implementation 873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_lo2o object 876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_lo2o () 877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_lo2o may be replaced by extended shell implementation 880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_xform libobj-or-source 883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_xform () 884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} # func_xform may be replaced by extended shell implementation 887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_fatal_configuration arg... 890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echo program name prefixed message to standard error, followed by 891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# a configuration failure hint, and exit. 892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_fatal_configuration () 893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error ${1+"$@"} 895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "See the $PACKAGE documentation for more information." 896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "Fatal configuration error." 897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_config 901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Display the configuration for all the tags in this script. 902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_config () 903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich re_begincf='^# ### BEGIN LIBTOOL' 905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich re_endcf='^# ### END LIBTOOL' 906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Default configuration. 908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now print the configurations for the tags. 911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for tagname in $taglist; do 912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_features 919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Display the features supported by this script. 920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_features () 921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "host: $host" 923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes; then 924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "enable shared libraries" 925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "disable shared libraries" 927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = yes; then 929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "enable static libraries" 930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "disable static libraries" 932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_enable_tag tagname 938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Verify that TAGNAME is valid, and either flag an error and exit, or 939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# variable here. 941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_enable_tag () 942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Global variable: 944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tagname="$1" 945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sed_extractcf="/$re_begincf/,/$re_endcf/p" 949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Validate tagname. 951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $tagname in 952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[!-_A-Za-z0-9,/]*) 953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "invalid tag name: $tagname" 954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't test for the "default" C tag, as we know it's 958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # there but not specially marked. 959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $tagname in 960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC) ;; 961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich taglist="$taglist $tagname" 964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Evaluate the configuration. Be careful to quote the path 966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and the sed script, to avoid splitting on whitespace, but 967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # also don't use non-portable quotes within backquotes within 968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # quotes we have to do it in 2 steps: 969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$extractedcf" 971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "ignoring unknown tag $tagname" 973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_check_version_match 979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Ensure that we are using m4 macros, and libtool script from the same 980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# release of libtool. 981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_check_version_match () 982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$package_revision" != "$macro_revision"; then 984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$VERSION" != "$macro_version"; then 985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$macro_version"; then 986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat >&2 <<_LT_EOF 987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: definition of this LT_INIT comes from an older release. 989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: and run autoconf again. 991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich_LT_EOF 992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat >&2 <<_LT_EOF 994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: and run autoconf again. 998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich_LT_EOF 999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat >&2 <<_LT_EOF 1002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$progname: of $PACKAGE $VERSION and run autoconf again. 1006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich_LT_EOF 1007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_MISMATCH 1010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Shorthand for --mode=foo, only valid as the first argument 1015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcase $1 in 1016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichclean|clea|cle|cl) 1017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode clean ${1+"$@"}; shift 1018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcompile|compil|compi|comp|com|co|c) 1020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode compile ${1+"$@"}; shift 1021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichexecute|execut|execu|exec|exe|ex|e) 1023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode execute ${1+"$@"}; shift 1024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfinish|finis|fini|fin|fi|f) 1026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode finish ${1+"$@"}; shift 1027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichinstall|instal|insta|inst|ins|in|i) 1029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode install ${1+"$@"}; shift 1030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlink|lin|li|l) 1032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode link ${1+"$@"}; shift 1033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift; set dummy --mode uninstall ${1+"$@"}; shift 1036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichesac 1038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Option defaults: 1042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_debug=: 1043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_dry_run=false 1044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_config=false 1045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_preserve_dup_deps=false 1046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_features=false 1047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_finish=false 1048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_help=false 1049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_help_all=false 1050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_silent=: 1051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_warning=: 1052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_verbose=: 1053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_silent=false 1054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_verbose=false 1055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Parse options once, thoroughly. This comes as soon as possible in the 1058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# script to make things like `--version' happen as quickly as we can. 1059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # this just eases exit handling 1061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test $# -gt 0; do 1062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt="$1" 1063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $opt in 1065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --debug|-x) opt_debug='set -x' 1066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_echo "enabling shell trace mode" 1067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --dry-run|--dryrun|-n) 1070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_dry_run=: 1071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --config) 1073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_config=: 1074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_config 1075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --dlopen|-dlopen) 1077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich optarg="$1" 1078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_dlopen="${opt_dlopen+$opt_dlopen 1079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich}$optarg" 1080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --preserve-dup-deps) 1083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_preserve_dup_deps=: 1084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --features) 1086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_features=: 1087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_features 1088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --finish) 1090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_finish=: 1091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichset dummy --mode finish ${1+"$@"}; shift 1092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --help) 1094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_help=: 1095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --help-all) 1097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_help_all=: 1098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_help=': help-all' 1099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --mode) 1101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test $# = 0 && func_missing_arg $opt && break 1102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich optarg="$1" 1103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_mode="$optarg" 1104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcase $optarg in 1105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Valid mode arguments: 1106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Catch anything else as an error 1109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_error "invalid argument for $opt" 1110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit_cmd=exit 1111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 1112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichesac 1114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --no-silent|--no-quiet) 1117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_silent=false 1118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append preserve_args " $opt" 1119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --no-warning|--no-warn) 1121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_warning=false 1122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append preserve_args " $opt" 1123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --no-verbose) 1125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_verbose=false 1126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append preserve_args " $opt" 1127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --silent|--quiet) 1129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_silent=: 1130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append preserve_args " $opt" 1131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_verbose=false 1132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --verbose|-v) 1134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_verbose=: 1135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append preserve_args " $opt" 1136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichopt_silent=false 1137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --tag) 1139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test $# = 0 && func_missing_arg $opt && break 1140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich optarg="$1" 1141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_tag="$optarg" 1142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_append preserve_args " $opt $optarg" 1143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_enable_tag "$optarg" 1144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -\?|-h) func_usage ;; 1148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --help) func_help ;; 1149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --version) func_version ;; 1150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Separate optargs to long options: 1152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --*=*) 1153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_split_long_opt "$opt" 1154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Separate non-argument short options: 1159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -\?*|-h*|-n*|-v*) 1160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_split_short_opt "$opt" 1161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --) break ;; 1166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Validate options: 1172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # save first non-option argument 1174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$#" -gt 0; then 1175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonopt="$opt" 1176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 1177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # preserve --debug 1180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$opt_debug" = : || func_append preserve_args " --debug" 1181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 1183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *pw32* | *cegcc*) 1184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # don't eliminate duplications in $postdeps and $predeps 1185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_duplicate_compiler_generated_deps=: 1186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 1188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_help || { 1193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Sanity checks first: 1194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_check_version_match 1195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_configuration "not configured to build any kind of library" 1198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Darwin sucks 1201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval std_shrext=\"$shrext_cmds\" 1202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only execute mode is allowed to have -dlopen flags. 1204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "unrecognized option \`-dlopen'" 1206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$help" 1>&2 1207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_FAILURE 1208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Change the help message to a mode-specific one. 1211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich generic_help="$help" 1212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich help="Try \`$progname --help --mode=$opt_mode' for more information." 1213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 1214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Bail if the options were screwed 1217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $exit_cmd $EXIT_FAILURE 1218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich## ----------- ## 1224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich## Main. ## 1225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich## ----------- ## 1226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_lalib_p file 1228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# True iff FILE is a libtool `.la' library or `.lo' object file. 1229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This function is only a basic sanity check; it will hardly flush out 1230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# determined imposters. 1231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_lalib_p () 1232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -f "$1" && 1234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e 4q "$1" 2>/dev/null \ 1235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_lalib_unsafe_p file 1239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# True iff FILE is a libtool `.la' library or `.lo' object file. 1240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This function implements the same check as func_lalib_p without 1241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# resorting to external programs. To this end, it redirects stdin and 1242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# closes it afterwards, without saving the original file descriptor. 1243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# As a safety measure, use it only where a negative result would be 1244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# fatal anyway. Works if `file' does not exist. 1245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_lalib_unsafe_p () 1246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lalib_p=no 1248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lalib_p_l in 1 2 3 4 1250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 1251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich read lalib_p_line 1252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$lalib_p_line" in 1253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exec 0<&5 5<&- 1257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$lalib_p" = yes 1259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_ltwrapper_script_p file 1262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# True iff FILE is a libtool wrapper script 1263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This function is only a basic sanity check; it will hardly flush out 1264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# determined imposters. 1265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_ltwrapper_script_p () 1266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lalib_p "$1" 1268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_ltwrapper_executable_p file 1271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# True iff FILE is a libtool wrapper executable 1272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This function is only a basic sanity check; it will hardly flush out 1273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# determined imposters. 1274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_ltwrapper_executable_p () 1275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_exec_suffix= 1277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 1278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.exe) ;; 1279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_ltwrapper_exec_suffix=.exe ;; 1280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_ltwrapper_scriptname file 1285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Assumes file is an ltwrapper_executable 1286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# uses $file to determine the appropriate filename for a 1287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# temporary ltwrapper_script. 1288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_ltwrapper_scriptname () 1289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_and_basename "$1" "" "." 1291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$func_basename_result" 1292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_ltwrapper_p file 1296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# True iff FILE is a libtool wrapper script or wrapper executable 1297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This function is only a basic sanity check; it will hardly flush out 1298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# determined imposters. 1299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_ltwrapper_p () 1300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_execute_cmds commands fail_cmd 1306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Execute tilde-delimited COMMANDS. 1307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# If FAIL_CMD is given, eval that upon failure. 1308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# FAIL_CMD may read-access the current command in variable CMD! 1309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_execute_cmds () 1310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs=$IFS; IFS='~' 1313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for cmd in $1; do 1314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS=$save_ifs 1315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmd=\"$cmd\" 1316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$cmd" "${2-:}" 1317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS=$save_ifs 1319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_source file 1323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Source FILE, adding directory component if necessary. 1324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Note that it is not necessary on cygwin/mingw to append a dot to 1325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# behavior happens only for exec(3), not for open(2)! Also, sourcing 1327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# `FILE.' does not work on cygwin managed mounts. 1328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_source () 1329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 1332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich */* | *\\*) . "$1" ;; 1333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) . "./$1" ;; 1334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_resolve_sysroot PATH 1339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Replace a leading = in PATH with a sysroot. Store the result into 1340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_resolve_sysroot_result 1341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_resolve_sysroot () 1342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot_result=$1 1344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $func_resolve_sysroot_result in 1345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich =*) 1346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '=' '' "$func_resolve_sysroot_result" 1347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_replace_sysroot PATH 1353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# If PATH begins with the sysroot, replace it with = and 1354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# store the result into func_replace_sysroot_result. 1355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_replace_sysroot () 1356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$lt_sysroot:$1" in 1358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ?*:"$lt_sysroot"*) 1359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname "$lt_sysroot" '' "$1" 1360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_replace_sysroot_result="=$func_stripname_result" 1361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 1363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Including no sysroot. 1364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_replace_sysroot_result=$1 1365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_infer_tag arg 1370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Infer tagged configuration to use if any are available and 1371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# if one wasn't chosen via the "--tag" command line option. 1372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Only attempt this if the compiler in the base compile 1373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# command doesn't match the default compiler. 1374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# arg is usually of the form 'gcc ...' 1375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_infer_tag () 1376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$available_tags" && test -z "$tagname"; then 1379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC_quoted= 1380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg in $CC; do 1381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append_quoted CC_quoted "$arg" 1382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC_expanded=`func_echo_all $CC` 1384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC_quoted_expanded=`func_echo_all $CC_quoted` 1385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $@ in 1386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Blanks in the command may have been stripped by the calling shell, 1387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # but not from the CC environment variable when configure was run. 1388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Blanks at the start of $base_compile will cause this to fail 1391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # if we don't check for them as well. 1392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 1393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for z in $available_tags; do 1394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Evaluate the configuration. 1396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC_quoted= 1398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg in $CC; do 1399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Double-quote args containing other shell metacharacters. 1400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append_quoted CC_quoted "$arg" 1401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC_expanded=`func_echo_all $CC` 1403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CC_quoted_expanded=`func_echo_all $CC_quoted` 1404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$@ " in 1405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The compiler in the base compile command matches 1408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the one in the tagged configuration. 1409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Assume this is the tagged configuration we want. 1410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tagname=$z 1411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 1412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If $tagname still isn't set, then no tagged configuration 1417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # was found and let the user know that the "--tag" command 1418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # line option must be used. 1419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$tagname"; then 1420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_echo "unable to infer tagged configuration" 1421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "specify a tag with \`--tag'" 1422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# else 1423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_verbose "using $tagname tagged configuration" 1424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_write_libtool_object output_name pic_name nonpic_name 1433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Create a libtool object file (analogous to a ".la" file), 1434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# but don't create it if we're doing a dry run. 1435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_write_libtool_object () 1436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich write_libobj=${1} 1438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes; then 1439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich write_lobj=\'${2}\' 1440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich write_lobj=none 1442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = yes; then 1445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich write_oldobj=\'${3}\' 1446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich write_oldobj=none 1448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 1451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat >${write_libobj}T <<EOF 1452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $write_libobj - a libtool object file 1453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Please DO NOT delete this file! 1456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# It is necessary for linking the library. 1457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Name of the PIC object. 1459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichpic_object=$write_lobj 1460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Name of the non-PIC object 1462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichnon_pic_object=$write_oldobj 1463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 1465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MV "${write_libobj}T" "${write_libobj}" 1466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 1467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich################################################## 1471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich################################################## 1473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_core_file_wine_to_w32 ARG 1475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Helper function used by file name conversion functions when $build is *nix, 1476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# correctly configured wine environment available, with the winepath program 1478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in $build's $PATH. 1479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARG is the $build file name to be converted to w32 format. 1481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# be empty on error (or when ARG is empty) 1483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_core_file_wine_to_w32 () 1484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32_result="$1" 1487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Unfortunately, winepath does not exit with a non-zero error code, so we 1489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # are forced to check the contents of stdout. On the other hand, if the 1490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # command is not found, the shell will set an exit code of 127 and print 1491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # *an error message* to stdout. So we must check for both error code of 1492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # zero AND non-empty stdout, which explains the odd construction: 1493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e "$lt_sed_naive_backslashify"` 1497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32_result= 1499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end: func_convert_core_file_wine_to_w32 1503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_core_path_wine_to_w32 ARG 1506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Helper function used by path conversion functions when $build is *nix, and 1507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# configured wine environment available, with the winepath program in $build's 1509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $PATH. Assumes ARG has no leading or trailing path separator characters. 1510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARG is path to be converted from $build format to win32. 1512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Result is available in $func_convert_core_path_wine_to_w32_result. 1513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Unconvertible file (directory) names in ARG are skipped; if no directory names 1514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# are convertible, then the result may be empty. 1515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_core_path_wine_to_w32 () 1516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # unfortunately, winepath doesn't convert paths, only file names 1519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_path_wine_to_w32_result="" 1520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldIFS=$IFS 1522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS=: 1523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for func_convert_core_path_wine_to_w32_f in $1; do 1524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS=$oldIFS 1525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 1534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS=$oldIFS 1535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end: func_convert_core_path_wine_to_w32 1538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_cygpath ARGS... 1541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# (2), returns the Cygwin file name or path in func_cygpath_result (input 1545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# file name or path is assumed to be in w32 format, as previously converted 1546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# or path in func_cygpath_result (input file name or path is assumed to be in 1548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Cygwin format). Returns an empty string on error. 1549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARGS are passed to cygpath, with the last one being the file name or path to 1551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# be converted. 1552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# environment variable; do not put it in $PATH. 1555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_cygpath () 1556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$?" -ne 0; then 1561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # on failure, ensure result is empty 1562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath_result= 1563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath_result= 1566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#end: func_cygpath 1570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_core_msys_to_w32 ARG 1573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert file name or path ARG from MSYS format to w32 format. Return 1574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# result in func_convert_core_msys_to_w32_result. 1575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_core_msys_to_w32 () 1576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # awkward: cmd appends spaces to result 1579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#end: func_convert_core_msys_to_w32 1583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_check ARG1 ARG2 1586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Verify that ARG1 (a file name in $build format) was converted to $host 1587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# format in ARG2. Otherwise, emit an error message, but continue (resetting 1588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file_result to ARG1). 1589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_check () 1590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$2" && test -n "$1" ; then 1593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "Could not determine host file name corresponding to" 1594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error " \`$1'" 1595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "Continuing, but uninstalled executables may not work." 1596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Fallback: 1597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_check 1601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Verify that FROM_PATH (a path in $build format) was converted to $host 1605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file_result to a simplistic fallback value (see below). 1607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_check () 1608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$4" && test -n "$3"; then 1611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "Could not determine the host path corresponding to" 1612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error " \`$3'" 1613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "Continuing, but uninstalled executables may not work." 1614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Fallback. This is a deliberately simplistic "conversion" and 1615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # should not be "improved". See libtool.info. 1616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x$1" != "x$2"; then 1617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_replace_pathsep_chars="s|$1|$2|g" 1618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result=`echo "$3" | 1619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e "$lt_replace_pathsep_chars"` 1620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 1621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$3" 1622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_check 1626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# and appending REPL if ORIG matches BACKPAT. 1631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_front_back_pathsep () 1632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $4 in 1635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $4 in 1639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $2 ) func_append func_to_host_path_result "$3" 1640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_front_back_pathsep 1644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich################################################## 1647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $build to $host FILE NAME CONVERSION FUNCTIONS # 1648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich################################################## 1649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# invoked via `$to_host_file_cmd ARG' 1650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# In each case, ARG is the path to be converted from $build to $host format. 1652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Result will be available in $func_to_host_file_result. 1653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file ARG 1656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Converts the file name ARG from $build format to $host format. Return result 1657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in func_to_host_file_result. 1658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_to_host_file () 1659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $to_host_file_cmd "$1" 1662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_to_host_file 1664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_tool_file ARG LAZY 1667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# converts the file name ARG from $build format to toolchain format. Return 1668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# result in func_to_tool_file_result. If the conversion in use is listed 1669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in (the comma separated) LAZY, no conversion takes place. 1670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_to_tool_file () 1671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case ,$2, in 1674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *,"$to_tool_file_cmd",*) 1675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file_result=$1 1676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 1678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $to_tool_file_cmd "$1" 1679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file_result=$func_to_host_file_result 1680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 1682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_to_tool_file 1684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_noop ARG 1687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Copy ARG to func_to_host_file_result. 1688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_noop () 1689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_noop 1693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_msys_to_w32 ARG 1696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# conversion to w32 is not available inside the cwrapper. Returns result in 1698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file_result. 1699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_msys_to_w32 () 1700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_msys_to_w32 "$1" 1705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 1708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_msys_to_w32 1710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_cygwin_to_w32 ARG 1713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert file name ARG from Cygwin to w32 format. Returns result in 1714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file_result. 1715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_cygwin_to_w32 () 1716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # LT_CYGPATH in this case. 1722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result=`cygpath -m "$1"` 1723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 1725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_cygwin_to_w32 1727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_nix_to_w32 ARG 1730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert file name ARG from *nix to w32 format. Requires a wine environment 1731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# and a working winepath. Returns result in func_to_host_file_result. 1732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_nix_to_w32 () 1733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32 "$1" 1738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 1741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_nix_to_w32 1743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_msys_to_cygwin ARG 1746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Returns result in func_to_host_file_result. 1748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_msys_to_cygwin () 1749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_msys_to_w32 "$1" 1754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$func_cygpath_result" 1756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 1758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_msys_to_cygwin 1760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_file_nix_to_cygwin ARG 1763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in func_to_host_file_result. 1766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_file_nix_to_cygwin () 1767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$1" 1770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_file_wine_to_w32 "$1" 1773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_file_result="$func_cygpath_result" 1775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_file_check "$1" "$func_to_host_file_result" 1777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_file_nix_to_cygwin 1779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich############################################# 1782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $build to $host PATH CONVERSION FUNCTIONS # 1783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich############################################# 1784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# invoked via `$to_host_path_cmd ARG' 1785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# In each case, ARG is the path to be converted from $build to $host format. 1787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The result will be available in $func_to_host_path_result. 1788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Path separators are also converted from $build format to $host format. If 1790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARG begins or ends with a path separator character, it is preserved (but 1791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# converted to $host format) on output. 1792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 1793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# All path conversion functions are named using the following convention: 1794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# file name conversion function : func_convert_file_X_to_Y () 1795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# path conversion function : func_convert_path_X_to_Y () 1796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# where, for any given $build/$host combination the 'X_to_Y' value is the 1797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# same. If conversion functions are added for new $build/$host combinations, 1798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# will break. 1800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_init_to_host_path_cmd 1803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# appropriate value, based on the value of $to_host_file_cmd. 1805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichto_host_path_cmd= 1806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_init_to_host_path_cmd () 1807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$to_host_path_cmd"; then 1810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_path ARG 1817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Converts the path ARG from $build format to $host format. Return result 1818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in func_to_host_path_result. 1819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_to_host_path () 1820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_init_to_host_path_cmd 1823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $to_host_path_cmd "$1" 1824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_to_host_path 1826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_noop ARG 1829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Copy ARG to func_to_host_path_result. 1830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_noop () 1831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$1" 1833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_noop 1835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_msys_to_w32 ARG 1838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# conversion to w32 is not available inside the cwrapper. Returns result in 1840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_path_result. 1841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_msys_to_w32 () 1842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$1" 1845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove leading and trailing path separator characters from ARG. MSYS 1847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and winepath ignores them completely. 1849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname : : "$1" 1850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_tmp1=$func_stripname_result 1851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_check : ";" \ 1854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_msys_to_w32 1859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_cygwin_to_w32 ARG 1862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert path ARG from Cygwin to w32 format. Returns result in 1863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file_result. 1864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_cygwin_to_w32 () 1865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$1" 1868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See func_convert_path_msys_to_w32: 1870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname : : "$1" 1871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_tmp1=$func_stripname_result 1872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_check : ";" \ 1874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_cygwin_to_w32 1879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_nix_to_w32 ARG 1882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert path ARG from *nix to w32 format. Requires a wine environment and 1883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# a working winepath. Returns result in func_to_host_file_result. 1884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_nix_to_w32 () 1885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$1" 1888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See func_convert_path_msys_to_w32: 1890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname : : "$1" 1891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_tmp1=$func_stripname_result 1892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_check : ";" \ 1895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_nix_to_w32 1900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_msys_to_cygwin ARG 1903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Returns result in func_to_host_file_result. 1905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_msys_to_cygwin () 1906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$1" 1909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See func_convert_path_msys_to_w32: 1911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname : : "$1" 1912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_tmp1=$func_stripname_result 1913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$func_cygpath_result" 1916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_check : : \ 1917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_msys_to_cygwin 1922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_convert_path_nix_to_cygwin ARG 1925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_to_host_file_result. 1928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_convert_path_nix_to_cygwin () 1929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$1" 1932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 1933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove leading and trailing path separator characters from 1934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # ARG. msys behavior is inconsistent here, cygpath turns them 1935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # into '.;' and ';.', and winepath ignores them completely. 1936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname : : "$1" 1937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_tmp1=$func_stripname_result 1938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path_result="$func_cygpath_result" 1941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_check : : \ 1942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 1945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 1946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end func_convert_path_nix_to_cygwin 1947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_compile arg... 1950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_compile () 1951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 1952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 1953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Get the compilation command and the source file. 1954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich base_compile= 1955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich suppress_opt=yes 1957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich suppress_output= 1958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg_mode=normal 1959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobj= 1960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich later= 1961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pie_flag= 1962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg 1964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 1965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg_mode in 1966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg ) 1967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # do not "continue". Instead, add this to base_compile 1968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lastarg="$arg" 1969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg_mode=normal 1970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich target ) 1973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobj="$arg" 1974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg_mode=normal 1975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 1976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich normal ) 1979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Accept any command-line options. 1980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 1981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -o) 1982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$libobj" && \ 1983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "you cannot specify \`-o' more than once" 1984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg_mode=target 1985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 1986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -pie | -fpie | -fPIE) 1989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append pie_flag " $arg" 1990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 1991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shared | -static | -prefer-pic | -prefer-non-pic) 1994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append later " $arg" 1995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 1996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 1997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-suppress) 1999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich suppress_opt=no 2000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Xcompiler) 2004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg_mode=arg # the next one goes into the "base_compile" arg list 2005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue # The current "srcfile" will either be retained or 2006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; # replaced later. I would guess that would be a bug. 2007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Wc,*) 2009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-Wc,' '' "$arg" 2010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich args=$func_stripname_result 2011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lastarg= 2012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS=',' 2013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg in $args; do 2014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 2015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append_quoted lastarg "$arg" 2016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 2018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname ' ' '' "$lastarg" 2019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lastarg=$func_stripname_result 2020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add the arguments to base_compile. 2022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append base_compile " $lastarg" 2023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Accept the current argument as the source file. 2028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The previous "srcfile" becomes the current argument. 2029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 2030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lastarg="$srcfile" 2031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich srcfile="$arg" 2032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac # case $arg 2034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac # case $arg_mode 2036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Aesthetically quote the previous argument. 2038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append_quoted base_compile "$lastarg" 2039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # for arg 2040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg_mode in 2042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg) 2043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "you must specify an argument for -Xcompile" 2044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich target) 2046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "you must specify a target with \`-o'" 2047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Get the name of the library object. 2050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libobj" && { 2051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$srcfile" 2052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobj="$func_basename_result" 2053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 2054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Recognize several different file suffixes. 2058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the user specifies -o file.o, it is replaced with file.lo 2059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $libobj in 2060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.[cCFSifmso] | \ 2061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.ada | *.adb | *.ads | *.asm | \ 2062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_xform "$libobj" 2065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobj=$func_xform_result 2066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $libobj in 2070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot determine name of library object from \`$libobj'" 2073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_infer_tag $base_compile 2077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg in $later; do 2079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 2080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shared) 2081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_libtool_libs" != yes && \ 2082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_configuration "can not build a shared library" 2083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=no 2084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static) 2088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 2089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 2090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -prefer-pic) 2094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_mode=yes 2095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -prefer-non-pic) 2099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_mode=no 2100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$libobj" 2106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobj" != "X$func_quote_for_eval_result" \ 2107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_and_basename "$obj" "/" "" 2110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objname="$func_basename_result" 2111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xdir="$func_dirname_result" 2112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lobj=${xdir}$objdir/$objname 2113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$base_compile" && \ 2115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify a compilation command" 2116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete any leftover library objects. 2118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = yes; then 2119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich removelist="$obj $lobj $libobj ${libobj}T" 2120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich removelist="$lobj $libobj ${libobj}T" 2122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # On Cygwin there's no "real" PIC flag so we must build both object types 2125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host_os in 2126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cygwin* | mingw* | pw32* | os2* | cegcc*) 2127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_mode=default 2128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # non-PIC code in shared libraries is not supported 2132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_mode=default 2133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Calculate the filename of the output object if compiler does 2136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # not support -o with -c 2137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$compiler_c_o" = no; then 2138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lockfile="$output_obj.lock" 2140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_obj= 2142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich need_locks=no 2143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lockfile= 2144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Lock this critical section if it is needed 2147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We use this script file to make the link, it avoids creating a new file 2148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_locks" = yes; then 2149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_echo "Waiting for $lockfile to be removed" 2151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sleep 2 2152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$need_locks" = warn; then 2154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$lockfile"; then 2155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 2156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich*** ERROR, $lockfile exists and contains: 2157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich`cat $lockfile 2>/dev/null` 2158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThis indicates that another process is trying to use the same 2160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtemporary object file, and libtool could not work around it because 2161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichyour compiler does not support \`-c' and \`-o' together. If you 2162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better 2163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichavoid parallel builds (make -j) in this platform, or get a better 2164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcompiler." 2165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $removelist 2167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_FAILURE 2168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append removelist " $output_obj" 2170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$srcfile" > "$lockfile" 2171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $removelist 2174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append removelist " $lockfile" 2175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich srcfile=$func_to_tool_file_result 2179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$srcfile" 2180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich qsrcfile=$func_quote_for_eval_result 2181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only build a PIC object if we are building libtool libraries. 2183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes; then 2184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Without this assignment, base_compile gets emptied. 2185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fbsd_hideous_sh_bug=$base_compile 2186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pic_mode" != no; then 2188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich command="$base_compile $qsrcfile $pic_flag" 2189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't build PIC code 2191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich command="$base_compile $qsrcfile" 2192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mkdir_p "$xdir$objdir" 2195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$output_obj"; then 2197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Place PIC objects in $objdir 2198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append command " -o $lobj" 2199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval_locale "$command" \ 2202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_locks" = warn && 2205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 2207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich*** ERROR, $lockfile contains: 2208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich`cat $lockfile 2>/dev/null` 2209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbut it should contain: 2211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$srcfile 2212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThis indicates that another process is trying to use the same 2214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtemporary object file, and libtool could not work around it because 2215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichyour compiler does not support \`-c' and \`-o' together. If you 2216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better 2217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichavoid parallel builds (make -j) in this platform, or get a better 2218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcompiler." 2219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $removelist 2221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_FAILURE 2222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just move the object if needed, then go on to compile the next one 2225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$MV "$output_obj" "$lobj"' \ 2227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Allow error messages only from the first compilation. 2231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$suppress_opt" = yes; then 2232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich suppress_output=' >/dev/null 2>&1' 2233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only build a position-dependent object if we build old libraries. 2237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = yes; then 2238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pic_mode" != yes; then 2239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't build PIC code 2240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich command="$base_compile $qsrcfile$pie_flag" 2241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich command="$base_compile $qsrcfile $pic_flag" 2243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$compiler_c_o" = yes; then 2245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append command " -o $obj" 2246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Suppress compiler output if we already did a PIC compilation. 2249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append command "$suppress_output" 2250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval_locale "$command" \ 2251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_locks" = warn && 2254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 2256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich*** ERROR, $lockfile contains: 2257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich`cat $lockfile 2>/dev/null` 2258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbut it should contain: 2260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$srcfile 2261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThis indicates that another process is trying to use the same 2263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtemporary object file, and libtool could not work around it because 2264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichyour compiler does not support \`-c' and \`-o' together. If you 2265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrepeat this compilation, it may succeed, by chance, but you had better 2266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichavoid parallel builds (make -j) in this platform, or get a better 2267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcompiler." 2268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $removelist 2270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_FAILURE 2271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just move the object if needed 2274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$MV "$output_obj" "$obj"' \ 2276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 2281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Unlock the critical section if it was locked 2284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_locks" != no; then 2285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich removelist=$lockfile 2286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM "$lockfile" 2287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 2289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 2291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 2292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich$opt_help || { 2294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 2296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_help () 2298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 2299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need to display help for each of the modes. 2300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $opt_mode in 2301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "") 2302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Generic help is extracted from the usage comments 2303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # at the start of this file. 2304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_help 2305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich clean) 2308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichRemove files from the build directory. 2312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichRM is the name of the program to use to delete files associated with each FILE 2314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichto RM. 2316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIf FILE is a libtool library, object or program, all the files associated 2318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichwith it are deleted. Otherwise, only FILE itself is deleted using RM." 2319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile) 2322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichCompile a source file into a libtool library object. 2326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThis mode accepts the following additional options: 2328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-suppress do not suppress compiler output for multiple passes 2331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -prefer-pic try to build PIC objects only 2332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -prefer-non-pic try to build non-PIC objects only 2333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shared do not build a \`.o' file suitable for static linking 2334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static only build a \`.o' file suitable for static linking 2335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Wc,FLAG pass FLAG directly to the compiler 2336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfrom the given SOURCEFILE. 2339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThe output file name is determined by removing the directory component from 2341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichSOURCEFILE, then substituting the C source code suffix \`.c' with the 2342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlibrary object suffix, \`.lo'." 2343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich execute) 2346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichAutomatically set library path, then run a program. 2350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThis mode accepts the following additional options: 2352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -dlopen FILE add the directory containing FILE to the library path 2354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThis mode sets the library path environment variable according to \`-dlopen' 2356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichflags. 2357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIf any of the ARGS are libtool executable wrappers, then they are translated 2359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichinto their corresponding uninstalled binary, and any of their required library 2360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdirectories are added to the library path. 2361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThen, COMMAND is executed, with ARGS as arguments." 2363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finish) 2366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichComplete the installation of libtool libraries. 2370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEach LIBDIR is a directory that contains libtool libraries. 2372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThe commands that this mode executes may require superuser privileges. Use 2374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichthe \`--dry-run' option if you just want to see what would be executed." 2375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich install) 2378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichInstall executables or libraries. 2382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichINSTALL-COMMAND is the installation command. The first component should be 2384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevicheither the \`install' or \`cp' program. 2385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThe following components of INSTALL-COMMAND are treated specially: 2387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThe rest of the components are interpreted as arguments to that command (only 2391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichBSD-compatible install options are recognized)." 2392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link) 2395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichLink object files or libraries together to form another library, or to 2399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcreate an executable program. 2400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichLINK-COMMAND is a command using the C compiler that you would use to create 2402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevicha program from several object files. 2403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichThe following components of LINK-COMMAND are treated specially: 2405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -all-static do not do any dynamic linking at all 2407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -avoid-version do not add a version suffix if possible 2408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -bindir BINDIR specify path to binaries directory (for systems where 2409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libraries must be found in the PATH setting at runtime) 2410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -export-symbols SYMFILE 2414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich try to export only the symbols listed in SYMFILE 2415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -export-symbols-regex REGEX 2416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich try to export only the symbols matching REGEX 2417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -LLIBDIR search LIBDIR for required installed libraries 2418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -lNAME OUTPUT-FILE requires the installed library libNAME 2419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -module build a library that can dlopened 2420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-fast-install disable the fast-install mode 2421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-install link a not-installable executable 2422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-undefined declare that a library does not refer to external symbols 2423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -objectlist FILE Use a list of object files found in FILE to specify objects 2425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -precious-files-regex REGEX 2426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich don't remove output files matching REGEX 2427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -release RELEASE specify package release information 2428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shared only do dynamic linking of libtool libraries 2431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shrext SUFFIX override the standard shared library file extension 2432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static do not do any dynamic linking of uninstalled libtool libraries 2433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static-libtool-libs 2434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do not do any dynamic linking of libtool libraries 2435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -version-info CURRENT[:REVISION[:AGE]] 2436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich specify library version info [each variable defaults to 0] 2437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -weak LIBNAME declare that the target provides the LIBNAME interface 2438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Wc,FLAG 2439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Wl,FLAG 2441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichAll other options (arguments beginning with \`-') are ignored. 2445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEvery other argument is treated as a filename. Files ending in \`.la' are 2447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtreated as uninstalled libtool libraries, other files are standard or library 2448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichobject files. 2449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrequired, except when creating a convenience library. 2453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichis created, otherwise an executable program is created." 2459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich uninstall) 2462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \ 2463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichRemove libraries from an installation directory. 2466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichRM is the name of the program to use to delete files associated with each FILE 2468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichto RM. 2470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichIf FILE is a libtool library, all the files associated with it are deleted. 2472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichOtherwise, only FILE itself is deleted using RM." 2473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "invalid operation mode \`$opt_mode'" 2477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 2481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "Try \`$progname --help' for more information about other modes." 2482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 2483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Now that we've collected a possible --mode arg, show help if necessary 2485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif $opt_help; then 2486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_help" = :; then 2487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mode_help 2488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 2490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_help noexit 2491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for opt_mode in compile link execute install finish uninstall clean; do 2492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mode_help 2493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 2496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_help noexit 2497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for opt_mode in compile link execute install finish uninstall clean; do 2498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 2499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mode_help 2500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } | 2502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sed '1d 2503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^When reporting/,/^Report/{ 2504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich H 2505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich d 2506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 2507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $x 2508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /information about other modes/d 2509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /more detailed .*MODE/d 2510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 2513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi 2514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_execute arg... 2517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_execute () 2518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 2519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 2520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The first argument is the command name. 2521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmd="$nonopt" 2522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$cmd" && \ 2523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify a COMMAND" 2524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Handle -dlopen flags immediately. 2526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file in $opt_dlopen; do 2527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -f "$file" \ 2528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich || func_fatal_help "\`$file' is not a file" 2529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir= 2531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 2532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 2533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$file" 2534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=$func_resolve_sysroot_result 2535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that this really is a libtool archive. 2537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lalib_unsafe_p "$file" \ 2538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich || func_fatal_help "\`$lib' is not a valid libtool archive" 2539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Read the libtool library. 2541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlname= 2542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich library_names= 2543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$file" 2544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Skip this library if it cannot be dlopened. 2546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$dlname"; then 2547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Warn if it was a shared library. 2548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$library_names" && \ 2549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`$file' was not linked with \`-export-dynamic'" 2550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$file" "" "." 2554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$func_dirname_result" 2555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$dir/$objdir/$dlname"; then 2557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dir "/$objdir" 2558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$dir/$dlname"; then 2560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) 2566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just add the directory containing the .lo file. 2567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$file" "" "." 2568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$func_dirname_result" 2569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Get the absolute pathname. 2578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir=`cd "$dir" && pwd` 2579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$absdir" && dir="$absdir" 2580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now add the directory to shlibpath_var. 2582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval "test -z \"\$$shlibpath_var\""; then 2583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$shlibpath_var=\"\$dir\"" 2584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This variable tells wrapper scripts just to set shlibpath_var 2590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # rather than running their programs. 2591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libtool_execute_magic="$magic" 2592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check if any of the arguments is a wrapper script. 2594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich args= 2595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file 2596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 2597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 2598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -* | *.la | *.lo ) ;; 2599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do a test to see if this is really a libtool program. 2601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_ltwrapper_script_p "$file"; then 2602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$file" 2603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Transform arg to wrapped name. 2604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file="$progdir/$program" 2605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif func_ltwrapper_executable_p "$file"; then 2606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_scriptname "$file" 2607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$func_ltwrapper_scriptname_result" 2608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Transform arg to wrapped name. 2609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file="$progdir/$program" 2610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Quote arguments (to preserve shell metacharacters). 2614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append_quoted args "$file" 2615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$opt_dry_run" = Xfalse; then 2618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$shlibpath_var"; then 2619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Export the shlibpath_var. 2620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "export $shlibpath_var" 2621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Restore saved environment variables 2624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 2626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "if test \"\${save_$lt_var+set}\" = set; then 2627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $lt_var=\$save_$lt_var; export $lt_var 2628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $lt_unset $lt_var 2630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi" 2631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now prepare to actually exec the command. 2634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exec_cmd="\$cmd$args" 2635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Display what would be done. 2637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$shlibpath_var"; then 2638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "export $shlibpath_var" 2640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$cmd$args" 2642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 2643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 2645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_finish arg... 2650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_finish () 2651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 2652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 2653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libs= 2654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdirs= 2655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich admincmds= 2656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for opt in "$nonopt" ${1+"$@"} 2658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 2659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -d "$opt"; then 2660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libdirs " $opt" 2661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -f "$opt"; then 2663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_lalib_unsafe_p "$opt"; then 2664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libs " $opt" 2665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`$opt' is not a valid libtool archive" 2667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "invalid argument \`$opt'" 2671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$libs"; then 2675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$lt_sysroot"; then 2676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sysroot_cmd= 2680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove sysroot references 2683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_dry_run; then 2684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $libs; do 2685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmpdir=`func_mktempdir` 2689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $libs; do 2690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich > $tmpdir/tmp-la 2692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich mv -f $tmpdir/tmp-la $lib 2693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ${RM}r "$tmpdir" 2695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $libdirs; do 2700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$finish_cmds"; then 2701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each command in the finish commands. 2702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich'"$cmd"'"' 2704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$finish_eval"; then 2706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do the single finish_eval. 2707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmds=\"$finish_eval\" 2708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval "$cmds" || func_append admincmds " 2709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $cmds" 2710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Exit here if they wanted silent mode. 2715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_silent && exit $EXIT_SUCCESS 2716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "----------------------------------------------------------------------" 2719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "Libraries have been installed in:" 2720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $libdirs; do 2721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO " $libdir" 2722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 2724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "If you ever happen to want to link against installed libraries" 2725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "in a given directory, LIBDIR, you must either use libtool, and" 2726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "flag during linking and do at least one of the following:" 2728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$shlibpath_var"; then 2729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo " during execution" 2731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$runpath_var"; then 2733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo " during linking" 2735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 2737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir=LIBDIR 2738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 2739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO " - use the \`$flag' linker flag" 2741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$admincmds"; then 2743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO " - have your system administrator run these commands:$admincmds" 2744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f /etc/ld.so.conf; then 2746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 2749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "See any operating system documentation about shared libraries for" 2751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 2752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich solaris2.[6789]|solaris2.1[0-9]) 2753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "pages." 2755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "----------------------------------------------------------------------" 2761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 2763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 2764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_install arg... 2769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_install () 2770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 2771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 2772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # There may be an optional sh(1) argument at the beginning of 2773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # install_prog (especially on Windows NT). 2774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Allow the use of GNU shtool's install command. 2776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $nonopt in *shtool*) :;; *) false;; esac; then 2777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Aesthetically quote it. 2778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$nonopt" 2779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich install_prog="$func_quote_for_eval_result " 2780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg=$1 2781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 2782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich install_prog= 2784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg=$nonopt 2785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The real first argument should be the name of the installation program. 2788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Aesthetically quote it. 2789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 2790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append install_prog "$func_quote_for_eval_result" 2791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich install_shared_prog=$install_prog 2792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $install_prog " in 2793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\\\ /]cp\ *) install_cp=: ;; 2794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) install_cp=false ;; 2795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need to accept at least all the BSD install flags. 2798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dest= 2799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich files= 2800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich opts= 2801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 2802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich install_type= 2803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich isdir=no 2804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich stripme= 2805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich no_mode=: 2806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg 2807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 2808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg2= 2809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dest"; then 2810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append files " $dest" 2811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dest=$arg 2812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 2816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -d) isdir=yes ;; 2817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -f) 2818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $install_cp; then :; else 2819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=$arg 2820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -g | -m | -o) 2823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=$arg 2824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -s) 2826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich stripme=" -s" 2827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -*) 2830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the previous option needed an argument, then skip it. 2833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$prev"; then 2834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg2=$install_override_mode 2836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich no_mode=false 2837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 2839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dest=$arg 2841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 2842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Aesthetically quote the argument. 2847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 2848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append install_prog " $func_quote_for_eval_result" 2849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$arg2"; then 2850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg2" 2851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append install_shared_prog " $func_quote_for_eval_result" 2853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$install_prog" && \ 2856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify an install program" 2857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$prev" && \ 2859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "the \`$prev' option requires an argument" 2860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$install_override_mode" && $no_mode; then 2862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $install_cp; then :; else 2863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$install_override_mode" 2864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append install_shared_prog " -m $func_quote_for_eval_result" 2865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$files"; then 2869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$dest"; then 2870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "no file or destination specified" 2871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify a destination" 2873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Strip any trailing slash from the destination. 2877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '/' "$dest" 2878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dest=$func_stripname_result 2879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that the destination is a directory. 2881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -d "$dest" && isdir=yes 2882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$isdir" = yes; then 2883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destdir="$dest" 2884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destname= 2885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_and_basename "$dest" "" "." 2887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destdir="$func_dirname_result" 2888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destname="$func_basename_result" 2889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Not a directory, so check to see that there is only one file specified. 2891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $files; shift 2892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$#" -gt 1 && \ 2893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "\`$dest' is not a directory" 2894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $destdir in 2896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 2897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file in $files; do 2899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 2900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) ;; 2901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 2902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "\`$destdir' must be an absolute directory name" 2903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 2906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This variable tells wrapper scripts just to set variables rather 2910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # than running their programs. 2911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libtool_install_magic="$magic" 2912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich staticlibs= 2914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich future_libdirs= 2915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich current_libdirs= 2916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file in $files; do 2917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each installation. 2919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 2920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$libext) 2921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do the static libraries later. 2922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append staticlibs " $file" 2923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 2924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 2926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$file" 2927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=$func_resolve_sysroot_result 2928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that this really is a libtool archive. 2930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lalib_unsafe_p "$file" \ 2931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich || func_fatal_help "\`$file' is not a valid libtool archive" 2932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich library_names= 2934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_library= 2935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 2936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$file" 2937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add the libdir to current_libdirs if it is the destination. 2939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$destdir" = "X$libdir"; then 2940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$current_libdirs " in 2941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 2942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append current_libdirs " $libdir" ;; 2943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Note the libdir as a future libdir. 2946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$future_libdirs " in 2947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 2948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append future_libdirs " $libdir" ;; 2949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 2950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$file" "/" "" 2953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$func_dirname_result" 2954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dir "$objdir" 2955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$relink_command"; then 2957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Determine the prefix the user has applied to our future dir. 2958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't allow the user to place us outside of our expected 2961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # location b/c this prevents finding dependent libraries that 2962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # are installed to the same prefix. 2963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # At present, this check doesn't affect windows .dll's that 2964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # are installed into $libdir/../bin (currently, that works fine) 2965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # but it's something to keep an eye on. 2966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$inst_prefix_dir" = "$destdir" && \ 2967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$inst_prefix_dir"; then 2970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Stick the inst_prefix_dir data into the link command. 2971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 2973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "relinking \`$file'" 2977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$relink_command" \ 2978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 2980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See the names of the shared library. 2982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $library_names; shift 2983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$1"; then 2984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich realname="$1" 2985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 2986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich srcname="$realname" 2988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$relink_command" && srcname="$realname"T 2989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 2990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Install the shared library and build the symlinks. 2991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 'exit $?' 2993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tstripme="$stripme" 2994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host_os in 2995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cygwin* | mingw* | pw32* | cegcc*) 2996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $realname in 2997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.dll.a) 2998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tstripme="" 2999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$tstripme" && test -n "$striplib"; then 3004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$#" -gt 0; then 3008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete the old symlinks, and create new ones. 3009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Try `ln -sf' first, because the `ln' binary might depend on 3010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the symlink we replace! Solaris /bin/ln does not understand -f, 3011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # so we also need to try rm && ln -s. 3012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for linkname 3013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 3014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$linkname" != "$realname" \ 3015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each command in the postinstall commands. 3020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib="$destdir/$realname" 3021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$postinstall_cmds" 'exit $?' 3022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Install the pseudo-library for information purposes. 3025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$file" 3026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 3027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich instname="$dir/$name"i 3028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Maybe install the static library, too. 3031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) 3035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Install (i.e. copy) a libtool object. 3036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Figure out destination file name, if it wasn't already specified. 3038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$destname"; then 3039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile="$destdir/$destname" 3040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$file" 3042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile="$func_basename_result" 3043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile="$destdir/$destfile" 3044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Deduce the name of the destination old-style object file. 3047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $destfile in 3048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) 3049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lo2o "$destfile" 3050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich staticdest=$func_lo2o_result 3051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$objext) 3053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich staticdest="$destfile" 3054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile= 3055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Install the libtool object if requested. 3062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$destfile" && \ 3063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$install_prog $file $destfile" 'exit $?' 3064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Install the old object if enabled. 3066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = yes; then 3067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Deduce the name of the old-style object file. 3068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lo2o "$file" 3069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich staticobj=$func_lo2o_result 3070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 3073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Figure out destination file name, if it wasn't already specified. 3077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$destname"; then 3078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile="$destdir/$destname" 3079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$file" 3081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile="$func_basename_result" 3082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile="$destdir/$destfile" 3083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the file is missing, and there is a .exe on the end, strip it 3086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # because it is most likely a libtool script we actually want to 3087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # install 3088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich stripped_ext="" 3089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 3090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.exe) 3091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$file"; then 3092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$file" 3093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=$func_stripname_result 3094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich stripped_ext=".exe" 3095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do a test to see if this is really a libtool program. 3100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw*) 3102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_ltwrapper_executable_p "$file"; then 3103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_scriptname "$file" 3104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrapper=$func_ltwrapper_scriptname_result 3105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$file" 3107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrapper=$func_stripname_result 3108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrapper=$file 3112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_ltwrapper_script_p "$wrapper"; then 3115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich notinst_deplibs= 3116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 3117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$wrapper" 3119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check the variables that should have been set. 3121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$generated_by_libtool_version" && \ 3122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize=yes 3125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $notinst_deplibs; do 3126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that each library is installed. 3127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir= 3128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$lib"; then 3129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$lib" 3130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$libdir" && test ! -f "$libfile"; then 3133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`$lib' has not been installed in \`$libdir'" 3134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize=no 3135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 3139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$wrapper" 3140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich outputname= 3142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$fast_install" = no && test -n "$relink_command"; then 3143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$finalize" = yes; then 3145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmpdir=`func_mktempdir` 3146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$file$stripped_ext" 3147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file="$func_basename_result" 3148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich outputname="$tmpdir/$file" 3149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Replace the output file specification. 3150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_silent || { 3153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_expand "$relink_command" 3154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "func_echo $func_quote_for_expand_result" 3155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval "$relink_command"; then : 3157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "error: relink \`$file' with the above command before installing it" 3159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || ${RM}r "$tmpdir" 3160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 3161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file="$outputname" 3163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "cannot relink \`$file'" 3165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Install the binary that we compiled earlier. 3169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # remove .exe since cygwin /usr/bin/install will append another 3174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # one anyway 3175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $install_prog,$host in 3176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich */usr/bin/install*,*cygwin*) 3177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file:$destfile in 3178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.exe:*.exe) 3179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # this is ok 3180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.exe:*) 3182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile=$destfile.exe 3183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *:*.exe) 3185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$destfile" 3186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destfile=$func_stripname_result 3187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || if test -n "$outputname"; then 3193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ${RM}r "$tmpdir" 3194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file in $staticlibs; do 3200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$file" 3201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 3202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Set up the ranlib parameters. 3204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlib="$destdir/$name" 3205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tool_oldlib=$func_to_tool_file_result 3207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$stripme" && test -n "$old_striplib"; then 3211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each command in the postinstall commands. 3215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$future_libdirs" && \ 3219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "remember to run \`$progname --finish$future_libdirs'" 3220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$current_libdirs"; then 3222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Maybe just do a dry run. 3223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 3227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_generate_dlsyms outputname originator pic_p 3234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Extract symbols from dlprefiles and create ${outputname}S.o with 3235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# a dlpreopen symbol table. 3236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_generate_dlsyms () 3237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_outputname="$1" 3240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_originator="$2" 3241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_pic_p="${3-no}" 3242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_dlsyms= 3244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_dlsyms="${my_outputname}S.c" 3248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "not configured to extract global symbols from dlpreopened files" 3250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$my_dlsyms"; then 3254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $my_dlsyms in 3255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "") ;; 3256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.c) 3257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Discover the nlist of each of the dlfiles. 3258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nlist="$output_objdir/${my_outputname}.nm" 3259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Parse the name list into a source file. 3263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating $output_objdir/$my_dlsyms" 3264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifdef __cplusplus 3270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichextern \"C\" { 3271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 3272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 3276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define LT_DLSYM_CONST 3282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#elif defined(__osf__) 3283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* This system does not cope well with relocations in const data. */ 3284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define LT_DLSYM_CONST 3285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else 3286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define LT_DLSYM_CONST const 3287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 3288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* External symbol declarations for the compiler. */\ 3290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 3291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$dlself" = yes; then 3293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "generating symbol list for \`$output'" 3294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add our own program objects to the symbol list. 3298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for progfile in $progfiles; do 3300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$exclude_expsyms"; then 3306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$MV "$nlist"T "$nlist"' 3309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols_regex"; then 3313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$MV "$nlist"T "$nlist"' 3316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prepare the list of exported symbols 3320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$export_symbols"; then 3321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols="$output_objdir/$outputname.exp" 3322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM $export_symbols 3324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *cegcc* ) 3327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$MV "$nlist"T "$nlist"' 3337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *cegcc* ) 3339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dlprefile in $dlprefiles; do 3348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "extracting global C symbols from \`$dlprefile'" 3349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$dlprefile" 3350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 3351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *cegcc* ) 3353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # if an import library, we need to obtain dlname 3354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_win32_import_lib_p "$dlprefile"; then 3355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_tr_sh "$dlprefile" 3356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefile_dlbasename="" 3358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Use subshell, to avoid clobbering current variable values 3360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlprefile_dlname" ; then 3362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$dlprefile_dlname" 3363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefile_dlbasename="$func_basename_result" 3364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # no lafile. user explicitly requested -dlpreopen <import library>. 3366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $sharedlib_from_linklib_cmd "$dlprefile" 3367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefile_dlbasename=$sharedlib_from_linklib_result 3368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlprefile_dlbasename" ; then 3372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "Could not compute DLL name from $name" 3375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$ECHO ": $name " >> "$nlist"' 3376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else # not an import lib 3382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$ECHO ": $name " >> "$nlist"' 3384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval '$ECHO ": $name " >> "$nlist"' 3392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure we have at least an empty file. 3401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -f "$nlist" || : > "$nlist" 3402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$exclude_expsyms"; then 3404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MV "$nlist"T "$nlist" 3406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Try sorting and uniquifying the output. 3409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $GREP -v "^: " < "$nlist" | 3410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if sort -k 3 </dev/null >/dev/null 2>&1; then 3411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sort -k 3 3412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sort +2 3414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi | 3415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich uniq > "$nlist"S; then 3416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 3417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $GREP -v "^: " < "$nlist" > "$nlist"S 3419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$nlist"S; then 3422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo >> "$output_objdir/$my_dlsyms" "\ 3428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* The mapping between symbol names and symbols. */ 3430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtypedef struct { 3431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *name; 3432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich void *address; 3433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} lt_dlsymlist; 3434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichextern LT_DLSYM_CONST lt_dlsymlist 3435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_${my_prefix}_LTX_preloaded_symbols[]; 3436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichLT_DLSYM_CONST lt_dlsymlist 3437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_${my_prefix}_LTX_preloaded_symbols[] = 3438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{\ 3439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { \"$my_originator\", (void *) 0 }," 3440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $need_lib_prefix in 3442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich no) 3443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo >> "$output_objdir/$my_dlsyms" "\ 3450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich {0, (void *) 0} 3451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich}; 3452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* This works around a problem in FreeBSD linker */ 3454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifdef FREEBSD_WORKAROUND 3455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const void *lt_preloaded_setup() { 3456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return lt_${my_prefix}_LTX_preloaded_symbols; 3457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 3459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifdef __cplusplus 3461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif\ 3463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 3464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } # !$opt_dry_run 3465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_flag_for_symtable= 3467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$compile_command " in 3468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" -static "*) ;; 3469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # compiling the symbol table file with pic_flag works around 3472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # a FreeBSD bug that causes programs to crash when -lm is 3473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # linked before any other PIC object. But we must not use 3474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # pic_flag when linking with -static. The problem exists in 3475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-hpux*) 3479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_flag_for_symtable=" $pic_flag" ;; 3480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$my_pic_p" != Xno; then 3482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_flag_for_symtable=" $pic_flag" 3483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich symtab_cflags= 3489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg in $LTCFLAGS; do 3490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 3491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -pie | -fpie | -fPIE) ;; 3492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append symtab_cflags " $arg" ;; 3493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now compile the dynamic symbol file. 3497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Clean up the generated files. 3500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Transform the symbol file into the correct name. 3503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich symfileobj="$output_objdir/${my_outputname}S.$objext" 3504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *cegcc* ) 3506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$output_objdir/$my_outputname.def"; then 3507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We keep going just in case the user didn't refer to 3526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # really was required. 3528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Nullify the symbol file. 3530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_win32_libid arg 3536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# return the library type of file 'arg' 3537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Need a lot of goo to handle *both* DLLs and import libs 3539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Has to be a shell function in order to 'eat' the argument 3540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# that is supplied when $file_magic_command is called. 3541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Despite the name, also deal with 64 bit binaries. 3542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_win32_libid () 3543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich win32_libid_type="unknown" 3546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich win32_fileres=`file -L $1 2>/dev/null` 3547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $win32_fileres in 3548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *ar\ archive\ import\ library*) # definitely import 3549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich win32_libid_type="x86 archive import" 3550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *ar\ archive*) # could be an import, or static 3552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$1" func_convert_file_msys_to_w32 3556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n -e ' 3558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 1,100{ 3559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich / I /{ 3560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s,.*,import, 3561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p 3562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich q 3563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich }'` 3565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $win32_nmres in 3566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich import*) win32_libid_type="x86 archive import";; 3567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) win32_libid_type="x86 archive static";; 3568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *DLL*) 3572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich win32_libid_type="x86 DLL" 3573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *executable*) # but shell scripts are "executable" too... 3575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $win32_fileres in 3576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *MS\ Windows\ PE\ Intel*) 3577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich win32_libid_type="x86 DLL" 3578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$win32_libid_type" 3583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_cygming_dll_for_implib ARG 3586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Platform-specific function to extract the 3588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# name of the DLL associated with the specified 3589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# import library ARG. 3590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Invoked by eval'ing the libtool variable 3591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $sharedlib_from_linklib_cmd 3592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Result is available in the variable 3593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $sharedlib_from_linklib_result 3594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_cygming_dll_for_implib () 3595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The is the core of a fallback implementation of a 3603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# platform-specific function to extract the name of the 3604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# DLL associated with the specified import library LIBNAME. 3605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# SECTION_NAME is either .idata$6 or .idata$7, depending 3607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# on the platform and compiler that created the implib. 3608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Echos the name of the DLL associated with the 3610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# specified import library. 3611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_cygming_dll_for_implib_fallback_core () 3612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED '/^Contents of section '"$match_literal"':/{ 3617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Place marker at beginning of archive member dllname section 3618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/.*/====MARK====/ 3619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p 3620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich d 3621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 3622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # These lines can sometimes be longer than 43 characters, but 3623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # are always uninteresting 3624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /:[ ]*file format pe[i]\{,1\}-/d 3625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^In archive [^:]*:/d 3626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Ensure marker is printed 3627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^====MARK====/p 3628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove all lines with less than 43 characters 3629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^.\{43\}/!d 3630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # From remaining lines, remove first 43 characters 3631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^.\{43\}//' | 3632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n ' 3633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Join marker and all lines until next marker into a single line 3634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /^====MARK====/ b para 3635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich H 3636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ b para 3637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich b 3638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich :para 3639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich x 3640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/\n//g 3641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove the marker 3642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/^====MARK====// 3643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove trailing dots and whitespace 3644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s/[\. \t]*$// 3645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Print 3646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /./p' | 3647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # we now have a list, one entry per line, of the stringified 3648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # contents of the appropriate section of all members of the 3649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # archive which possess that section. Heuristic: eliminate 3650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # all those which have a first or second character that is 3651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # a '.' (that is, objdump's representation of an unprintable 3652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # character.) This should work for all archives with less than 3653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 0x302f exports -- but will fail for DLLs whose name actually 3654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # begins with a literal '.' or a single character followed by 3655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # a '.'. 3656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 3657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Of those that remain, print the first one. 3658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e '/^\./d;/^.\./d;q' 3659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_cygming_gnu_implib_p ARG 3662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This predicate returns with zero status (TRUE) if 3663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARG is a GNU/binutils-style import library. Returns 3664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# with nonzero status (FALSE) otherwise. 3665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_cygming_gnu_implib_p () 3666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$1" func_convert_file_msys_to_w32 3669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 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)$'` 3670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$func_cygming_gnu_implib_tmp" 3671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_cygming_ms_implib_p ARG 3674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This predicate returns with zero status (TRUE) if 3675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARG is an MS-style import library. Returns 3676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# with nonzero status (FALSE) otherwise. 3677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_cygming_ms_implib_p () 3678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$1" func_convert_file_msys_to_w32 3681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$func_cygming_ms_implib_tmp" 3683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_cygming_dll_for_implib_fallback ARG 3686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Platform-specific function to extract the 3687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# name of the DLL associated with the specified 3688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# import library ARG. 3689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This fallback implementation is for use when $DLLTOOL 3691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# does not support the --identify-strict option. 3692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Invoked by eval'ing the libtool variable 3693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $sharedlib_from_linklib_cmd 3694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Result is available in the variable 3695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $sharedlib_from_linklib_result 3696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_cygming_dll_for_implib_fallback () 3697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_cygming_gnu_implib_p "$1" ; then 3700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # binutils import library 3701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif func_cygming_ms_implib_p "$1" ; then 3703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # ms-generated import library 3704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # unknown 3707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sharedlib_from_linklib_result="" 3708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_extract_an_archive dir oldlib 3713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_extract_an_archive () 3714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich f_ex_an_ar_dir="$1"; shift 3717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich f_ex_an_ar_oldlib="$1" 3718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$lock_old_archive_extraction" = yes; then 3719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lockfile=$f_ex_an_ar_oldlib.lock 3720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_echo "Waiting for $lockfile to be removed" 3722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sleep 2 3723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 'stat=$?; rm -f "$lockfile"; exit $stat' 3727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$lock_old_archive_extraction" = yes; then 3728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || rm -f "$lockfile" 3729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 3732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_extract_archives gentop oldlib ... 3739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_extract_archives () 3740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 3742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_gentop="$1"; shift 3743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_oldlibs=${1+"$@"} 3744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_oldobjs="" 3745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xlib="" 3746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xabs="" 3747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xdir="" 3748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for my_xlib in $my_oldlibs; do 3750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract the objects. 3751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $my_xlib in 3752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) my_xabs=`pwd`"/$my_xlib" ;; 3754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$my_xlib" 3756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xlib="$func_basename_result" 3757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xlib_u=$my_xlib 3758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while :; do 3759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $extracted_archives " in 3760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $my_xlib_u "*) 3761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $extracted_serial + 1 3762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich extracted_serial=$func_arith_result 3763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) break ;; 3765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich extracted_archives="$extracted_archives $my_xlib_u" 3768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_xdir="$my_gentop/$my_xlib_u" 3769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mkdir_p "$my_xdir" 3771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-darwin*) 3774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "Extracting $my_xabs" 3775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do not bother doing anything if just a dry run 3776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 3777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_orig_dir=`pwd` 3778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cd $my_xdir || exit $? 3779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_archive=$my_xabs 3780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_curdir=`pwd` 3781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_base_archive=`basename "$darwin_archive"` 3782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$darwin_arches"; then 3784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_arch= 3786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for darwin_arch in $darwin_arches ; do 3788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cd "$darwin_curdir" 3793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # $darwin_arches 3795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_file= 3798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_files= 3799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for darwin_file in $darwin_filelist; do 3800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $LIPO -create -output "$darwin_file" $darwin_files 3802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # $darwin_filelist 3803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM -rf unfat-$$ 3804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cd "$darwin_orig_dir" 3805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 3806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cd $darwin_orig_dir 3807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_an_archive "$my_xdir" "$my_xabs" 3808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $darwin_arches 3809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } # !$opt_dry_run 3810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_an_archive "$my_xdir" "$my_xabs" 3813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_archives_result="$my_oldobjs" 3819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_emit_wrapper [arg=no] 3823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Emit a libtool wrapper script on stdout. 3825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Don't directly open a file because we may want to 3826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# incorporate the script contents within a cygwin/mingw 3827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# wrapper executable. Must ONLY be called from within 3828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_link because it depends on a number of variables 3829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# set therein. 3830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# variable will take. If 'yes', then the emitted script 3833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# will assume that the directory in which it is stored is 3834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the $objdir directory. This is a cygwin/mingw-specific 3835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# behavior. 3836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_emit_wrapper () 3837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_emit_wrapper_arg1=${1-no} 3839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 3841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#! $SHELL 3842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $output - temporary wrapper script for $objdir/$outputname 3844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The $output program cannot be directly executed until all the libtool 3847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# libraries that it depends on are installed. 3848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This wrapper script should never be moved out of the build directory. 3850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# If it is, it will not operate correctly. 3851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Sed substitution that helps us do robust quoting. It backslashifies 3853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# metacharacters that are still active within double-quoted strings. 3854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichsed_quote_subst='$sed_quote_subst' 3855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Be Bourne compatible 3857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich emulate sh 3859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich NULLCMD=: 3860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # is contrary to our usage. Disable this feature. 3862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich setopt NO_GLOB_SUBST 3864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichelse 3865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi 3867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichBIN_SH=xpg4; export BIN_SH # for Tru64 3868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichDUALCASE=1; export DUALCASE # for MKS sh 3869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The HP-UX ksh and POSIX shell print the target directory to stdout 3871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# if CDPATH is set. 3872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrelink_command=\"$relink_command\" 3875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This environment variable determines our operation mode. 3877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif test \"\$libtool_install_magic\" = \"$magic\"; then 3878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # install mode needs the following variables: 3879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich generated_by_libtool_version='$macro_version' 3880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich notinst_deplibs='$notinst_deplibs' 3881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichelse 3882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=\"\$0\"" 3885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 3888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# A function that is used when there is no print builtin or printf. 3890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_fallback_echo () 3891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval 'cat <<_LTECHO_EOF 3893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich\$1 3894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich_LTECHO_EOF' 3895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ECHO=\"$qECHO\" 3897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Very basic option parsing. These options are (a) specific to 3900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the libtool wrapper, (b) are identical between the wrapper 3901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# /script/ and the wrapper /executable/ which is used only on 3902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# windows platforms, and (c) all begin with the string "--lt-" 3903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# (application programs are unlikely to have options which match 3904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# this pattern). 3905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# There are only two supported options: --lt-debug and 3907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# --lt-dump-script. There is, deliberately, no --lt-help. 3908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 3909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The first argument to this parsing function should be the 3910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# script's $0 value, followed by "$@". 3911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_option_debug= 3912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_parse_lt_options () 3913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_script_arg0=\$0 3915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 3916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lt_opt 3917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 3918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case \"\$lt_opt\" in 3919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --lt-debug) lt_option_debug=1 ;; 3920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --lt-dump-script) 3921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat \"\$lt_dump_D/\$lt_dump_F\" 3925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit 0 3926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --lt-*) 3928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit 1 3930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Print the debug banner immediately: 3935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n \"\$lt_option_debug\"; then 3936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Used when --lt-debug. Prints its arguments to stdout 3941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# (redirection is the responsibility of the caller) 3942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_lt_dump_args () 3943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_dump_args_N=1; 3945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lt_arg 3946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 3947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 3950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Core function for launching the target application 3953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_exec_program_core () 3954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 3956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 3957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Backslashes separate directories on plain windows 3958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-mingw | *-*-os2* | *-cegcc*) 3959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 3960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n \"\$lt_option_debug\"; then 3961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lt_dump_args \${1+\"\$@\"} 1>&2 3963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 3966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 3969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 3970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n \"\$lt_option_debug\"; then 3971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lt_dump_args \${1+\"\$@\"} 1>&2 3973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 3974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 3976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 3977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 3979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit 1 3981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 3982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 3983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# A function to encapsulate launching the target application 3984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Strips options in the --lt-* namespace from \$@ and 3985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# launches target application with the remaining arguments. 3986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_exec_program () 3987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 3988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case \" \$* \" in 3989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *\\ --lt-*) 3990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lt_wr_arg 3991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 3992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case \$lt_wr_arg in 3993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich --lt-*) ;; 3994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 3997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done ;; 3998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 3999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_exec_program_core \${1+\"\$@\"} 4000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Parse options 4003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Find the directory that this script lives in. 4006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Follow symbolic links until we get to the real thisdir. 4010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test -n \"\$file\"; do 4012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If there was a directory component, then change thisdir. 4015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test \"x\$destdir\" != \"x\$file\"; then 4016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case \"\$destdir\" in 4017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) thisdir=\"\$thisdir/\$destdir\" ;; 4019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 4020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 4025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Usually 'no', except on cygwin/mingw when embedded into 4027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the cwrapper. 4028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # special case for '.' 4031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test \"\$thisdir\" = \".\"; then 4032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich thisdir=\`pwd\` 4033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # remove .libs from thisdir 4035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case \"\$thisdir\" in 4036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $objdir ) thisdir=. ;; 4038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 4039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Try to get the absolute directory name. 4042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir=\`cd \"\$thisdir\" && pwd\` 4043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 4045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$fast_install" = yes; then 4047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich program=lt-'$outputname'$exeext 4049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progdir=\"\$thisdir/$objdir\" 4050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f \"\$progdir/\$program\" || 4052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=\"\$\$-\$program\" 4056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -d \"\$progdir\"; then 4058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MKDIR \"\$progdir\" 4059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM \"\$progdir/\$file\" 4061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi" 4062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # relink executable if necessary 4066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n \"\$relink_command\"; then 4067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO \"\$relink_command_output\" >&2 4070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM \"\$progdir/\$file\" 4071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit 1 4072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { $RM \"\$progdir/\$program\"; 4077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM \"\$progdir/\$file\" 4079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi" 4080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich program='$outputname' 4083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich progdir=\"\$thisdir/$objdir\" 4084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 4085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f \"\$progdir/\$program\"; then" 4090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # fixup the dll searchpath if we need to. 4092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 4093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Fix the DLL searchpath if we need to. Do this before prepending 4094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # to shlibpath, because on Windows, both are PATH and uninstalled 4095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # libraries must come first. 4096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dllsearchpath"; then 4097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add the dll search path components to the executable PATH 4099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich PATH=$dllsearchpath:\$PATH 4100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 4101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Export our shlibpath_var if we have one. 4104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add our own library path to $shlibpath_var 4107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Some systems cannot cope with colon-terminated $shlibpath_var 4110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The second colon is a workaround for a bug in BeOS R4 sed 4111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export $shlibpath_var 4114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 4115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "\ 4118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Run the actual program with our arguments. 4120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_exec_program \${1+\"\$@\"} 4121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The program doesn't exist. 4124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit 1 4128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi\ 4130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich" 4131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_emit_cwrapperexe_src 4135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# emit the source code for a wrapper executable on stdout 4136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Must ONLY be called from within func_mode_link because 4137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# it depends on a number of variable set therein. 4138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_emit_cwrapperexe_src () 4139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich The $output program cannot be directly executed until all the libtool 4146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libraries that it depends on are installed. 4147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich This wrapper executable should never be moved out of the build directory. 4149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich If it is, it will not operate correctly. 4150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich*/ 4151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifdef _MSC_VER 4154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define _CRT_SECURE_NO_DEPRECATE 1 4155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <stdio.h> 4157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <stdlib.h> 4158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifdef _MSC_VER 4159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include <direct.h> 4160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include <process.h> 4161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include <io.h> 4162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else 4163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include <unistd.h> 4164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include <stdint.h> 4165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ifdef __CYGWIN__ 4166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# include <io.h> 4167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# endif 4168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <malloc.h> 4170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <stdarg.h> 4171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <assert.h> 4172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <string.h> 4173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <ctype.h> 4174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <errno.h> 4175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <fcntl.h> 4176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#include <sys/stat.h> 4177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* declarations of non-ANSI functions */ 4179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined(__MINGW32__) 4180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ifdef __STRICT_ANSI__ 4181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint _putenv (const char *); 4182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# endif 4183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#elif defined(__CYGWIN__) 4184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ifdef __STRICT_ANSI__ 4185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar *realpath (const char *, char *); 4186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint putenv (char *); 4187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint setenv (const char *, const char *, int); 4188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# endif 4189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* #elif defined (other platforms) ... */ 4190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* portability defines, excluding path handling macros */ 4193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined(_MSC_VER) 4194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define setmode _setmode 4195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define stat _stat 4196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define chmod _chmod 4197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define getcwd _getcwd 4198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define putenv _putenv 4199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define S_IXUSR _S_IEXEC 4200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ifndef _INTPTR_T_DEFINED 4201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define _INTPTR_T_DEFINED 4202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define intptr_t int 4203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# endif 4204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#elif defined(__MINGW32__) 4205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define setmode _setmode 4206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define stat _stat 4207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define chmod _chmod 4208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define getcwd _getcwd 4209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define putenv _putenv 4210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#elif defined(__CYGWIN__) 4211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define HAVE_SETENV 4212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define FOPEN_WB "wb" 4213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* #elif defined (other platforms) ... */ 4214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined(PATH_MAX) 4217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define LT_PATHMAX PATH_MAX 4218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#elif defined(MAXPATHLEN) 4219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define LT_PATHMAX MAXPATHLEN 4220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else 4221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define LT_PATHMAX 1024 4222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef S_IXOTH 4225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define S_IXOTH 0 4226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef S_IXGRP 4228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define S_IXGRP 0 4229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* path handling portability macros */ 4232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef DIR_SEPARATOR 4233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define DIR_SEPARATOR '/' 4234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define PATH_SEPARATOR ':' 4235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich defined (__OS2__) 4239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define HAVE_DOS_BASED_FILE_SYSTEM 4240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define FOPEN_WB "wb" 4241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ifndef DIR_SEPARATOR_2 4242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define DIR_SEPARATOR_2 '\\' 4243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# endif 4244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ifndef PATH_SEPARATOR_2 4245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define PATH_SEPARATOR_2 ';' 4246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# endif 4247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef DIR_SEPARATOR_2 4250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else /* DIR_SEPARATOR_2 */ 4252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define IS_DIR_SEPARATOR(ch) \ 4253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif /* DIR_SEPARATOR_2 */ 4255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef PATH_SEPARATOR_2 4257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else /* PATH_SEPARATOR_2 */ 4259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif /* PATH_SEPARATOR_2 */ 4261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef FOPEN_WB 4263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define FOPEN_WB "w" 4264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef _O_BINARY 4266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# define _O_BINARY 0 4267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#define XFREE(stale) do { \ 4271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (stale) { free ((void *) stale); stale = 0; } \ 4272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} while (0) 4273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined(LT_DEBUGWRAPPER) 4275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic int lt_debug = 1; 4276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else 4277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic int lt_debug = 0; 4278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid *xmalloc (size_t num); 4283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar *xstrdup (const char *string); 4284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char *base_name (const char *name); 4285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar *find_executable (const char *wrapper); 4286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar *chase_symlinks (const char *pathspec); 4287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint make_executable (const char *path); 4288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint check_executable (const char *path); 4289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar *strendzap (char *str, const char *pat); 4290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_fatal (const char *file, int line, const char *message, ...); 4292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char *nonnull (const char *s); 4293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char *nonempty (const char *s); 4294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_setenv (const char *name, const char *value); 4295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 4296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_update_exe_path (const char *name, const char *value); 4297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_update_lib_path (const char *name, const char *value); 4298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar **prepare_spawn (char **argv); 4299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_dump_script (FILE *f); 4300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvolatile const char * MAGIC_EXE = "$magic_exe"; 4304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path "$temp_rpath" 4309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * LIB_PATH_VALUE = ""; 4315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dllsearchpath"; then 4319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_host_path "$dllsearchpath:" 4320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * EXE_PATH_VARNAME = "PATH"; 4322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * EXE_PATH_VARNAME = ""; 4327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * EXE_PATH_VALUE = ""; 4328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$fast_install" = yes; then 4332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 4340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#define LTWRAPPER_OPTION_PREFIX "--lt-" 4345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint 4351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichmain (int argc, char *argv[]) 4352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char **newargz; 4354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int newargc; 4355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *tmp_pathspec; 4356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *actual_cwrapper_path; 4357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *actual_cwrapper_name; 4358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *target_name; 4359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *lt_argv_zero; 4360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich intptr_t rval = 127; 4361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int i; 4363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich program_name = (char *) xstrdup (base_name (argv[0])); 4365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newargz = XMALLOC (char *, argc + 1); 4366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* very simple arg parsing; don't want to rely on getopt 4368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * also, copy all non cwrapper options to newargz, except 4369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * argz[0], which is handled differently 4370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich */ 4371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newargc=0; 4372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (i = 1; i < argc; i++) 4373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (strcmp (argv[i], dumpscript_opt) == 0) 4375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$host" in 4378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *mingw* | *cygwin* ) 4379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # make stdout use "unix" line endings 4380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo " setmode(1,_O_BINARY);" 4381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 4382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 4383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_dump_script (stdout); 4386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 0; 4387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (strcmp (argv[i], debug_opt) == 0) 4389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debug = 1; 4391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue; 4392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich namespace, but it is not one of the ones we know about and 4397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich have already dealt with, above (inluding dump-script), then 4398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich report an error. Otherwise, targets might begin to believe 4399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich namespace. The first time any user complains about this, we'll 4401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich or a configure.ac-settable value. 4403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich */ 4404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, 4405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "unrecognized %s option: '%s'", 4406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ltwrapper_option_prefix, argv[i]); 4407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* otherwise ... */ 4409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newargz[++newargc] = xstrdup (argv[i]); 4410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newargz[++newargc] = NULL; 4412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* The GNU banner must be the first non-error debug message */ 4416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = find_executable (argv[0]); 4423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (tmp_pathspec == NULL) 4424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(main) found exe (before symlink chase) at: %s\n", 4427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec); 4428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(main) found exe (after symlink chase) at: %s\n", 4432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich actual_cwrapper_path); 4433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (tmp_pathspec); 4434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strendzap (actual_cwrapper_path, actual_cwrapper_name); 4437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* wrapper name transforms */ 4439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strendzap (actual_cwrapper_name, ".exe"); 4440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (actual_cwrapper_name); 4442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich actual_cwrapper_name = tmp_pathspec; 4443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = 0; 4444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* target_name transforms -- use actual target program name; might have lt- prefix */ 4446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strendzap (target_name, ".exe"); 4448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (target_name); 4450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich target_name = tmp_pathspec; 4451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = 0; 4452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(main) libtool target name: %s\n", 4455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich target_name); 4456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 4459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newargz[0] = 4460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XMALLOC (char, (strlen (actual_cwrapper_path) + 4461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (newargz[0], actual_cwrapper_path); 4463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcat (newargz[0], "$objdir"); 4464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcat (newargz[0], "/"); 4465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* stop here, and copy so we don't have to do this twice */ 4469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = xstrdup (newargz[0]); 4470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcat (newargz[0], actual_cwrapper_name); 4473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* DO want the lt- prefix here if it exists, so use target_name */ 4475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (tmp_pathspec); 4477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = NULL; 4478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host_os in 4481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich mingw*) 4482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char* p; 4485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while ((p = strchr (newargz[0], '\\')) != NULL) 4486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p = '/'; 4488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p = '/'; 4492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 4496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 4497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (target_name); 4500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (actual_cwrapper_path); 4501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (actual_cwrapper_name); 4502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich because on Windows, both *_VARNAMEs are PATH but uninstalled 4508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libraries must come first. */ 4509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonnull (lt_argv_zero)); 4514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (i = 0; i < newargc; i++) 4515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich i, nonnull (newargz[i])); 4518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host_os in 4523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich mingw*) 4524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* execv doesn't actually work on mingw as expected on unix */ 4526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newargz = prepare_spawn (newargz); 4527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (rval == -1) 4529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* failed to start process */ 4531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(main) failed to launch target \"%s\": %s\n", 4533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_argv_zero, nonnull (strerror (errno))); 4534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 127; 4535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return rval; 4537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 4539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 4540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich execv (lt_argv_zero, newargz); 4542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return rval; /* =127, but avoids unused variable warning */ 4543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 4545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 4546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid * 4551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichxmalloc (size_t num) 4552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich void *p = (void *) malloc (num); 4554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (!p) 4555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return p; 4558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar * 4561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichxstrdup (const char *string) 4562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich string) : NULL; 4565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichconst char * 4568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbase_name (const char *name) 4569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *base; 4571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Skip over the disk name in MSDOS pathnames. */ 4574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name += 2; 4576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (base = name; *name; name++) 4579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (IS_DIR_SEPARATOR (*name)) 4580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich base = name + 1; 4581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return base; 4582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint 4585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcheck_executable (const char *path) 4586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich struct stat st; 4588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonempty (path)); 4591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ((!path) || (!*path)) 4592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 0; 4593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ((stat (path, &st) >= 0) 4595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 1; 4597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 0; 4599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichint 4602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichmake_executable (const char *path) 4603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int rval = 0; 4605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich struct stat st; 4606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonempty (path)); 4609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ((!path) || (!*path)) 4610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return 0; 4611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (stat (path, &st) >= 0) 4613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return rval; 4617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* Searches for the full path of the wrapper. Returns 4620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newly allocated full path name if found, NULL otherwise 4621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich Does not chase symlinks, even on platforms that support them. 4622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich*/ 4623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar * 4624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfind_executable (const char *wrapper) 4625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int has_slash = 0; 4627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *p; 4628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *p_next; 4629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* static buffer for getcwd */ 4630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char tmp[LT_PATHMAX + 1]; 4631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int tmp_len; 4632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *concat_name; 4633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonempty (wrapper)); 4636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ((wrapper == NULL) || (*wrapper == '\0')) 4638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return NULL; 4639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Absolute path? */ 4641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name = xstrdup (wrapper); 4645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (check_executable (concat_name)) 4646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return concat_name; 4647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (concat_name); 4648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (IS_DIR_SEPARATOR (wrapper[0])) 4653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name = xstrdup (wrapper); 4655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (check_executable (concat_name)) 4656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return concat_name; 4657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (concat_name); 4658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (p = wrapper; *p; p++) 4664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (*p == '/') 4665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich has_slash = 1; 4667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break; 4668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (!has_slash) 4670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* no slashes; search PATH */ 4672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *path = getenv ("PATH"); 4673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (path != NULL) 4674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (p = path; *p; p = p_next) 4676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *q; 4678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich size_t p_len; 4679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (q = p; *q; q++) 4680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (IS_PATH_SEPARATOR (*q)) 4681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break; 4682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p_len = q - p; 4683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p_next = (*q == '\0' ? q : q + 1); 4684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (p_len == 0) 4685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* empty path: current directory */ 4687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (getcwd (tmp, LT_PATHMAX) == NULL) 4688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonnull (strerror (errno))); 4690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_len = strlen (tmp); 4691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name = 4692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich memcpy (concat_name, tmp, tmp_len); 4694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name[tmp_len] = '/'; 4695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (concat_name + tmp_len + 1, wrapper); 4696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name = 4700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich memcpy (concat_name, p, p_len); 4702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name[p_len] = '/'; 4703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (concat_name + p_len + 1, wrapper); 4704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (check_executable (concat_name)) 4706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return concat_name; 4707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (concat_name); 4708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* not found in PATH; assume curdir */ 4711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Relative path | not found in path: prepend cwd */ 4713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (getcwd (tmp, LT_PATHMAX) == NULL) 4714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonnull (strerror (errno))); 4716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_len = strlen (tmp); 4717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich memcpy (concat_name, tmp, tmp_len); 4719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_name[tmp_len] = '/'; 4720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (concat_name + tmp_len + 1, wrapper); 4721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (check_executable (concat_name)) 4723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return concat_name; 4724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (concat_name); 4725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return NULL; 4726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar * 4729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchase_symlinks (const char *pathspec) 4730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifndef S_ISLNK 4732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return xstrdup (pathspec); 4733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else 4734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char buf[LT_PATHMAX]; 4735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich struct stat s; 4736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *tmp_pathspec = xstrdup (pathspec); 4737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *p; 4738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int has_symlinks = 0; 4739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while (strlen (tmp_pathspec) && !has_symlinks) 4740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "checking path component for symlinks: %s\n", 4743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec); 4744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (lstat (tmp_pathspec, &s) == 0) 4745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (S_ISLNK (s.st_mode) != 0) 4747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich has_symlinks = 1; 4749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break; 4750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* search backwards for last DIR_SEPARATOR */ 4753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p--; 4756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* no more DIR_SEPARATORS left */ 4759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break; 4760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p = '\0'; 4762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, 4766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "error accessing file \"%s\": %s", 4767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec, nonnull (strerror (errno))); 4768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (tmp_pathspec); 4771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (!has_symlinks) 4773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return xstrdup (pathspec); 4775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_pathspec = realpath (pathspec, buf); 4778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (tmp_pathspec == 0) 4779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_fatal (__FILE__, __LINE__, 4781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "could not follow symlinks for %s", pathspec); 4782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return xstrdup (tmp_pathspec); 4784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar * 4788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstrendzap (char *str, const char *pat) 4789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich size_t len, patlen; 4791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich assert (str != NULL); 4793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich assert (pat != NULL); 4794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len = strlen (str); 4796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich patlen = strlen (pat); 4797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (patlen <= len) 4799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich str += len - patlen; 4801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (strcmp (str, pat) == 0) 4802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *str = '\0'; 4803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return str; 4805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid 4808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_debugprintf (const char *file, int line, const char *fmt, ...) 4809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich va_list args; 4811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (lt_debug) 4812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich va_start (args, fmt); 4815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich (void) vfprintf (stderr, fmt, args); 4816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich va_end (args); 4817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic void 4821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_error_core (int exit_status, const char *file, 4822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int line, const char *mode, 4823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *message, va_list ap) 4824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich vfprintf (stderr, message, ap); 4827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fprintf (stderr, ".\n"); 4828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (exit_status >= 0) 4830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit (exit_status); 4831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid 4834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_fatal (const char *file, int line, const char *message, ...) 4835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich va_list ap; 4837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich va_start (ap, message); 4838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich va_end (ap); 4840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char * 4843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichnonnull (const char *s) 4844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return s ? s : "(null)"; 4846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichstatic const char * 4849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichnonempty (const char *s) 4850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return (s && !*s) ? "(empty)" : nonnull (s); 4852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid 4855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_setenv (const char *name, const char *value) 4856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(lt_setenv) setting '%s' to '%s'\n", 4859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonnull (name), nonnull (value)); 4860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#ifdef HAVE_SETENV 4862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* always make a copy, for consistency with !HAVE_SETENV */ 4863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *str = xstrdup (value); 4864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich setenv (name, str, 1); 4865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#else 4866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int len = strlen (name) + 1 + strlen (value) + 1; 4867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *str = XMALLOC (char, len); 4868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sprintf (str, "%s=%s", name, value); 4869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (putenv (str) != EXIT_SUCCESS) 4870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (str); 4872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#endif 4874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar * 4878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_extend_str (const char *orig_value, const char *add, int to_end) 4879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *new_value; 4881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (orig_value && *orig_value) 4882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int orig_value_len = strlen (orig_value); 4884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int add_len = strlen (add); 4885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_value = XMALLOC (char, add_len + orig_value_len + 1); 4886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (to_end) 4887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (new_value, orig_value); 4889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (new_value + orig_value_len, add); 4890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (new_value, add); 4894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich strcpy (new_value + add_len, orig_value); 4895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 4898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_value = xstrdup (add); 4900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return new_value; 4902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid 4905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_update_exe_path (const char *name, const char *value) 4906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonnull (name), nonnull (value)); 4910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (name && *name && value && *value) 4912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *new_value = lt_extend_str (getenv (name), value, 0); 4914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* some systems can't cope with a ':'-terminated path #' */ 4915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int len = strlen (new_value); 4916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_value[len-1] = '\0'; 4919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_setenv (name, new_value); 4921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (new_value); 4922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid 4926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlt_update_lib_path (const char *name, const char *value) 4927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_debugprintf (__FILE__, __LINE__, 4929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonnull (name), nonnull (value)); 4931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (name && *name && value && *value) 4933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *new_value = lt_extend_str (getenv (name), value, 0); 4935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_setenv (name, new_value); 4936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich XFREE (new_value); 4937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 4938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 4939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 4941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host_os in 4942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich mingw*) 4943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 4944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich/* Prepares an argument vector before calling spawn(). 4946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich Note that spawn() does not by itself call the command interpreter 4947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich GetVersionEx(&v); 4950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich }) ? "cmd.exe" : "command.com"). 4952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich Instead it simply concatenates the arguments, separated by ' ', and calls 4953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich special way: 4956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich - Space and tab are interpreted as delimiters. They are not treated as 4957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich delimiters if they are surrounded by double quotes: "...". 4958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich - Unescaped double quotes are removed from the input. Their only effect is 4959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich that within double quotes, space and tab are treated like normal 4960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich characters. 4961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich - Backslashes not followed by double quotes are not special. 4962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich - But 2*n+1 backslashes followed by a double quote become 4963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich n backslashes followed by a double quote (n >= 0): 4964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \" -> " 4965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \\\" -> \" 4966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich \\\\\" -> \\" 4967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich */ 4968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#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" 4969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#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" 4970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichchar ** 4971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichprepare_spawn (char **argv) 4972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 4973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich size_t argc; 4974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char **new_argv; 4975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich size_t i; 4976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Count number of arguments. */ 4978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (argc = 0; argv[argc] != NULL; argc++) 4979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ; 4980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Allocate new argument vector. */ 4982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_argv = XMALLOC (char *, argc + 1); 4983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich /* Put quoted arguments into the new argument vector. */ 4985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (i = 0; i < argc; i++) 4986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *string = argv[i]; 4988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (string[0] == '\0') 4990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_argv[i] = xstrdup ("\"\""); 4991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 4993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich size_t length; 4995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich unsigned int backslashes; 4996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich const char *s; 4997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *quoted_string; 4998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char *p; 4999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich length = 0; 5001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich backslashes = 0; 5002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (quote_around) 5003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich length++; 5004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (s = string; *s != '\0'; s++) 5005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 5006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char c = *s; 5007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (c == '"') 5008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich length += backslashes + 1; 5009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich length++; 5010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (c == '\\') 5011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich backslashes++; 5012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich backslashes = 0; 5014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 5015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (quote_around) 5016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich length += backslashes + 1; 5017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich quoted_string = XMALLOC (char, length + 1); 5019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich p = quoted_string; 5021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich backslashes = 0; 5022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (quote_around) 5023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p++ = '"'; 5024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (s = string; *s != '\0'; s++) 5025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 5026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich char c = *s; 5027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (c == '"') 5028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 5029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich unsigned int j; 5030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (j = backslashes + 1; j > 0; j--) 5031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p++ = '\\'; 5032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 5033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p++ = c; 5034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (c == '\\') 5035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich backslashes++; 5036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich backslashes = 0; 5038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 5039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (quote_around) 5040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { 5041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich unsigned int j; 5042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for (j = backslashes; j > 0; j--) 5043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p++ = '\\'; 5044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p++ = '"'; 5045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 5046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *p = '\0'; 5047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_argv[i] = quoted_string; 5049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 5050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_argv[i] = (char *) string; 5052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 5053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_argv[argc] = NULL; 5054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich return new_argv; 5056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 5057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 5058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 5062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichvoid lt_dump_script (FILE* f) 5063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 5064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 5065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_emit_wrapper yes | 5066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -n -e ' 5067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichs/^\(.\{79\}\)\(..*\)/\1\ 5068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich\2/ 5069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichh 5070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichs/\([\\"]\)/\\\1/g 5071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichs/$/\\n/ 5072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichs/\([^\n]*\).*/ fputs ("\1", f);/p 5073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichg 5074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichD' 5075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<"EOF" 5076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 5077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 5078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 5079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# end: func_emit_cwrapperexe_src 5080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_win32_import_lib_p ARG 5082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# True if ARG is an import lib, as indicated by $file_magic_cmd 5083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_win32_import_lib_p () 5084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 5085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 5086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *import*) : ;; 5088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) false ;; 5089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 5091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_link arg... 5093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_link () 5094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 5095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 5096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 5097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # It is impossible to link a dll without this setting, and 5099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # we shouldn't force the makefile maintainer to figure out 5100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # which system we are compiling for in order to pass an extra 5101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # flag for every libtool invocation. 5102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # allow_undefined=no 5103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: Unfortunately, there are problems with the above when trying 5105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # to make a dll which has undefined symbols, in which case not 5106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # even a static library is built. For now, we need to specify 5107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -no-undefined on the libtool link line when we can be certain 5108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # that all symbols are satisfied, otherwise we get a static library. 5109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich allow_undefined=yes 5110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich allow_undefined=yes 5113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libtool_args=$nonopt 5116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich base_compile="$nonopt $@" 5117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=$nonopt 5118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command=$nonopt 5119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_rpath= 5121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_rpath= 5122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_shlibpath= 5123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_shlibpath= 5124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich convenience= 5125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_convenience= 5126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs= 5127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_deplibs= 5128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compiler_flags= 5129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linker_flags= 5130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dllsearchpath= 5131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib_search_path=`pwd` 5132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich inst_prefix_dir= 5133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_inherited_linker_flags= 5134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich avoid_version=no 5136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich bindir= 5137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlfiles= 5138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefiles= 5139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlself=no 5140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_dynamic=no 5141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols= 5142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols_regex= 5143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich generated= 5144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobjs= 5145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ltlibs= 5146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich module=no 5147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich no_install=no 5148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objs= 5149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_objects= 5150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich precious_files_regex= 5151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prefer_static_libs=no 5152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich preload=no 5153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prevarg= 5155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich release= 5156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath= 5157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xrpath= 5158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich perm_rpath= 5159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich temp_rpath= 5160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich thread_safe=no 5161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich vinfo= 5162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich vinfo_number=no 5163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich weak_libs= 5164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich single_module="${wl}-single_module" 5165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_infer_tag $base_compile 5166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need to know -static, to get the right output filenames. 5168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg 5169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 5170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 5171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shared) 5172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_libtool_libs" != yes && \ 5173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_configuration "can not build a shared library" 5174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=no 5175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 5176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -all-static | -static | -static-libtool-libs) 5178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 5179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -all-static) 5180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "complete static linking is impossible in this configuration" 5182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$link_static_flag"; then 5184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopen_self=$dlopen_self_static 5185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prefer_static_libs=yes 5187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static) 5189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopen_self=$dlopen_self_static 5191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prefer_static_libs=built 5193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static-libtool-libs) 5195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopen_self=$dlopen_self_static 5197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prefer_static_libs=yes 5199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 5202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 5203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 5204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 5207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See if our shared archives depend on static archives. 5209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Go through the arguments, transforming them on the way. 5212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test "$#" -gt 0; do 5213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$1" 5214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 5215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 5216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich qarg=$func_quote_for_eval_unquoted_result 5217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libtool_args " $func_quote_for_eval_result" 5218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the previous option needs an argument, assign it. 5220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$prev"; then 5221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $prev in 5222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output) 5223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " @OUTPUT@" 5224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " @OUTPUT@" 5225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $prev in 5229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich bindir) 5230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich bindir="$arg" 5231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlfiles|dlprefiles) 5235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$preload" = no; then 5236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add the symbol object into the linking commands. 5237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " @SYMFILE@" 5238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " @SYMFILE@" 5239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich preload=yes 5240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 5242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la | *.lo) ;; # We handle these cases below. 5243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich force) 5244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$dlself" = no; then 5245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlself=needless 5246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_dynamic=yes 5247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich self) 5252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlprefiles; then 5253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlself=yes 5254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlself=yes 5256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlself=needless 5258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_dynamic=yes 5259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlfiles; then 5265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlfiles " $arg" 5266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlprefiles " $arg" 5268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich expsyms) 5275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols="$arg" 5276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -f "$arg" \ 5277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich || func_fatal_error "symbol file \`$arg' does not exist" 5278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich expsyms_regex) 5282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols_regex="$arg" 5283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich framework) 5287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 5288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-darwin*) 5289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$deplibs " in 5290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $qarg.ltframework "*) ;; 5291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich inst_prefix) 5300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich inst_prefix_dir="$arg" 5301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objectlist) 5305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$arg"; then 5306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_arg=$arg 5307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich moreargs= 5308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for fil in `cat "$save_arg"` 5309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 5310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_append moreargs " $fil" 5311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg=$fil 5312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A libtool-controlled object. 5313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that this really is a libtool object. 5315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_lalib_unsafe_p "$arg"; then 5316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_object= 5317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object= 5318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Read the .lo file 5320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$arg" 5321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$pic_object" || 5323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$non_pic_object" || 5324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$pic_object" = none && 5325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$non_pic_object" = none; then 5326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot find name of object for \`$arg'" 5327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract subdirectory from the argument. 5330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$arg" "/" "" 5331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xdir="$func_dirname_result" 5332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pic_object" != none; then 5334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prepend the subdirectory the object is found in. 5335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_object="$xdir$pic_object" 5336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlfiles; then 5338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlfiles " $pic_object" 5340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If libtool objects are unsupported, then we need to preload. 5344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=dlprefiles 5345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # CHECK ME: I think I busted this. -Ossama 5349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlprefiles; then 5350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Preload the old-style object. 5351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlprefiles " $pic_object" 5352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A PIC object. 5356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $pic_object" 5357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$pic_object" 5358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Non-PIC object. 5361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$non_pic_object" != none; then 5362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prepend the subdirectory the object is found in. 5363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object="$xdir$non_pic_object" 5364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A standard non-PIC object 5366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append non_pic_objects " $non_pic_object" 5367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$pic_object" || test "$pic_object" = none ; then 5368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$non_pic_object" 5369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the PIC object exists, use it instead. 5372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # $xdir was prepended to $pic_object above. 5373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object="$pic_object" 5374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append non_pic_objects " $non_pic_object" 5375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only an error if not doing a dry-run. 5378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_dry_run; then 5379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract subdirectory from the argument. 5380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$arg" "/" "" 5381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xdir="$func_dirname_result" 5382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lo2o "$arg" 5384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_object=$xdir$objdir/$func_lo2o_result 5385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object=$xdir$func_lo2o_result 5386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $pic_object" 5387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append non_pic_objects " $non_pic_object" 5388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$arg' is not a valid libtool object" 5390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 5393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "link input file \`$arg' does not exist" 5395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg=$save_arg 5397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich precious_regex) 5401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich precious_files_regex="$arg" 5402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich release) 5406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich release="-$arg" 5407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath | xrpath) 5411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need an absolute path. 5412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 5413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 5414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "only absolute run-paths are allowed" 5416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = rpath; then 5419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$rpath " in 5420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $arg "*) ;; 5421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append rpath " $arg" ;; 5422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$xrpath " in 5425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $arg "*) ;; 5426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append xrpath " $arg" ;; 5427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shrext) 5433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shrext_cmds="$arg" 5434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich weak) 5438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append weak_libs " $arg" 5439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xcclinker) 5443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append linker_flags " $qarg" 5444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $qarg" 5445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $qarg" 5447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $qarg" 5448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xcompiler) 5451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $qarg" 5452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $qarg" 5454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $qarg" 5455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xlinker) 5458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append linker_flags " $qarg" 5459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $wl$qarg" 5460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $wl$qarg" 5462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $wl$qarg" 5463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$prev=\"\$arg\"" 5467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # test -n "$prev" 5472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prevarg="$arg" 5474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 5476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -all-static) 5477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$link_static_flag"; then 5478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See comment for -static flag below, for more details. 5479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $link_static_flag" 5480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $link_static_flag" 5481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -allow-undefined) 5486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: remove this flag sometime in the future. 5487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -avoid-version) 5491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich avoid_version=yes 5492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -bindir) 5496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=bindir 5497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -dlopen) 5501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=dlfiles 5502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -dlpreopen) 5506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=dlprefiles 5507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -export-dynamic) 5511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_dynamic=yes 5512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -export-symbols | -export-symbols-regex) 5516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "more than one -exported-symbols argument is not allowed" 5518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$arg" = "X-export-symbols"; then 5520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=expsyms 5521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=expsyms_regex 5523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -framework) 5528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=framework 5529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -inst-prefix-dir) 5533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=inst_prefix 5534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # so, if we see these flags be careful not to treat them like -L 5539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L[A-Z][A-Z]*:*) 5540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $with_gcc/$host in 5541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich no/*-*-irix* | /*-*-irix*) 5542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $arg" 5543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $arg" 5544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) 5550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname "-L" '' "$arg" 5551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$func_stripname_result"; then 5552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$#" -gt 0; then 5553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "require no space between \`-L' and \`$1'" 5554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "need path for \`-L' option" 5556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$func_stripname_result" 5559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir=$func_resolve_sysroot_result 5560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need an absolute path. 5561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $dir in 5562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 5563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir=`cd "$dir" && pwd` 5565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$absdir" && \ 5566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$absdir" 5568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$deplibs " in 5571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" -L$dir "* | *" $arg "*) 5572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Will only happen for absolute or sysroot arguments 5573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Preserve sysroot, but never include relative directories 5576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $dir in 5577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append deplibs " -L$dir" ;; 5579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append lib_search_path " $dir" 5581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 5584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$dllsearchpath: in 5587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$dir:"*) ;; 5588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ::) dllsearchpath=$dir;; 5589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append dllsearchpath ":$dir";; 5590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$dllsearchpath: in 5592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$testbindir:"*) ;; 5593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ::) dllsearchpath=$testbindir;; 5594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append dllsearchpath ":$testbindir";; 5595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -l*) 5602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 5604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # These systems don't actually have a C or math library (as such) 5606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-os2*) 5609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # These systems don't actually have a C library (as such) 5610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$arg" = "X-lc" && continue 5611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do not include libc due to us having libc/libc_r. 5614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$arg" = "X-lc" && continue 5615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 5617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Rhapsody C and math libraries are in the System framework 5618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append deplibs " System.ltframework" 5619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sco3.2v5* | *-*-sco5v6*) 5622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Causes problems with __ctype 5623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$arg" = "X-lc" && continue 5624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Compiler inserts libc in the correct place for threads to work 5627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$arg" = "X-lc" && continue 5628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "X$arg" = "X-lc_r"; then 5631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 5632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do not include libc_r directly, use -pthread flag. 5634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append deplibs " $arg" 5639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -module) 5643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich module=yes 5644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # classes, name mangling, and exception handling. 5649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Darwin uses the -arch flag to determine output architecture. 5650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -model|-arch|-isysroot|--sysroot) 5651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $arg" 5652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $arg" 5653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $arg" 5654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=xcompiler 5655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $arg" 5661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $arg" 5662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $arg" 5663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$new_inherited_linker_flags " in 5664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $arg "*) ;; 5665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * ) func_append new_inherited_linker_flags " $arg" ;; 5666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -multi_module) 5671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich single_module="${wl}-multi_module" 5672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-fast-install) 5676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fast_install=no 5677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-install) 5681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 5682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The PATH hackery in wrapper scripts is required on Windows 5684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and Darwin in order for the loader to find any dlls it needs. 5685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-no-install' is ignored for $host" 5686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "assuming \`-no-fast-install' instead" 5687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fast_install=no 5688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) no_install=yes ;; 5690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -no-undefined) 5695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich allow_undefined=no 5696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -objectlist) 5700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=objectlist 5701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -o) prev=output ;; 5705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -precious-files-regex) 5707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=precious_regex 5708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -release) 5712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=release 5713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -rpath) 5717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=rpath 5718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R) 5722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=xrpath 5723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R*) 5727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-R' '' "$arg" 5728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir=$func_stripname_result 5729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need an absolute path. 5730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $dir in 5731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) ;; 5732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich =*) 5733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '=' '' "$dir" 5734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir=$lt_sysroot$func_stripname_result 5735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "only absolute run-paths are allowed" 5738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$xrpath " in 5741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $dir "*) ;; 5742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append xrpath " $dir" ;; 5743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 5744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shared) 5748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The effects of -shared are defined in a previous loop. 5749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -shrext) 5753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=shrext 5754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -static | -static-libtool-libs) 5758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The effects of -static are defined in a previous loop. 5759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We used to do the same as -all-static on platforms that 5760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # didn't have a PIC flag, but the assumption that the effects 5761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # would be equivalent was wrong. It would break on at least 5762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Digital Unix and AIX. 5763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -thread-safe) 5767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich thread_safe=yes 5768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -version-info) 5772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=vinfo 5773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -version-number) 5777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=vinfo 5778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich vinfo_number=yes 5779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -weak) 5783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=weak 5784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Wc,*) 5788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-Wc,' '' "$arg" 5789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich args=$func_stripname_result 5790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg= 5791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS=',' 5792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for flag in $args; do 5793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 5794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$flag" 5795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append arg " $func_quote_for_eval_result" 5796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $func_quote_for_eval_result" 5797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 5798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 5799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname ' ' '' "$arg" 5800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg=$func_stripname_result 5801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Wl,*) 5804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-Wl,' '' "$arg" 5805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich args=$func_stripname_result 5806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg= 5807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS=',' 5808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for flag in $args; do 5809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 5810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$flag" 5811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append arg " $wl$func_quote_for_eval_result" 5812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $wl$func_quote_for_eval_result" 5813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append linker_flags " $func_quote_for_eval_result" 5814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 5815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 5816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname ' ' '' "$arg" 5817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg=$func_stripname_result 5818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Xcompiler) 5821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=xcompiler 5822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -Xlinker) 5826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=xlinker 5827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -XCClinker) 5831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=xcclinker 5832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -msg_* for osf cc 5836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -msg_*) 5837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 5838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$func_quote_for_eval_result" 5839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Flags to be passed through unchanged, with rationale: 5842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -r[0-9][0-9]* specify processor for the SGI compiler 5844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # +DA*, +DD* enable 64-bit mode for the HP compiler 5846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -q* compiler args for the IBM compiler 5847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -F/path path to uninstalled frameworks, gcc on darwin 5849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # @file GCC response files 5851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -tp=* Portland pgcc target processor selection 5852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # --sysroot=* for sysroot support 5853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 5858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$func_quote_for_eval_result" 5859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $arg" 5860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $arg" 5861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $arg" 5862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Some other compiler flag. 5866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -* | +*) 5867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 5868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$func_quote_for_eval_result" 5869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$objext) 5872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A standard object. 5873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append objs " $arg" 5874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) 5877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A libtool-controlled object. 5878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that this really is a libtool object. 5880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_lalib_unsafe_p "$arg"; then 5881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_object= 5882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object= 5883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Read the .lo file 5885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$arg" 5886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$pic_object" || 5888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$non_pic_object" || 5889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$pic_object" = none && 5890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$non_pic_object" = none; then 5891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot find name of object for \`$arg'" 5892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract subdirectory from the argument. 5895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$arg" "/" "" 5896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xdir="$func_dirname_result" 5897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pic_object" != none; then 5899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prepend the subdirectory the object is found in. 5900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_object="$xdir$pic_object" 5901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlfiles; then 5903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlfiles " $pic_object" 5905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If libtool objects are unsupported, then we need to preload. 5909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev=dlprefiles 5910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # CHECK ME: I think I busted this. -Ossama 5914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlprefiles; then 5915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Preload the old-style object. 5916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlprefiles " $pic_object" 5917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A PIC object. 5921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $pic_object" 5922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$pic_object" 5923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Non-PIC object. 5926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$non_pic_object" != none; then 5927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prepend the subdirectory the object is found in. 5928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object="$xdir$non_pic_object" 5929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A standard non-PIC object 5931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append non_pic_objects " $non_pic_object" 5932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$pic_object" || test "$pic_object" = none ; then 5933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$non_pic_object" 5934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the PIC object exists, use it instead. 5937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # $xdir was prepended to $pic_object above. 5938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object="$pic_object" 5939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append non_pic_objects " $non_pic_object" 5940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only an error if not doing a dry-run. 5943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_dry_run; then 5944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract subdirectory from the argument. 5945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$arg" "/" "" 5946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xdir="$func_dirname_result" 5947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lo2o "$arg" 5949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pic_object=$xdir$objdir/$func_lo2o_result 5950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich non_pic_object=$xdir$func_lo2o_result 5951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $pic_object" 5952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append non_pic_objects " $non_pic_object" 5953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$arg' is not a valid libtool object" 5955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$libext) 5960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # An archive. 5961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append deplibs " $arg" 5962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append old_deplibs " $arg" 5963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 5967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # A libtool-controlled library. 5968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$arg" 5970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$prev" = dlfiles; then 5971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This library was specified with -dlopen. 5972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlfiles " $func_resolve_sysroot_result" 5973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$prev" = dlprefiles; then 5975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The library was specified with -dlpreopen. 5976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlprefiles " $func_resolve_sysroot_result" 5977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prev= 5978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 5979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append deplibs " $func_resolve_sysroot_result" 5980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 5982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Some other compiler argument. 5985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 5986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Unknown arguments in both finalize_command and compile_command need 5987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # to be aesthetically quoted because they are evaled later. 5988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$arg" 5989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich arg="$func_quote_for_eval_result" 5990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 5991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac # arg 5992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 5993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now actually substitute the argument into the commands. 5994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$arg"; then 5995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $arg" 5996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $arg" 5997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 5998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # argument parsing loop 5999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$prev" && \ 6001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "the \`$prevarg' option requires an argument" 6002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval arg=\"$export_dynamic_flag_spec\" 6005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $arg" 6006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $arg" 6007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlibs= 6010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # calculate the name of the file, without its directory 6011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$output" 6012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich outputname="$func_basename_result" 6013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobjs_save="$libobjs" 6014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$shlibpath_var"; then 6016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # get the directories listed in $shlibpath_var 6017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shlib_search_path= 6020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$output" "/" "" 6025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_objdir="$func_dirname_result$objdir" 6026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output_objdir/" 6027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tool_output_objdir=$func_to_tool_file_result 6028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Create the object directory. 6029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mkdir_p "$output_objdir" 6030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Determine the type of output 6032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $output in 6033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich "") 6034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify an output file" 6035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$libext) linkmode=oldlib ;; 6037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo | *.$objext) linkmode=obj ;; 6038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) linkmode=lib ;; 6039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) linkmode=prog ;; # Anything else should be a program. 6040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich specialdeplibs= 6043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libs= 6045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Find all interdependent deplibs by searching for libraries 6046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # that are linked more than once (e.g. -la -lb -la) 6047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $deplibs; do 6048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_preserve_dup_deps ; then 6049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$libs " in 6050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libs " $deplib" 6054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib; then 6057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Compute libraries that are listed more than once in $predeps 6060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # $postdeps and mark them as special (i.e., whose duplicates are 6061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # not to be eliminated). 6062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pre_post_deps= 6063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_duplicate_compiler_generated_deps; then 6064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for pre_post_dep in $predeps $postdeps; do 6065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$pre_post_deps " in 6066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append pre_post_deps " $pre_post_dep" 6069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pre_post_deps= 6072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs= 6075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdependency_libs= 6076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newlib_search_path= 6077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich need_relink=no # whether we're linking any uninstalled libtool libraries 6078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich notinst_deplibs= # not-installed libtool libraries 6079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich notinst_path= # paths that contain not-installed libtool libraries 6080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $linkmode in 6082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib) 6083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich passes="conv dlpreopen link" 6084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file in $dlfiles $dlprefiles; do 6085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 6086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) ;; 6087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prog) 6094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs= 6095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs= 6096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich alldeplibs=no 6097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdlfiles= 6098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdlprefiles= 6099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich passes="conv scan dlopen dlpreopen link" 6100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) passes="conv" 6102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for pass in $passes; do 6106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The preopen pass in lib mode reverses $deplibs; put it back here 6107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # so that -L comes before libs that need it for instance... 6108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "lib,link"; then 6109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ## FIXME: Find the place where the list is rebuilt in the wrong 6110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ## order, and fix it there properly 6111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_deplibs= 6112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $deplibs; do 6113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_deplibs="$deplib $tmp_deplibs" 6114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$tmp_deplibs" 6116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "lib,link" || 6119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$linkmode,$pass" = "prog,scan"; then 6120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libs="$deplibs" 6121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs= 6122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog; then 6124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $pass in 6125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopen) libs="$dlfiles" ;; 6126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlpreopen) libs="$dlprefiles" ;; 6127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; 6128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "lib,dlpreopen"; then 6131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Collect and forward deplibs of preopened libtool libs 6132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $dlprefiles; do 6133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Ignore non-libtool-libs 6134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs= 6135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$lib" 6136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $lib in 6137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) func_source "$func_resolve_sysroot_result" ;; 6138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Collect preopened libtool deplibs, except any this library 6141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # has declared as weak libs 6142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $dependency_libs; do 6143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$deplib" 6144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplib_base=$func_basename_result 6145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $weak_libs " in 6146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib_base "*) ;; 6147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append deplibs " $deplib" ;; 6148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libs="$dlprefiles" 6152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = dlopen; then 6154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Collect dlpreopened libraries 6155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_deplibs="$deplibs" 6156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs= 6157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $libs; do 6160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib= 6161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich found=no 6162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 6163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 6166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " $deplib" 6170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib ; then 6171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$new_inherited_linker_flags " in 6172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 6173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * ) func_append new_inherited_linker_flags " $deplib" ;; 6174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -l*) 6180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" != lib && test "$linkmode" != prog; then 6181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-l' is ignored for archives/objects" 6182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-l' '' "$deplib" 6185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 6186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib; then 6187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for searchdir in $searchdirs; do 6192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for search_ext in .la $std_shrext .so .a; do 6193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Search the libtool library 6194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib="$searchdir/lib${name}${search_ext}" 6195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$lib"; then 6196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$search_ext" = ".la"; then 6197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich found=yes 6198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich found=no 6200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 2 6202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$found" != yes; then 6206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # deplib doesn't seem to be a libtool library 6207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 6208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else # deplib is a libtool library 6216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need to do some special things here, and not later. 6218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $predeps $postdeps " in 6220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) 6221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_lalib_p "$lib"; then 6222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich library_names= 6223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_library= 6224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$lib" 6225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for l in $old_library $library_names; do 6226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ll="$l" 6227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$ll" = "X$old_library" ; then # only static version available 6229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich found=no 6230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$lib" "" "." 6231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ladir="$func_dirname_result" 6232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib=$ladir/$old_library 6233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 6234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) ;; 6245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; # -l 6249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.ltframework) 6250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 6251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib ; then 6256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$new_inherited_linker_flags " in 6257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 6258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * ) func_append new_inherited_linker_flags " $deplib" ;; 6259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) 6265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $linkmode in 6266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib) 6267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$pass" = conv && continue 6269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdependency_libs="$deplib $newdependency_libs" 6270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-L' '' "$deplib" 6271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$func_stripname_result" 6272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newlib_search_path " $func_resolve_sysroot_result" 6273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prog) 6275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = conv; then 6276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = scan; then 6280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-L' '' "$deplib" 6286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$func_stripname_result" 6287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newlib_search_path " $func_resolve_sysroot_result" 6288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-L' is ignored for archives/objects" 6291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac # linkmode 6293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; # -L 6295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R*) 6296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = link; then 6297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '-R' '' "$deplib" 6298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$func_stripname_result" 6299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir=$func_resolve_sysroot_result 6300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure the xrpath contains only unique directories. 6301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$xrpath " in 6302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $dir "*) ;; 6303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append xrpath " $dir" ;; 6304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 6310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$deplib" 6311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib=$func_resolve_sysroot_result 6312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$libext) 6314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = conv; then 6315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $linkmode in 6319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib) 6320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Linking convenience modules into shared libraries is allowed, 6321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # but linking other static libraries is non-portable. 6322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $dlpreconveniencelibs " in 6323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 6324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich valid_a_lib=no 6326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplibs_check_method in 6327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich match_pattern*) 6328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $deplibs_check_method; shift 6329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | $EGREP "$match_pattern_regex" > /dev/null; then 6332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich valid_a_lib=yes 6333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pass_all) 6336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich valid_a_lib=yes 6337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$valid_a_lib" != yes; then 6340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 6341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** I have the capability to make that library automatically link in when" 6343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 6344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** shared version of the library, which you do not appear to have" 6345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** because the file extensions .$libext of this argument makes me believe" 6346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** that it is just a static archive that I should not use here." 6347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 6349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: Linking the shared library $output against the" 6350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** static library $deplib is not portable!" 6351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prog) 6358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" != link; then 6359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac # linkmode 6367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; # *.$libext 6368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo | *.$objext) 6369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = conv; then 6370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$linkmode" = prog; then 6372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If there is no dlopen support or we're linking statically, 6374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # we need to preload. 6375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $deplib" 6376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$deplib $compile_deplibs" 6377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$deplib $finalize_deplibs" 6378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlfiles " $deplib" 6380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich %DEPLIBS%) 6385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich alldeplibs=yes 6386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac # case $deplib 6389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$found" = yes || test -f "$lib"; then : 6391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see that this really is a libtool archive. 6396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lalib_unsafe_p "$lib" \ 6397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich || func_fatal_error "\`$lib' is not a valid libtool archive" 6398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$lib" "" "." 6400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ladir="$func_dirname_result" 6401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlname= 6403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopen= 6404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlpreopen= 6405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir= 6406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich library_names= 6407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_library= 6408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich inherited_linker_flags= 6409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the library was installed with an old release of libtool, 6410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # it will not redefine variables installed, or shouldnotlink 6411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich installed=yes 6412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shouldnotlink=no 6413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich avoidtemprpath= 6414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Read the .la file 6417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source "$lib" 6418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Convert "-framework foo" to "foo.ltframework" 6420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$inherited_linker_flags"; then 6421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $new_inherited_linker_flags " in 6424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $tmp_inherited_linker_flag "*) ;; 6425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "lib,link" || 6431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$linkmode,$pass" = "prog,scan" || 6432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$dlopen" && func_append dlfiles " $dlopen" 6434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = conv; then 6438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only check for convenience libraries 6439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$lib $deplibs" 6440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$libdir"; then 6441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$old_library"; then 6442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot find name of link library for \`$lib'" 6443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # It is a libtool convenience library, so add in its objects. 6445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append convenience " $ladir/$objdir/$old_library" 6446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append old_convenience " $ladir/$objdir/$old_library" 6447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$linkmode" != prog && test "$linkmode" != lib; then 6448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$lib' is not a convenience library" 6449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_libs= 6451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $dependency_libs; do 6452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_preserve_dup_deps ; then 6454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$tmp_libs " in 6455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append tmp_libs " $deplib" 6459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $pass = conv 6462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Get the name of the library we link against. 6465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linklib= 6466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$old_library" && 6467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test "$prefer_static_libs" = yes || 6468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$prefer_static_libs,$installed" = "built,no"; }; then 6469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linklib=$old_library 6470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for l in $old_library $library_names; do 6472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linklib="$l" 6473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$linklib"; then 6476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot find name of link library for \`$lib'" 6477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This library was specified with -dlopen. 6480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = dlopen; then 6481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$libdir"; then 6482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$dlname" || 6485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$dlopen_support" != yes || 6486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_libtool_libs" = no; then 6487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If there is no dlname, no dlopen support or we're linking 6488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # statically, we need to preload. We also need to preload any 6489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # dependent libraries so libltdl's deplib preloader doesn't 6490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # bomb out in the load deplibs phase. 6491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlprefiles " $lib $dependency_libs" 6492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlfiles " $lib" 6494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $pass = dlopen 6497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need an absolute path. 6499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $ladir in 6500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich abs_ladir=`cd "$ladir" && pwd` 6503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$abs_ladir"; then 6504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "cannot determine absolute directory name of \`$ladir'" 6505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "passing it literally to the linker, although it might fail" 6506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich abs_ladir="$ladir" 6507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$lib" 6511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich laname="$func_basename_result" 6512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Find the relevant object directory and library name. 6514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$installed" = Xyes; then 6515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "library \`$lib' was moved." 6517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$ladir" 6518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir="$abs_ladir" 6519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir="$abs_ladir" 6520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$lt_sysroot$libdir" 6522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir="$lt_sysroot$libdir" 6523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$ladir" 6528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir="$abs_ladir" 6529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove this search path later 6530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append notinst_path " $abs_ladir" 6531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$ladir/$objdir" 6533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir="$abs_ladir/$objdir" 6534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove this search path later 6535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append notinst_path " $abs_ladir" 6536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $installed = yes 6538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname 'lib' '.la' "$laname" 6539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 6540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This library was specified with -dlpreopen. 6542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = dlpreopen; then 6543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$libdir" && test "$linkmode" = prog; then 6544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$host" in 6547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # special handling for platforms with PE-DLLs. 6548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *cegcc* ) 6549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Linker will automatically link against shared library if both 6550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # static and shared are present. Therefore, ensure we extract 6551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # symbols from the import library if a shared library is present 6552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # (otherwise, the dlopen module name will be incorrect). We do 6553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # this by putting the import library name into $newdlprefiles. 6554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We recover the dlopen module name by 'saving' the la file 6555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # name in a special purpose variable, and (later) extracting the 6556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # dlname from the la file. 6557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlname"; then 6558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_tr_sh "$dir/$linklib" 6559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $dir/$linklib" 6561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $dir/$old_library" 6563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Keep a list of preopened convenience libraries to check 6564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # that they are being used correctly in the link pass. 6565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libdir" && \ 6566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlpreconveniencelibs " $dir/$old_library" 6567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * ) 6570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prefer using a static library (so that no silly _DYNAMIC symbols 6571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # are required to link). 6572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$old_library"; then 6573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $dir/$old_library" 6574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Keep a list of preopened convenience libraries to check 6575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # that they are being used correctly in the link pass. 6576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libdir" && \ 6577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dlpreconveniencelibs " $dir/$old_library" 6578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Otherwise, use the dlname, so that lt_dlopen finds it. 6579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$dlname"; then 6580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $dir/$dlname" 6581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $dir/$linklib" 6583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $pass = dlpreopen 6587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$libdir"; then 6589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Link the convenience library 6590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib; then 6591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$dir/$old_library $deplibs" 6592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$linkmode,$pass" = "prog,link"; then 6593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$dir/$old_library $compile_deplibs" 6594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$dir/$old_library $finalize_deplibs" 6595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$lib $deplibs" # used for prog,scan pass 6597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog && test "$pass" != link; then 6603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newlib_search_path " $ladir" 6604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$lib $deplibs" 6605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linkalldeplibs=no 6607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$link_all_deplibs" != no || test -z "$library_names" || 6608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_libtool_libs" = no; then 6609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linkalldeplibs=yes 6610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_libs= 6613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $dependency_libs; do 6614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 6615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) func_stripname '-L' '' "$deplib" 6616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$func_stripname_result" 6617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newlib_search_path " $func_resolve_sysroot_result" 6618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Need to link against all dependency_libs? 6621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkalldeplibs" = yes; then 6622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 6623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Need to hardcode shared library paths 6625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # or/and link against static libraries 6626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdependency_libs="$deplib $newdependency_libs" 6627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_preserve_dup_deps ; then 6629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$tmp_libs " in 6630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append tmp_libs " $deplib" 6634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # for deplib 6635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $linkmode = prog... 6637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" = "prog,link"; then 6639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$library_names" && 6640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { { test "$prefer_static_libs" = no || 6641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$prefer_static_libs,$installed" = "built,yes"; } || 6642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$old_library"; }; then 6643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need to hardcode the library path 6644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure the rpath contains only unique directories. 6646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$temp_rpath:" in 6647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *"$absdir:"*) ;; 6648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append temp_rpath "$absdir:" ;; 6649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Hardcode the library path. 6653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Skip directories that are in the system default run-time 6654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # search path. 6655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $sys_lib_dlsearch_path " in 6656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $absdir "*) ;; 6657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$compile_rpath " in 6659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $absdir "*) ;; 6660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append compile_rpath " $absdir" ;; 6661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $sys_lib_dlsearch_path " in 6665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 6666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$finalize_rpath " in 6668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 6669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_rpath " $libdir" ;; 6670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # $linkmode,$pass = prog,link... 6674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$alldeplibs" = yes && 6676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test "$deplibs_check_method" = pass_all || 6677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test "$build_libtool_libs" = yes && 6678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$library_names"; }; }; then 6679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We only need to search for static libraries 6680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 6681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_static=no # Whether the deplib will be linked statically 6685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich use_static_libs=$prefer_static_libs 6686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$use_static_libs" = built && test "$installed" = yes; then 6687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich use_static_libs=no 6688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$library_names" && 6690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test "$use_static_libs" = no || test -z "$old_library"; }; then 6691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 6692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* | *cegcc*) 6693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # No point in relinking DLLs because paths are not encoded 6694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append notinst_deplibs " $lib" 6695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich need_relink=no 6696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$installed" = no; then 6699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append notinst_deplibs " $lib" 6700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich need_relink=yes 6701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This is a shared library 6705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Warn about portability, can't link against -module's on some 6707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # systems (darwin). Don't bleat about dlopened modules though! 6708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopenmodule="" 6709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dlpremoduletest in $dlprefiles; do 6710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$dlpremoduletest" = "X$lib"; then 6711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlopenmodule="$dlpremoduletest" 6712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 6713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 6715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 6717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog; then 6718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: Linking the executable $output against the loadable module" 6719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** $linklib is not portable!" 6723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib && 6725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$hardcode_into_libs" = yes; then 6726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Hardcode the library path. 6727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Skip directories that are in the system default run-time 6728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # search path. 6729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $sys_lib_dlsearch_path " in 6730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $absdir "*) ;; 6731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$compile_rpath " in 6733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $absdir "*) ;; 6734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append compile_rpath " $absdir" ;; 6735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $sys_lib_dlsearch_path " in 6739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 6740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 6741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$finalize_rpath " in 6742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 6743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_rpath " $libdir" ;; 6744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$old_archive_from_expsyms_cmds"; then 6750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # figure out the soname 6751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $library_names 6752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 6753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich realname="$1" 6754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 6755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 6756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # use dlname if we got it. it's perfectly good, no? 6757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlname"; then 6758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich soname="$dlname" 6759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$soname_spec"; then 6760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # bleh windows 6761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 6762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | mingw* | *cegcc*) 6763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age 6764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=$func_arith_result 6765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix="-$major" 6766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval soname=\"$soname_spec\" 6769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich soname="$realname" 6771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make a new name for the extract_expsyms_cmds to use 6774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich soroot="$soname" 6775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$soroot" 6776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich soname="$func_basename_result" 6777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname 'lib' '.dll' "$soname" 6778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newlib=libimp-$func_stripname_result.a 6779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the library has no export list, then create one now 6781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$output_objdir/$soname-def"; then : 6782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "extracting exported symbol list from \`$soname'" 6784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Create $newlib 6788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$output_objdir/$newlib"; then :; else 6789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "generating import library for \`$soname'" 6790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # make sure the library variables are pointing to the new library 6793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir=$output_objdir 6794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linklib=$newlib 6795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # test -n "$old_archive_from_expsyms_cmds" 6796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog || test "$opt_mode" != relink; then 6798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_shlibpath= 6799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_dir= 6800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add= 6801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib_linked=yes 6802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $hardcode_action in 6803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich immediate | unsupported) 6804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_direct" = no; then 6805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$dir/$linklib" 6806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 6807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-unixware7*) add_dir="-L$dir" ;; 6811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-darwin* ) 6812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # if the lib is a (non-dlopened) module then we can not 6813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # link against it, someone is ignoring the earlier warnings 6814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if /usr/bin/file -L $add 2> /dev/null | 6815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $GREP ": [^:]* bundle" >/dev/null ; then 6816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$dlopenmodule" != "X$lib"; then 6817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$old_library" ; then 6819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 6820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** And there doesn't seem to be a static archive available" 6821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** The link will probably fail, sorry" 6822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$dir/$old_library" 6824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$old_library"; then 6826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$dir/$old_library" 6827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_minus_L" = no; then 6831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 6832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sunos*) add_shlibpath="$dir" ;; 6833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_dir="-L$dir" 6835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_shlibpath_var" = no; then 6837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_shlibpath="$dir" 6838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib_linked=no 6841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink) 6844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_direct" = yes && 6845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$hardcode_direct_absolute" = no; then 6846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$dir/$linklib" 6847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_minus_L" = yes; then 6848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_dir="-L$absdir" 6849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Try looking first in the location we're being installed to. 6850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$inst_prefix_dir"; then 6851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $libdir in 6852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]*) 6853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append add_dir " -L$inst_prefix_dir$libdir" 6854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_shlibpath_var" = yes; then 6859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_shlibpath="$dir" 6860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib_linked=no 6863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) lib_linked=no ;; 6866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$lib_linked" != yes; then 6869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_configuration "unsupported hardcode properties" 6870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$add_shlibpath"; then 6873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$compile_shlibpath: in 6874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$add_shlibpath:"*) ;; 6875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append compile_shlibpath "$add_shlibpath:" ;; 6876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog; then 6879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add" && compile_deplibs="$add $compile_deplibs" 6881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add_dir" && deplibs="$add_dir $deplibs" 6883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add" && deplibs="$add $deplibs" 6884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_direct" != yes && 6885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$hardcode_minus_L" != yes && 6886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$hardcode_shlibpath_var" = yes; then 6887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$finalize_shlibpath: in 6888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$libdir:"*) ;; 6889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_shlibpath "$libdir:" ;; 6890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog || test "$opt_mode" = relink; then 6896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_shlibpath= 6897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_dir= 6898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add= 6899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Finalize command for both is simple: just hardcode it. 6900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_direct" = yes && 6901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$hardcode_direct_absolute" = no; then 6902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$libdir/$linklib" 6903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_minus_L" = yes; then 6904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_dir="-L$libdir" 6905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_shlibpath_var" = yes; then 6907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$finalize_shlibpath: in 6908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$libdir:"*) ;; 6909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_shlibpath "$libdir:" ;; 6910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$hardcode_automatic" = yes; then 6913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$inst_prefix_dir" && 6914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -f "$inst_prefix_dir$libdir/$linklib" ; then 6915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$inst_prefix_dir$libdir/$linklib" 6916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="$libdir/$linklib" 6918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We cannot seem to hardcode it, guess we'll fake it. 6921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add_dir="-L$libdir" 6922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Try looking first in the location we're being installed to. 6923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$inst_prefix_dir"; then 6924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $libdir in 6925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]*) 6926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append add_dir " -L$inst_prefix_dir$libdir" 6927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 6928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 6929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich add="-l$name" 6931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog; then 6934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add_dir" && deplibs="$add_dir $deplibs" 6938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$add" && deplibs="$add $deplibs" 6939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$linkmode" = prog; then 6942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Here we assume that one of hardcode_direct or hardcode_minus_L 6943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # is not unsupported. This is valid on all known static and 6944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # shared platforms. 6945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_direct" != unsupported; then 6946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$old_library" && linklib="$old_library" 6947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$dir/$linklib $compile_deplibs" 6948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$dir/$linklib $finalize_deplibs" 6949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="-l$name -L$dir $compile_deplibs" 6951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$build_libtool_libs" = yes; then 6954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Not a shared library 6955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$deplibs_check_method" != pass_all; then 6956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We're trying link a shared library against a static one 6957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # but the system doesn't support it. 6958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just print a warning and add the library to dependency_libs so 6960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # that the program can be linked against the static library. 6961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 6962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: This system can not link to static lib archive $lib." 6963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** I have the capability to make that library automatically link in when" 6964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 6965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** shared version of the library, which you do not appear to have." 6966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$module" = yes; then 6967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** But as you try to build a module library, libtool will still create " 6968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** a static module, that should work as long as the dlopening application" 6969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$global_symbol_pipe"; then 6971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 6972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** However, this would only work if libtool was able to extract symbol" 6973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** not find such a program. So, this module is probably useless." 6975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** \`nm' from GNU binutils and a full rebuild may help." 6976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = no; then 6978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=module 6979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 6980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 6982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 6985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$dir/$old_library $deplibs" 6986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_static=yes 6987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 6988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # link shared/static library? 6989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 6990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = lib; then 6991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dependency_libs" && 6992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test "$hardcode_into_libs" != yes || 6993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_old_libs" = yes || 6994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$link_static" = yes; }; then 6995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Extract -R from dependency_libs 6996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich temp_deplibs= 6997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $dependency_libs; do 6998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $libdir in 6999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R*) func_stripname '-R' '' "$libdir" 7000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich temp_xrpath=$func_stripname_result 7001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $xrpath " in 7002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $temp_xrpath "*) ;; 7003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append xrpath " $temp_xrpath";; 7004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac;; 7005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append temp_deplibs " $libdir";; 7006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs="$temp_deplibs" 7009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newlib_search_path " $absdir" 7012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Link against this library 7013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # ... and its dependency_libs 7015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_libs= 7016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $dependency_libs; do 7017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdependency_libs="$deplib $newdependency_libs" 7018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 7019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) func_stripname '-L' '' "$deplib" 7020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$func_stripname_result";; 7021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_resolve_sysroot "$deplib" ;; 7022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $opt_preserve_dup_deps ; then 7024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$tmp_libs " in 7025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $func_resolve_sysroot_result "*) 7026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append tmp_libs " $func_resolve_sysroot_result" 7030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$link_all_deplibs" != no; then 7033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add the search paths of all dependency libraries 7034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $dependency_libs; do 7035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich path= 7036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 7037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) path="$deplib" ;; 7038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 7039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$deplib" 7040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplib=$func_resolve_sysroot_result 7041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$deplib" "" "." 7042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir=$func_dirname_result 7043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We need an absolute path. 7044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $dir in 7045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir=`cd "$dir" && pwd` 7048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$absdir"; then 7049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "cannot determine absolute directory name of \`$dir'" 7050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich absdir="$dir" 7051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $GREP "^installed=no" $deplib > /dev/null; then 7055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 7056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-darwin*) 7057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich depdepl= 7058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$deplibrary_names" ; then 7060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for tmp in $deplibrary_names ; do 7061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich depdepl=$tmp 7062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$absdir/$objdir/$depdepl" ; then 7064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich depdepl="$absdir/$objdir/$depdepl" 7065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$darwin_install_name"; then 7067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich path= 7072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich path="-L$absdir/$objdir" 7077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libdir" && \ 7082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$deplib' is not a valid libtool archive" 7083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$absdir" != "$libdir" && \ 7084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`$deplib' seems to be moved" 7085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich path="-L$absdir" 7087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $deplibs " in 7091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $path "*) ;; 7092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) deplibs="$path $deplibs" ;; 7093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # link_all_deplibs != no 7096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi # linkmode = lib 7097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # for deplib in $libs 7098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = link; then 7099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = "prog"; then 7100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs="$newdependency_libs" 7107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" = dlpreopen; then 7108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Link the dlpreopened libraries before other libraries 7109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $save_deplibs; do 7110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$deplib $deplibs" 7111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" != dlopen; then 7114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$pass" != conv; then 7115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure lib_search_path contains only unique directories. 7116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib_search_path= 7117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dir in $newlib_search_path; do 7118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$lib_search_path " in 7119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $dir "*) ;; 7120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append lib_search_path " $dir" ;; 7121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newlib_search_path= 7124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode,$pass" != "prog,link"; then 7127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich vars="deplibs" 7128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich vars="compile_deplibs finalize_deplibs" 7130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for var in $vars dependency_libs; do 7132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add libraries to $var in reverse order 7133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval tmp_libs=\"\$$var\" 7134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_libs= 7135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $tmp_libs; do 7136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: Pedantically, this is the right thing to do, so 7137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # that some nasty dependency loop isn't accidentally 7138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # broken: 7139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich #new_libs="$deplib $new_libs" 7140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Pragmatically, this seems to cause very few problems in 7141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # practice: 7142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 7143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) new_libs="$deplib $new_libs" ;; 7144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R*) ;; 7145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # And here is the reason: when a library appears more 7147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # than once as an explicit dependence of a library, or 7148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # is implicitly linked in more than once by the 7149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # compiler, it is considered special, and multiple 7150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # occurrences thereof are not removed. Compare this 7151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # with having the same library being listed as a 7152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # dependency of multiple other libraries: in this case, 7153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # we know (pedantically, we assume) the library does not 7154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # need to be listed more than once, so we keep only the 7155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # last copy. This is not always right, but it is rare 7156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # enough that we require users that really mean to play 7157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # such unportable linking tricks to link the library 7158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # using -Wl,-lname, so that libtool does not consider it 7159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # for duplicate removal. 7160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $specialdeplibs " in 7161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) new_libs="$deplib $new_libs" ;; 7162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $new_libs " in 7164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 7165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) new_libs="$deplib $new_libs" ;; 7166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_libs= 7173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $new_libs; do 7174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 7175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) 7176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $tmp_libs " in 7177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 7178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append tmp_libs " $deplib" ;; 7179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append tmp_libs " $deplib" ;; 7182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval $var=\"$tmp_libs\" 7185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # for var 7186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Last step: remove runtime libs from dependency_libs 7188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # (they stay in deplibs) 7189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_libs= 7190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for i in $dependency_libs ; do 7191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $predeps $postdeps $compiler_lib_search_path " in 7192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $i "*) 7193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich i="" 7194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$i" ; then 7197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append tmp_libs " $i" 7198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs=$tmp_libs 7201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # for pass 7202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog; then 7203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlfiles="$newdlfiles" 7204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$linkmode" = prog || test "$linkmode" = lib; then 7206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefiles="$newdlprefiles" 7207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $linkmode in 7210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlib) 7211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-dlopen' is ignored for archives" 7213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $deplibs" in 7216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *\ -l* | *\ -L*) 7217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-l' and \`-L' are ignored for archives" ;; 7218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$rpath" && \ 7221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-rpath' is ignored for archives" 7222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$xrpath" && \ 7224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-R' is ignored for archives" 7225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$vinfo" && \ 7227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-version-info/-version-number' is ignored for archives" 7228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$release" && \ 7230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-release' is ignored for archives" 7231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$export_symbols$export_symbols_regex" && \ 7233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-export-symbols' is ignored for archives" 7234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now set the variables for building old libraries. 7236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 7237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlibs="$output" 7238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append objs "$old_deplibs" 7239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib) 7242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure we only generate libraries of the form `libNAME.la'. 7243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $outputname in 7244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib*) 7245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname 'lib' '.la' "$outputname" 7246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 7247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval shared_ext=\"$shrext_cmds\" 7248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libname=\"$libname_spec\" 7249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$module" = no && \ 7252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "libtool library \`$output' must begin with \`lib'" 7253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_lib_prefix" != no; then 7255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add the "lib" prefix for modules if required 7256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.la' "$outputname" 7257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 7258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval shared_ext=\"$shrext_cmds\" 7259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libname=\"$libname_spec\" 7260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.la' "$outputname" 7262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=$func_stripname_result 7263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$objs"; then 7268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$deplibs_check_method" != pass_all; then 7269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** objects $objs is not portable!" 7274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $objs" 7275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$dlself" != no && \ 7279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-dlopen self' is ignored for libtool libraries" 7280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $rpath 7282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 7283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$#" -gt 1 && \ 7284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "ignoring multiple \`-rpath's for a libtool library" 7285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich install_libdir="$1" 7287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlibs= 7289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$rpath"; then 7290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes; then 7291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Building a libtool convenience library. 7292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Some compilers have problems with a `.al' extension so 7293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # convenience libraries should have the same extension an 7294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # archive normally would. 7295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlibs="$output_objdir/$libname.$libext $oldlibs" 7296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=convenience 7297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 7298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$vinfo" && \ 7301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$release" && \ 7304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-release' is ignored for convenience libraries" 7305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Parse the version information argument. 7308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS=':' 7309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $vinfo 0 0 0 7310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 7311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 7312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$7" && \ 7314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "too many parameters to \`-version-info'" 7315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # convert absolute version numbers to libtool ages 7317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # this retains compatibility with .la files and attempts 7318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # to make the code below a bit more comprehensible 7319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $vinfo_number in 7321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich yes) 7322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich number_major="$1" 7323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich number_minor="$2" 7324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich number_revision="$3" 7325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 7326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # There are really only two kinds -- those that 7327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # use the current revision as the major version 7328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and those that subtract age and use age as 7329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # a minor version. But, then there is irix 7330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # which has an extra 1 added just for fun 7331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 7332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $version_type in 7333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # correct linux to gnu/linux during the next big refactor 7334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin|linux|osf|windows|none) 7335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $number_major + $number_minor 7336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich current=$func_arith_result 7337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich age="$number_minor" 7338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich revision="$number_revision" 7339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich freebsd-aout|freebsd-elf|qnx|sunos) 7341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich current="$number_major" 7342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich revision="$number_minor" 7343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich age="0" 7344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich irix|nonstopux) 7346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $number_major + $number_minor 7347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich current=$func_arith_result 7348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich age="$number_minor" 7349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich revision="$number_minor" 7350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_irix_increment=no 7351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich no) 7355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich current="$1" 7356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich revision="$2" 7357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich age="$3" 7358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check that each of the things are valid numbers. 7362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $current in 7363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 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]) ;; 7364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "CURRENT \`$current' must be a nonnegative integer" 7366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 7367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $revision in 7371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 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]) ;; 7372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "REVISION \`$revision' must be a nonnegative integer" 7374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 7375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $age in 7379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 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]) ;; 7380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "AGE \`$age' must be a nonnegative integer" 7382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 7383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$age" -gt "$current"; then 7387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "AGE \`$age' is greater than the current interface number \`$current'" 7388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$vinfo' is not valid version information" 7389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Calculate the version variables. 7392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major= 7393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix= 7394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring= 7395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $version_type in 7396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich none) ;; 7397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin) 7399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Like Linux, but with the current version available in 7400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # verstring for coding it into the library header 7401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age 7402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=.$func_arith_result 7403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix="$major.$age.$revision" 7404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Darwin ld doesn't like 0 for these options... 7405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current + 1 7406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich minor_current=$func_arith_result 7407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich freebsd-aout) 7412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=".$current" 7413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=".$current.$revision"; 7414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich freebsd-elf) 7417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=".$current" 7418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=".$current" 7419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich irix | nonstopux) 7422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$lt_irix_increment" = "Xno"; then 7423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age 7424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age + 1 7426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=$func_arith_result 7428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $version_type in 7430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich nonstopux) verstring_prefix=nonstopux ;; 7431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) verstring_prefix=sgi ;; 7432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="$verstring_prefix$major.$revision" 7434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add in all the interfaces that we are compatible with. 7436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich loop=$revision 7437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test "$loop" -ne 0; do 7438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $revision - $loop 7439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich iface=$func_arith_result 7440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $loop - 1 7441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich loop=$func_arith_result 7442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="$verstring_prefix$major.$iface:$verstring" 7443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Before this point, $major must not contain `.'. 7446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=.$major 7447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix="$major.$revision" 7448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linux) # correct to gnu/linux during the next big refactor 7451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age 7452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=.$func_arith_result 7453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix="$major.$age.$revision" 7454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich osf) 7457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age 7458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=.$func_arith_result 7459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=".$current.$age.$revision" 7460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="$current.$age.$revision" 7461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add in all the interfaces that we are compatible with. 7463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich loop=$age 7464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test "$loop" -ne 0; do 7465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $loop 7466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich iface=$func_arith_result 7467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $loop - 1 7468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich loop=$func_arith_result 7469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="$verstring:${iface}.0" 7470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make executables depend on our current version. 7473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append verstring ":${current}.0" 7474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich qnx) 7477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=".$current" 7478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=".$current" 7479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich sunos) 7482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=".$current" 7483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=".$current.$revision" 7484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich windows) 7487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Use '-' rather than '.', since we only want one 7488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # extension on DOS 8.3 filesystems. 7489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $current - $age 7490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=$func_arith_result 7491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix="-$major" 7492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_configuration "unknown library version type \`$version_type'" 7496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Clear the version info if we defaulted, and they specified a release. 7500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$vinfo" && test -n "$release"; then 7501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major= 7502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $version_type in 7503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich darwin) 7504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # we can't check for "0.0" in archive_cmds due to quoting 7505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # problems, so we reset it completely 7506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring= 7507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="0.0" 7510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_version" = no; then 7513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix= 7514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=".0.0" 7516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove version info from name if versioning should be avoided 7520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$avoid_version" = yes && test "$need_version" = no; then 7521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major= 7522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix= 7523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich verstring="" 7524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Check to see if the archive will have undefined symbols. 7527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$allow_undefined" = yes; then 7528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$allow_undefined_flag" = unsupported; then 7529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "undefined symbols not allowed in $host shared libraries" 7530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 7531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 7532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't allow undefined symbols. 7535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich allow_undefined_flag="$no_undefined_flag" 7536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_generate_dlsyms "$libname" "$libname" "yes" 7541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $symfileobj" 7542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobjs" = "X " && libobjs= 7543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" != relink; then 7545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove our outputs, but don't remove object files since they 7546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # may have been created when compiling PIC objects. 7547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich removelist= 7548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tempremovelist=`$ECHO "$output_objdir/*"` 7549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for p in $tempremovelist; do 7550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $p in 7551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.$objext | *.gcno) 7552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$precious_files_regex" != "X"; then 7555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich then 7557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 7558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append removelist " $p" 7561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) ;; 7563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$removelist" && \ 7566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "${RM}r \$removelist" 7567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now set the variables for building old libraries. 7570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append oldlibs " $output_objdir/$libname.$libext" 7572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Transform .lo files to .o files. 7574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Eliminate all temporary directories. 7578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich #for path in $notinst_path; do 7579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich #done 7583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$xrpath"; then 7585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the user specified any rpath flags, then add them. 7586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich temp_xrpath= 7587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $xrpath; do 7588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_replace_sysroot "$libdir" 7589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append temp_xrpath " -R$func_replace_sysroot_result" 7590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$finalize_rpath " in 7591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 7592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_rpath " $libdir" ;; 7593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs="$temp_xrpath $dependency_libs" 7597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure dlfiles contains only unique files that won't be dlpreopened 7601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_dlfiles="$dlfiles" 7602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlfiles= 7603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $old_dlfiles; do 7604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $dlprefiles $dlfiles " in 7605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $lib "*) ;; 7606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append dlfiles " $lib" ;; 7607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure dlprefiles contains only unique files 7611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_dlprefiles="$dlprefiles" 7612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefiles= 7613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $old_dlprefiles; do 7614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$dlprefiles " in 7615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $lib "*) ;; 7616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append dlprefiles " $lib" ;; 7617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes; then 7621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$rpath"; then 7622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 7623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # these systems don't actually have a c library (as such)! 7625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 7627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Rhapsody C library is in the System framework 7628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append deplibs " System.ltframework" 7629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-netbsd*) 7631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't link with libc until the a.out ld.so is fixed. 7632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do not include libc due to us having libc/libc_r. 7635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sco3.2v5* | *-*-sco5v6*) 7637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Causes problems with __ctype 7638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Compiler inserts libc in the correct place for threads to work 7641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add libc to deplibs on all other systems if necessary. 7644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_need_lc" = "yes"; then 7645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append deplibs " -lc" 7646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Transform deplibs into only deplibs that can be linked in shared. 7652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name_save=$name 7653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname_save=$libname 7654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich release_save=$release 7655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix_save=$versuffix 7656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major_save=$major 7657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # I'm not sure if I'm treating the release correctly. I think 7658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # release should show up in the -l (ie -lgmp5) so we don't want to 7659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # add it in twice. Is that correct? 7660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich release="" 7661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix="" 7662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major="" 7663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdeplibs= 7664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=no 7665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplibs_check_method in 7666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich pass_all) 7667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't check for shared/static. Everything works. 7668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This might be a little naive. We might want to check 7669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # whether the library exists or not. But this is on 7670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # osf3 & osf4 and I'm not really sure... Just 7671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # implementing what was already the behavior. 7672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdeplibs=$deplibs 7673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test_compile) 7675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This code stresses the "libraries are programs" paradigm to its 7676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # limits. Maybe even breaks it. We compile a program, linking it 7677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # against the deplibs as a proxy for the library. Then we can check 7678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # whether they linked in statically or dynamically with ldd. 7679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM conftest.c 7680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat > conftest.c <<EOF 7681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich int main() { return 0; } 7682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 7683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM conftest 7684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ldd_output=`ldd conftest` 7686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for i in $deplibs; do 7687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $i in 7688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -l*) 7689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname -l '' "$i" 7690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 7691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $predeps $postdeps " in 7693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $i "*) 7694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $i" 7695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich i="" 7696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$i" ; then 7700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 7701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $deplib_matches; shift 7703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplib_match=$1 7704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $i" 7706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=yes 7708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** I have the capability to make that library automatically link in when" 7711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 7712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** shared version of the library, which I believe you do not have" 7713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** because a test_compile did reveal that the linker did not use it for" 7714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** its dynamic dependency list that programs get resolved with at runtime." 7715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $i" 7720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Error occurred in the first compile. Let's try to salvage 7725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the situation: Compile a separate program for each library. 7726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for i in $deplibs; do 7727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $i in 7728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -l*) 7729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname -l '' "$i" 7730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 7731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM conftest 7732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ldd_output=`ldd conftest` 7734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $predeps $postdeps " in 7736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $i "*) 7737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $i" 7738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich i="" 7739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$i" ; then 7743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 7744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $deplib_matches; shift 7746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplib_match=$1 7747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $i" 7749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=yes 7751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** I have the capability to make that library automatically link in when" 7754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 7755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** shared version of the library, which you do not appear to have" 7756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** because a test_compile did reveal that the linker did not use this one" 7757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=yes 7762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** make it link in! You will probably need to install it or some" 7765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** library that it depends on before this library will be fully" 7766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** functional. Installing it before continuing would be even better." 7767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $i" 7771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file_magic*) 7777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $deplibs_check_method; shift 7778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for a_deplib in $deplibs; do 7780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $a_deplib in 7781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -l*) 7782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname -l '' "$a_deplib" 7783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 7784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $predeps $postdeps " in 7786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $a_deplib "*) 7787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $a_deplib" 7788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich a_deplib="" 7789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$a_deplib" ; then 7793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 7794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$file_magic_glob"; then 7795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libnameglob=$libname 7798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$want_nocaseglob" = yes; then 7802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shopt -s nocaseglob 7803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $nocaseglob 7805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for potent_lib in $potential_libs; do 7809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Follow soft links. 7810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ls -lLd "$potent_lib" 2>/dev/null | 7811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $GREP " -> " >/dev/null; then 7812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 7813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The statement above tries to avoid entering an 7815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # endless loop below, in case of cyclic links. 7816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We might still enter an endless loop, since a link 7817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # loop can be closed while we follow links, 7818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # but so what? 7819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich potlib="$potent_lib" 7820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while test -h "$potlib" 2>/dev/null; do 7821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $potliblink in 7823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $SED -e 10q | 7829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $EGREP "$file_magic_regex" > /dev/null; then 7830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $a_deplib" 7831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich a_deplib="" 7832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 2 7833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$a_deplib" ; then 7838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=yes 7839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** I have the capability to make that library automatically link in when" 7842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 7843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** shared version of the library, which you do not appear to have" 7844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** because I did check the linker path looking for a file starting" 7845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$potlib" ; then 7846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** with $libname and none of the candidates passed a file format test" 7849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** using a file magic. Last file checked: $potlib" 7850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add a -L argument. 7855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $a_deplib" 7856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # Gone through all deplibs. 7859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich match_pattern*) 7861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $deplibs_check_method; shift 7862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for a_deplib in $deplibs; do 7864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $a_deplib in 7865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -l*) 7866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname -l '' "$a_deplib" 7867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$func_stripname_result 7868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $predeps $postdeps " in 7870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $a_deplib "*) 7871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $a_deplib" 7872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich a_deplib="" 7873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$a_deplib" ; then 7877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=`eval "\\$ECHO \"$libname_spec\""` 7878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for potent_lib in $potential_libs; do 7881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich potlib="$potent_lib" # see symlink-check above in file_magic test 7882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $EGREP "$match_pattern_regex" > /dev/null; then 7884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $a_deplib" 7885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich a_deplib="" 7886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 2 7887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$a_deplib" ; then 7892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=yes 7893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** I have the capability to make that library automatically link in when" 7896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** you link to this library. But I can only do this if you have a" 7897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** shared version of the library, which you do not appear to have" 7898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** because I did check the linker path looking for a file starting" 7899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$potlib" ; then 7900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** with $libname and none of the candidates passed a file format test" 7903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** using a regex pattern. Last file checked: $potlib" 7904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 7908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add a -L argument. 7909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdeplibs " $a_deplib" 7910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done # Gone through all deplibs. 7913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich none | unknown | *) 7915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdeplibs="" 7916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for i in $predeps $postdeps ; do 7919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # can't use Xsed below, because $i might contain '/' 7920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 7922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $tmp_deplibs in 7924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[!\ \ ]*) 7925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$deplibs_check_method" = "Xnone"; then 7927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** Warning: inter-library dependencies are not supported in this platform." 7928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** Warning: inter-library dependencies are not known to be supported." 7930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** All declared inter-library dependencies are being dropped." 7932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich droppeddeps=yes 7933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich versuffix=$versuffix_save 7938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich major=$major_save 7939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich release=$release_save 7940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libname=$libname_save 7941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name=$name_save 7942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 7944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 7945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # On Rhapsody replace the C library with the System framework 7946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 7948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 7949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$droppeddeps" = yes; then 7951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$module" = yes; then 7952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** Warning: libtool could not satisfy all declared inter-library" 7954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** a static module, that should work as long as the dlopening" 7956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** application is linked with the -dlopen flag." 7957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$global_symbol_pipe"; then 7958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** However, this would only work if libtool was able to extract symbol" 7960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** not find such a program. So, this module is probably useless." 7962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** \`nm' from GNU binutils and a full rebuild may help." 7963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = no; then 7965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlibs="$output_objdir/$libname.$libext" 7966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=module 7967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 7968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 7970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** The inter-library dependencies that have been dropped here will be" 7973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** automatically added whenever a program is linked with this library" 7974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** or is declared to -dlopen it." 7975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$allow_undefined" = no; then 7977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 7978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** Since this library must not contain undefined symbols," 7979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** because either the platform does not support them or" 7980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** it was explicitly requested with -no-undefined," 7981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "*** libtool will only create a static version of it." 7982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_old_libs" = no; then 7983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldlibs="$output_objdir/$libname.$libext" 7984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=module 7985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_old_libs=yes 7986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 7987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 7988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Done checking deplibs! 7993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs=$newdeplibs 7994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 7995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Time to change all our "foo.ltframework" stuff back to "-framework foo" 7996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 7997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-darwin*) 7998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # move library search paths that coincide with paths to not yet 8005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # installed libraries to the beginning of the library search list 8006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_libs= 8007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for path in $notinst_path; do 8008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $new_libs " in 8009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" -L$path/$objdir "*) ;; 8010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $deplibs " in 8012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" -L$path/$objdir "*) 8013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append new_libs " -L$path/$objdir" ;; 8014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $deplibs; do 8019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 8020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) 8021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $new_libs " in 8022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 8023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append new_libs " $deplib" ;; 8024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append new_libs " $deplib" ;; 8027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$new_libs" 8030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # All the library-specific variables (install_libdir is set above). 8032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich library_names= 8033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_library= 8034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlname= 8035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Test again, we may have decided not to build it any more 8037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = yes; then 8038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remove ${wl} instances when linking with ld. 8039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: should test the right _cmds variable. 8040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $archive_cmds in 8041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *\$LD\ *) wl= ;; 8042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_into_libs" = yes; then 8044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Hardcode the library paths 8045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich hardcode_libdirs= 8046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dep_rpath= 8047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath="$finalize_rpath" 8048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $rpath; do 8050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 8051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_separator"; then 8052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_replace_sysroot "$libdir" 8053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir=$func_replace_sysroot_result 8054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$hardcode_libdirs"; then 8055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich hardcode_libdirs="$libdir" 8056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just accumulate the unique libdirs. 8058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 8068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append dep_rpath " $flag" 8069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$runpath_var"; then 8071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$perm_rpath " in 8072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 8073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append perm_rpath " $libdir" ;; 8074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Substitute the hardcoded libdirs into the rpath. 8078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_separator" && 8079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$hardcode_libdirs"; then 8080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir="$hardcode_libdirs" 8081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$runpath_var" && test -n "$perm_rpath"; then 8084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We should set the runpath_var. 8085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath= 8086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dir in $perm_rpath; do 8087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rpath "$dir:" 8088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shlibpath="$finalize_shlibpath" 8095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$shlibpath"; then 8097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Get the real and link names of the library. 8101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval shared_ext=\"$shrext_cmds\" 8102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval library_names=\"$library_names_spec\" 8103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set dummy $library_names 8104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 8105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich realname="$1" 8106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 8107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$soname_spec"; then 8109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval soname=\"$soname_spec\" 8110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich soname="$realname" 8112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$dlname"; then 8114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlname=$soname 8115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lib="$output_objdir/$realname" 8118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich linknames= 8119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for link 8120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 8121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append linknames " $link" 8122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Use standard objects if they are pic 8125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobjs" = "X " && libobjs= 8127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich delfiles= 8129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$include_expsyms"; then 8130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols="$output_objdir/$libname.uexp" 8132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $export_symbols" 8133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich orig_export_symbols= 8136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host_os in 8137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cygwin* | mingw* | cegcc*) 8138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # exporting using user supplied symfile 8140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and it's NOT already a .def file. Must figure out 8142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # which of the given symbols are data symbols and tag 8143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # them as such. So, trigger use of export_symbols_cmds. 8144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # export_symbols gets reassigned inside the "prepare 8145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the list of exported symbols" if statement, so the 8146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # include_expsyms logic still works. 8147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich orig_export_symbols="$export_symbols" 8148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols= 8149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich always_export_symbols=yes 8150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Prepare the list of exported symbols 8156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$export_symbols"; then 8157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "generating symbol list for \`$libname.la'" 8159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols="$output_objdir/$libname.exp" 8160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $export_symbols 8161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$export_symbols_cmds 8162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS='~' 8163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for cmd1 in $cmds; do 8164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 8165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Take the normal branch if the nm_file_list_spec branch 8166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # doesn't work or if tool conversion is not needed. 8167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $nm_file_list_spec~$to_tool_file_cmd in 8168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich try_normal_branch=yes 8170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmd=\"$cmd1\" 8171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $cmd" 8172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$func_len_result 8173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich try_normal_branch=no 8176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$try_normal_branch" = yes \ 8179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && { test "$len" -lt "$max_cmd_len" \ 8180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich || test "$max_cmd_len" -le -1; } 8181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich then 8182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$cmd" 'exit $?' 8183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich skipped_export=false 8184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$nm_file_list_spec"; then 8185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$output" 8186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_la=$func_basename_result 8187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_libobjs=$libobjs 8188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_output=$output 8189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=${output_objdir}/${output_la}.nm 8190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output" 8191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobjs=$nm_file_list_spec$func_to_tool_file_result 8192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $output" 8193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating $NM input file list: $output" 8194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $save_libobjs; do 8195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$obj" 8196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$func_to_tool_file_result" 8197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done > "$output" 8198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmd=\"$cmd1\" 8199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$cmd" 'exit $?' 8200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$save_output 8201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobjs=$save_libobjs 8202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich skipped_export=false 8203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The command line is too long to execute in one step. 8205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "using reloadable object file for export list..." 8206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich skipped_export=: 8207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Break out early, otherwise skipped_export may be 8208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # set to false by a later but shorter cmd. 8209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 8210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 8213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$include_expsyms"; then 8221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_export_symbols="$export_symbols" 8222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The given exports_symbols file has to be filtered, so filter it. 8228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: $output_objdir/$libname.filter potentially contains lots of 8230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 's' commands which not all seds can handle. GNU sed should be fine 8231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # though. Also, the filter scales superlinearly with the number of 8232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # global variables. join(1) would be nice here, but unfortunately 8233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # isn't a blessed tool. 8234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols=$output_objdir/$libname.def 8237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_deplibs= 8241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for test_deplib in $deplibs; do 8242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $convenience " in 8243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $test_deplib "*) ;; 8244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append tmp_deplibs " $test_deplib" 8246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich deplibs="$tmp_deplibs" 8250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$convenience"; then 8252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$whole_archive_flag_spec" && 8253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$compiler_needs_object" = yes && 8254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libobjs"; then 8255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # extract the archives, so we have objects to list. 8256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # TODO: could optimize this to just extract one archive. 8257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich whole_archive_flag_spec= 8258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$whole_archive_flag_spec"; then 8260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_libobjs=$libobjs 8261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobjs" = "X " && libobjs= 8263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop="$output_objdir/${outputname}x" 8265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append generated " $gentop" 8266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_archives $gentop $convenience 8268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $func_extract_archives_result" 8269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobjs" = "X " && libobjs= 8270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval flag=\"$thread_safe_flag_spec\" 8275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append linker_flags " $flag" 8276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make a backup of the uninstalled library when relinking 8279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" = relink; then 8280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each of the archive commands. 8284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$module" = yes && test -n "$module_cmds" ; then 8285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval test_cmds=\"$module_expsym_cmds\" 8287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$module_expsym_cmds 8288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval test_cmds=\"$module_cmds\" 8290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$module_cmds 8291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval test_cmds=\"$archive_expsym_cmds\" 8295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$archive_expsym_cmds 8296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval test_cmds=\"$archive_cmds\" 8298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$archive_cmds 8299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$skipped_export" != "X:" && 8303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $test_cmds" && 8304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$func_len_result && 8305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 8307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The command line is too long to link in one step, link piecewise 8309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # or, if using GNU ld and skipped_export is not :, use a linker 8310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # script. 8311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Save the value of $output and $libobjs because we want to 8313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # use them later. If we have whole_archive_flag_spec, we 8314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # want to use save_libobjs as it was before 8315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # whole_archive_flag_spec was expanded, because we can't 8316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # assume the linker understands whole_archive_flag_spec. 8317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This may have to be revisited, in case too many 8318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # convenience libraries get linked in and end up exceeding 8319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the spec. 8320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_libobjs=$libobjs 8322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_output=$output 8324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$output" 8325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_la=$func_basename_result 8326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Clear the reloadable object creation command queue and 8328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # initialize k to one. 8329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test_cmds= 8330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_cmds= 8331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objlist= 8332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich last_robj= 8333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich k=1 8334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=${output_objdir}/${output_la}.lnkscript 8337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating GNU ld script: $output" 8338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo 'INPUT (' > $output 8339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $save_libobjs 8340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 8341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$obj" 8342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$func_to_tool_file_result" >> $output 8343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo ')' >> $output 8345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $output" 8346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output" 8347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$func_to_tool_file_result 8348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=${output_objdir}/${output_la}.lnk 8350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating linker input file list: $output" 8351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : > $output 8352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set x $save_libobjs 8353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 8354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich firstobj= 8355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$compiler_needs_object" = yes; then 8356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich firstobj="$1 " 8357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 8358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj 8360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 8361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$obj" 8362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$func_to_tool_file_result" >> $output 8363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $output" 8365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output" 8366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$save_libobjs"; then 8369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating reloadable object files..." 8370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$output_objdir/$output_la-${k}.$objext 8371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval test_cmds=\"$reload_cmds\" 8372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $test_cmds" 8373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len0=$func_len_result 8374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$len0 8375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Loop over the list of objects to be linked. 8377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $save_libobjs 8378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 8379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $obj" 8380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $len + $func_len_result 8381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$func_arith_result 8382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$objlist" = X || 8383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$len" -lt "$max_cmd_len"; then 8384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append objlist " $obj" 8385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The command $test_cmds is almost too long, add a 8387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # command to the queue. 8388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$k" -eq 1 ; then 8389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The first file doesn't have a previous command to add. 8390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_objs=$objlist 8391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"$reload_cmds\" 8392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # All subsequent reloadable object files will link in 8394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the last one created. 8395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_objs="$objlist $last_robj" 8396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich last_robj=$output_objdir/$output_la-${k}.$objext 8399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $k + 1 8400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich k=$func_arith_result 8401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$output_objdir/$output_la-${k}.$objext 8402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objlist=" $obj" 8403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $last_robj" 8404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $len0 + $func_len_result 8405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$func_arith_result 8406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Handle the remaining objects by creating one last 8409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # reloadable object file. All subsequent reloadable object 8410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # files will link in the last one created. 8411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_objs="$objlist $last_robj" 8413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$last_robj"; then 8415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $output" 8418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output= 8421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ${skipped_export-false}; then 8424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "generating symbol list for \`$libname.la'" 8425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols="$output_objdir/$libname.exp" 8426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $export_symbols 8427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobjs=$output 8428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Append the command to create the export file. 8429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$last_robj"; then 8432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$save_libobjs" && 8437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating a temporary reloadable object file: $output" 8438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Loop through the commands generated above and execute them. 8440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS='~' 8441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for cmd in $concat_cmds; do 8442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 8443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_silent || { 8444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_expand "$cmd" 8445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "func_echo $func_quote_for_expand_result" 8446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 8447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval "$cmd" || { 8448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_exit=$? 8449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Restore the uninstalled library and exit 8451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" = relink; then 8452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ( cd "$output_objdir" && \ 8453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM "${realname}T" && \ 8454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MV "${realname}U" "$realname" ) 8455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $lt_exit 8458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 8459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 8461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if ${skipped_export-false}; then 8469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$include_expsyms"; then 8470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tmp_export_symbols="$export_symbols" 8471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$orig_export_symbols"; then 8476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The given exports_symbols file has to be filtered, so filter it. 8477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: $output_objdir/$libname.filter potentially contains lots of 8479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # 's' commands which not all seds can handle. GNU sed should be fine 8480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # though. Also, the filter scales superlinearly with the number of 8481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # global variables. join(1) would be nice here, but unfortunately 8482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # isn't a blessed tool. 8483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich export_symbols=$output_objdir/$libname.def 8486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobjs=$output 8491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Restore the value of output. 8492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$save_output 8493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobjs" = "X " && libobjs= 8497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Expand the library linking commands again to reset the 8499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # value of $libobjs for piecewise linking. 8500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each of the archive commands. 8502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$module" = yes && test -n "$module_cmds" ; then 8503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$module_expsym_cmds 8505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$module_cmds 8507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$archive_expsym_cmds 8511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$archive_cmds 8513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$delfiles"; then 8518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Append the command to remove temporary files to $cmds. 8519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmds=\"\$cmds~\$RM $delfiles\" 8520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add any objects from preloaded convenience libraries 8523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlprefiles"; then 8524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop="$output_objdir/${outputname}x" 8525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append generated " $gentop" 8526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_archives $gentop $dlprefiles 8528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append libobjs " $func_extract_archives_result" 8529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "X$libobjs" = "X " && libobjs= 8530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_ifs="$IFS"; IFS='~' 8533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for cmd in $cmds; do 8534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 8535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmd=\"$cmd\" 8536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_silent || { 8537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_expand "$cmd" 8538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval "func_echo $func_quote_for_expand_result" 8539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 8540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval "$cmd" || { 8541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich lt_exit=$? 8542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Restore the uninstalled library and exit 8544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" = relink; then 8545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ( cd "$output_objdir" && \ 8546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM "${realname}T" && \ 8547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $MV "${realname}U" "$realname" ) 8548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $lt_exit 8551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 8552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich IFS="$save_ifs" 8554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Restore the uninstalled library and exit 8556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" = relink; then 8557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$convenience"; then 8560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$whole_archive_flag_spec"; then 8561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '${RM}r "$gentop"' 8562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 8566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Create links to the real library. 8569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for linkname in $linknames; do 8570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$realname" != "$linkname"; then 8571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If -module or -export-dynamic was specified, set the dlname. 8576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$module" = yes || test "$export_dynamic" = yes; then 8577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # On all known operating systems, these are identical. 8578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlname="$soname" 8579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich obj) 8584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-dlopen' is ignored for objects" 8586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $deplibs" in 8589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *\ -l* | *\ -L*) 8590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-l' and \`-L' are ignored for objects" ;; 8591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$rpath" && \ 8594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-rpath' is ignored for objects" 8595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$xrpath" && \ 8597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-R' is ignored for objects" 8598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$vinfo" && \ 8600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-version-info' is ignored for objects" 8601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$release" && \ 8603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-release' is ignored for objects" 8604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $output in 8606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) 8607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$objs$old_deplibs" && \ 8608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobj=$output 8611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_lo2o "$libobj" 8612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich obj=$func_lo2o_result 8613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libobj= 8616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich obj="$output" 8617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete the old objects. 8621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $obj $libobj 8622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Objects from convenience libraries. This assumes 8624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # single-version convenience libraries. Whenever we create 8625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # different ones for PIC/non-PIC, this we'll have to duplicate 8626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the extraction. 8627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_conv_objs= 8628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop= 8629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # reload_cmds runs $LD directly, so let us get rid of 8630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # -Wl from whole_archive_flag_spec and hope we can get by with 8631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # turning comma into space.. 8632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wl= 8633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$convenience"; then 8635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$whole_archive_flag_spec"; then 8636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop="$output_objdir/${obj}x" 8640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append generated " $gentop" 8641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_archives $gentop $convenience 8643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_conv_objs="$reload_objs $func_extract_archives_result" 8644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If we're not building shared, we need to use non_pic_objs 8648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Create the old-style object. 8651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output="$obj" 8654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$reload_cmds" 'exit $?' 8655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8656f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Exit if we aren't doing a library object file. 8657f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$libobj"; then 8658f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$gentop"; then 8659f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '${RM}r "$gentop"' 8660f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8661f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8662f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 8663f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8664f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8665f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" != yes; then 8666f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$gentop"; then 8667f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '${RM}r "$gentop"' 8668f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8669f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8670f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Create an invalid libtool object if no PIC, so that we don't 8671f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # accidentally link it into a program. 8672f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # $show "echo timestamp > $libobj" 8673f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8674f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 8675f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8676f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8677f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$pic_flag" || test "$pic_mode" != default; then 8678f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only do commands if we really have different PIC objects. 8679f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich reload_objs="$libobjs $reload_conv_objs" 8680f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output="$libobj" 8681f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$reload_cmds" 'exit $?' 8682f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8683f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8684f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$gentop"; then 8685f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '${RM}r "$gentop"' 8686f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8687f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8688f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 8689f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8690f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8691f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich prog) 8692f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 8693f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin*) func_stripname '' '.exe' "$output" 8694f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$func_stripname_result.exe;; 8695f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8696f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$vinfo" && \ 8697f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-version-info' is ignored for programs" 8698f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8699f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$release" && \ 8700f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`-release' is ignored for programs" 8701f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8702f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$preload" = yes \ 8703f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && test "$dlopen_support" = unknown \ 8704f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && test "$dlopen_self" = unknown \ 8705f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich && test "$dlopen_self_static" = unknown && \ 8706f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8707f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8708f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 8709f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-rhapsody* | *-*-darwin1.[012]) 8710f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # On Rhapsody replace the C library is the System framework 8711f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8712f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8713f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8714f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8715f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8716f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 8717f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-darwin*) 8718f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't allow lazy linking, it breaks C++ global constructors 8719f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # But is supposedly fixed on 10.4 or later (yay!). 8720f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$tagname" = CXX ; then 8721f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8722f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 10.[0123]) 8723f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " ${wl}-bind_at_load" 8724f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " ${wl}-bind_at_load" 8725f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8726f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8727f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8728f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8729f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8730f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8731f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8732f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8733f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8734f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8735f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # move library search paths that coincide with paths to not yet 8736f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # installed libraries to the beginning of the library search list 8737f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich new_libs= 8738f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for path in $notinst_path; do 8739f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $new_libs " in 8740f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" -L$path/$objdir "*) ;; 8741f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8742f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $compile_deplibs " in 8743f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" -L$path/$objdir "*) 8744f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append new_libs " -L$path/$objdir" ;; 8745f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8746f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8747f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8748f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8749f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $compile_deplibs; do 8750f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 8751f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) 8752f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $new_libs " in 8753f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $deplib "*) ;; 8754f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append new_libs " $deplib" ;; 8755f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8756f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8757f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append new_libs " $deplib" ;; 8758f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8759f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8760f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_deplibs="$new_libs" 8761f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8762f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8763f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append compile_command " $compile_deplibs" 8764f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append finalize_command " $finalize_deplibs" 8765f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8766f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$rpath$xrpath"; then 8767f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If the user specified any rpath flags, then add them. 8768f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $rpath $xrpath; do 8769f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This is the magic to use -rpath. 8770f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$finalize_rpath " in 8771f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 8772f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_rpath " $libdir" ;; 8773f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8774f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8775f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8776f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8777f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now hardcode the library paths 8778f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath= 8779f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich hardcode_libdirs= 8780f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $compile_rpath $finalize_rpath; do 8781f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 8782f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_separator"; then 8783f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$hardcode_libdirs"; then 8784f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich hardcode_libdirs="$libdir" 8785f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8786f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just accumulate the unique libdirs. 8787f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8788f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8789f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8790f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8791f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8792f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8793f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8794f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8795f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8796f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 8797f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rpath " $flag" 8798f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8799f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$runpath_var"; then 8800f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$perm_rpath " in 8801f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 8802f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append perm_rpath " $libdir" ;; 8803f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8804f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8805f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 8806f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8807f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8808f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$dllsearchpath: in 8809f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$libdir:"*) ;; 8810f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ::) dllsearchpath=$libdir;; 8811f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append dllsearchpath ":$libdir";; 8812f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8813f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case :$dllsearchpath: in 8814f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *":$testbindir:"*) ;; 8815f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ::) dllsearchpath=$testbindir;; 8816f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append dllsearchpath ":$testbindir";; 8817f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8818f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8819f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8820f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8821f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Substitute the hardcoded libdirs into the rpath. 8822f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_separator" && 8823f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$hardcode_libdirs"; then 8824f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir="$hardcode_libdirs" 8825f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval rpath=\" $hardcode_libdir_flag_spec\" 8826f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8827f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_rpath="$rpath" 8828f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8829f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath= 8830f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich hardcode_libdirs= 8831f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for libdir in $finalize_rpath; do 8832f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_flag_spec"; then 8833f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_separator"; then 8834f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$hardcode_libdirs"; then 8835f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich hardcode_libdirs="$libdir" 8836f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8837f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Just accumulate the unique libdirs. 8838f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8839f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8840f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8841f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8842f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8843f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8844f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8845f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8846f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8847f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval flag=\"$hardcode_libdir_flag_spec\" 8848f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rpath " $flag" 8849f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8850f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$runpath_var"; then 8851f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$finalize_perm_rpath " in 8852f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $libdir "*) ;; 8853f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append finalize_perm_rpath " $libdir" ;; 8854f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8855f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8856f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8857f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Substitute the hardcoded libdirs into the rpath. 8858f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$hardcode_libdir_separator" && 8859f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$hardcode_libdirs"; then 8860f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libdir="$hardcode_libdirs" 8861f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval rpath=\" $hardcode_libdir_flag_spec\" 8862f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8863f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_rpath="$rpath" 8864f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8865f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$libobjs" && test "$build_old_libs" = yes; then 8866f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Transform all the library objects into standard objects. 8867f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8868f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8869f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8870f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8871f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8872f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8873f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # template prelinking step 8874f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$prelink_cmds"; then 8875f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$prelink_cmds" 'exit $?' 8876f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8877f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8878f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrappers_required=yes 8879f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 8880f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cegcc* | *mingw32ce*) 8881f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8882f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrappers_required=no 8883f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8884f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* ) 8885f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" != yes; then 8886f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrappers_required=no 8887f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8888f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8889f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 8890f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8891f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wrappers_required=no 8892f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8893f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 8894f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 8895f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$wrappers_required" = no; then 8896f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Replace the output file specification. 8897f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8898f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command="$compile_command$compile_rpath" 8899f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8900f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We have no uninstalled library dependencies, so finalize right now. 8901f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit_status=0 8902f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$link_command" 'exit_status=$?' 8903f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8904f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$postlink_cmds"; then 8905f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output" 8906f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8907f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$postlink_cmds" 'exit $?' 8908f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8909f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8910f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete the generated files. 8911f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -f "$output_objdir/${outputname}S.${objext}"; then 8912f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8913f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8914f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8915f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $exit_status 8916f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8917f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8918f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$compile_shlibpath$finalize_shlibpath"; then 8919f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8920f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8921f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$finalize_shlibpath"; then 8922f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8923f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8924f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8925f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_var= 8926f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_var= 8927f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$runpath_var"; then 8928f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$perm_rpath"; then 8929f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We should set the runpath_var. 8930f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath= 8931f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dir in $perm_rpath; do 8932f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rpath "$dir:" 8933f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8934f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8935f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8936f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$finalize_perm_rpath"; then 8937f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We should set the runpath_var. 8938f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rpath= 8939f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dir in $finalize_perm_rpath; do 8940f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rpath "$dir:" 8941f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 8942f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8943f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8944f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8945f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8946f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$no_install" = yes; then 8947f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # We don't need to create a wrapper script. 8948f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command="$compile_var$compile_command$compile_rpath" 8949f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Replace the output file specification. 8950f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8951f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete the old output file. 8952f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $output 8953f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Link the executable and exit 8954f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$link_command" 'exit $?' 8955f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8956f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$postlink_cmds"; then 8957f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output" 8958f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8959f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$postlink_cmds" 'exit $?' 8960f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8961f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8962f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 8963f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8964f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8965f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_action" = relink; then 8966f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Fast installation is not supported 8967f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command="$compile_var$compile_command$compile_rpath" 8968f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="$finalize_var$finalize_command$finalize_rpath" 8969f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8970f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "this platform does not like uninstalled shared libraries" 8971f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_warning "\`$output' will be relinked during installation" 8972f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8973f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$fast_install" != no; then 8974f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command="$finalize_var$compile_command$finalize_rpath" 8975f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$fast_install" = yes; then 8976f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8977f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8978f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # fast_install is set to needless 8979f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 8980f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8981f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 8982f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command="$compile_var$compile_command$compile_rpath" 8983f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="$finalize_var$finalize_command$finalize_rpath" 8984f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8985f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 8986f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8987f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Replace the output file specification. 8988f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8989f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8990f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete the old output files. 8991f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8992f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8993f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$link_command" 'exit $?' 8994f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 8995f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$postlink_cmds"; then 8996f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output_objdir/$outputname" 8997f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 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'` 8998f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$postlink_cmds" 'exit $?' 8999f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9000f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9001f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now create the wrapper script. 9002f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating $output" 9003f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9004f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Quote the relink command for shipping. 9005f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$relink_command"; then 9006f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Preserve any variables that may affect compiler behavior 9007f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for var in $variables_saved_for_relink; do 9008f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval test -z \"\${$var+set}\"; then 9009f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9010f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif eval var_value=\$$var; test -z "$var_value"; then 9011f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="$var=; export $var; $relink_command" 9012f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9013f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$var_value" 9014f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9015f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9016f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9017f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="(cd `pwd`; $relink_command)" 9018f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9019f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9020f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9021f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only actually do things if not in dry run mode. 9022f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 9023f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # win32 will think the script is a binary if it has 9024f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # a .exe suffix, so we strip it off here. 9025f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $output in 9026f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.exe) func_stripname '' '.exe' "$output" 9027f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output=$func_stripname_result ;; 9028f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9029f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # test for cygwin because mv fails w/o .exe extensions 9030f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 9031f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin*) 9032f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exeext=.exe 9033f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$outputname" 9034f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich outputname=$func_stripname_result ;; 9035f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) exeext= ;; 9036f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9037f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host in 9038f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin* | *mingw* ) 9039f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname_and_basename "$output" "" "." 9040f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_name=$func_basename_result 9041f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output_path=$func_dirname_result 9042f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cwrappersource="$output_path/$objdir/lt-$output_name.c" 9043f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cwrapper="$output_path/$output_name.exe" 9044f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM $cwrappersource $cwrapper 9045f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9046f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9047f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_emit_cwrapperexe_src > $cwrappersource 9048f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9049f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # The wrapper executable is built using the $host compiler, 9050f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # because it contains $host paths and files. If cross- 9051f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # compiling, it, like the target executable, must be 9052f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # executed on the $host or under an emulation environment. 9053f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 9054f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9055f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $STRIP $cwrapper 9056f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 9057f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9058f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now, create the wrapper script for func_source use: 9059f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_scriptname $cwrapper 9060f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM $func_ltwrapper_scriptname_result 9061f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9062f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 9063f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # note: this script will not be executed, so do not chmod. 9064f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x$build" = "x$host" ; then 9065f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9066f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9067f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_emit_wrapper no > $func_ltwrapper_scriptname_result 9068f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9069f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 9070f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9071f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich * ) 9072f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM $output 9073f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9074f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9075f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_emit_wrapper no > $output 9076f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich chmod +x $output 9077f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9078f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9079f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 9080f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 9081f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9082f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9083f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9084f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # See if we need to build an old-fashioned archive. 9085f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for oldlib in $oldlibs; do 9086f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9087f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = convenience; then 9088f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs="$libobjs_save $symfileobj" 9089f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich addlibs="$convenience" 9090f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 9091f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9092f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$build_libtool_libs" = module; then 9093f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs="$libobjs_save" 9094f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich build_libtool_libs=no 9095f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9096f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs="$old_deplibs $non_pic_objects" 9097f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$preload" = yes && test -f "$symfileobj"; then 9098f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append oldobjs " $symfileobj" 9099f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich addlibs="$old_convenience" 9102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$addlibs"; then 9105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop="$output_objdir/${outputname}x" 9106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append generated " $gentop" 9107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_archives $gentop $addlibs 9109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append oldobjs " $func_extract_archives_result" 9110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each command in the archive commands. 9113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$old_archive_from_new_cmds 9115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add any objects from preloaded convenience libraries 9118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$dlprefiles"; then 9119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop="$output_objdir/${outputname}x" 9120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append generated " $gentop" 9121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_extract_archives $gentop $dlprefiles 9123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append oldobjs " $func_extract_archives_result" 9124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # POSIX demands no paths to be encoded in archives. We have 9127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # to avoid creating archives with duplicate basenames if we 9128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # might have to extract them afterwards, e.g., when creating a 9129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # static archive out of a convenience library, or when linking 9130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the entirety of a libtool archive into another (currently 9131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # not supported by libtool). 9132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if (for obj in $oldobjs 9133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 9134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$obj" 9135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$func_basename_result" 9136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done | sort | sort -uc >/dev/null 2>&1); then 9137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 9138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "copying selected object files to avoid basename conflicts..." 9140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich gentop="$output_objdir/${outputname}x" 9141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append generated " $gentop" 9142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mkdir_p "$gentop" 9143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_oldobjs=$oldobjs 9144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs= 9145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich counter=1 9146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $save_oldobjs 9147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 9148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$obj" 9149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objbase="$func_basename_result" 9150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $oldobjs " in 9151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich " ") oldobjs=$obj ;; 9152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\ /]"$objbase "*) 9153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich while :; do 9154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Make sure we don't pick an alternate name that also 9155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # overlaps. 9156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newobj=lt$counter-$objbase 9157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $counter + 1 9158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich counter=$func_arith_result 9159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $oldobjs " in 9160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *[\ /]"$newobj "*) ;; 9161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append oldobjs " $gentop/$newobj" 9166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append oldobjs " $obj" ;; 9168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tool_oldlib=$func_to_tool_file_result 9173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmds=\"$old_archive_cmds\" 9174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $cmds" 9176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$func_len_result 9177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$old_archive_cmds 9179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -n "$archiver_list_spec"; then 9180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "using command file archive linking..." 9181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $oldobjs 9182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 9183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$obj" 9184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO "$func_to_tool_file_result" 9185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done > $output_objdir/$libname.libcmd 9186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_to_tool_file "$output_objdir/$libname.libcmd" 9187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cmds=$old_archive_cmds 9189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the command line is too long to link in one step, link in parts 9191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "using piecewise archive linking..." 9192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_RANLIB=$RANLIB 9193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich RANLIB=: 9194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objlist= 9195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich concat_cmds= 9196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich save_oldobjs=$oldobjs 9197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs= 9198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Is there a better way of finding the last object in the list? 9199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $save_oldobjs 9200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 9201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich last_oldobj=$obj 9202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval test_cmds=\"$old_archive_cmds\" 9204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $test_cmds" 9205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len0=$func_len_result 9206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$len0 9207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for obj in $save_oldobjs 9208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 9209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_len " $obj" 9210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_arith $len + $func_len_result 9211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$func_arith_result 9212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append objlist " $obj" 9213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$len" -lt "$max_cmd_len"; then 9214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 9215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the above command should be used before it gets too long 9217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs=$objlist 9218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$obj" = "$last_oldobj" ; then 9219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich RANLIB=$save_RANLIB 9220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich objlist= 9224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich len=$len0 9225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich RANLIB=$save_RANLIB 9228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich oldobjs=$objlist 9229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$oldobjs" = "X" ; then 9230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmds=\"\$concat_cmds\" 9231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$cmds" 'exit $?' 9237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$generated" && \ 9240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "${RM}r$generated" 9241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Now create the libtool archive. 9243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $output in 9244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 9245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich old_library= 9246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$build_old_libs" = yes && old_library="$libname.$libext" 9247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_verbose "creating $output" 9248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Preserve any variables that may affect compiler behavior 9250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for var in $variables_saved_for_relink; do 9251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if eval test -z \"\${$var+set}\"; then 9252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif eval var_value=\$$var; test -z "$var_value"; then 9254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="$var=; export $var; $relink_command" 9255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_quote_for_eval "$var_value" 9257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Quote the link command for shipping. 9261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$hardcode_automatic" = yes ; then 9264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 9265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only create the output if not a dry run. 9268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_dry_run || { 9269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for installed in no yes; do 9270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$installed" = yes; then 9271f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$install_libdir"; then 9272f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 9273f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9274f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich output="$output_objdir/$outputname"i 9275f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Replace all uninstalled libtool libraries with the installed ones 9276f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdependency_libs= 9277f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for deplib in $dependency_libs; do 9278f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $deplib in 9279f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 9280f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$deplib" 9281f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 9282f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_resolve_sysroot "$deplib" 9283f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9284f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libdir" && \ 9285f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$deplib' is not a valid libtool archive" 9286f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9287f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9288f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -L*) 9289f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname -L '' "$deplib" 9290f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_replace_sysroot "$func_stripname_result" 9291f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdependency_libs " -L$func_replace_sysroot_result" 9292f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9293f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -R*) 9294f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname -R '' "$deplib" 9295f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_replace_sysroot "$func_stripname_result" 9296f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdependency_libs " -R$func_replace_sysroot_result" 9297f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9298f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append newdependency_libs " $deplib" ;; 9299f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9300f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9301f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dependency_libs="$newdependency_libs" 9302f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdlfiles= 9303f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9304f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $dlfiles; do 9305f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $lib in 9306f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 9307f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$lib" 9308f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 9309f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9310f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libdir" && \ 9311f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$lib' is not a valid libtool archive" 9312f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9313f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9314f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append newdlfiles " $lib" ;; 9315f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9316f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9317f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlfiles="$newdlfiles" 9318f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdlprefiles= 9319f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $dlprefiles; do 9320f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $lib in 9321f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 9322f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Only pass preopened files to the pseudo-archive (for 9323f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # eventual linking with the app. that links it) if we 9324f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # didn't already link the preopened objects directly into 9325f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # the library: 9326f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$lib" 9327f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 9328f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9329f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$libdir" && \ 9330f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_error "\`$lib' is not a valid libtool archive" 9331f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9332f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9333f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9334f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9335f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefiles="$newdlprefiles" 9336f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9337f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdlfiles= 9338f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $dlfiles; do 9339f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $lib in 9340f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9341f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) abs=`pwd`"/$lib" ;; 9342f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9343f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlfiles " $abs" 9344f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9345f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlfiles="$newdlfiles" 9346f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich newdlprefiles= 9347f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for lib in $dlprefiles; do 9348f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $lib in 9349f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9350f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) abs=`pwd`"/$lib" ;; 9351f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9352f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append newdlprefiles " $abs" 9353f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9354f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dlprefiles="$newdlprefiles" 9355f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9356f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $RM $output 9357f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # place dlname in correct position for cygwin 9358f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # In fact, it would be nice if we could use this code for all target 9359f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # systems that can't hard-code library paths into their executables 9360f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # and that have no shared library path variable independent of PATH, 9361f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # but it turns out we can't easily determine that from inspecting 9362f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # libtool variables, so we have to hard-code the OSs to which it 9363f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # applies here; at the moment, that means platforms that use the PE 9364f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # object format with DLL files. See the long comment at the top of 9365f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # tests/bindir.at for full details. 9366f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tdlname=$dlname 9367f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $host,$output,$installed,$module,$dlname in 9368f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9369f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # If a -bindir argument was supplied, place the dll there. 9370f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "x$bindir" != x ; 9371f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich then 9372f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_relative_path "$install_libdir" "$bindir" 9373f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tdlname=$func_relative_path_result$dlname 9374f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9375f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Otherwise fall back on heuristic. 9376f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich tdlname=../bin/$dlname 9377f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9378f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9379f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9380f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO > $output "\ 9381f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# $outputname - a libtool library file 9382f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9383f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 9384f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Please DO NOT delete this file! 9385f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# It is necessary for linking the library. 9386f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9387f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The name that we can dlopen(3). 9388f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdlname='$tdlname' 9389f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9390f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Names of this library. 9391f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlibrary_names='$library_names' 9392f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9393f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The name of the static archive. 9394f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichold_library='$old_library' 9395f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9396f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Linker flags that can not go in dependency_libs. 9397f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichinherited_linker_flags='$new_inherited_linker_flags' 9398f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9399f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Libraries that this one depends upon. 9400f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdependency_libs='$dependency_libs' 9401f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9402f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Names of additional weak libraries provided by this library 9403f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichweak_library_names='$weak_libs' 9404f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9405f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Version information for $libname. 9406f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcurrent=$current 9407f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichage=$age 9408f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrevision=$revision 9409f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9410f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Is this an already installed library? 9411f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichinstalled=$installed 9412f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9413f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Should we warn about portability when linking against -modules? 9414f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichshouldnotlink=$module 9415f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9416f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Files to dlopen/dlpreopen 9417f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdlopen='$dlfiles' 9418f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdlpreopen='$dlprefiles' 9419f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9420f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Directory that this library needs to be installed in: 9421f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlibdir='$install_libdir'" 9422f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$installed" = no && test "$need_relink" = yes; then 9423f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $ECHO >> $output "\ 9424f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichrelink_command=\"$relink_command\"" 9425f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9426f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9427f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich } 9428f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9429f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do a symbolic link so that the libtool archive can be found in 9430f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # LD_LIBRARY_PATH before the program is installed. 9431f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9432f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9433f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9434f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_SUCCESS 9435f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 9436f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9437f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9438f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mode_link ${1+"$@"} 9439f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9440f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9441f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_mode_uninstall arg... 9442f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_mode_uninstall () 9443f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 9444f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $opt_debug 9445f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich RM="$nonopt" 9446f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich files= 9447f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rmforce= 9448f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit_status=0 9449f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9450f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # This variable tells wrapper scripts just to set variables rather 9451f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # than running their programs. 9452f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich libtool_install_magic="$magic" 9453f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9454f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for arg 9455f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 9456f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $arg in 9457f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -f) func_append RM " $arg"; rmforce=yes ;; 9458f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -*) func_append RM " $arg" ;; 9459f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append files " $arg" ;; 9460f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9461f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9462f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9463f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -z "$RM" && \ 9464f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify an RM program" 9465f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9466f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rmdirs= 9467f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9468f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for file in $files; do 9469f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_dirname "$file" "" "." 9470f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich dir="$func_dirname_result" 9471f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$dir" = X.; then 9472f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich odir="$objdir" 9473f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9474f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich odir="$dir/$objdir" 9475f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9476f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_basename "$file" 9477f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich name="$func_basename_result" 9478f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$opt_mode" = uninstall && odir="$dir" 9479f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9480f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Remember odir for removal later, being careful to avoid duplicates 9481f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" = clean; then 9482f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $rmdirs " in 9483f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $odir "*) ;; 9484f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) func_append rmdirs " $odir" ;; 9485f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9486f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9487f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9488f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Don't error if the file doesn't exist and rm -f was used. 9489f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if { test -L "$file"; } >/dev/null 2>&1 || 9490f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich { test -h "$file"; } >/dev/null 2>&1 || 9491f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -f "$file"; then 9492f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich : 9493f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test -d "$file"; then 9494f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit_status=1 9495f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 9496f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich elif test "$rmforce" = yes; then 9497f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich continue 9498f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9499f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9500f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich rmfiles="$file" 9501f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9502f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $name in 9503f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.la) 9504f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Possibly a libtool archive, so verify it. 9505f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_lalib_p "$file"; then 9506f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source $dir/$name 9507f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9508f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Delete the libtool libraries and symlinks. 9509f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for n in $library_names; do 9510f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $odir/$n" 9511f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9512f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9513f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9514f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case "$opt_mode" in 9515f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich clean) 9516f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case " $library_names " in 9517f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *" $dlname "*) ;; 9518f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9519f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9520f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9521f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9522f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich uninstall) 9523f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$library_names"; then 9524f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each command in the postuninstall commands. 9525f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9526f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9527f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9528f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$old_library"; then 9529f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do each command in the old_postuninstall commands. 9530f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9531f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9532f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # FIXME: should reinstall the best remaining shared library. 9533f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9534f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9535f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9536f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9537f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9538f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.lo) 9539f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Possibly a libtool object, so verify it. 9540f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_lalib_p "$file"; then 9541f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9542f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Read the .lo file 9543f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source $dir/$name 9544f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9545f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add PIC object to the list of files to remove. 9546f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$pic_object" && 9547f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$pic_object" != none; then 9548f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $dir/$pic_object" 9549f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9550f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9551f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Add non-PIC object to the list of files to remove. 9552f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$non_pic_object" && 9553f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich test "$non_pic_object" != none; then 9554f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $dir/$non_pic_object" 9555f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9556f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9557f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9558f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9559f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 9560f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$opt_mode" = clean ; then 9561f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich noexename=$name 9562f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 9563f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *.exe) 9564f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$file" 9565f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=$func_stripname_result 9566f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_stripname '' '.exe' "$name" 9567f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich noexename=$func_stripname_result 9568f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # $file with .exe has already been added to rmfiles, 9569f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # add $file without .exe 9570f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $file" 9571f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9572f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9573f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Do a test to see if this is a libtool program. 9574f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_ltwrapper_p "$file"; then 9575f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if func_ltwrapper_executable_p "$file"; then 9576f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_ltwrapper_scriptname "$file" 9577f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 9578f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source $func_ltwrapper_scriptname_result 9579f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $func_ltwrapper_scriptname_result" 9580f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 9581f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich relink_command= 9582f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_source $dir/$noexename 9583f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9584f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9585f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # note $name still contains .exe if it was in $file originally 9586f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # as does the version of $file that was added into $rmfiles 9587f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9588f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "$fast_install" = yes && test -n "$relink_command"; then 9589f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $odir/lt-$name" 9590f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9591f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test "X$noexename" != "X$name" ; then 9592f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_append rmfiles " $odir/lt-${noexename}.c" 9593f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9594f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9595f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9596f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 9597f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 9598f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "$RM $rmfiles" 'exit_status=1' 9599f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9600f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9601f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # Try to remove the ${objdir}s in the directories where we deleted files 9602f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for dir in $rmdirs; do 9603f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -d "$dir"; then 9604f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_show_eval "rmdir $dir >/dev/null 2>&1" 9605f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 9606f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 9607f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9608f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $exit_status 9609f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 9610f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9611f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9612f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_mode_uninstall ${1+"$@"} 9613f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9614f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtest -z "$opt_mode" && { 9615f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich help="$generic_help" 9616f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "you must specify a MODE" 9617f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 9618f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9619f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichtest -z "$exec_cmd" && \ 9620f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_fatal_help "invalid operation mode \`$opt_mode'" 9621f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9622f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif test -n "$exec_cmd"; then 9623f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval exec "$exec_cmd" 9624f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $EXIT_FAILURE 9625f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi 9626f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9627f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichexit $exit_status 9628f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9629f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9630f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# The TAGs below are defined such that we never get into a situation 9631f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# in which we disable both kinds of libraries. Given conflicting 9632f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# choices, we go for a static library, that is the most portable, 9633f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# since we can't tell whether shared libraries were disabled because 9634f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the user asked for that or because the platform doesn't support 9635f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# them. This is particularly important on AIX, because we don't 9636f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# support having both static and shared libraries enabled at the same 9637f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# time on that platform, so we default to a shared-only configuration. 9638f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# If a disable-shared tag is given, we'll fallback to a static-only 9639f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# configuration. But we'll never go from static-only to shared-only. 9640f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9641f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9642f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbuild_libtool_libs=no 9643f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbuild_old_libs=yes 9644f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ### END LIBTOOL TAG CONFIG: disable-shared 9645f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9646f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9647f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9648f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# ### END LIBTOOL TAG CONFIG: disable-static 9649f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9650f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Local Variables: 9651f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# mode:shell-script 9652f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# sh-indentation:2 9653f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# End: 9654f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# vi:sw=2 9655f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 9656