1809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# libtool (GNU libtool) 2.4.2 3809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 4809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 6809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 7809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This is free software; see the source for copying conditions. There is NO 8809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 9809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 10809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# GNU Libtool is free software; you can redistribute it and/or modify 11809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# it under the terms of the GNU General Public License as published by 12809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the Free Software Foundation; either version 2 of the License, or 13809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (at your option) any later version. 14809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 15809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# As a special exception to the GNU General Public License, 16809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if you distribute this file as part of a program or library that 17809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is built using GNU Libtool, you may include this file under the 18809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# same distribution terms that you use for the rest of that program. 19809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 20809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# GNU Libtool is distributed in the hope that it will be useful, but 21809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# WITHOUT ANY WARRANTY; without even the implied warranty of 22809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 23809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# General Public License for more details. 24809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 25809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# You should have received a copy of the GNU General Public License 26809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# along with GNU Libtool; see the file COPYING. If not, a copy 27809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# can be downloaded from http://www.gnu.org/licenses/gpl.html, 28809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# or obtained by writing to the Free Software Foundation, Inc., 29809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 30809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 31809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Usage: $progname [OPTION]... [MODE-ARG]... 32809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 33809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Provide generalized library-building support services. 34809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 35809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --config show all configuration variables 36809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --debug enable verbose shell tracing 37809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# -n, --dry-run display commands without modifying any files 38809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --features display basic configuration information and exit 39809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --mode=MODE use operation mode MODE 40809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --preserve-dup-deps don't remove duplicate dependency libraries 41809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --quiet, --silent don't print informational messages 42809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --no-quiet, --no-silent 43809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# print informational messages (default) 44809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --no-warn don't display warning messages 45809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --tag=TAG use configuration variables from tag TAG 46809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# -v, --verbose print more informational messages than default 47809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --no-verbose don't print the extra informational messages 48809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --version print version information 49809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# -h, --help, --help-all print short, long, or detailed help message 50809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 51809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# MODE must be one of the following: 52809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 53809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# clean remove files from the build directory 54809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# compile compile a source file into a libtool object 55809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# execute automatically set library path, then run a program 56809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# finish complete the installation of libtool libraries 57809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# install install libraries or executables 58809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# link create a library or an executable 59809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# uninstall remove libraries from an installed directory 60809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 61809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# MODE-ARGS vary depending on the MODE. When passed as first option, 62809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 63809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 64809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 65809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# When reporting a bug, please describe a test case to reproduce it and 66809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include the following information: 67809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 68809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# host-triplet: $host 69809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# shell: $SHELL 70809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# compiler: $LTCC 71809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# compiler flags: $LTCFLAGS 72809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# linker: $LD (gnu? $with_gnu_ld) 73809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11 74809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# automake: $automake_version 75809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# autoconf: $autoconf_version 76809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 77809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Report bugs to <bug-libtool@gnu.org>. 78809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 79809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# General help using GNU software: <http://www.gnu.org/gethelp/>. 80809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 81809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsPROGRAM=libtool 82809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsPACKAGE=libtool 83809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsVERSION="2.4.2 Debian-2.4.2-1.11" 84809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsTIMESTAMP="" 85809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspackage_revision=1.3337 86809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 87809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Be Bourne compatible 88809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 89809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats emulate sh 90809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats NULLCMD=: 91809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 92809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # is contrary to our usage. Disable this feature. 93809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats alias -g '${1+"$@"}'='"$@"' 94809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats setopt NO_GLOB_SUBST 95809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatselse 96809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 97809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi 98809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsBIN_SH=xpg4; export BIN_SH # for Tru64 99809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsDUALCASE=1; export DUALCASE # for MKS sh 100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# A function that is used when there is no print builtin or printf. 102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fallback_echo () 103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval 'cat <<_LTECHO_EOF 105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$1 106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LTECHO_EOF' 107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# NLS nuisances: We save the old values to restore during execute mode. 110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_user_locale= 111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_safe_locale= 112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdo 114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "if test \"\${$lt_var+set}\" = set; then 115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_$lt_var=\$$lt_var 116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $lt_var=C 117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export $lt_var 118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi" 121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdone 122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLC_ALL=C 123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLANGUAGE=C 124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexport LANGUAGE LC_ALL 125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$lt_unset CDPATH 127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is ksh but when the shell is invoked as "sh" and the current value of 131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the _XPG environment variable is not equal to 1 (one), the special 132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# positional parameter $0, within a function call, is the name of the 133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# function. 134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsprogpath="$0" 135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${CP="cp -f"} 139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${MAKE="make"} 141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${MKDIR="mkdir"} 142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${MV="mv -f"} 143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${RM="rm -f"} 144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats: ${Xsed="$SED -e 1s/^X//"} 146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Global variables: 148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_SUCCESS=0 149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_FAILURE=1 150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexit_status=$EXIT_SUCCESS 154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make sure IFS has a sensible default 156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_nl=' 157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats' 158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIFS=" $lt_nl" 159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdirname="s,/[^/]*$,," 161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbasename="s,^.*/,," 162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_dirname file append nondir_replacement 164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Compute the dirname of FILE. If nonempty, add APPEND to the result, 165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# otherwise set result to NONDIR_REPLACEMENT. 166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_dirname () 167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$func_dirname_result" = "X${1}"; then 170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_result="${3}" 171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_result="$func_dirname_result${2}" 173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_dirname may be replaced by extended shell implementation 175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_basename file 178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_basename () 179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename_result=`$ECHO "${1}" | $SED "$basename"` 181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_basename may be replaced by extended shell implementation 182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_dirname_and_basename file append nondir_replacement 185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# perform func_basename and func_dirname in a single function 186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# call: 187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# dirname: Compute the dirname of FILE. If nonempty, 188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# add APPEND to the result, otherwise set result 189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# to NONDIR_REPLACEMENT. 190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# value returned in "$func_dirname_result" 191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# basename: Compute filename of FILE. 192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# value retuned in "$func_basename_result" 193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Implementation must be kept synchronized with func_dirname 194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and func_basename. For efficiency, we do not delegate to 195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# those functions but instead duplicate the functionality here. 196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_dirname_and_basename () 197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract subdirectory from the argument. 199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$func_dirname_result" = "X${1}"; then 201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_result="${3}" 202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_result="$func_dirname_result${2}" 204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_dirname_and_basename may be replaced by extended shell implementation 207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_stripname prefix suffix name 210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# strip PREFIX and SUFFIX off of NAME. 211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# PREFIX and SUFFIX must not contain globbing or regex special 212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# characters, hashes, percent signs, but SUFFIX may contain a leading 213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# dot (in which case that matches only a dot). 214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_strip_suffix prefix name 215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_stripname () 216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case ${2} in 218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_stripname may be replaced by extended shell implementation 222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# These SED scripts presuppose an absolute path with a trailing slash. 225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspathcar='s,^/\([^/]*\).*$,\1,' 226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspathcdr='s,^/[^/]*,,' 227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsremovedotparts=':dotsl 228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s@/\./@/@g 229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats t dotsl 230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s,/\.$,/,' 231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscollapseslashes='s@/\{1,\}@/@g' 232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfinalslash='s,/*$,/,' 233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_normal_abspath PATH 235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Remove doubled-up and trailing slashes, "." path components, 236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and cancel out any ".." path components in PATH after making 237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# it an absolute path. 238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# value returned in "$func_normal_abspath_result" 239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_normal_abspath () 240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Start from root dir and reassemble the path. 242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_result= 243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_tpath=$1 244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_altnamespace= 245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $func_normal_abspath_tpath in 246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "") 247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Empty path, that just means $cwd. 248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '/' "`pwd`" 249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_result=$func_stripname_result 250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The next three entries are used to spot a run of precisely 253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # two leading slashes without using negated character classes; 254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # we take advantage of case's first-match behaviour. 255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ///*) 256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Unusual form of absolute path, do nothing. 257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats //*) 259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Not necessarily an ordinary path; POSIX reserves leading '//' 260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and for example Cygwin uses it to access remote file shares 261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # over CIFS/SMB, so we conserve a leading double slash if found. 262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_altnamespace=/ 263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /*) 265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Absolute path, do nothing. 266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Relative path, prepend $cwd. 269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Cancel out all the simple stuff to save iterations. We also want 273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the path to end with a slash for ease of parsing, so make sure 274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # there is one (and only one) here. 275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while :; do 278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Processed it all yet? 279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$func_normal_abspath_tpath" = / ; then 280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If we ascended to the root using ".." the result may be empty now. 281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$func_normal_abspath_result" ; then 282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_result=/ 283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -e "$pathcar"` 288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -e "$pathcdr"` 290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Figure out what to do with it 291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $func_normal_abspath_tcomponent in 292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "") 293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Trailing empty path component, ignore it. 294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ..) 296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Parent dir; strip last assembled component from result. 297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$func_normal_abspath_result" 298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_result=$func_dirname_result 299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Actual path component, append it. 302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Restore leading double-slash if one was found on entry. 307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_relative_path SRCDIR DSTDIR 311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# generates a relative path from SRCDIR to DSTDIR, with a trailing 312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# slash if non-empty, suitable for immediately appending a filename 313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# without needing to append a separator. 314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# value returned in "$func_relative_path_result" 315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_relative_path () 316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result= 318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath "$1" 319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_tlibdir=$func_normal_abspath_result 320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_normal_abspath "$2" 321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_tbindir=$func_normal_abspath_result 322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Ascend the tree starting from libdir 324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while :; do 325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # check if we have found a prefix of bindir 326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $func_relative_path_tbindir in 327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $func_relative_path_tlibdir) 328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # found an exact match 329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_tcancelled= 330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $func_relative_path_tlibdir*) 333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # found a matching prefix 334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_tcancelled=$func_stripname_result 336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$func_relative_path_result"; then 337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result=. 338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname $func_relative_path_tlibdir 343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_tlibdir=${func_dirname_result} 344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x$func_relative_path_tlibdir" = x ; then 345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Have to descend all the way to the root! 346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result=../$func_relative_path_result 347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_tcancelled=$func_relative_path_tbindir 348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result=../$func_relative_path_result 351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now calculate path; take care to avoid doubling-up slashes. 356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '/' "$func_relative_path_result" 357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result=$func_stripname_result 358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '/' '/' "$func_relative_path_tcancelled" 359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x$func_stripname_result" != x ; then 360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Normalisation. If bindir is libdir, return empty string, 364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # else relative path ending with a slash; either way, target 365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # file name can be directly appended. 366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -z "$func_relative_path_result"; then 367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname './' '' "$func_relative_path_result/" 368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path_result=$func_stripname_result 369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The name of this program: 373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_dirname_and_basename "$progpath" 374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsprogname=$func_basename_result 375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make sure we have an absolute path for reexecution: 377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscase $progpath in 378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]*|[A-Za-z]:\\*) ;; 379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\\/]*) 380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progdir=$func_dirname_result 381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progdir=`cd "$progdir" && pwd` 382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progpath="$progdir/$progname" 383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_IFS="$IFS" 386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS=${PATH_SEPARATOR-:} 387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for progdir in $PATH; do 388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_IFS" 389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -x "$progdir/$progname" && break 390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_IFS" 392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$progdir" || progdir=`pwd` 393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progpath="$progdir/$progname" 394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsesac 396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that helps us do robust quoting. It backslashifies 398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# metacharacters that are still active within double-quoted strings. 399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsXsed="${SED}"' -e 1s/^X//' 400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_quote_subst='s/\([`"$\\]\)/\\\1/g' 401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Same as above, but do not quote variable references. 403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that turns a string into a regex matching for the 406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# string literally. 407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that converts a w32 file name or path 410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# which contains forward slashes, into one that contains 411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (escaped) backslashes. A very naive implementation. 412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Re-`\' parameter expansions in output of double_quote_subst that were 415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in input to double_quote_subst, that '$' was protected from expansion. 417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Since each input `\' is now two `\'s, look for any number of runs of 418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbs='\\' 420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbs2='\\\\' 421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbs4='\\\\\\\\' 422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdollar='\$' 423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_double_backslash="\ 424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/$bs4/&\\ 425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/g 426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^$bs2$dollar/$bs&/ 427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\n//g" 429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Standard options: 431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_dry_run=false 432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help=false 433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_quiet=false 434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_verbose=false 435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_warning=: 436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_echo arg... 438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message, along with the current mode 439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# name if it has been set yet. 440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_echo () 441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_verbose arg... 446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message in verbose mode only. 447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_verbose () 448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_verbose && func_echo ${1+"$@"} 450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A bug in bash halts the script if the last line of a function 452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # fails when set -e is in force, so we need another command to 453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # work around that: 454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_echo_all arg... 458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Invoke $ECHO with all args, space-separated. 459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_echo_all () 460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$*" 462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_error arg... 465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error. 466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_error () 467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_warning arg... 472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed warning message to standard error. 473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_warning () 474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # bash bug again: 478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_fatal_error arg... 482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error, and exit. 483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fatal_error () 484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error ${1+"$@"} 486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_FAILURE 487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_fatal_help arg... 490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error, followed by 491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a help hint, and exit. 492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fatal_help () 493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error ${1+"$@"} 495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "$help" 496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatshelp="Try \`$progname --help' for more information." ## default 498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_grep expression filename 501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Check whether EXPRESSION matches any line of FILENAME, without output. 502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_grep () 503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $GREP "$1" "$2" >/dev/null 2>&1 505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mkdir_p directory-path 509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make sure the entire path to DIRECTORY-PATH is available. 510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mkdir_p () 511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_directory_path="$1" 513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_dir_list= 514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Protect directory names starting with `-' 518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $my_directory_path in 519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -*) my_directory_path="./$my_directory_path" ;; 520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # While some portion of DIR does not yet exist... 523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test ! -d "$my_directory_path"; do 524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # ...make a list in topmost first order. Use a colon delimited 525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # list incase some portion of path contains whitespace. 526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_dir_list="$my_directory_path:$my_dir_list" 527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the last portion added has no slash in it, the list is done 529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $my_directory_path in */*) ;; *) break ;; esac 530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # ...otherwise throw away the child directory and loop 532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_mkdir_p_IFS="$IFS"; IFS=':' 537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for my_dir in $my_dir_list; do 538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_mkdir_p_IFS" 539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # mkdir can fail with a `File exist' error if two processes 540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # try to create one of the directories concurrently. Don't 541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # stop in that case! 542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MKDIR "$my_dir" 2>/dev/null || : 543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_mkdir_p_IFS" 545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Bail out if we (or some other process) failed to create a directory. 547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -d "$my_directory_path" || \ 548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "Failed to create \`$1'" 549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mktempdir [string] 554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Make a temporary directory that won't clash with other running 555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# libtool processes, and avoids race conditions if possible. If 556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# given, STRING is the basename for that directory. 557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mktempdir () 558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_template="${TMPDIR-/tmp}/${1-$progname}" 560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_dry_run" = ":"; then 562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Return a directory name, but don't create it in dry-run mode 563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_tmpdir="${my_template}-$$" 564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If mktemp works, use that first and foremost 567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -d "$my_tmpdir"; then 570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Failing that, at least try and use $RANDOM to avoid a race 571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_tmpdir="${my_template}-${RANDOM-0}$$" 572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_mktempdir_umask=`umask` 574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats umask 0077 575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MKDIR "$my_tmpdir" 576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats umask $save_mktempdir_umask 577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If we're not in dry-run mode, bomb out on failure 580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -d "$my_tmpdir" || \ 581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$my_tmpdir" 585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_quote_for_eval arg 589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Aesthetically quote ARG to be evaled later. 590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is double-quoted, suitable for a subsequent eval, whereas 592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# which are still active within double quotes backslashified. 594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_quote_for_eval () 595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $1 in 597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\\\`\"\$]*) 598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval_unquoted_result="$1" ;; 601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $func_quote_for_eval_unquoted_result in 604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Double-quote args containing shell metacharacters to delay 605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # word splitting, command substitution and and variable 606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # expansion for a subsequent eval. 607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Many Bourne shells cannot handle close brackets correctly 608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # in scan sets, so we specify it separately. 609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_quote_for_expand arg 619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Aesthetically quote ARG to be evaled later; same as above, 620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# but do not quote variable references. 621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_quote_for_expand () 622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $1 in 624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\\\`\"]*) 625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_arg=`$ECHO "$1" | $SED \ 626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_arg="$1" ;; 629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $my_arg in 632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Double-quote args containing shell metacharacters to delay 633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # word splitting and command substitution for a subsequent eval. 634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Many Bourne shells cannot handle close brackets correctly 635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # in scan sets, so we specify it separately. 636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_arg="\"$my_arg\"" 638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_expand_result="$my_arg" 642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_show_eval cmd [fail_exp] 646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is given, then evaluate it. 649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_show_eval () 650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_cmd="$1" 652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_fail_exp="${2-:}" 653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ${opt_silent-false} || { 655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_expand "$my_cmd" 656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "func_echo $func_quote_for_expand_result" 657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ${opt_dry_run-false}; then :; else 660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$my_cmd" 661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_status=$? 662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$my_status" -eq 0; then :; else 663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "(exit $my_status); $my_fail_exp" 664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_show_eval_locale cmd [fail_exp] 670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# is given, then evaluate it. Use the saved locale for evaluation. 673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_show_eval_locale () 674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_cmd="$1" 676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_fail_exp="${2-:}" 677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ${opt_silent-false} || { 679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_expand "$my_cmd" 680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "func_echo $func_quote_for_expand_result" 681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ${opt_dry_run-false}; then :; else 684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$lt_user_locale 685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $my_cmd" 686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_status=$? 687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$lt_safe_locale" 688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$my_status" -eq 0; then :; else 689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "(exit $my_status); $my_fail_exp" 690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_tr_sh 695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Turn $1 into a string suitable for a shell variable name. 696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is stored in $func_tr_sh_result. All characters 697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if $1 begins with a digit, a '_' is prepended as well. 699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_tr_sh () 700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $1 in 702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [0-9]* | *[!a-zA-Z0-9_]*) 703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * ) 706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_tr_sh_result=$1 707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_version 713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo version message to standard output and exit. 714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_version () 715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n '/(C)/!b go 719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats :more 720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /\./!{ 721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats N 722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\n# / / 723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats b more 724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats :go 726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^# '$PROGRAM' (GNU /,/# warranty; / { 727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^# // 728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^# *$// 729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p 731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats }' < "$progpath" 732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $? 733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_usage 736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo short help message to standard output and exit. 737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_usage () 738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n '/^# Usage:/,/^# *.*--help/ { 742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^# // 743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^# *$// 744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\$progname/'$progname'/ 745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p 746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats }' < "$progpath" 747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "run \`$progname --help | more' for full usage" 749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $? 750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_help [NOEXIT] 753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo long help message to standard output and exit, 754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# unless 'noexit' is passed as argument. 755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_help () 756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n '/^# Usage:/,/# Report bugs to/ { 760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats :print 761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^# // 762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^# *$// 763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s*\$progname*'$progname'* 764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s*\$host*'"$host"'* 765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s*\$SHELL*'"$SHELL"'* 766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s*\$LTCC*'"$LTCC"'* 767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s*\$LTCFLAGS*'"$LTCFLAGS"'* 768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s*\$LD*'"$LD"'* 769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\$with_gnu_ld/'"$with_gnu_ld"'/ 770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p 773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats d 774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^# .* home page:/b print 776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^# General help using/b print 777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ' < "$progpath" 778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ret=$? 779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$1"; then 780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $ret 781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_missing_arg argname 785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error and set global 786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# exit_cmd. 787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_missing_arg () 788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "missing argument for $1." 792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit_cmd=exit 793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_split_short_opt shortopt 797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Set func_split_short_opt_name and func_split_short_opt_arg shell 798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variables after splitting SHORTOPT after the 2nd character. 799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_split_short_opt () 800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_sed_short_opt='1s/^\(..\).*$/\1/;q' 802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_split_short_opt may be replaced by extended shell implementation 807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_split_long_opt longopt 810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Set func_split_long_opt_name and func_split_long_opt_arg shell 811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variables after splitting LONGOPT at the `=' sign. 812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_split_long_opt () 813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_sed_long_arg='1s/^--[^=]*=//' 816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_split_long_opt may be replaced by extended shell implementation 820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexit_cmd=: 822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmagic="%%%MAGIC variable%%%" 828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmagic_exe="%%%MAGIC EXE variable%%%" 829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Global variables. 831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnonopt= 832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspreserve_args= 833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslo2o="s/\\.lo\$/.${objext}/" 834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatso2lo="s/\\.${objext}\$/.lo/" 835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextracted_archives= 836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextracted_serial=0 837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If this variable is set in any of the actions, the command in it 839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# will be execed at the end. This prevents here-documents from being 840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# left over by shells. 841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexec_cmd= 842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_append var value 844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Append VALUE to the end of shell variable VAR. 845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append () 846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "${1}=\$${1}\${2}" 848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_append may be replaced by extended shell implementation 849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_append_quoted var value 851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Quote VALUE and append to the end of shell variable VAR, separated 852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# by a space. 853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append_quoted () 854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "${2}" 856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_append_quoted may be replaced by extended shell implementation 858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_arith arithmetic-term... 861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_arith () 862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith_result=`expr "${@}"` 864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_arith may be replaced by extended shell implementation 865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_len string 868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# STRING may not start with a hyphen. 869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_len () 870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_len may be replaced by extended shell implementation 873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_lo2o object 876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lo2o () 877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_lo2o may be replaced by extended shell implementation 880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_xform libobj-or-source 883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_xform () 884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} # func_xform may be replaced by extended shell implementation 887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_fatal_configuration arg... 890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echo program name prefixed message to standard error, followed by 891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a configuration failure hint, and exit. 892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fatal_configuration () 893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error ${1+"$@"} 895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "See the $PACKAGE documentation for more information." 896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "Fatal configuration error." 897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_config 901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Display the configuration for all the tags in this script. 902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_config () 903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats re_begincf='^# ### BEGIN LIBTOOL' 905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats re_endcf='^# ### END LIBTOOL' 906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Default configuration. 908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now print the configurations for the tags. 911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for tagname in $taglist; do 912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $? 916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_features 919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Display the features supported by this script. 920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_features () 921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "host: $host" 923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes; then 924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "enable shared libraries" 925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "disable shared libraries" 927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = yes; then 929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "enable static libraries" 930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "disable static libraries" 932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $? 935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_enable_tag tagname 938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Verify that TAGNAME is valid, and either flag an error and exit, or 939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variable here. 941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_enable_tag () 942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Global variable: 944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tagname="$1" 945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sed_extractcf="/$re_begincf/,/$re_endcf/p" 949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Validate tagname. 951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $tagname in 952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[!-_A-Za-z0-9,/]*) 953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "invalid tag name: $tagname" 954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't test for the "default" C tag, as we know it's 958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # there but not specially marked. 959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $tagname in 960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC) ;; 961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats taglist="$taglist $tagname" 964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Evaluate the configuration. Be careful to quote the path 966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and the sed script, to avoid splitting on whitespace, but 967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # also don't use non-portable quotes within backquotes within 968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # quotes we have to do it in 2 steps: 969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$extractedcf" 971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "ignoring unknown tag $tagname" 973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_check_version_match 979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Ensure that we are using m4 macros, and libtool script from the same 980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# release of libtool. 981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_check_version_match () 982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$package_revision" != "$macro_revision"; then 984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$VERSION" != "$macro_version"; then 985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$macro_version"; then 986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat >&2 <<_LT_EOF 987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: definition of this LT_INIT comes from an older release. 989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: and run autoconf again. 991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LT_EOF 992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat >&2 <<_LT_EOF 994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: and run autoconf again. 998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LT_EOF 999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat >&2 <<_LT_EOF 1002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 1003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: but the definition of this LT_INIT comes from revision $macro_revision. 1004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: You should recreate aclocal.m4 with macros from revision $package_revision 1005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$progname: of $PACKAGE $VERSION and run autoconf again. 1006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LT_EOF 1007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_MISMATCH 1010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Shorthand for --mode=foo, only valid as the first argument 1015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscase $1 in 1016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsclean|clea|cle|cl) 1017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode clean ${1+"$@"}; shift 1018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompile|compil|compi|comp|com|co|c) 1020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode compile ${1+"$@"}; shift 1021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexecute|execut|execu|exec|exe|ex|e) 1023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode execute ${1+"$@"}; shift 1024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfinish|finis|fini|fin|fi|f) 1026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode finish ${1+"$@"}; shift 1027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinstall|instal|insta|inst|ins|in|i) 1029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode install ${1+"$@"}; shift 1030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslink|lin|li|l) 1032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode link ${1+"$@"}; shift 1033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsuninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 1035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift; set dummy --mode uninstall ${1+"$@"}; shift 1036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsesac 1038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Option defaults: 1042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_debug=: 1043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_dry_run=false 1044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_config=false 1045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_preserve_dup_deps=false 1046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_features=false 1047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_finish=false 1048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help=false 1049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help_all=false 1050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_silent=: 1051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_warning=: 1052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_verbose=: 1053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_silent=false 1054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_verbose=false 1055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Parse options once, thoroughly. This comes as soon as possible in the 1058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# script to make things like `--version' happen as quickly as we can. 1059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # this just eases exit handling 1061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test $# -gt 0; do 1062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt="$1" 1063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $opt in 1065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --debug|-x) opt_debug='set -x' 1066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_echo "enabling shell trace mode" 1067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --dry-run|--dryrun|-n) 1070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_dry_run=: 1071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --config) 1073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_config=: 1074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_config 1075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --dlopen|-dlopen) 1077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats optarg="$1" 1078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_dlopen="${opt_dlopen+$opt_dlopen 1079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}$optarg" 1080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --preserve-dup-deps) 1083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_preserve_dup_deps=: 1084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --features) 1086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_features=: 1087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_features 1088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --finish) 1090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_finish=: 1091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsset dummy --mode finish ${1+"$@"}; shift 1092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --help) 1094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_help=: 1095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --help-all) 1097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_help_all=: 1098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_help=': help-all' 1099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --mode) 1101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test $# = 0 && func_missing_arg $opt && break 1102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats optarg="$1" 1103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_mode="$optarg" 1104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscase $optarg in 1105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Valid mode arguments: 1106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats clean|compile|execute|finish|install|link|relink|uninstall) ;; 1107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Catch anything else as an error 1109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_error "invalid argument for $opt" 1110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit_cmd=exit 1111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 1112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsesac 1114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --no-silent|--no-quiet) 1117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_silent=false 1118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt" 1119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --no-warning|--no-warn) 1121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_warning=false 1122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt" 1123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --no-verbose) 1125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_verbose=false 1126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt" 1127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --silent|--quiet) 1129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_silent=: 1130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt" 1131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_verbose=false 1132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --verbose|-v) 1134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_verbose=: 1135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt" 1136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsopt_silent=false 1137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --tag) 1139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test $# = 0 && func_missing_arg $opt && break 1140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats optarg="$1" 1141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_tag="$optarg" 1142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_append preserve_args " $opt $optarg" 1143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_enable_tag "$optarg" 1144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -\?|-h) func_usage ;; 1148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --help) func_help ;; 1149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --version) func_version ;; 1150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Separate optargs to long options: 1152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --*=*) 1153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_split_long_opt "$opt" 1154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 1155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Separate non-argument short options: 1159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -\?*|-h*|-n*|-v*) 1160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_split_short_opt "$opt" 1161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 1162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --) break ;; 1166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -*) func_fatal_help "unrecognized option \`$opt'" ;; 1167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) set dummy "$opt" ${1+"$@"}; shift; break ;; 1168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Validate options: 1172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # save first non-option argument 1174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$#" -gt 0; then 1175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonopt="$opt" 1176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 1177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # preserve --debug 1180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$opt_debug" = : || func_append preserve_args " --debug" 1181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 1183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *pw32* | *cegcc*) 1184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # don't eliminate duplications in $postdeps and $predeps 1185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_duplicate_compiler_generated_deps=: 1186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 1188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 1189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_help || { 1193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Sanity checks first: 1194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_check_version_match 1195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 1197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_configuration "not configured to build any kind of library" 1198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Darwin sucks 1201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval std_shrext=\"$shrext_cmds\" 1202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only execute mode is allowed to have -dlopen flags. 1204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 1205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "unrecognized option \`-dlopen'" 1206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$help" 1>&2 1207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_FAILURE 1208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Change the help message to a mode-specific one. 1211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats generic_help="$help" 1212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats help="Try \`$progname --help --mode=$opt_mode' for more information." 1213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 1214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Bail if the options were screwed 1217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $exit_cmd $EXIT_FAILURE 1218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats## ----------- ## 1224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats## Main. ## 1225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats## ----------- ## 1226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_lalib_p file 1228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool `.la' library or `.lo' object file. 1229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out 1230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters. 1231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lalib_p () 1232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -f "$1" && 1234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e 4q "$1" 2>/dev/null \ 1235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 1236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_lalib_unsafe_p file 1239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool `.la' library or `.lo' object file. 1240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function implements the same check as func_lalib_p without 1241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# resorting to external programs. To this end, it redirects stdin and 1242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# closes it afterwards, without saving the original file descriptor. 1243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# As a safety measure, use it only where a negative result would be 1244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# fatal anyway. Works if `file' does not exist. 1245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lalib_unsafe_p () 1246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lalib_p=no 1248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 1249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lalib_p_l in 1 2 3 4 1250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 1251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats read lalib_p_line 1252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$lalib_p_line" in 1253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 1254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exec 0<&5 5<&- 1257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$lalib_p" = yes 1259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_script_p file 1262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool wrapper script 1263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out 1264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters. 1265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_script_p () 1266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lalib_p "$1" 1268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_executable_p file 1271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool wrapper executable 1272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out 1273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters. 1274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_executable_p () 1275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_exec_suffix= 1277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $1 in 1278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.exe) ;; 1279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_ltwrapper_exec_suffix=.exe ;; 1280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 1282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_scriptname file 1285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Assumes file is an ltwrapper_executable 1286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# uses $file to determine the appropriate filename for a 1287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# temporary ltwrapper_script. 1288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_scriptname () 1289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_and_basename "$1" "" "." 1291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$func_basename_result" 1292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 1293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_ltwrapper_p file 1296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True iff FILE is a libtool wrapper script or wrapper executable 1297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This function is only a basic sanity check; it will hardly flush out 1298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# determined imposters. 1299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_ltwrapper_p () 1300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 1302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_execute_cmds commands fail_cmd 1306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Execute tilde-delimited COMMANDS. 1307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If FAIL_CMD is given, eval that upon failure. 1308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FAIL_CMD may read-access the current command in variable CMD! 1309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_execute_cmds () 1310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs=$IFS; IFS='~' 1313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for cmd in $1; do 1314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS=$save_ifs 1315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmd=\"$cmd\" 1316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$cmd" "${2-:}" 1317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS=$save_ifs 1319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_source file 1323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Source FILE, adding directory component if necessary. 1324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Note that it is not necessary on cygwin/mingw to append a dot to 1325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 1326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# behavior happens only for exec(3), not for open(2)! Also, sourcing 1327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# `FILE.' does not work on cygwin managed mounts. 1328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_source () 1329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $1 in 1332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats */* | *\\*) . "$1" ;; 1333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) . "./$1" ;; 1334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_resolve_sysroot PATH 1339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Replace a leading = in PATH with a sysroot. Store the result into 1340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_resolve_sysroot_result 1341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_resolve_sysroot () 1342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot_result=$1 1344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $func_resolve_sysroot_result in 1345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats =*) 1346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '=' '' "$func_resolve_sysroot_result" 1347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 1348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_replace_sysroot PATH 1353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If PATH begins with the sysroot, replace it with = and 1354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# store the result into func_replace_sysroot_result. 1355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_replace_sysroot () 1356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$lt_sysroot:$1" in 1358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ?*:"$lt_sysroot"*) 1359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname "$lt_sysroot" '' "$1" 1360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_replace_sysroot_result="=$func_stripname_result" 1361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 1363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Including no sysroot. 1364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_replace_sysroot_result=$1 1365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_infer_tag arg 1370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Infer tagged configuration to use if any are available and 1371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if one wasn't chosen via the "--tag" command line option. 1372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Only attempt this if the compiler in the base compile 1373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# command doesn't match the default compiler. 1374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# arg is usually of the form 'gcc ...' 1375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_infer_tag () 1376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$available_tags" && test -z "$tagname"; then 1379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC_quoted= 1380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg in $CC; do 1381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append_quoted CC_quoted "$arg" 1382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC_expanded=`func_echo_all $CC` 1384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC_quoted_expanded=`func_echo_all $CC_quoted` 1385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $@ in 1386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Blanks in the command may have been stripped by the calling shell, 1387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # but not from the CC environment variable when configure was run. 1388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 1390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Blanks at the start of $base_compile will cause this to fail 1391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # if we don't check for them as well. 1392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 1393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for z in $available_tags; do 1394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 1395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Evaluate the configuration. 1396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 1397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC_quoted= 1398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg in $CC; do 1399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Double-quote args containing other shell metacharacters. 1400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append_quoted CC_quoted "$arg" 1401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC_expanded=`func_echo_all $CC` 1403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CC_quoted_expanded=`func_echo_all $CC_quoted` 1404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$@ " in 1405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 1406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 1407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The compiler in the base compile command matches 1408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the one in the tagged configuration. 1409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Assume this is the tagged configuration we want. 1410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tagname=$z 1411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 1412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If $tagname still isn't set, then no tagged configuration 1417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # was found and let the user know that the "--tag" command 1418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # line option must be used. 1419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$tagname"; then 1420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_echo "unable to infer tagged configuration" 1421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "specify a tag with \`--tag'" 1422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# else 1423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_verbose "using $tagname tagged configuration" 1424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_write_libtool_object output_name pic_name nonpic_name 1433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Create a libtool object file (analogous to a ".la" file), 1434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# but don't create it if we're doing a dry run. 1435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_write_libtool_object () 1436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats write_libobj=${1} 1438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes; then 1439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats write_lobj=\'${2}\' 1440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats write_lobj=none 1442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = yes; then 1445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats write_oldobj=\'${3}\' 1446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats write_oldobj=none 1448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 1451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat >${write_libobj}T <<EOF 1452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $write_libobj - a libtool object file 1453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 1454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Please DO NOT delete this file! 1456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# It is necessary for linking the library. 1457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Name of the PIC object. 1459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatspic_object=$write_lobj 1460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Name of the non-PIC object 1462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnon_pic_object=$write_oldobj 1463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 1465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MV "${write_libobj}T" "${write_libobj}" 1466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 1467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats################################################## 1471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 1472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats################################################## 1473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_core_file_wine_to_w32 ARG 1475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Helper function used by file name conversion functions when $build is *nix, 1476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and $host is mingw, cygwin, or some other w32 environment. Relies on a 1477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# correctly configured wine environment available, with the winepath program 1478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in $build's $PATH. 1479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is the $build file name to be converted to w32 format. 1481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in $func_convert_core_file_wine_to_w32_result, and will 1482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# be empty on error (or when ARG is empty) 1483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_core_file_wine_to_w32 () 1484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32_result="$1" 1487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Unfortunately, winepath does not exit with a non-zero error code, so we 1489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # are forced to check the contents of stdout. On the other hand, if the 1490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # command is not found, the shell will set an exit code of 127 and print 1491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # *an error message* to stdout. So we must check for both error code of 1492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # zero AND non-empty stdout, which explains the odd construction: 1493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 1494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 1495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 1496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e "$lt_sed_naive_backslashify"` 1497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32_result= 1499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end: func_convert_core_file_wine_to_w32 1503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_core_path_wine_to_w32 ARG 1506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Helper function used by path conversion functions when $build is *nix, and 1507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 1508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# configured wine environment available, with the winepath program in $build's 1509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $PATH. Assumes ARG has no leading or trailing path separator characters. 1510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is path to be converted from $build format to win32. 1512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in $func_convert_core_path_wine_to_w32_result. 1513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Unconvertible file (directory) names in ARG are skipped; if no directory names 1514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# are convertible, then the result may be empty. 1515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_core_path_wine_to_w32 () 1516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # unfortunately, winepath doesn't convert paths, only file names 1519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_path_wine_to_w32_result="" 1520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldIFS=$IFS 1522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS=: 1523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for func_convert_core_path_wine_to_w32_f in $1; do 1524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS=$oldIFS 1525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 1526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$func_convert_core_file_wine_to_w32_result" ; then 1527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$func_convert_core_path_wine_to_w32_result"; then 1528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 1529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 1531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 1534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS=$oldIFS 1535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end: func_convert_core_path_wine_to_w32 1538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygpath ARGS... 1541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 1542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 1543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 1544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (2), returns the Cygwin file name or path in func_cygpath_result (input 1545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# file name or path is assumed to be in w32 format, as previously converted 1546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# from $build's *nix or MSYS format). In case (3), returns the w32 file name 1547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# or path in func_cygpath_result (input file name or path is assumed to be in 1548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Cygwin format). Returns an empty string on error. 1549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARGS are passed to cygpath, with the last one being the file name or path to 1551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# be converted. 1552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 1554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# environment variable; do not put it in $PATH. 1555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygpath () 1556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 1559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 1560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$?" -ne 0; then 1561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # on failure, ensure result is empty 1562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath_result= 1563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath_result= 1566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 1567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#end: func_cygpath 1570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_core_msys_to_w32 ARG 1573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name or path ARG from MSYS format to w32 format. Return 1574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# result in func_convert_core_msys_to_w32_result. 1575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_core_msys_to_w32 () 1576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # awkward: cmd appends spaces to result 1579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 1580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 1581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#end: func_convert_core_msys_to_w32 1583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_check ARG1 ARG2 1586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Verify that ARG1 (a file name in $build format) was converted to $host 1587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# format in ARG2. Otherwise, emit an error message, but continue (resetting 1588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result to ARG1). 1589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_check () 1590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$2" && test -n "$1" ; then 1593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "Could not determine host file name corresponding to" 1594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error " \`$1'" 1595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "Continuing, but uninstalled executables may not work." 1596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Fallback: 1597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_check 1601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 1604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Verify that FROM_PATH (a path in $build format) was converted to $host 1605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 1606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result to a simplistic fallback value (see below). 1607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_check () 1608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$4" && test -n "$3"; then 1611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "Could not determine the host path corresponding to" 1612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error " \`$3'" 1613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "Continuing, but uninstalled executables may not work." 1614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Fallback. This is a deliberately simplistic "conversion" and 1615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # should not be "improved". See libtool.info. 1616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x$1" != "x$2"; then 1617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_replace_pathsep_chars="s|$1|$2|g" 1618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result=`echo "$3" | 1619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e "$lt_replace_pathsep_chars"` 1620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 1621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$3" 1622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_check 1626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 1629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 1630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and appending REPL if ORIG matches BACKPAT. 1631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_front_back_pathsep () 1632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $4 in 1635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $1 ) func_to_host_path_result="$3$func_to_host_path_result" 1636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $4 in 1639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $2 ) func_append func_to_host_path_result "$3" 1640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_front_back_pathsep 1644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats################################################## 1647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $build to $host FILE NAME CONVERSION FUNCTIONS # 1648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats################################################## 1649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# invoked via `$to_host_file_cmd ARG' 1650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# In each case, ARG is the path to be converted from $build to $host format. 1652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result will be available in $func_to_host_file_result. 1653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file ARG 1656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Converts the file name ARG from $build format to $host format. Return result 1657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in func_to_host_file_result. 1658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_to_host_file () 1659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $to_host_file_cmd "$1" 1662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_to_host_file 1664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_tool_file ARG LAZY 1667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# converts the file name ARG from $build format to toolchain format. Return 1668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# result in func_to_tool_file_result. If the conversion in use is listed 1669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in (the comma separated) LAZY, no conversion takes place. 1670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_to_tool_file () 1671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case ,$2, in 1674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *,"$to_tool_file_cmd",*) 1675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file_result=$1 1676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 1678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $to_tool_file_cmd "$1" 1679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file_result=$func_to_host_file_result 1680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 1682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_to_tool_file 1684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_noop ARG 1687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Copy ARG to func_to_host_file_result. 1688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_noop () 1689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_noop 1693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_msys_to_w32 ARG 1696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 1697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# conversion to w32 is not available inside the cwrapper. Returns result in 1698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result. 1699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_msys_to_w32 () 1700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_msys_to_w32 "$1" 1705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$func_convert_core_msys_to_w32_result" 1706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_file_check "$1" "$func_to_host_file_result" 1708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_msys_to_w32 1710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_cygwin_to_w32 ARG 1713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from Cygwin to w32 format. Returns result in 1714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result. 1715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_cygwin_to_w32 () 1716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 1721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # LT_CYGPATH in this case. 1722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result=`cygpath -m "$1"` 1723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_file_check "$1" "$func_to_host_file_result" 1725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_cygwin_to_w32 1727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_nix_to_w32 ARG 1730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from *nix to w32 format. Requires a wine environment 1731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# and a working winepath. Returns result in func_to_host_file_result. 1732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_nix_to_w32 () 1733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32 "$1" 1738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 1739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_file_check "$1" "$func_to_host_file_result" 1741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_nix_to_w32 1743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_msys_to_cygwin ARG 1746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Returns result in func_to_host_file_result. 1748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_msys_to_cygwin () 1749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_msys_to_w32 "$1" 1754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath -u "$func_convert_core_msys_to_w32_result" 1755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$func_cygpath_result" 1756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_file_check "$1" "$func_to_host_file_result" 1758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_msys_to_cygwin 1760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_file_nix_to_cygwin ARG 1763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 1764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 1765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in func_to_host_file_result. 1766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_file_nix_to_cygwin () 1767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$1" 1770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 1772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_file_wine_to_w32 "$1" 1773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 1774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_file_result="$func_cygpath_result" 1775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_file_check "$1" "$func_to_host_file_result" 1777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_file_nix_to_cygwin 1779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats############################################# 1782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $build to $host PATH CONVERSION FUNCTIONS # 1783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats############################################# 1784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# invoked via `$to_host_path_cmd ARG' 1785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# In each case, ARG is the path to be converted from $build to $host format. 1787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The result will be available in $func_to_host_path_result. 1788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Path separators are also converted from $build format to $host format. If 1790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG begins or ends with a path separator character, it is preserved (but 1791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# converted to $host format) on output. 1792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 1793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# All path conversion functions are named using the following convention: 1794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# file name conversion function : func_convert_file_X_to_Y () 1795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# path conversion function : func_convert_path_X_to_Y () 1796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# where, for any given $build/$host combination the 'X_to_Y' value is the 1797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# same. If conversion functions are added for new $build/$host combinations, 1798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the two new functions must follow this pattern, or func_init_to_host_path_cmd 1799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# will break. 1800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_init_to_host_path_cmd 1803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Ensures that function "pointer" variable $to_host_path_cmd is set to the 1804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# appropriate value, based on the value of $to_host_file_cmd. 1805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsto_host_path_cmd= 1806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_init_to_host_path_cmd () 1807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$to_host_path_cmd"; then 1810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 1811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats to_host_path_cmd="func_convert_path_${func_stripname_result}" 1812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_path ARG 1817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Converts the path ARG from $build format to $host format. Return result 1818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in func_to_host_path_result. 1819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_to_host_path () 1820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_init_to_host_path_cmd 1823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $to_host_path_cmd "$1" 1824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_to_host_path 1826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_noop ARG 1829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Copy ARG to func_to_host_path_result. 1830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_noop () 1831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$1" 1833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_noop 1835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_msys_to_w32 ARG 1838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 1839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# conversion to w32 is not available inside the cwrapper. Returns result in 1840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_path_result. 1841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_msys_to_w32 () 1842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$1" 1845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove leading and trailing path separator characters from ARG. MSYS 1847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 1848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and winepath ignores them completely. 1849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname : : "$1" 1850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_tmp1=$func_stripname_result 1851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$func_convert_core_msys_to_w32_result" 1853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_check : ";" \ 1854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "$func_to_host_path_tmp1" "$func_to_host_path_result" 1855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_msys_to_w32 1859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_cygwin_to_w32 ARG 1862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from Cygwin to w32 format. Returns result in 1863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result. 1864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_cygwin_to_w32 () 1865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$1" 1868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See func_convert_path_msys_to_w32: 1870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname : : "$1" 1871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_tmp1=$func_stripname_result 1872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 1873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_check : ";" \ 1874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "$func_to_host_path_tmp1" "$func_to_host_path_result" 1875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_cygwin_to_w32 1879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_nix_to_w32 ARG 1882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from *nix to w32 format. Requires a wine environment and 1883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a working winepath. Returns result in func_to_host_file_result. 1884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_nix_to_w32 () 1885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$1" 1888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See func_convert_path_msys_to_w32: 1890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname : : "$1" 1891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_tmp1=$func_stripname_result 1892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 1894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_check : ";" \ 1895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "$func_to_host_path_tmp1" "$func_to_host_path_result" 1896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 1897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_nix_to_w32 1900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_msys_to_cygwin ARG 1903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 1904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Returns result in func_to_host_file_result. 1905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_msys_to_cygwin () 1906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$1" 1909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See func_convert_path_msys_to_w32: 1911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname : : "$1" 1912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_tmp1=$func_stripname_result 1913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 1914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 1915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$func_cygpath_result" 1916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_check : : \ 1917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "$func_to_host_path_tmp1" "$func_to_host_path_result" 1918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_msys_to_cygwin 1922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_convert_path_nix_to_cygwin ARG 1925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 1926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 1927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_to_host_file_result. 1928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_convert_path_nix_to_cygwin () 1929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$1" 1932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 1933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove leading and trailing path separator characters from 1934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # ARG. msys behavior is inconsistent here, cygpath turns them 1935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # into '.;' and ';.', and winepath ignores them completely. 1936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname : : "$1" 1937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_tmp1=$func_stripname_result 1938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 1939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 1940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path_result="$func_cygpath_result" 1941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_check : : \ 1942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "$func_to_host_path_tmp1" "$func_to_host_path_result" 1943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_convert_path_front_back_pathsep ":*" "*:" : "$1" 1944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 1945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 1946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end func_convert_path_nix_to_cygwin 1947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_compile arg... 1950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_compile () 1951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 1952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 1953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Get the compilation command and the source file. 1954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats base_compile= 1955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats srcfile="$nonopt" # always keep a non-empty value in "srcfile" 1956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats suppress_opt=yes 1957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats suppress_output= 1958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg_mode=normal 1959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobj= 1960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats later= 1961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pie_flag= 1962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg 1964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 1965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg_mode in 1966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg ) 1967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # do not "continue". Instead, add this to base_compile 1968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lastarg="$arg" 1969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg_mode=normal 1970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats target ) 1973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobj="$arg" 1974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg_mode=normal 1975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 1976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats normal ) 1979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Accept any command-line options. 1980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 1981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -o) 1982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$libobj" && \ 1983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "you cannot specify \`-o' more than once" 1984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg_mode=target 1985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 1986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -pie | -fpie | -fPIE) 1989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append pie_flag " $arg" 1990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 1991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shared | -static | -prefer-pic | -prefer-non-pic) 1994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append later " $arg" 1995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 1996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 1997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-suppress) 1999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats suppress_opt=no 2000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Xcompiler) 2004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg_mode=arg # the next one goes into the "base_compile" arg list 2005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue # The current "srcfile" will either be retained or 2006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; # replaced later. I would guess that would be a bug. 2007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Wc,*) 2009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-Wc,' '' "$arg" 2010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats args=$func_stripname_result 2011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lastarg= 2012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS=',' 2013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg in $args; do 2014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 2015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append_quoted lastarg "$arg" 2016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 2018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname ' ' '' "$lastarg" 2019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lastarg=$func_stripname_result 2020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add the arguments to base_compile. 2022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append base_compile " $lastarg" 2023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Accept the current argument as the source file. 2028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The previous "srcfile" becomes the current argument. 2029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 2030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lastarg="$srcfile" 2031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats srcfile="$arg" 2032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac # case $arg 2034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac # case $arg_mode 2036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Aesthetically quote the previous argument. 2038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append_quoted base_compile "$lastarg" 2039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # for arg 2040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg_mode in 2042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg) 2043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "you must specify an argument for -Xcompile" 2044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats target) 2046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "you must specify a target with \`-o'" 2047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Get the name of the library object. 2050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libobj" && { 2051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$srcfile" 2052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobj="$func_basename_result" 2053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 2054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Recognize several different file suffixes. 2058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the user specifies -o file.o, it is replaced with file.lo 2059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $libobj in 2060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.[cCFSifmso] | \ 2061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.ada | *.adb | *.ads | *.asm | \ 2062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 2063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 2064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_xform "$libobj" 2065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobj=$func_xform_result 2066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $libobj in 2070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 2071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot determine name of library object from \`$libobj'" 2073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_infer_tag $base_compile 2077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg in $later; do 2079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 2080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shared) 2081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_libtool_libs" != yes && \ 2082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_configuration "can not build a shared library" 2083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=no 2084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static) 2088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 2089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 2090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -prefer-pic) 2094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_mode=yes 2095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -prefer-non-pic) 2099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_mode=no 2100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$libobj" 2106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobj" != "X$func_quote_for_eval_result" \ 2107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 2108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && func_warning "libobj name \`$libobj' may not contain shell special characters." 2109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_and_basename "$obj" "/" "" 2110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objname="$func_basename_result" 2111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xdir="$func_dirname_result" 2112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lobj=${xdir}$objdir/$objname 2113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$base_compile" && \ 2115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify a compilation command" 2116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete any leftover library objects. 2118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = yes; then 2119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats removelist="$obj $lobj $libobj ${libobj}T" 2120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats removelist="$lobj $libobj ${libobj}T" 2122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # On Cygwin there's no "real" PIC flag so we must build both object types 2125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host_os in 2126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cygwin* | mingw* | pw32* | os2* | cegcc*) 2127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_mode=default 2128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 2131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # non-PIC code in shared libraries is not supported 2132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_mode=default 2133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Calculate the filename of the output object if compiler does 2136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # not support -o with -c 2137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$compiler_c_o" = no; then 2138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 2139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lockfile="$output_obj.lock" 2140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_obj= 2142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats need_locks=no 2143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lockfile= 2144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Lock this critical section if it is needed 2147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We use this script file to make the link, it avoids creating a new file 2148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_locks" = yes; then 2149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 2150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_echo "Waiting for $lockfile to be removed" 2151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sleep 2 2152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$need_locks" = warn; then 2154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$lockfile"; then 2155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 2156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*** ERROR, $lockfile exists and contains: 2157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats`cat $lockfile 2>/dev/null` 2158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis indicates that another process is trying to use the same 2160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstemporary object file, and libtool could not work around it because 2161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsyour compiler does not support \`-c' and \`-o' together. If you 2162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrepeat this compilation, it may succeed, by chance, but you had better 2163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsavoid parallel builds (make -j) in this platform, or get a better 2164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompiler." 2165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $removelist 2167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_FAILURE 2168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append removelist " $output_obj" 2170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$srcfile" > "$lockfile" 2171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $removelist 2174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append removelist " $lockfile" 2175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 2176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 2178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats srcfile=$func_to_tool_file_result 2179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$srcfile" 2180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats qsrcfile=$func_quote_for_eval_result 2181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only build a PIC object if we are building libtool libraries. 2183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes; then 2184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Without this assignment, base_compile gets emptied. 2185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fbsd_hideous_sh_bug=$base_compile 2186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pic_mode" != no; then 2188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats command="$base_compile $qsrcfile $pic_flag" 2189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't build PIC code 2191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats command="$base_compile $qsrcfile" 2192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mkdir_p "$xdir$objdir" 2195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$output_obj"; then 2197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Place PIC objects in $objdir 2198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append command " -o $lobj" 2199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval_locale "$command" \ 2202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 2203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_locks" = warn && 2205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 2207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*** ERROR, $lockfile contains: 2208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats`cat $lockfile 2>/dev/null` 2209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbut it should contain: 2211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$srcfile 2212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis indicates that another process is trying to use the same 2214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstemporary object file, and libtool could not work around it because 2215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsyour compiler does not support \`-c' and \`-o' together. If you 2216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrepeat this compilation, it may succeed, by chance, but you had better 2217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsavoid parallel builds (make -j) in this platform, or get a better 2218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompiler." 2219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $removelist 2221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_FAILURE 2222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just move the object if needed, then go on to compile the next one 2225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 2226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$MV "$output_obj" "$lobj"' \ 2227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Allow error messages only from the first compilation. 2231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$suppress_opt" = yes; then 2232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats suppress_output=' >/dev/null 2>&1' 2233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only build a position-dependent object if we build old libraries. 2237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = yes; then 2238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pic_mode" != yes; then 2239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't build PIC code 2240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats command="$base_compile $qsrcfile$pie_flag" 2241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats command="$base_compile $qsrcfile $pic_flag" 2243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$compiler_c_o" = yes; then 2245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append command " -o $obj" 2246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Suppress compiler output if we already did a PIC compilation. 2249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append command "$suppress_output" 2250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval_locale "$command" \ 2251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 2252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_locks" = warn && 2254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 2255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 2256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*** ERROR, $lockfile contains: 2257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats`cat $lockfile 2>/dev/null` 2258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbut it should contain: 2260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$srcfile 2261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis indicates that another process is trying to use the same 2263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstemporary object file, and libtool could not work around it because 2264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsyour compiler does not support \`-c' and \`-o' together. If you 2265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrepeat this compilation, it may succeed, by chance, but you had better 2266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsavoid parallel builds (make -j) in this platform, or get a better 2267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscompiler." 2268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $removelist 2270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_FAILURE 2271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just move the object if needed 2274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 2275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$MV "$output_obj" "$obj"' \ 2276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 2277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 2281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 2282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Unlock the critical section if it was locked 2284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_locks" != no; then 2285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats removelist=$lockfile 2286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM "$lockfile" 2287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 2289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 2291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 2292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats$opt_help || { 2294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 2295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 2296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_help () 2298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 2299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need to display help for each of the modes. 2300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $opt_mode in 2301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "") 2302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Generic help is extracted from the usage comments 2303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # at the start of this file. 2304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_help 2305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats clean) 2308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 2310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRemove files from the build directory. 2312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRM is the name of the program to use to delete files associated with each FILE 2314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsto RM. 2316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf FILE is a libtool library, object or program, all the files associated 2318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatswith it are deleted. Otherwise, only FILE itself is deleted using RM." 2319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile) 2322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 2324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsCompile a source file into a libtool library object. 2326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis mode accepts the following additional options: 2328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -o OUTPUT-FILE set the output file name to OUTPUT-FILE 2330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-suppress do not suppress compiler output for multiple passes 2331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -prefer-pic try to build PIC objects only 2332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -prefer-non-pic try to build non-PIC objects only 2333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shared do not build a \`.o' file suitable for static linking 2334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static only build a \`.o' file suitable for static linking 2335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Wc,FLAG pass FLAG directly to the compiler 2336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 2338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfrom the given SOURCEFILE. 2339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe output file name is determined by removing the directory component from 2341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsSOURCEFILE, then substituting the C source code suffix \`.c' with the 2342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslibrary object suffix, \`.lo'." 2343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats execute) 2346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 2348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsAutomatically set library path, then run a program. 2350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis mode accepts the following additional options: 2352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -dlopen FILE add the directory containing FILE to the library path 2354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThis mode sets the library path environment variable according to \`-dlopen' 2356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsflags. 2357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf any of the ARGS are libtool executable wrappers, then they are translated 2359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinto their corresponding uninstalled binary, and any of their required library 2360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdirectories are added to the library path. 2361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThen, COMMAND is executed, with ARGS as arguments." 2363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finish) 2366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 2368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsComplete the installation of libtool libraries. 2370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEach LIBDIR is a directory that contains libtool libraries. 2372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe commands that this mode executes may require superuser privileges. Use 2374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsthe \`--dry-run' option if you just want to see what would be executed." 2375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats install) 2378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 2380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsInstall executables or libraries. 2382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsINSTALL-COMMAND is the installation command. The first component should be 2384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatseither the \`install' or \`cp' program. 2385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe following components of INSTALL-COMMAND are treated specially: 2387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 2389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe rest of the components are interpreted as arguments to that command (only 2391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsBSD-compatible install options are recognized)." 2392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link) 2395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 2397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLink object files or libraries together to form another library, or to 2399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscreate an executable program. 2400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLINK-COMMAND is a command using the C compiler that you would use to create 2402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsa program from several object files. 2403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsThe following components of LINK-COMMAND are treated specially: 2405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -all-static do not do any dynamic linking at all 2407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -avoid-version do not add a version suffix if possible 2408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -bindir BINDIR specify path to binaries directory (for systems where 2409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libraries must be found in the PATH setting at runtime) 2410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 2411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 2412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 2413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -export-symbols SYMFILE 2414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats try to export only the symbols listed in SYMFILE 2415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -export-symbols-regex REGEX 2416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats try to export only the symbols matching REGEX 2417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -LLIBDIR search LIBDIR for required installed libraries 2418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -lNAME OUTPUT-FILE requires the installed library libNAME 2419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -module build a library that can dlopened 2420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-fast-install disable the fast-install mode 2421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-install link a not-installable executable 2422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-undefined declare that a library does not refer to external symbols 2423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 2424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -objectlist FILE Use a list of object files found in FILE to specify objects 2425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -precious-files-regex REGEX 2426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats don't remove output files matching REGEX 2427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -release RELEASE specify package release information 2428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -rpath LIBDIR the created library will eventually be installed in LIBDIR 2429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 2430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shared only do dynamic linking of libtool libraries 2431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shrext SUFFIX override the standard shared library file extension 2432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static do not do any dynamic linking of uninstalled libtool libraries 2433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static-libtool-libs 2434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do not do any dynamic linking of libtool libraries 2435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -version-info CURRENT[:REVISION[:AGE]] 2436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats specify library version info [each variable defaults to 0] 2437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -weak LIBNAME declare that the target provides the LIBNAME interface 2438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Wc,FLAG 2439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 2440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Wl,FLAG 2441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Xlinker FLAG pass linker-specific FLAG directly to the linker 2442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 2443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsAll other options (arguments beginning with \`-') are ignored. 2445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEvery other argument is treated as a filename. Files ending in \`.la' are 2447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstreated as uninstalled libtool libraries, other files are standard or library 2448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsobject files. 2449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 2451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsonly library objects (\`.lo' files) may be specified, and \`-rpath' is 2452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrequired, except when creating a convenience library. 2453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 2455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsusing \`ar' and \`ranlib', or on Windows using \`lib'. 2456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 2458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsis created, otherwise an executable program is created." 2459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats uninstall) 2462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \ 2463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 2464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRemove libraries from an installation directory. 2466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsRM is the name of the program to use to delete files associated with each FILE 2468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 2469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsto RM. 2470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsIf FILE is a libtool library, all the files associated with it are deleted. 2472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsOtherwise, only FILE itself is deleted using RM." 2473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "invalid operation mode \`$opt_mode'" 2477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 2481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "Try \`$progname --help' for more information about other modes." 2482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 2483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Now that we've collected a possible --mode arg, show help if necessary 2485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif $opt_help; then 2486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_help" = :; then 2487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mode_help 2488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 2490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_help noexit 2491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for opt_mode in compile link execute install finish uninstall clean; do 2492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mode_help 2493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } | sed -n '1p; 2,$s/^Usage:/ or: /p' 2495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 2496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_help noexit 2497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for opt_mode in compile link execute install finish uninstall clean; do 2498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 2499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mode_help 2500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } | 2502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sed '1d 2503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^When reporting/,/^Report/{ 2504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats H 2505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats d 2506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 2507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $x 2508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /information about other modes/d 2509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /more detailed .*MODE/d 2510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 2511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $? 2513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi 2514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_execute arg... 2517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_execute () 2518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 2519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 2520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The first argument is the command name. 2521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmd="$nonopt" 2522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$cmd" && \ 2523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify a COMMAND" 2524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Handle -dlopen flags immediately. 2526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file in $opt_dlopen; do 2527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -f "$file" \ 2528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats || func_fatal_help "\`$file' is not a file" 2529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir= 2531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 2532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 2533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$file" 2534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=$func_resolve_sysroot_result 2535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that this really is a libtool archive. 2537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lalib_unsafe_p "$file" \ 2538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats || func_fatal_help "\`$lib' is not a valid libtool archive" 2539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Read the libtool library. 2541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlname= 2542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats library_names= 2543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$file" 2544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Skip this library if it cannot be dlopened. 2546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$dlname"; then 2547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Warn if it was a shared library. 2548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$library_names" && \ 2549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`$file' was not linked with \`-export-dynamic'" 2550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$file" "" "." 2554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$func_dirname_result" 2555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$dir/$objdir/$dlname"; then 2557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dir "/$objdir" 2558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -f "$dir/$dlname"; then 2560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 2561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) 2566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just add the directory containing the .lo file. 2567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$file" "" "." 2568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$func_dirname_result" 2569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 2573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Get the absolute pathname. 2578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir=`cd "$dir" && pwd` 2579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$absdir" && dir="$absdir" 2580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now add the directory to shlibpath_var. 2582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval "test -z \"\$$shlibpath_var\""; then 2583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$shlibpath_var=\"\$dir\"" 2584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 2586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This variable tells wrapper scripts just to set shlibpath_var 2590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # rather than running their programs. 2591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libtool_execute_magic="$magic" 2592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check if any of the arguments is a wrapper script. 2594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats args= 2595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file 2596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 2597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 2598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -* | *.la | *.lo ) ;; 2599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do a test to see if this is really a libtool program. 2601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_ltwrapper_script_p "$file"; then 2602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$file" 2603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Transform arg to wrapped name. 2604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file="$progdir/$program" 2605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif func_ltwrapper_executable_p "$file"; then 2606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_scriptname "$file" 2607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$func_ltwrapper_scriptname_result" 2608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Transform arg to wrapped name. 2609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file="$progdir/$program" 2610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Quote arguments (to preserve shell metacharacters). 2614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append_quoted args "$file" 2615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$opt_dry_run" = Xfalse; then 2618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$shlibpath_var"; then 2619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Export the shlibpath_var. 2620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "export $shlibpath_var" 2621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Restore saved environment variables 2624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 2625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 2626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "if test \"\${save_$lt_var+set}\" = set; then 2627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $lt_var=\$save_$lt_var; export $lt_var 2628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $lt_unset $lt_var 2630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi" 2631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now prepare to actually exec the command. 2634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exec_cmd="\$cmd$args" 2635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Display what would be done. 2637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$shlibpath_var"; then 2638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 2639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "export $shlibpath_var" 2640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$cmd$args" 2642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 2643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 2645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 2647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_finish arg... 2650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_finish () 2651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 2652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 2653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libs= 2654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdirs= 2655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats admincmds= 2656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for opt in "$nonopt" ${1+"$@"} 2658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 2659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -d "$opt"; then 2660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libdirs " $opt" 2661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -f "$opt"; then 2663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_lalib_unsafe_p "$opt"; then 2664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libs " $opt" 2665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`$opt' is not a valid libtool archive" 2667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "invalid argument \`$opt'" 2671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$libs"; then 2675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$lt_sysroot"; then 2676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 2677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 2678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sysroot_cmd= 2680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove sysroot references 2683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_dry_run; then 2684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $libs; do 2685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 2686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmpdir=`func_mktempdir` 2689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $libs; do 2690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 2691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats > $tmpdir/tmp-la 2692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats mv -f $tmpdir/tmp-la $lib 2693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ${RM}r "$tmpdir" 2695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $libdirs; do 2700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$finish_cmds"; then 2701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each command in the finish commands. 2702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 2703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats'"$cmd"'"' 2704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$finish_eval"; then 2706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do the single finish_eval. 2707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmds=\"$finish_eval\" 2708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval "$cmds" || func_append admincmds " 2709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $cmds" 2710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Exit here if they wanted silent mode. 2715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_silent && exit $EXIT_SUCCESS 2716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 2718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "----------------------------------------------------------------------" 2719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "Libraries have been installed in:" 2720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $libdirs; do 2721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO " $libdir" 2722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 2724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "If you ever happen to want to link against installed libraries" 2725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "in a given directory, LIBDIR, you must either use libtool, and" 2726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 2727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "flag during linking and do at least one of the following:" 2728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$shlibpath_var"; then 2729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 2730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo " during execution" 2731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$runpath_var"; then 2733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo " - add LIBDIR to the \`$runpath_var' environment variable" 2734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo " during linking" 2735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_flag_spec"; then 2737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir=LIBDIR 2738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval flag=\"$hardcode_libdir_flag_spec\" 2739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO " - use the \`$flag' linker flag" 2741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$admincmds"; then 2743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO " - have your system administrator run these commands:$admincmds" 2744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f /etc/ld.so.conf; then 2746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 2747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 2749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "See any operating system documentation about shared libraries for" 2751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 2752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats solaris2.[6789]|solaris2.1[0-9]) 2753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 2754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "pages." 2755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "more information, such as the ld(1) and ld.so(8) manual pages." 2758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "----------------------------------------------------------------------" 2761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 2763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 2764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 2766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_install arg... 2769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_install () 2770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 2771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 2772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # There may be an optional sh(1) argument at the beginning of 2773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # install_prog (especially on Windows NT). 2774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 2775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Allow the use of GNU shtool's install command. 2776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $nonopt in *shtool*) :;; *) false;; esac; then 2777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Aesthetically quote it. 2778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$nonopt" 2779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats install_prog="$func_quote_for_eval_result " 2780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg=$1 2781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 2782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats install_prog= 2784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg=$nonopt 2785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The real first argument should be the name of the installation program. 2788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Aesthetically quote it. 2789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 2790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append install_prog "$func_quote_for_eval_result" 2791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats install_shared_prog=$install_prog 2792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $install_prog " in 2793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\\\ /]cp\ *) install_cp=: ;; 2794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) install_cp=false ;; 2795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need to accept at least all the BSD install flags. 2798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dest= 2799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats files= 2800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats opts= 2801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 2802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats install_type= 2803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats isdir=no 2804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats stripme= 2805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats no_mode=: 2806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg 2807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 2808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg2= 2809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dest"; then 2810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append files " $dest" 2811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dest=$arg 2812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 2816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -d) isdir=yes ;; 2817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -f) 2818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $install_cp; then :; else 2819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=$arg 2820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -g | -m | -o) 2823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=$arg 2824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -s) 2826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats stripme=" -s" 2827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -*) 2830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the previous option needed an argument, then skip it. 2833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$prev"; then 2834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x$prev" = x-m && test -n "$install_override_mode"; then 2835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg2=$install_override_mode 2836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats no_mode=false 2837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 2839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dest=$arg 2841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 2842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Aesthetically quote the argument. 2847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 2848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append install_prog " $func_quote_for_eval_result" 2849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$arg2"; then 2850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg2" 2851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append install_shared_prog " $func_quote_for_eval_result" 2853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$install_prog" && \ 2856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify an install program" 2857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$prev" && \ 2859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "the \`$prev' option requires an argument" 2860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$install_override_mode" && $no_mode; then 2862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $install_cp; then :; else 2863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$install_override_mode" 2864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append install_shared_prog " -m $func_quote_for_eval_result" 2865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$files"; then 2869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$dest"; then 2870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "no file or destination specified" 2871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify a destination" 2873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Strip any trailing slash from the destination. 2877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '/' "$dest" 2878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dest=$func_stripname_result 2879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that the destination is a directory. 2881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -d "$dest" && isdir=yes 2882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$isdir" = yes; then 2883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destdir="$dest" 2884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destname= 2885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_and_basename "$dest" "" "." 2887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destdir="$func_dirname_result" 2888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destname="$func_basename_result" 2889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Not a directory, so check to see that there is only one file specified. 2891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $files; shift 2892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$#" -gt 1 && \ 2893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "\`$dest' is not a directory" 2894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $destdir in 2896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) ;; 2897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file in $files; do 2899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 2900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) ;; 2901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 2902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "\`$destdir' must be an absolute directory name" 2903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 2906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This variable tells wrapper scripts just to set variables rather 2910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # than running their programs. 2911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libtool_install_magic="$magic" 2912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats staticlibs= 2914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats future_libdirs= 2915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats current_libdirs= 2916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file in $files; do 2917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each installation. 2919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 2920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$libext) 2921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do the static libraries later. 2922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append staticlibs " $file" 2923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 2924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 2926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$file" 2927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=$func_resolve_sysroot_result 2928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that this really is a libtool archive. 2930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lalib_unsafe_p "$file" \ 2931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats || func_fatal_help "\`$file' is not a valid libtool archive" 2932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats library_names= 2934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_library= 2935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 2936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$file" 2937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add the libdir to current_libdirs if it is the destination. 2939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$destdir" = "X$libdir"; then 2940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$current_libdirs " in 2941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 2942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append current_libdirs " $libdir" ;; 2943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Note the libdir as a future libdir. 2946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$future_libdirs " in 2947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 2948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append future_libdirs " $libdir" ;; 2949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 2950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$file" "/" "" 2953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$func_dirname_result" 2954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dir "$objdir" 2955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$relink_command"; then 2957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Determine the prefix the user has applied to our future dir. 2958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 2959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't allow the user to place us outside of our expected 2961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # location b/c this prevents finding dependent libraries that 2962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # are installed to the same prefix. 2963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # At present, this check doesn't affect windows .dll's that 2964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # are installed into $libdir/../bin (currently, that works fine) 2965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # but it's something to keep an eye on. 2966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$inst_prefix_dir" = "$destdir" && \ 2967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 2968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$inst_prefix_dir"; then 2970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Stick the inst_prefix_dir data into the link command. 2971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 2972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 2973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 2974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "relinking \`$file'" 2977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$relink_command" \ 2978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 2979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 2980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See the names of the shared library. 2982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $library_names; shift 2983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$1"; then 2984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats realname="$1" 2985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 2986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats srcname="$realname" 2988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$relink_command" && srcname="$realname"T 2989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 2990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Install the shared library and build the symlinks. 2991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 2992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 'exit $?' 2993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tstripme="$stripme" 2994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host_os in 2995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cygwin* | mingw* | pw32* | cegcc*) 2996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $realname in 2997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.dll.a) 2998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tstripme="" 2999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$tstripme" && test -n "$striplib"; then 3004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$striplib $destdir/$realname" 'exit $?' 3005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$#" -gt 0; then 3008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete the old symlinks, and create new ones. 3009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Try `ln -sf' first, because the `ln' binary might depend on 3010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the symlink we replace! Solaris /bin/ln does not understand -f, 3011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # so we also need to try rm && ln -s. 3012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for linkname 3013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 3014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$linkname" != "$realname" \ 3015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 3016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each command in the postinstall commands. 3020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib="$destdir/$realname" 3021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$postinstall_cmds" 'exit $?' 3022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Install the pseudo-library for information purposes. 3025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$file" 3026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 3027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats instname="$dir/$name"i 3028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 3029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Maybe install the static library, too. 3031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$old_library" && func_append staticlibs " $dir/$old_library" 3032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) 3035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Install (i.e. copy) a libtool object. 3036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Figure out destination file name, if it wasn't already specified. 3038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$destname"; then 3039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile="$destdir/$destname" 3040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$file" 3042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile="$func_basename_result" 3043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile="$destdir/$destfile" 3044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Deduce the name of the destination old-style object file. 3047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $destfile in 3048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) 3049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lo2o "$destfile" 3050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats staticdest=$func_lo2o_result 3051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$objext) 3053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats staticdest="$destfile" 3054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile= 3055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "cannot copy a libtool object to \`$destfile'" 3058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Install the libtool object if requested. 3062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$destfile" && \ 3063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$install_prog $file $destfile" 'exit $?' 3064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Install the old object if enabled. 3066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = yes; then 3067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Deduce the name of the old-style object file. 3068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lo2o "$file" 3069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats staticobj=$func_lo2o_result 3070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 3071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 3073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Figure out destination file name, if it wasn't already specified. 3077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$destname"; then 3078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile="$destdir/$destname" 3079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$file" 3081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile="$func_basename_result" 3082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile="$destdir/$destfile" 3083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the file is missing, and there is a .exe on the end, strip it 3086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # because it is most likely a libtool script we actually want to 3087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # install 3088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats stripped_ext="" 3089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 3090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.exe) 3091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -f "$file"; then 3092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$file" 3093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=$func_stripname_result 3094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats stripped_ext=".exe" 3095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do a test to see if this is really a libtool program. 3100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw*) 3102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_ltwrapper_executable_p "$file"; then 3103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_scriptname "$file" 3104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrapper=$func_ltwrapper_scriptname_result 3105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$file" 3107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrapper=$func_stripname_result 3108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrapper=$file 3112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_ltwrapper_script_p "$wrapper"; then 3115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats notinst_deplibs= 3116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 3117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$wrapper" 3119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check the variables that should have been set. 3121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$generated_by_libtool_version" && \ 3122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "invalid libtool wrapper script \`$wrapper'" 3123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize=yes 3125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $notinst_deplibs; do 3126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that each library is installed. 3127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir= 3128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$lib"; then 3129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$lib" 3130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 3132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$libdir" && test ! -f "$libfile"; then 3133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`$lib' has not been installed in \`$libdir'" 3134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize=no 3135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 3139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$wrapper" 3140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats outputname= 3142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$fast_install" = no && test -n "$relink_command"; then 3143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$finalize" = yes; then 3145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmpdir=`func_mktempdir` 3146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$file$stripped_ext" 3147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file="$func_basename_result" 3148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats outputname="$tmpdir/$file" 3149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Replace the output file specification. 3150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 3151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_silent || { 3153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_expand "$relink_command" 3154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "func_echo $func_quote_for_expand_result" 3155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval "$relink_command"; then : 3157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "error: relink \`$file' with the above command before installing it" 3159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || ${RM}r "$tmpdir" 3160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 3161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file="$outputname" 3163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "cannot relink \`$file'" 3165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Install the binary that we compiled earlier. 3169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 3170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # remove .exe since cygwin /usr/bin/install will append another 3174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # one anyway 3175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $install_prog,$host in 3176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats */usr/bin/install*,*cygwin*) 3177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file:$destfile in 3178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.exe:*.exe) 3179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # this is ok 3180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.exe:*) 3182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile=$destfile.exe 3183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *:*.exe) 3185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$destfile" 3186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destfile=$func_stripname_result 3187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 3192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || if test -n "$outputname"; then 3193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ${RM}r "$tmpdir" 3194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file in $staticlibs; do 3200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$file" 3201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 3202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Set up the ranlib parameters. 3204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlib="$destdir/$name" 3205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 3206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tool_oldlib=$func_to_tool_file_result 3207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 3209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$stripme" && test -n "$old_striplib"; then 3211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 3212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each command in the postinstall commands. 3215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$old_postinstall_cmds" 'exit $?' 3216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$future_libdirs" && \ 3219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "remember to run \`$progname --finish$future_libdirs'" 3220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$current_libdirs"; then 3222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Maybe just do a dry run. 3223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run && current_libdirs=" -n$current_libdirs" 3224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 3225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 3227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest "$opt_mode" = install && func_mode_install ${1+"$@"} 3231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_generate_dlsyms outputname originator pic_p 3234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Extract symbols from dlprefiles and create ${outputname}S.o with 3235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# a dlpreopen symbol table. 3236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_generate_dlsyms () 3237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_outputname="$1" 3240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_originator="$2" 3241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_pic_p="${3-no}" 3242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 3243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_dlsyms= 3244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 3246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$NM" && test -n "$global_symbol_pipe"; then 3247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_dlsyms="${my_outputname}S.c" 3248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "not configured to extract global symbols from dlpreopened files" 3250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$my_dlsyms"; then 3254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $my_dlsyms in 3255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "") ;; 3256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.c) 3257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Discover the nlist of each of the dlfiles. 3258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nlist="$output_objdir/${my_outputname}.nm" 3259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 3261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Parse the name list into a source file. 3263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating $output_objdir/$my_dlsyms" 3264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 3266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 3267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 3268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef __cplusplus 3270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextern \"C\" { 3271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 3272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 3274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 3275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 3276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 3278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 3279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* DATA imports from DLLs on WIN32 con't be const, because runtime 3280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relocations are performed -- see ld's documentation on pseudo-relocs. */ 3281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_DLSYM_CONST 3282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__osf__) 3283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* This system does not cope well with relocations in const data. */ 3284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_DLSYM_CONST 3285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else 3286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_DLSYM_CONST const 3287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 3288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* External symbol declarations for the compiler. */\ 3290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 3291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$dlself" = yes; then 3293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "generating symbol list for \`$output'" 3294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 3296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add our own program objects to the symbol list. 3298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 3299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for progfile in $progfiles; do 3300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$progfile" func_convert_file_msys_to_w32 3301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 3302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 3303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$exclude_expsyms"; then 3306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 3308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$MV "$nlist"T "$nlist"' 3309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols_regex"; then 3313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 3315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$MV "$nlist"T "$nlist"' 3316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prepare the list of exported symbols 3320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$export_symbols"; then 3321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols="$output_objdir/$outputname.exp" 3322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM $export_symbols 3324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 3325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *cegcc* ) 3327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 3329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 3335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 3336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$MV "$nlist"T "$nlist"' 3337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *cegcc* ) 3339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 3340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 3341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dlprefile in $dlprefiles; do 3348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "extracting global C symbols from \`$dlprefile'" 3349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$dlprefile" 3350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 3351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *cegcc* ) 3353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # if an import library, we need to obtain dlname 3354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_win32_import_lib_p "$dlprefile"; then 3355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_tr_sh "$dlprefile" 3356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "curr_lafile=\$libfile_$func_tr_sh_result" 3357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefile_dlbasename="" 3358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 3359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Use subshell, to avoid clobbering current variable values 3360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 3361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlprefile_dlname" ; then 3362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$dlprefile_dlname" 3363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefile_dlbasename="$func_basename_result" 3364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # no lafile. user explicitly requested -dlpreopen <import library>. 3366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $sharedlib_from_linklib_cmd "$dlprefile" 3367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefile_dlbasename=$sharedlib_from_linklib_result 3368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlprefile_dlbasename" ; then 3372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 3373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "Could not compute DLL name from $name" 3375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$ECHO ": $name " >> "$nlist"' 3376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 3379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 3380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else # not an import lib 3382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$ECHO ": $name " >> "$nlist"' 3384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval '$ECHO ": $name " >> "$nlist"' 3392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 3393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 3394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure we have at least an empty file. 3401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -f "$nlist" || : > "$nlist" 3402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$exclude_expsyms"; then 3404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 3405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MV "$nlist"T "$nlist" 3406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Try sorting and uniquifying the output. 3409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $GREP -v "^: " < "$nlist" | 3410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if sort -k 3 </dev/null >/dev/null 2>&1; then 3411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sort -k 3 3412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sort +2 3414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi | 3415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats uniq > "$nlist"S; then 3416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 3417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $GREP -v "^: " < "$nlist" > "$nlist"S 3419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$nlist"S; then 3422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 3423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 3425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo >> "$output_objdir/$my_dlsyms" "\ 3428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* The mapping between symbol names and symbols. */ 3430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstypedef struct { 3431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *name; 3432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats void *address; 3433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} lt_dlsymlist; 3434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsextern LT_DLSYM_CONST lt_dlsymlist 3435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_${my_prefix}_LTX_preloaded_symbols[]; 3436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsLT_DLSYM_CONST lt_dlsymlist 3437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_${my_prefix}_LTX_preloaded_symbols[] = 3438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{\ 3439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { \"$my_originator\", (void *) 0 }," 3440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $need_lib_prefix in 3442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats no) 3443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 3444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 3447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo >> "$output_objdir/$my_dlsyms" "\ 3450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats {0, (void *) 0} 3451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats}; 3452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* This works around a problem in FreeBSD linker */ 3454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef FREEBSD_WORKAROUND 3455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const void *lt_preloaded_setup() { 3456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return lt_${my_prefix}_LTX_preloaded_symbols; 3457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 3459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef __cplusplus 3461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif\ 3463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 3464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } # !$opt_dry_run 3465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_flag_for_symtable= 3467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$compile_command " in 3468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" -static "*) ;; 3469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # compiling the symbol table file with pic_flag works around 3472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # a FreeBSD bug that causes programs to crash when -lm is 3473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # linked before any other PIC object. But we must not use 3474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # pic_flag when linking with -static. The problem exists in 3475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 3476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 3477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 3478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-hpux*) 3479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_flag_for_symtable=" $pic_flag" ;; 3480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$my_pic_p" != Xno; then 3482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_flag_for_symtable=" $pic_flag" 3483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats symtab_cflags= 3489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg in $LTCFLAGS; do 3490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 3491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -pie | -fpie | -fPIE) ;; 3492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append symtab_cflags " $arg" ;; 3493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now compile the dynamic symbol file. 3497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 3498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Clean up the generated files. 3500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 3501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Transform the symbol file into the correct name. 3503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats symfileobj="$output_objdir/${my_outputname}S.$objext" 3504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *cegcc* ) 3506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$output_objdir/$my_outputname.def"; then 3507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 3509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 3517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "unknown suffix for \`$my_dlsyms'" 3522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We keep going just in case the user didn't refer to 3526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 3527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # really was required. 3528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Nullify the symbol file. 3530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 3531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 3532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_win32_libid arg 3536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# return the library type of file 'arg' 3537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Need a lot of goo to handle *both* DLLs and import libs 3539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Has to be a shell function in order to 'eat' the argument 3540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# that is supplied when $file_magic_command is called. 3541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Despite the name, also deal with 64 bit binaries. 3542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_win32_libid () 3543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats win32_libid_type="unknown" 3546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats win32_fileres=`file -L $1 2>/dev/null` 3547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $win32_fileres in 3548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *ar\ archive\ import\ library*) # definitely import 3549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats win32_libid_type="x86 archive import" 3550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *ar\ archive*) # could be an import, or static 3552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 3553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 3554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 3555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$1" func_convert_file_msys_to_w32 3556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 3557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n -e ' 3558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 1,100{ 3559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats / I /{ 3560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s,.*,import, 3561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p 3562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats q 3563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats }'` 3565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $win32_nmres in 3566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats import*) win32_libid_type="x86 archive import";; 3567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) win32_libid_type="x86 archive static";; 3568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *DLL*) 3572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats win32_libid_type="x86 DLL" 3573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *executable*) # but shell scripts are "executable" too... 3575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $win32_fileres in 3576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *MS\ Windows\ PE\ Intel*) 3577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats win32_libid_type="x86 DLL" 3578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$win32_libid_type" 3583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_dll_for_implib ARG 3586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Platform-specific function to extract the 3588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# name of the DLL associated with the specified 3589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# import library ARG. 3590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Invoked by eval'ing the libtool variable 3591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $sharedlib_from_linklib_cmd 3592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in the variable 3593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $sharedlib_from_linklib_result 3594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_dll_for_implib () 3595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 3598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 3601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The is the core of a fallback implementation of a 3603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# platform-specific function to extract the name of the 3604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# DLL associated with the specified import library LIBNAME. 3605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# SECTION_NAME is either .idata$6 or .idata$7, depending 3607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# on the platform and compiler that created the implib. 3608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Echos the name of the DLL associated with the 3610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# specified import library. 3611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_dll_for_implib_fallback_core () 3612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 3615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 3616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED '/^Contents of section '"$match_literal"':/{ 3617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Place marker at beginning of archive member dllname section 3618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/.*/====MARK====/ 3619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p 3620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats d 3621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 3622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # These lines can sometimes be longer than 43 characters, but 3623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # are always uninteresting 3624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /:[ ]*file format pe[i]\{,1\}-/d 3625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^In archive [^:]*:/d 3626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Ensure marker is printed 3627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^====MARK====/p 3628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove all lines with less than 43 characters 3629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^.\{43\}/!d 3630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # From remaining lines, remove first 43 characters 3631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^.\{43\}//' | 3632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n ' 3633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Join marker and all lines until next marker into a single line 3634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /^====MARK====/ b para 3635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats H 3636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ b para 3637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats b 3638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats :para 3639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats x 3640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/\n//g 3641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove the marker 3642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/^====MARK====// 3643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove trailing dots and whitespace 3644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats s/[\. \t]*$// 3645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Print 3646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /./p' | 3647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # we now have a list, one entry per line, of the stringified 3648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # contents of the appropriate section of all members of the 3649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # archive which possess that section. Heuristic: eliminate 3650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # all those which have a first or second character that is 3651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # a '.' (that is, objdump's representation of an unprintable 3652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # character.) This should work for all archives with less than 3653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 0x302f exports -- but will fail for DLLs whose name actually 3654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # begins with a literal '.' or a single character followed by 3655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # a '.'. 3656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 3657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Of those that remain, print the first one. 3658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e '/^\./d;/^.\./d;q' 3659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_gnu_implib_p ARG 3662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This predicate returns with zero status (TRUE) if 3663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is a GNU/binutils-style import library. Returns 3664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# with nonzero status (FALSE) otherwise. 3665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_gnu_implib_p () 3666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$1" func_convert_file_msys_to_w32 3669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 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)$'` 3670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$func_cygming_gnu_implib_tmp" 3671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_ms_implib_p ARG 3674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This predicate returns with zero status (TRUE) if 3675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is an MS-style import library. Returns 3676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# with nonzero status (FALSE) otherwise. 3677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_ms_implib_p () 3678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$1" func_convert_file_msys_to_w32 3681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 3682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$func_cygming_ms_implib_tmp" 3683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_cygming_dll_for_implib_fallback ARG 3686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Platform-specific function to extract the 3687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# name of the DLL associated with the specified 3688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# import library ARG. 3689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This fallback implementation is for use when $DLLTOOL 3691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# does not support the --identify-strict option. 3692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Invoked by eval'ing the libtool variable 3693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $sharedlib_from_linklib_cmd 3694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Result is available in the variable 3695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $sharedlib_from_linklib_result 3696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_cygming_dll_for_implib_fallback () 3697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_cygming_gnu_implib_p "$1" ; then 3700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # binutils import library 3701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 3702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif func_cygming_ms_implib_p "$1" ; then 3703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # ms-generated import library 3704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 3705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # unknown 3707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sharedlib_from_linklib_result="" 3708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_extract_an_archive dir oldlib 3713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_extract_an_archive () 3714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats f_ex_an_ar_dir="$1"; shift 3717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats f_ex_an_ar_oldlib="$1" 3718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$lock_old_archive_extraction" = yes; then 3719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lockfile=$f_ex_an_ar_oldlib.lock 3720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 3721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_echo "Waiting for $lockfile to be removed" 3722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sleep 2 3723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 3726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 'stat=$?; rm -f "$lockfile"; exit $stat' 3727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$lock_old_archive_extraction" = yes; then 3728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || rm -f "$lockfile" 3729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 3731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 3732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 3734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_extract_archives gentop oldlib ... 3739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_extract_archives () 3740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 3742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_gentop="$1"; shift 3743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_oldlibs=${1+"$@"} 3744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_oldobjs="" 3745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xlib="" 3746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xabs="" 3747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xdir="" 3748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for my_xlib in $my_oldlibs; do 3750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract the objects. 3751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $my_xlib in 3752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 3753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) my_xabs=`pwd`"/$my_xlib" ;; 3754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$my_xlib" 3756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xlib="$func_basename_result" 3757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xlib_u=$my_xlib 3758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while :; do 3759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $extracted_archives " in 3760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $my_xlib_u "*) 3761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $extracted_serial + 1 3762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats extracted_serial=$func_arith_result 3763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xlib_u=lt$extracted_serial-$my_xlib ;; 3764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) break ;; 3765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats extracted_archives="$extracted_archives $my_xlib_u" 3768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_xdir="$my_gentop/$my_xlib_u" 3769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mkdir_p "$my_xdir" 3771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-darwin*) 3774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "Extracting $my_xabs" 3775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do not bother doing anything if just a dry run 3776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 3777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_orig_dir=`pwd` 3778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cd $my_xdir || exit $? 3779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_archive=$my_xabs 3780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_curdir=`pwd` 3781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_base_archive=`basename "$darwin_archive"` 3782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 3783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$darwin_arches"; then 3784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 3785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_arch= 3786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 3787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for darwin_arch in $darwin_arches ; do 3788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 3790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 3791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_an_archive "`pwd`" "${darwin_base_archive}" 3792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cd "$darwin_curdir" 3793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 3794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # $darwin_arches 3795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ## Okay now we've a bunch of thin objects, gotta fatten them up :) 3796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 3797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_file= 3798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_files= 3799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for darwin_file in $darwin_filelist; do 3800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 3801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $LIPO -create -output "$darwin_file" $darwin_files 3802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # $darwin_filelist 3803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM -rf unfat-$$ 3804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cd "$darwin_orig_dir" 3805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 3806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cd $darwin_orig_dir 3807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_an_archive "$my_xdir" "$my_xabs" 3808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $darwin_arches 3809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } # !$opt_dry_run 3810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_an_archive "$my_xdir" "$my_xabs" 3813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 3816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_archives_result="$my_oldobjs" 3819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_emit_wrapper [arg=no] 3823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Emit a libtool wrapper script on stdout. 3825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Don't directly open a file because we may want to 3826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# incorporate the script contents within a cygwin/mingw 3827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# wrapper executable. Must ONLY be called from within 3828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_link because it depends on a number of variables 3829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# set therein. 3830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 3832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# variable will take. If 'yes', then the emitted script 3833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# will assume that the directory in which it is stored is 3834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the $objdir directory. This is a cygwin/mingw-specific 3835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# behavior. 3836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_emit_wrapper () 3837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_emit_wrapper_arg1=${1-no} 3839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 3841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#! $SHELL 3842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $output - temporary wrapper script for $objdir/$outputname 3844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 3845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The $output program cannot be directly executed until all the libtool 3847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# libraries that it depends on are installed. 3848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This wrapper script should never be moved out of the build directory. 3850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If it is, it will not operate correctly. 3851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Sed substitution that helps us do robust quoting. It backslashifies 3853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# metacharacters that are still active within double-quoted strings. 3854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatssed_quote_subst='$sed_quote_subst' 3855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Be Bourne compatible 3857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 3858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats emulate sh 3859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats NULLCMD=: 3860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 3861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # is contrary to our usage. Disable this feature. 3862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats alias -g '\${1+\"\$@\"}'='\"\$@\"' 3863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats setopt NO_GLOB_SUBST 3864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatselse 3865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 3866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi 3867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsBIN_SH=xpg4; export BIN_SH # for Tru64 3868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsDUALCASE=1; export DUALCASE # for MKS sh 3869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The HP-UX ksh and POSIX shell print the target directory to stdout 3871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# if CDPATH is set. 3872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 3873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrelink_command=\"$relink_command\" 3875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# This environment variable determines our operation mode. 3877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test \"\$libtool_install_magic\" = \"$magic\"; then 3878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # install mode needs the following variables: 3879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats generated_by_libtool_version='$macro_version' 3880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats notinst_deplibs='$notinst_deplibs' 3881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatselse 3882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # When we are sourced in execute mode, \$file and \$ECHO are already set. 3883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test \"\$libtool_execute_magic\" != \"$magic\"; then 3884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=\"\$0\"" 3885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 3887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 3888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# A function that is used when there is no print builtin or printf. 3890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_fallback_echo () 3891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval 'cat <<_LTECHO_EOF 3893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats\$1 3894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats_LTECHO_EOF' 3895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ECHO=\"$qECHO\" 3897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Very basic option parsing. These options are (a) specific to 3900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the libtool wrapper, (b) are identical between the wrapper 3901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# /script/ and the wrapper /executable/ which is used only on 3902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# windows platforms, and (c) all begin with the string "--lt-" 3903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (application programs are unlikely to have options which match 3904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# this pattern). 3905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# There are only two supported options: --lt-debug and 3907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# --lt-dump-script. There is, deliberately, no --lt-help. 3908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 3909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The first argument to this parsing function should be the 3910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# script's $0 value, followed by "$@". 3911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_option_debug= 3912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_parse_lt_options () 3913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_script_arg0=\$0 3915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 3916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lt_opt 3917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 3918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case \"\$lt_opt\" in 3919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --lt-debug) lt_option_debug=1 ;; 3920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --lt-dump-script) 3921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 3922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 3923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 3924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat \"\$lt_dump_D/\$lt_dump_F\" 3925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit 0 3926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --lt-*) 3928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 3929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit 1 3930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Print the debug banner immediately: 3935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n \"\$lt_option_debug\"; then 3936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 3937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Used when --lt-debug. Prints its arguments to stdout 3941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# (redirection is the responsibility of the caller) 3942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_lt_dump_args () 3943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_dump_args_N=1; 3945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lt_arg 3946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 3947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 3948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 3949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 3950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Core function for launching the target application 3953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_exec_program_core () 3954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 3956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 3957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Backslashes separate directories on plain windows 3958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-mingw | *-*-os2* | *-cegcc*) 3959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 3960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n \"\$lt_option_debug\"; then 3961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 3962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lt_dump_args \${1+\"\$@\"} 1>&2 3963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 3965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 3966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 3969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 3970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n \"\$lt_option_debug\"; then 3971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 3972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lt_dump_args \${1+\"\$@\"} 1>&2 3973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 3974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exec \"\$progdir/\$program\" \${1+\"\$@\"} 3975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 3976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 3977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 3979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 3980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit 1 3981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 3982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 3983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# A function to encapsulate launching the target application 3984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Strips options in the --lt-* namespace from \$@ and 3985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# launches target application with the remaining arguments. 3986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_exec_program () 3987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 3988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case \" \$* \" in 3989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *\\ --lt-*) 3990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lt_wr_arg 3991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 3992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case \$lt_wr_arg in 3993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats --lt-*) ;; 3994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 3995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 3997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done ;; 3998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 3999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_exec_program_core \${1+\"\$@\"} 4000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Parse options 4003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_parse_lt_options \"\$0\" \${1+\"\$@\"} 4004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Find the directory that this script lives in. 4006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 4007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test \"x\$thisdir\" = \"x\$file\" && thisdir=. 4008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Follow symbolic links until we get to the real thisdir. 4010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 4011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test -n \"\$file\"; do 4012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 4013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If there was a directory component, then change thisdir. 4015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test \"x\$destdir\" != \"x\$file\"; then 4016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case \"\$destdir\" in 4017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 4018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) thisdir=\"\$thisdir/\$destdir\" ;; 4019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 4020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 4023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 4024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 4025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Usually 'no', except on cygwin/mingw when embedded into 4027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the cwrapper. 4028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 4029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 4030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # special case for '.' 4031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test \"\$thisdir\" = \".\"; then 4032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats thisdir=\`pwd\` 4033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # remove .libs from thisdir 4035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case \"\$thisdir\" in 4036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 4037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $objdir ) thisdir=. ;; 4038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 4039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Try to get the absolute directory name. 4042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir=\`cd \"\$thisdir\" && pwd\` 4043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n \"\$absdir\" && thisdir=\"\$absdir\" 4044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 4045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$fast_install" = yes; then 4047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats program=lt-'$outputname'$exeext 4049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progdir=\"\$thisdir/$objdir\" 4050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -f \"\$progdir/\$program\" || 4052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 4053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test \"X\$file\" != \"X\$progdir/\$program\"; }; then 4054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=\"\$\$-\$program\" 4056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -d \"\$progdir\"; then 4058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MKDIR \"\$progdir\" 4059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM \"\$progdir/\$file\" 4061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi" 4062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # relink executable if necessary 4066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n \"\$relink_command\"; then 4067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if relink_command_output=\`eval \$relink_command 2>&1\`; then : 4068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO \"\$relink_command_output\" >&2 4070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM \"\$progdir/\$file\" 4071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit 1 4072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 4076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { $RM \"\$progdir/\$program\"; 4077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 4078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM \"\$progdir/\$file\" 4079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi" 4080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats program='$outputname' 4083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats progdir=\"\$thisdir/$objdir\" 4084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 4085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f \"\$progdir/\$program\"; then" 4090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # fixup the dll searchpath if we need to. 4092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 4093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Fix the DLL searchpath if we need to. Do this before prepending 4094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # to shlibpath, because on Windows, both are PATH and uninstalled 4095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # libraries must come first. 4096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dllsearchpath"; then 4097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add the dll search path components to the executable PATH 4099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats PATH=$dllsearchpath:\$PATH 4100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 4101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Export our shlibpath_var if we have one. 4104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add our own library path to $shlibpath_var 4107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 4108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Some systems cannot cope with colon-terminated $shlibpath_var 4110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The second colon is a workaround for a bug in BeOS R4 sed 4111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 4112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export $shlibpath_var 4114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 4115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "\ 4118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test \"\$libtool_execute_magic\" != \"$magic\"; then 4119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Run the actual program with our arguments. 4120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_exec_program \${1+\"\$@\"} 4121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The program doesn't exist. 4124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 4125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 4126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 4127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit 1 4128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi\ 4130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats" 4131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_emit_cwrapperexe_src 4135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# emit the source code for a wrapper executable on stdout 4136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Must ONLY be called from within func_mode_link because 4137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# it depends on a number of variable set therein. 4138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_emit_cwrapperexe_src () 4139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 4143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 4144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats The $output program cannot be directly executed until all the libtool 4146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libraries that it depends on are installed. 4147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats This wrapper executable should never be moved out of the build directory. 4149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats If it is, it will not operate correctly. 4150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*/ 4151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef _MSC_VER 4154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define _CRT_SECURE_NO_DEPRECATE 1 4155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <stdio.h> 4157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <stdlib.h> 4158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef _MSC_VER 4159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <direct.h> 4160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <process.h> 4161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <io.h> 4162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else 4163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <unistd.h> 4164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <stdint.h> 4165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifdef __CYGWIN__ 4166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# include <io.h> 4167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif 4168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <malloc.h> 4170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <stdarg.h> 4171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <assert.h> 4172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <string.h> 4173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <ctype.h> 4174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <errno.h> 4175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <fcntl.h> 4176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#include <sys/stat.h> 4177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* declarations of non-ANSI functions */ 4179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(__MINGW32__) 4180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifdef __STRICT_ANSI__ 4181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint _putenv (const char *); 4182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif 4183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__CYGWIN__) 4184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifdef __STRICT_ANSI__ 4185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *realpath (const char *, char *); 4186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint putenv (char *); 4187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint setenv (const char *, const char *, int); 4188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif 4189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* #elif defined (other platforms) ... */ 4190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* portability defines, excluding path handling macros */ 4193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(_MSC_VER) 4194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define setmode _setmode 4195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define stat _stat 4196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define chmod _chmod 4197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define getcwd _getcwd 4198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define putenv _putenv 4199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define S_IXUSR _S_IEXEC 4200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifndef _INTPTR_T_DEFINED 4201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define _INTPTR_T_DEFINED 4202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define intptr_t int 4203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif 4204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__MINGW32__) 4205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define setmode _setmode 4206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define stat _stat 4207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define chmod _chmod 4208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define getcwd _getcwd 4209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define putenv _putenv 4210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(__CYGWIN__) 4211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define HAVE_SETENV 4212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define FOPEN_WB "wb" 4213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* #elif defined (other platforms) ... */ 4214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(PATH_MAX) 4217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_PATHMAX PATH_MAX 4218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#elif defined(MAXPATHLEN) 4219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_PATHMAX MAXPATHLEN 4220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else 4221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define LT_PATHMAX 1024 4222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef S_IXOTH 4225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define S_IXOTH 0 4226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef S_IXGRP 4228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define S_IXGRP 0 4229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* path handling portability macros */ 4232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef DIR_SEPARATOR 4233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define DIR_SEPARATOR '/' 4234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define PATH_SEPARATOR ':' 4235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 4238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats defined (__OS2__) 4239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define HAVE_DOS_BASED_FILE_SYSTEM 4240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define FOPEN_WB "wb" 4241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifndef DIR_SEPARATOR_2 4242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define DIR_SEPARATOR_2 '\\' 4243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif 4244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ifndef PATH_SEPARATOR_2 4245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define PATH_SEPARATOR_2 ';' 4246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# endif 4247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef DIR_SEPARATOR_2 4250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 4251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else /* DIR_SEPARATOR_2 */ 4252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_DIR_SEPARATOR(ch) \ 4253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 4254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif /* DIR_SEPARATOR_2 */ 4255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef PATH_SEPARATOR_2 4257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 4258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else /* PATH_SEPARATOR_2 */ 4259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 4260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif /* PATH_SEPARATOR_2 */ 4261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef FOPEN_WB 4263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define FOPEN_WB "w" 4264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef _O_BINARY 4266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# define _O_BINARY 0 4267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 4270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#define XFREE(stale) do { \ 4271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (stale) { free ((void *) stale); stale = 0; } \ 4272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} while (0) 4273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined(LT_DEBUGWRAPPER) 4275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic int lt_debug = 1; 4276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else 4277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic int lt_debug = 0; 4278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 4281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid *xmalloc (size_t num); 4283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *xstrdup (const char *string); 4284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char *base_name (const char *name); 4285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *find_executable (const char *wrapper); 4286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *chase_symlinks (const char *pathspec); 4287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint make_executable (const char *path); 4288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint check_executable (const char *path); 4289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *strendzap (char *str, const char *pat); 4290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 4291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_fatal (const char *file, int line, const char *message, ...); 4292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *nonnull (const char *s); 4293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *nonempty (const char *s); 4294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_setenv (const char *name, const char *value); 4295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar *lt_extend_str (const char *orig_value, const char *add, int to_end); 4296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_update_exe_path (const char *name, const char *value); 4297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_update_lib_path (const char *name, const char *value); 4298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar **prepare_spawn (char **argv); 4299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_dump_script (FILE *f); 4300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvolatile const char * MAGIC_EXE = "$magic_exe"; 4304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 4305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 4308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path "$temp_rpath" 4309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 4311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * LIB_PATH_VALUE = ""; 4315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dllsearchpath"; then 4319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_host_path "$dllsearchpath:" 4320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VARNAME = "PATH"; 4322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 4323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VARNAME = ""; 4327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * EXE_PATH_VALUE = ""; 4328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$fast_install" = yes; then 4332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 4334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 4338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 4340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#define LTWRAPPER_OPTION_PREFIX "--lt-" 4345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 4347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 4348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 4349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint 4351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmain (int argc, char *argv[]) 4352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char **newargz; 4354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int newargc; 4355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *tmp_pathspec; 4356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *actual_cwrapper_path; 4357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *actual_cwrapper_name; 4358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *target_name; 4359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *lt_argv_zero; 4360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats intptr_t rval = 127; 4361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int i; 4363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats program_name = (char *) xstrdup (base_name (argv[0])); 4365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newargz = XMALLOC (char *, argc + 1); 4366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* very simple arg parsing; don't want to rely on getopt 4368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * also, copy all non cwrapper options to newargz, except 4369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * argz[0], which is handled differently 4370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats */ 4371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newargc=0; 4372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (i = 1; i < argc; i++) 4373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (strcmp (argv[i], dumpscript_opt) == 0) 4375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$host" in 4378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *mingw* | *cygwin* ) 4379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # make stdout use "unix" line endings 4380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo " setmode(1,_O_BINARY);" 4381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 4382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 4383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_dump_script (stdout); 4386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 0; 4387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (strcmp (argv[i], debug_opt) == 0) 4389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debug = 1; 4391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue; 4392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 4394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 4396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats namespace, but it is not one of the ones we know about and 4397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats have already dealt with, above (inluding dump-script), then 4398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats report an error. Otherwise, targets might begin to believe 4399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 4400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats namespace. The first time any user complains about this, we'll 4401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats need to make LTWRAPPER_OPTION_PREFIX a configure-time option 4402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats or a configure.ac-settable value. 4403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats */ 4404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, 4405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "unrecognized %s option: '%s'", 4406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ltwrapper_option_prefix, argv[i]); 4407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* otherwise ... */ 4409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newargz[++newargc] = xstrdup (argv[i]); 4410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newargz[++newargc] = NULL; 4412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* The GNU banner must be the first non-error debug message */ 4416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 4417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 4420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 4421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = find_executable (argv[0]); 4423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (tmp_pathspec == NULL) 4424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 4425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(main) found exe (before symlink chase) at: %s\n", 4427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec); 4428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats actual_cwrapper_path = chase_symlinks (tmp_pathspec); 4430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(main) found exe (after symlink chase) at: %s\n", 4432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats actual_cwrapper_path); 4433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (tmp_pathspec); 4434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 4436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strendzap (actual_cwrapper_path, actual_cwrapper_name); 4437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* wrapper name transforms */ 4439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strendzap (actual_cwrapper_name, ".exe"); 4440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 4441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (actual_cwrapper_name); 4442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats actual_cwrapper_name = tmp_pathspec; 4443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = 0; 4444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* target_name transforms -- use actual target program name; might have lt- prefix */ 4446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 4447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strendzap (target_name, ".exe"); 4448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 4449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (target_name); 4450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats target_name = tmp_pathspec; 4451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = 0; 4452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(main) libtool target name: %s\n", 4455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats target_name); 4456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<EOF 4459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newargz[0] = 4460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XMALLOC (char, (strlen (actual_cwrapper_path) + 4461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 4462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (newargz[0], actual_cwrapper_path); 4463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcat (newargz[0], "$objdir"); 4464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcat (newargz[0], "/"); 4465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* stop here, and copy so we don't have to do this twice */ 4469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = xstrdup (newargz[0]); 4470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 4472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcat (newargz[0], actual_cwrapper_name); 4473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* DO want the lt- prefix here if it exists, so use target_name */ 4475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 4476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (tmp_pathspec); 4477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = NULL; 4478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host_os in 4481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats mingw*) 4482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char* p; 4485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while ((p = strchr (newargz[0], '\\')) != NULL) 4486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p = '/'; 4488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while ((p = strchr (lt_argv_zero, '\\')) != NULL) 4490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p = '/'; 4492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 4496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 4497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (target_name); 4500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (actual_cwrapper_path); 4501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (actual_cwrapper_name); 4502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 4504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 4505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 4506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 4507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats because on Windows, both *_VARNAMEs are PATH but uninstalled 4508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libraries must come first. */ 4509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 4510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 4511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 4513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonnull (lt_argv_zero)); 4514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (i = 0; i < newargc; i++) 4515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 4517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats i, nonnull (newargz[i])); 4518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host_os in 4523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats mingw*) 4524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* execv doesn't actually work on mingw as expected on unix */ 4526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newargz = prepare_spawn (newargz); 4527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 4528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (rval == -1) 4529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* failed to start process */ 4531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(main) failed to launch target \"%s\": %s\n", 4533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_argv_zero, nonnull (strerror (errno))); 4534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 127; 4535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return rval; 4537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 4539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 4540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats execv (lt_argv_zero, newargz); 4542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return rval; /* =127, but avoids unused variable warning */ 4543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 4545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 4546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid * 4551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsxmalloc (size_t num) 4552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats void *p = (void *) malloc (num); 4554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (!p) 4555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, "memory exhausted"); 4556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return p; 4558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar * 4561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsxstrdup (const char *string) 4562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 4564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats string) : NULL; 4565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsconst char * 4568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbase_name (const char *name) 4569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *base; 4571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Skip over the disk name in MSDOS pathnames. */ 4574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (isalpha ((unsigned char) name[0]) && name[1] == ':') 4575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name += 2; 4576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (base = name; *name; name++) 4579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (IS_DIR_SEPARATOR (*name)) 4580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats base = name + 1; 4581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return base; 4582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint 4585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscheck_executable (const char *path) 4586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats struct stat st; 4588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 4590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonempty (path)); 4591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ((!path) || (!*path)) 4592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 0; 4593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ((stat (path, &st) >= 0) 4595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 4596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 1; 4597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 0; 4599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsint 4602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsmake_executable (const char *path) 4603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int rval = 0; 4605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats struct stat st; 4606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 4608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonempty (path)); 4609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ((!path) || (!*path)) 4610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return 0; 4611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (stat (path, &st) >= 0) 4613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 4615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return rval; 4617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Searches for the full path of the wrapper. Returns 4620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newly allocated full path name if found, NULL otherwise 4621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats Does not chase symlinks, even on platforms that support them. 4622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats*/ 4623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar * 4624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfind_executable (const char *wrapper) 4625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int has_slash = 0; 4627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *p; 4628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *p_next; 4629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* static buffer for getcwd */ 4630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char tmp[LT_PATHMAX + 1]; 4631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int tmp_len; 4632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *concat_name; 4633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 4635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonempty (wrapper)); 4636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ((wrapper == NULL) || (*wrapper == '\0')) 4638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return NULL; 4639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Absolute path? */ 4641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 4643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name = xstrdup (wrapper); 4645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (check_executable (concat_name)) 4646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return concat_name; 4647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (concat_name); 4648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (IS_DIR_SEPARATOR (wrapper[0])) 4653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name = xstrdup (wrapper); 4655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (check_executable (concat_name)) 4656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return concat_name; 4657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (concat_name); 4658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 4660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (p = wrapper; *p; p++) 4664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (*p == '/') 4665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats has_slash = 1; 4667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break; 4668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (!has_slash) 4670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* no slashes; search PATH */ 4672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *path = getenv ("PATH"); 4673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (path != NULL) 4674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (p = path; *p; p = p_next) 4676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *q; 4678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats size_t p_len; 4679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (q = p; *q; q++) 4680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (IS_PATH_SEPARATOR (*q)) 4681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break; 4682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p_len = q - p; 4683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p_next = (*q == '\0' ? q : q + 1); 4684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (p_len == 0) 4685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* empty path: current directory */ 4687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (getcwd (tmp, LT_PATHMAX) == NULL) 4688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonnull (strerror (errno))); 4690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_len = strlen (tmp); 4691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name = 4692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats memcpy (concat_name, tmp, tmp_len); 4694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name[tmp_len] = '/'; 4695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (concat_name + tmp_len + 1, wrapper); 4696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name = 4700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 4701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats memcpy (concat_name, p, p_len); 4702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name[p_len] = '/'; 4703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (concat_name + p_len + 1, wrapper); 4704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (check_executable (concat_name)) 4706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return concat_name; 4707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (concat_name); 4708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* not found in PATH; assume curdir */ 4711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Relative path | not found in path: prepend cwd */ 4713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (getcwd (tmp, LT_PATHMAX) == NULL) 4714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 4715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonnull (strerror (errno))); 4716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_len = strlen (tmp); 4717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 4718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats memcpy (concat_name, tmp, tmp_len); 4719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_name[tmp_len] = '/'; 4720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (concat_name + tmp_len + 1, wrapper); 4721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (check_executable (concat_name)) 4723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return concat_name; 4724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (concat_name); 4725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return NULL; 4726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar * 4729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschase_symlinks (const char *pathspec) 4730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifndef S_ISLNK 4732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return xstrdup (pathspec); 4733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else 4734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char buf[LT_PATHMAX]; 4735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats struct stat s; 4736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *tmp_pathspec = xstrdup (pathspec); 4737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *p; 4738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int has_symlinks = 0; 4739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while (strlen (tmp_pathspec) && !has_symlinks) 4740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "checking path component for symlinks: %s\n", 4743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec); 4744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (lstat (tmp_pathspec, &s) == 0) 4745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (S_ISLNK (s.st_mode) != 0) 4747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats has_symlinks = 1; 4749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break; 4750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* search backwards for last DIR_SEPARATOR */ 4753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p = tmp_pathspec + strlen (tmp_pathspec) - 1; 4754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p--; 4756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 4757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* no more DIR_SEPARATORS left */ 4759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break; 4760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p = '\0'; 4762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, 4766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "error accessing file \"%s\": %s", 4767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec, nonnull (strerror (errno))); 4768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (tmp_pathspec); 4771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (!has_symlinks) 4773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return xstrdup (pathspec); 4775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_pathspec = realpath (pathspec, buf); 4778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (tmp_pathspec == 0) 4779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_fatal (__FILE__, __LINE__, 4781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "could not follow symlinks for %s", pathspec); 4782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return xstrdup (tmp_pathspec); 4784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar * 4788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstrendzap (char *str, const char *pat) 4789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats size_t len, patlen; 4791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats assert (str != NULL); 4793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats assert (pat != NULL); 4794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len = strlen (str); 4796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats patlen = strlen (pat); 4797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (patlen <= len) 4799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats str += len - patlen; 4801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (strcmp (str, pat) == 0) 4802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *str = '\0'; 4803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return str; 4805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid 4808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_debugprintf (const char *file, int line, const char *fmt, ...) 4809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats va_list args; 4811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (lt_debug) 4812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 4814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats va_start (args, fmt); 4815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats (void) vfprintf (stderr, fmt, args); 4816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats va_end (args); 4817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic void 4821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_error_core (int exit_status, const char *file, 4822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int line, const char *mode, 4823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *message, va_list ap) 4824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 4826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats vfprintf (stderr, message, ap); 4827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fprintf (stderr, ".\n"); 4828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (exit_status >= 0) 4830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit (exit_status); 4831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid 4834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_fatal (const char *file, int line, const char *message, ...) 4835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats va_list ap; 4837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats va_start (ap, message); 4838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 4839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats va_end (ap); 4840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char * 4843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnonnull (const char *s) 4844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return s ? s : "(null)"; 4846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsstatic const char * 4849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsnonempty (const char *s) 4850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return (s && !*s) ? "(empty)" : nonnull (s); 4852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid 4855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_setenv (const char *name, const char *value) 4856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(lt_setenv) setting '%s' to '%s'\n", 4859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonnull (name), nonnull (value)); 4860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#ifdef HAVE_SETENV 4862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* always make a copy, for consistency with !HAVE_SETENV */ 4863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *str = xstrdup (value); 4864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats setenv (name, str, 1); 4865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#else 4866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int len = strlen (name) + 1 + strlen (value) + 1; 4867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *str = XMALLOC (char, len); 4868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sprintf (str, "%s=%s", name, value); 4869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (putenv (str) != EXIT_SUCCESS) 4870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (str); 4872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#endif 4874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar * 4878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_extend_str (const char *orig_value, const char *add, int to_end) 4879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *new_value; 4881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (orig_value && *orig_value) 4882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int orig_value_len = strlen (orig_value); 4884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int add_len = strlen (add); 4885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_value = XMALLOC (char, add_len + orig_value_len + 1); 4886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (to_end) 4887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (new_value, orig_value); 4889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (new_value + orig_value_len, add); 4890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (new_value, add); 4894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats strcpy (new_value + add_len, orig_value); 4895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 4898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_value = xstrdup (add); 4900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return new_value; 4902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid 4905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_update_exe_path (const char *name, const char *value) 4906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 4909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonnull (name), nonnull (value)); 4910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (name && *name && value && *value) 4912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *new_value = lt_extend_str (getenv (name), value, 0); 4914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* some systems can't cope with a ':'-terminated path #' */ 4915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int len = strlen (new_value); 4916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 4917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_value[len-1] = '\0'; 4919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_setenv (name, new_value); 4921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (new_value); 4922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid 4926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslt_update_lib_path (const char *name, const char *value) 4927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_debugprintf (__FILE__, __LINE__, 4929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 4930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonnull (name), nonnull (value)); 4931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (name && *name && value && *value) 4933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *new_value = lt_extend_str (getenv (name), value, 0); 4935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_setenv (name, new_value); 4936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats XFREE (new_value); 4937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 4938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 4939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 4941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host_os in 4942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats mingw*) 4943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 4944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats/* Prepares an argument vector before calling spawn(). 4946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats Note that spawn() does not by itself call the command interpreter 4947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 4948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 4949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats GetVersionEx(&v); 4950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats v.dwPlatformId == VER_PLATFORM_WIN32_NT; 4951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats }) ? "cmd.exe" : "command.com"). 4952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats Instead it simply concatenates the arguments, separated by ' ', and calls 4953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats CreateProcess(). We must quote the arguments since Win32 CreateProcess() 4954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 4955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats special way: 4956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats - Space and tab are interpreted as delimiters. They are not treated as 4957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats delimiters if they are surrounded by double quotes: "...". 4958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats - Unescaped double quotes are removed from the input. Their only effect is 4959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats that within double quotes, space and tab are treated like normal 4960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats characters. 4961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats - Backslashes not followed by double quotes are not special. 4962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats - But 2*n+1 backslashes followed by a double quote become 4963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats n backslashes followed by a double quote (n >= 0): 4964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \" -> " 4965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \\\" -> \" 4966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats \\\\\" -> \\" 4967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats */ 4968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#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" 4969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats#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" 4970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatschar ** 4971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsprepare_spawn (char **argv) 4972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 4973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats size_t argc; 4974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char **new_argv; 4975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats size_t i; 4976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Count number of arguments. */ 4978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (argc = 0; argv[argc] != NULL; argc++) 4979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ; 4980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Allocate new argument vector. */ 4982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_argv = XMALLOC (char *, argc + 1); 4983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats /* Put quoted arguments into the new argument vector. */ 4985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (i = 0; i < argc; i++) 4986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *string = argv[i]; 4988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 4989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (string[0] == '\0') 4990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_argv[i] = xstrdup ("\"\""); 4991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 4992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 4993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 4994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats size_t length; 4995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats unsigned int backslashes; 4996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats const char *s; 4997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *quoted_string; 4998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char *p; 4999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats length = 0; 5001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats backslashes = 0; 5002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (quote_around) 5003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats length++; 5004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (s = string; *s != '\0'; s++) 5005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 5006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char c = *s; 5007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (c == '"') 5008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats length += backslashes + 1; 5009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats length++; 5010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (c == '\\') 5011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats backslashes++; 5012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats backslashes = 0; 5014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 5015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (quote_around) 5016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats length += backslashes + 1; 5017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats quoted_string = XMALLOC (char, length + 1); 5019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats p = quoted_string; 5021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats backslashes = 0; 5022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (quote_around) 5023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p++ = '"'; 5024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (s = string; *s != '\0'; s++) 5025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 5026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats char c = *s; 5027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (c == '"') 5028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 5029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats unsigned int j; 5030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (j = backslashes + 1; j > 0; j--) 5031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p++ = '\\'; 5032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 5033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p++ = c; 5034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (c == '\\') 5035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats backslashes++; 5036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats backslashes = 0; 5038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 5039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (quote_around) 5040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { 5041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats unsigned int j; 5042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for (j = backslashes; j > 0; j--) 5043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p++ = '\\'; 5044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p++ = '"'; 5045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 5046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *p = '\0'; 5047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_argv[i] = quoted_string; 5049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 5050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_argv[i] = (char *) string; 5052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 5053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_argv[argc] = NULL; 5054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats return new_argv; 5056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 5057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 5058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 5062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsvoid lt_dump_script (FILE* f) 5063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 5064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 5065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_emit_wrapper yes | 5066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -n -e ' 5067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/^\(.\{79\}\)\(..*\)/\1\ 5068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats\2/ 5069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsh 5070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/\([\\"]\)/\\\1/g 5071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/$/\\n/ 5072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatss/\([^\n]*\).*/ fputs ("\1", f);/p 5073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsg 5074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsD' 5075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat <<"EOF" 5076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 5077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 5078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 5079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# end: func_emit_cwrapperexe_src 5080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_win32_import_lib_p ARG 5082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# True if ARG is an import lib, as indicated by $file_magic_cmd 5083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_win32_import_lib_p () 5084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 5085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 5086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 5087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *import*) : ;; 5088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) false ;; 5089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 5091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_link arg... 5093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_link () 5094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 5095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 5096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 5097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # It is impossible to link a dll without this setting, and 5099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # we shouldn't force the makefile maintainer to figure out 5100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # which system we are compiling for in order to pass an extra 5101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # flag for every libtool invocation. 5102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # allow_undefined=no 5103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: Unfortunately, there are problems with the above when trying 5105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # to make a dll which has undefined symbols, in which case not 5106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # even a static library is built. For now, we need to specify 5107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -no-undefined on the libtool link line when we can be certain 5108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # that all symbols are satisfied, otherwise we get a static library. 5109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats allow_undefined=yes 5110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats allow_undefined=yes 5113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libtool_args=$nonopt 5116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats base_compile="$nonopt $@" 5117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=$nonopt 5118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command=$nonopt 5119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_rpath= 5121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_rpath= 5122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_shlibpath= 5123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_shlibpath= 5124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats convenience= 5125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_convenience= 5126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs= 5127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_deplibs= 5128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compiler_flags= 5129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linker_flags= 5130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dllsearchpath= 5131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib_search_path=`pwd` 5132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats inst_prefix_dir= 5133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_inherited_linker_flags= 5134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats avoid_version=no 5136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats bindir= 5137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlfiles= 5138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefiles= 5139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlself=no 5140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_dynamic=no 5141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols= 5142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols_regex= 5143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats generated= 5144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobjs= 5145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ltlibs= 5146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats module=no 5147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats no_install=no 5148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objs= 5149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_objects= 5150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats precious_files_regex= 5151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prefer_static_libs=no 5152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats preload=no 5153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prevarg= 5155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats release= 5156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath= 5157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xrpath= 5158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats perm_rpath= 5159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats temp_rpath= 5160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats thread_safe=no 5161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats vinfo= 5162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats vinfo_number=no 5163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats weak_libs= 5164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats single_module="${wl}-single_module" 5165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_infer_tag $base_compile 5166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need to know -static, to get the right output filenames. 5168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg 5169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 5170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 5171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shared) 5172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_libtool_libs" != yes && \ 5173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_configuration "can not build a shared library" 5174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=no 5175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 5176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -all-static | -static | -static-libtool-libs) 5178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 5179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -all-static) 5180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 5181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "complete static linking is impossible in this configuration" 5182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$link_static_flag"; then 5184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopen_self=$dlopen_self_static 5185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prefer_static_libs=yes 5187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static) 5189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$pic_flag" && test -n "$link_static_flag"; then 5190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopen_self=$dlopen_self_static 5191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prefer_static_libs=built 5193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static-libtool-libs) 5195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$pic_flag" && test -n "$link_static_flag"; then 5196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopen_self=$dlopen_self_static 5197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prefer_static_libs=yes 5199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 5202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 5203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 5204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 5207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See if our shared archives depend on static archives. 5209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$old_archive_from_new_cmds" && build_old_libs=yes 5210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Go through the arguments, transforming them on the way. 5212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test "$#" -gt 0; do 5213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$1" 5214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 5215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 5216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats qarg=$func_quote_for_eval_unquoted_result 5217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libtool_args " $func_quote_for_eval_result" 5218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the previous option needs an argument, assign it. 5220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$prev"; then 5221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $prev in 5222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output) 5223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " @OUTPUT@" 5224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " @OUTPUT@" 5225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $prev in 5229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats bindir) 5230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats bindir="$arg" 5231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlfiles|dlprefiles) 5235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$preload" = no; then 5236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add the symbol object into the linking commands. 5237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " @SYMFILE@" 5238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " @SYMFILE@" 5239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats preload=yes 5240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 5242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la | *.lo) ;; # We handle these cases below. 5243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats force) 5244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$dlself" = no; then 5245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlself=needless 5246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_dynamic=yes 5247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats self) 5252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlprefiles; then 5253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlself=yes 5254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 5255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlself=yes 5256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlself=needless 5258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_dynamic=yes 5259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlfiles; then 5265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlfiles " $arg" 5266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlprefiles " $arg" 5268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats expsyms) 5275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols="$arg" 5276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -f "$arg" \ 5277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats || func_fatal_error "symbol file \`$arg' does not exist" 5278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats expsyms_regex) 5282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols_regex="$arg" 5283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats framework) 5287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 5288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-darwin*) 5289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$deplibs " in 5290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $qarg.ltframework "*) ;; 5291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append deplibs " $qarg.ltframework" # this is fixed later 5292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats inst_prefix) 5300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats inst_prefix_dir="$arg" 5301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objectlist) 5305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$arg"; then 5306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_arg=$arg 5307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats moreargs= 5308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for fil in `cat "$save_arg"` 5309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 5310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_append moreargs " $fil" 5311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg=$fil 5312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A libtool-controlled object. 5313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that this really is a libtool object. 5315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_lalib_unsafe_p "$arg"; then 5316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_object= 5317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object= 5318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Read the .lo file 5320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$arg" 5321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$pic_object" || 5323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$non_pic_object" || 5324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$pic_object" = none && 5325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$non_pic_object" = none; then 5326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot find name of object for \`$arg'" 5327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract subdirectory from the argument. 5330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$arg" "/" "" 5331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xdir="$func_dirname_result" 5332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pic_object" != none; then 5334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prepend the subdirectory the object is found in. 5335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_object="$xdir$pic_object" 5336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlfiles; then 5338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlfiles " $pic_object" 5340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If libtool objects are unsupported, then we need to preload. 5344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=dlprefiles 5345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # CHECK ME: I think I busted this. -Ossama 5349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlprefiles; then 5350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Preload the old-style object. 5351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlprefiles " $pic_object" 5352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A PIC object. 5356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $pic_object" 5357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$pic_object" 5358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Non-PIC object. 5361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$non_pic_object" != none; then 5362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prepend the subdirectory the object is found in. 5363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object="$xdir$non_pic_object" 5364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A standard non-PIC object 5366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append non_pic_objects " $non_pic_object" 5367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$pic_object" || test "$pic_object" = none ; then 5368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$non_pic_object" 5369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the PIC object exists, use it instead. 5372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # $xdir was prepended to $pic_object above. 5373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object="$pic_object" 5374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append non_pic_objects " $non_pic_object" 5375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only an error if not doing a dry-run. 5378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_dry_run; then 5379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract subdirectory from the argument. 5380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$arg" "/" "" 5381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xdir="$func_dirname_result" 5382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lo2o "$arg" 5384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_object=$xdir$objdir/$func_lo2o_result 5385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object=$xdir$func_lo2o_result 5386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $pic_object" 5387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append non_pic_objects " $non_pic_object" 5388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$arg' is not a valid libtool object" 5390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 5393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "link input file \`$arg' does not exist" 5395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg=$save_arg 5397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats precious_regex) 5401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats precious_files_regex="$arg" 5402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats release) 5406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats release="-$arg" 5407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath | xrpath) 5411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need an absolute path. 5412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 5413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) ;; 5414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "only absolute run-paths are allowed" 5416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = rpath; then 5419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$rpath " in 5420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $arg "*) ;; 5421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append rpath " $arg" ;; 5422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$xrpath " in 5425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $arg "*) ;; 5426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append xrpath " $arg" ;; 5427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shrext) 5433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shrext_cmds="$arg" 5434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats weak) 5438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append weak_libs " $arg" 5439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xcclinker) 5443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append linker_flags " $qarg" 5444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $qarg" 5445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $qarg" 5447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $qarg" 5448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xcompiler) 5451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $qarg" 5452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $qarg" 5454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $qarg" 5455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xlinker) 5458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append linker_flags " $qarg" 5459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $wl$qarg" 5460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $wl$qarg" 5462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $wl$qarg" 5463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$prev=\"\$arg\"" 5467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # test -n "$prev" 5472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prevarg="$arg" 5474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 5476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -all-static) 5477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$link_static_flag"; then 5478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See comment for -static flag below, for more details. 5479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $link_static_flag" 5480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $link_static_flag" 5481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -allow-undefined) 5486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: remove this flag sometime in the future. 5487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`-allow-undefined' must not be used because it is the default" 5488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -avoid-version) 5491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats avoid_version=yes 5492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -bindir) 5496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=bindir 5497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -dlopen) 5501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=dlfiles 5502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -dlpreopen) 5506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=dlprefiles 5507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -export-dynamic) 5511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_dynamic=yes 5512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -export-symbols | -export-symbols-regex) 5516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 5517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "more than one -exported-symbols argument is not allowed" 5518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$arg" = "X-export-symbols"; then 5520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=expsyms 5521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=expsyms_regex 5523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -framework) 5528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=framework 5529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -inst-prefix-dir) 5533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=inst_prefix 5534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 5538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # so, if we see these flags be careful not to treat them like -L 5539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L[A-Z][A-Z]*:*) 5540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $with_gcc/$host in 5541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats no/*-*-irix* | /*-*-irix*) 5542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $arg" 5543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $arg" 5544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) 5550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname "-L" '' "$arg" 5551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$func_stripname_result"; then 5552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$#" -gt 0; then 5553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "require no space between \`-L' and \`$1'" 5554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "need path for \`-L' option" 5556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$func_stripname_result" 5559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir=$func_resolve_sysroot_result 5560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need an absolute path. 5561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $dir in 5562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) ;; 5563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir=`cd "$dir" && pwd` 5565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$absdir" && \ 5566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot determine absolute directory name of \`$dir'" 5567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$absdir" 5568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$deplibs " in 5571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" -L$dir "* | *" $arg "*) 5572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Will only happen for absolute or sysroot arguments 5573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Preserve sysroot, but never include relative directories 5576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $dir in 5577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 5578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append deplibs " -L$dir" ;; 5579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append lib_search_path " $dir" 5581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 5584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 5585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 5586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$dllsearchpath: in 5587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$dir:"*) ;; 5588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ::) dllsearchpath=$dir;; 5589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append dllsearchpath ":$dir";; 5590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$dllsearchpath: in 5592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$testbindir:"*) ;; 5593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ::) dllsearchpath=$testbindir;; 5594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append dllsearchpath ":$testbindir";; 5595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -l*) 5602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 5603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 5604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 5605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # These systems don't actually have a C or math library (as such) 5606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-os2*) 5609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # These systems don't actually have a C library (as such) 5610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$arg" = "X-lc" && continue 5611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do not include libc due to us having libc/libc_r. 5614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$arg" = "X-lc" && continue 5615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-rhapsody* | *-*-darwin1.[012]) 5617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Rhapsody C and math libraries are in the System framework 5618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append deplibs " System.ltframework" 5619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sco3.2v5* | *-*-sco5v6*) 5622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Causes problems with __ctype 5623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$arg" = "X-lc" && continue 5624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 5626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Compiler inserts libc in the correct place for threads to work 5627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$arg" = "X-lc" && continue 5628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "X$arg" = "X-lc_r"; then 5631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 5632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 5633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do not include libc_r directly, use -pthread flag. 5634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append deplibs " $arg" 5639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -module) 5643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats module=yes 5644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Tru64 UNIX uses -model [arg] to determine the layout of C++ 5648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # classes, name mangling, and exception handling. 5649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Darwin uses the -arch flag to determine output architecture. 5650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -model|-arch|-isysroot|--sysroot) 5651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $arg" 5652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $arg" 5653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $arg" 5654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=xcompiler 5655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 5659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 5660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $arg" 5661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $arg" 5662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $arg" 5663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$new_inherited_linker_flags " in 5664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $arg "*) ;; 5665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * ) func_append new_inherited_linker_flags " $arg" ;; 5666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -multi_module) 5671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats single_module="${wl}-multi_module" 5672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-fast-install) 5676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fast_install=no 5677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-install) 5681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 5682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 5683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The PATH hackery in wrapper scripts is required on Windows 5684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and Darwin in order for the loader to find any dlls it needs. 5685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-no-install' is ignored for $host" 5686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "assuming \`-no-fast-install' instead" 5687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fast_install=no 5688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) no_install=yes ;; 5690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -no-undefined) 5695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats allow_undefined=no 5696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -objectlist) 5700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=objectlist 5701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -o) prev=output ;; 5705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -precious-files-regex) 5707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=precious_regex 5708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -release) 5712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=release 5713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -rpath) 5717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=rpath 5718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R) 5722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=xrpath 5723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R*) 5727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-R' '' "$arg" 5728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir=$func_stripname_result 5729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need an absolute path. 5730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $dir in 5731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) ;; 5732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats =*) 5733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '=' '' "$dir" 5734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir=$lt_sysroot$func_stripname_result 5735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "only absolute run-paths are allowed" 5738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$xrpath " in 5741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $dir "*) ;; 5742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append xrpath " $dir" ;; 5743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 5744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shared) 5748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The effects of -shared are defined in a previous loop. 5749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -shrext) 5753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=shrext 5754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -static | -static-libtool-libs) 5758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The effects of -static are defined in a previous loop. 5759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We used to do the same as -all-static on platforms that 5760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # didn't have a PIC flag, but the assumption that the effects 5761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # would be equivalent was wrong. It would break on at least 5762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Digital Unix and AIX. 5763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -thread-safe) 5767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats thread_safe=yes 5768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -version-info) 5772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=vinfo 5773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -version-number) 5777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=vinfo 5778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats vinfo_number=yes 5779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -weak) 5783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=weak 5784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Wc,*) 5788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-Wc,' '' "$arg" 5789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats args=$func_stripname_result 5790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg= 5791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS=',' 5792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for flag in $args; do 5793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 5794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$flag" 5795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append arg " $func_quote_for_eval_result" 5796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $func_quote_for_eval_result" 5797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 5798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 5799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname ' ' '' "$arg" 5800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg=$func_stripname_result 5801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Wl,*) 5804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-Wl,' '' "$arg" 5805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats args=$func_stripname_result 5806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg= 5807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS=',' 5808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for flag in $args; do 5809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 5810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$flag" 5811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append arg " $wl$func_quote_for_eval_result" 5812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $wl$func_quote_for_eval_result" 5813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append linker_flags " $func_quote_for_eval_result" 5814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 5815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 5816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname ' ' '' "$arg" 5817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg=$func_stripname_result 5818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Xcompiler) 5821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=xcompiler 5822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -Xlinker) 5826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=xlinker 5827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -XCClinker) 5831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=xcclinker 5832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -msg_* for osf cc 5836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -msg_*) 5837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 5838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$func_quote_for_eval_result" 5839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Flags to be passed through unchanged, with rationale: 5842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 5843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -r[0-9][0-9]* specify processor for the SGI compiler 5844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 5845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # +DA*, +DD* enable 64-bit mode for the HP compiler 5846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -q* compiler args for the IBM compiler 5847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 5848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -F/path path to uninstalled frameworks, gcc on darwin 5849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 5850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # @file GCC response files 5851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -tp=* Portland pgcc target processor selection 5852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # --sysroot=* for sysroot support 5853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 5854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 5855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 5856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 5857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 5858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$func_quote_for_eval_result" 5859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $arg" 5860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $arg" 5861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $arg" 5862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Some other compiler flag. 5866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -* | +*) 5867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 5868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$func_quote_for_eval_result" 5869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$objext) 5872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A standard object. 5873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append objs " $arg" 5874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) 5877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A libtool-controlled object. 5878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that this really is a libtool object. 5880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_lalib_unsafe_p "$arg"; then 5881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_object= 5882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object= 5883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Read the .lo file 5885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$arg" 5886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$pic_object" || 5888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$non_pic_object" || 5889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$pic_object" = none && 5890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$non_pic_object" = none; then 5891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot find name of object for \`$arg'" 5892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract subdirectory from the argument. 5895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$arg" "/" "" 5896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xdir="$func_dirname_result" 5897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pic_object" != none; then 5899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prepend the subdirectory the object is found in. 5900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_object="$xdir$pic_object" 5901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlfiles; then 5903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 5904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlfiles " $pic_object" 5905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If libtool objects are unsupported, then we need to preload. 5909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev=dlprefiles 5910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # CHECK ME: I think I busted this. -Ossama 5914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlprefiles; then 5915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Preload the old-style object. 5916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlprefiles " $pic_object" 5917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A PIC object. 5921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $pic_object" 5922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$pic_object" 5923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Non-PIC object. 5926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$non_pic_object" != none; then 5927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prepend the subdirectory the object is found in. 5928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object="$xdir$non_pic_object" 5929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A standard non-PIC object 5931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append non_pic_objects " $non_pic_object" 5932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$pic_object" || test "$pic_object" = none ; then 5933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$non_pic_object" 5934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the PIC object exists, use it instead. 5937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # $xdir was prepended to $pic_object above. 5938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object="$pic_object" 5939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append non_pic_objects " $non_pic_object" 5940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only an error if not doing a dry-run. 5943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_dry_run; then 5944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract subdirectory from the argument. 5945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$arg" "/" "" 5946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xdir="$func_dirname_result" 5947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lo2o "$arg" 5949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pic_object=$xdir$objdir/$func_lo2o_result 5950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats non_pic_object=$xdir$func_lo2o_result 5951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $pic_object" 5952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append non_pic_objects " $non_pic_object" 5953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$arg' is not a valid libtool object" 5955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$libext) 5960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # An archive. 5961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append deplibs " $arg" 5962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append old_deplibs " $arg" 5963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 5967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # A libtool-controlled library. 5968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$arg" 5970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$prev" = dlfiles; then 5971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This library was specified with -dlopen. 5972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlfiles " $func_resolve_sysroot_result" 5973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$prev" = dlprefiles; then 5975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The library was specified with -dlpreopen. 5976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlprefiles " $func_resolve_sysroot_result" 5977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prev= 5978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 5979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append deplibs " $func_resolve_sysroot_result" 5980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 5982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Some other compiler argument. 5985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 5986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Unknown arguments in both finalize_command and compile_command need 5987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # to be aesthetically quoted because they are evaled later. 5988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$arg" 5989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats arg="$func_quote_for_eval_result" 5990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 5991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac # arg 5992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 5993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now actually substitute the argument into the commands. 5994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$arg"; then 5995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $arg" 5996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $arg" 5997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 5998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # argument parsing loop 5999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$prev" && \ 6001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "the \`$prevarg' option requires an argument" 6002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 6004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval arg=\"$export_dynamic_flag_spec\" 6005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $arg" 6006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $arg" 6007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlibs= 6010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # calculate the name of the file, without its directory 6011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$output" 6012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats outputname="$func_basename_result" 6013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobjs_save="$libobjs" 6014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$shlibpath_var"; then 6016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # get the directories listed in $shlibpath_var 6017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 6018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shlib_search_path= 6020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 6022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 6023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$output" "/" "" 6025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_objdir="$func_dirname_result$objdir" 6026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output_objdir/" 6027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tool_output_objdir=$func_to_tool_file_result 6028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Create the object directory. 6029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mkdir_p "$output_objdir" 6030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Determine the type of output 6032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $output in 6033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats "") 6034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify an output file" 6035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$libext) linkmode=oldlib ;; 6037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo | *.$objext) linkmode=obj ;; 6038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) linkmode=lib ;; 6039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) linkmode=prog ;; # Anything else should be a program. 6040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats specialdeplibs= 6043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libs= 6045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Find all interdependent deplibs by searching for libraries 6046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # that are linked more than once (e.g. -la -lb -la) 6047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $deplibs; do 6048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_preserve_dup_deps ; then 6049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$libs " in 6050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libs " $deplib" 6054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib; then 6057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libs="$predeps $libs $compiler_lib_search_path $postdeps" 6058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Compute libraries that are listed more than once in $predeps 6060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # $postdeps and mark them as special (i.e., whose duplicates are 6061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # not to be eliminated). 6062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pre_post_deps= 6063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_duplicate_compiler_generated_deps; then 6064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for pre_post_dep in $predeps $postdeps; do 6065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$pre_post_deps " in 6066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 6067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append pre_post_deps " $pre_post_dep" 6069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pre_post_deps= 6072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs= 6075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdependency_libs= 6076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newlib_search_path= 6077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats need_relink=no # whether we're linking any uninstalled libtool libraries 6078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats notinst_deplibs= # not-installed libtool libraries 6079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats notinst_path= # paths that contain not-installed libtool libraries 6080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $linkmode in 6082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib) 6083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats passes="conv dlpreopen link" 6084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file in $dlfiles $dlprefiles; do 6085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 6086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) ;; 6087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 6089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prog) 6094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs= 6095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs= 6096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats alldeplibs=no 6097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdlfiles= 6098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdlprefiles= 6099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats passes="conv scan dlopen dlpreopen link" 6100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) passes="conv" 6102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for pass in $passes; do 6106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The preopen pass in lib mode reverses $deplibs; put it back here 6107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # so that -L comes before libs that need it for instance... 6108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "lib,link"; then 6109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ## FIXME: Find the place where the list is rebuilt in the wrong 6110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ## order, and fix it there properly 6111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_deplibs= 6112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $deplibs; do 6113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_deplibs="$deplib $tmp_deplibs" 6114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$tmp_deplibs" 6116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "lib,link" || 6119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$linkmode,$pass" = "prog,scan"; then 6120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libs="$deplibs" 6121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs= 6122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog; then 6124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $pass in 6125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopen) libs="$dlfiles" ;; 6126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlpreopen) libs="$dlprefiles" ;; 6127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link) 6128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libs="$deplibs %DEPLIBS%" 6129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 6130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "lib,dlpreopen"; then 6134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Collect and forward deplibs of preopened libtool libs 6135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $dlprefiles; do 6136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Ignore non-libtool-libs 6137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs= 6138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$lib" 6139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $lib in 6140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) func_source "$func_resolve_sysroot_result" ;; 6141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Collect preopened libtool deplibs, except any this library 6144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # has declared as weak libs 6145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $dependency_libs; do 6146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$deplib" 6147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplib_base=$func_basename_result 6148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $weak_libs " in 6149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib_base "*) ;; 6150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append deplibs " $deplib" ;; 6151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libs="$dlprefiles" 6155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = dlopen; then 6157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Collect dlpreopened libraries 6158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_deplibs="$deplibs" 6159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs= 6160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $libs; do 6163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib= 6164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats found=no 6165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 6166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 6167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 6168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "prog,link"; then 6169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " $deplib" 6173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib ; then 6174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$new_inherited_linker_flags " in 6175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 6176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * ) func_append new_inherited_linker_flags " $deplib" ;; 6177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -l*) 6183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" != lib && test "$linkmode" != prog; then 6184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-l' is ignored for archives/objects" 6185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-l' '' "$deplib" 6188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 6189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib; then 6190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 6191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 6193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for searchdir in $searchdirs; do 6195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for search_ext in .la $std_shrext .so .a; do 6196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Search the libtool library 6197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib="$searchdir/lib${name}${search_ext}" 6198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$lib"; then 6199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$search_ext" = ".la"; then 6200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats found=yes 6201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats found=no 6203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 2 6205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$found" != yes; then 6209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # deplib doesn't seem to be a libtool library 6210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "prog,link"; then 6211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else # deplib is a libtool library 6219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 6220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need to do some special things here, and not later. 6221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 6222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $predeps $postdeps " in 6223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) 6224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_lalib_p "$lib"; then 6225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats library_names= 6226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_library= 6227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$lib" 6228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for l in $old_library $library_names; do 6229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ll="$l" 6230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$ll" = "X$old_library" ; then # only static version available 6232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats found=no 6233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$lib" "" "." 6234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ladir="$func_dirname_result" 6235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib=$ladir/$old_library 6236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "prog,link"; then 6237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 6242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) ;; 6248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; # -l 6252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.ltframework) 6253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "prog,link"; then 6254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib ; then 6259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$new_inherited_linker_flags " in 6260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 6261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * ) func_append new_inherited_linker_flags " $deplib" ;; 6262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) 6268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $linkmode in 6269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib) 6270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$pass" = conv && continue 6272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdependency_libs="$deplib $newdependency_libs" 6273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-L' '' "$deplib" 6274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$func_stripname_result" 6275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newlib_search_path " $func_resolve_sysroot_result" 6276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prog) 6278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = conv; then 6279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = scan; then 6283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-L' '' "$deplib" 6289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$func_stripname_result" 6290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newlib_search_path " $func_resolve_sysroot_result" 6291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-L' is ignored for archives/objects" 6294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac # linkmode 6296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; # -L 6298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R*) 6299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = link; then 6300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '-R' '' "$deplib" 6301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$func_stripname_result" 6302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir=$func_resolve_sysroot_result 6303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure the xrpath contains only unique directories. 6304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$xrpath " in 6305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $dir "*) ;; 6306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append xrpath " $dir" ;; 6307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 6313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$deplib" 6314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib=$func_resolve_sysroot_result 6315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$libext) 6317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = conv; then 6318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $linkmode in 6322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib) 6323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Linking convenience modules into shared libraries is allowed, 6324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # but linking other static libraries is non-portable. 6325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $dlpreconveniencelibs " in 6326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 6327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats valid_a_lib=no 6329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplibs_check_method in 6330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats match_pattern*) 6331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $deplibs_check_method; shift 6332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 6333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 6334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats | $EGREP "$match_pattern_regex" > /dev/null; then 6335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats valid_a_lib=yes 6336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pass_all) 6339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats valid_a_lib=yes 6340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$valid_a_lib" != yes; then 6343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 6344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: Trying to link with static lib archive $deplib." 6345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** I have the capability to make that library automatically link in when" 6346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** you link to this library. But I can only do this if you have a" 6347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** shared version of the library, which you do not appear to have" 6348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** because the file extensions .$libext of this argument makes me believe" 6349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** that it is just a static archive that I should not use here." 6350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 6352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: Linking the shared library $output against the" 6353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** static library $deplib is not portable!" 6354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prog) 6361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" != link; then 6362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac # linkmode 6370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; # *.$libext 6371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo | *.$objext) 6372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = conv; then 6373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$linkmode" = prog; then 6375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 6376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If there is no dlopen support or we're linking statically, 6377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # we need to preload. 6378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $deplib" 6379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$deplib $compile_deplibs" 6380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$deplib $finalize_deplibs" 6381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlfiles " $deplib" 6383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats %DEPLIBS%) 6388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats alldeplibs=yes 6389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac # case $deplib 6392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$found" = yes || test -f "$lib"; then : 6394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 6396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see that this really is a libtool archive. 6399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lalib_unsafe_p "$lib" \ 6400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats || func_fatal_error "\`$lib' is not a valid libtool archive" 6401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$lib" "" "." 6403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ladir="$func_dirname_result" 6404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlname= 6406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopen= 6407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlpreopen= 6408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir= 6409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats library_names= 6410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_library= 6411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats inherited_linker_flags= 6412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the library was installed with an old release of libtool, 6413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # it will not redefine variables installed, or shouldnotlink 6414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats installed=yes 6415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shouldnotlink=no 6416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats avoidtemprpath= 6417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Read the .la file 6420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source "$lib" 6421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Convert "-framework foo" to "foo.ltframework" 6423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$inherited_linker_flags"; then 6424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 6425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 6426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $new_inherited_linker_flags " in 6427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $tmp_inherited_linker_flag "*) ;; 6428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 6429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 6433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "lib,link" || 6434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$linkmode,$pass" = "prog,scan" || 6435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test "$linkmode" != prog && test "$linkmode" != lib; }; then 6436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$dlopen" && func_append dlfiles " $dlopen" 6437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 6438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = conv; then 6441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only check for convenience libraries 6442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$lib $deplibs" 6443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$libdir"; then 6444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$old_library"; then 6445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot find name of link library for \`$lib'" 6446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # It is a libtool convenience library, so add in its objects. 6448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append convenience " $ladir/$objdir/$old_library" 6449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append old_convenience " $ladir/$objdir/$old_library" 6450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_libs= 6451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $dependency_libs; do 6452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_preserve_dup_deps ; then 6454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$tmp_libs " in 6455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append tmp_libs " $deplib" 6459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$linkmode" != prog && test "$linkmode" != lib; then 6461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$lib' is not a convenience library" 6462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $pass = conv 6465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Get the name of the library we link against. 6468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linklib= 6469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$old_library" && 6470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test "$prefer_static_libs" = yes || 6471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$prefer_static_libs,$installed" = "built,no"; }; then 6472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linklib=$old_library 6473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for l in $old_library $library_names; do 6475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linklib="$l" 6476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$linklib"; then 6479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot find name of link library for \`$lib'" 6480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This library was specified with -dlopen. 6483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = dlopen; then 6484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$libdir"; then 6485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 6486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$dlname" || 6488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$dlopen_support" != yes || 6489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_libtool_libs" = no; then 6490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If there is no dlname, no dlopen support or we're linking 6491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # statically, we need to preload. We also need to preload any 6492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # dependent libraries so libltdl's deplib preloader doesn't 6493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # bomb out in the load deplibs phase. 6494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlprefiles " $lib $dependency_libs" 6495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlfiles " $lib" 6497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $pass = dlopen 6500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need an absolute path. 6502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $ladir in 6503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 6504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats abs_ladir=`cd "$ladir" && pwd` 6506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$abs_ladir"; then 6507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "cannot determine absolute directory name of \`$ladir'" 6508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "passing it literally to the linker, although it might fail" 6509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats abs_ladir="$ladir" 6510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$lib" 6514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats laname="$func_basename_result" 6515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Find the relevant object directory and library name. 6517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$installed" = Xyes; then 6518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "library \`$lib' was moved." 6520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$ladir" 6521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir="$abs_ladir" 6522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir="$abs_ladir" 6523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$lt_sysroot$libdir" 6525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir="$lt_sysroot$libdir" 6526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 6528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 6530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$ladir" 6531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir="$abs_ladir" 6532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove this search path later 6533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append notinst_path " $abs_ladir" 6534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$ladir/$objdir" 6536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir="$abs_ladir/$objdir" 6537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove this search path later 6538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append notinst_path " $abs_ladir" 6539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $installed = yes 6541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname 'lib' '.la' "$laname" 6542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 6543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This library was specified with -dlpreopen. 6545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = dlpreopen; then 6546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$libdir" && test "$linkmode" = prog; then 6547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 6548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$host" in 6550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # special handling for platforms with PE-DLLs. 6551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *cegcc* ) 6552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Linker will automatically link against shared library if both 6553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # static and shared are present. Therefore, ensure we extract 6554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # symbols from the import library if a shared library is present 6555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # (otherwise, the dlopen module name will be incorrect). We do 6556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # this by putting the import library name into $newdlprefiles. 6557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We recover the dlopen module name by 'saving' the la file 6558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # name in a special purpose variable, and (later) extracting the 6559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # dlname from the la file. 6560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlname"; then 6561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_tr_sh "$dir/$linklib" 6562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 6563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $dir/$linklib" 6564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $dir/$old_library" 6566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Keep a list of preopened convenience libraries to check 6567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # that they are being used correctly in the link pass. 6568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libdir" && \ 6569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlpreconveniencelibs " $dir/$old_library" 6570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * ) 6573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prefer using a static library (so that no silly _DYNAMIC symbols 6574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # are required to link). 6575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$old_library"; then 6576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $dir/$old_library" 6577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Keep a list of preopened convenience libraries to check 6578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # that they are being used correctly in the link pass. 6579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libdir" && \ 6580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dlpreconveniencelibs " $dir/$old_library" 6581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Otherwise, use the dlname, so that lt_dlopen finds it. 6582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$dlname"; then 6583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $dir/$dlname" 6584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $dir/$linklib" 6586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $pass = dlpreopen 6590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$libdir"; then 6592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Link the convenience library 6593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib; then 6594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$dir/$old_library $deplibs" 6595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$linkmode,$pass" = "prog,link"; then 6596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$dir/$old_library $compile_deplibs" 6597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$dir/$old_library $finalize_deplibs" 6598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$lib $deplibs" # used for prog,scan pass 6600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog && test "$pass" != link; then 6606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newlib_search_path " $ladir" 6607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$lib $deplibs" 6608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linkalldeplibs=no 6610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$link_all_deplibs" != no || test -z "$library_names" || 6611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_libtool_libs" = no; then 6612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linkalldeplibs=yes 6613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_libs= 6616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $dependency_libs; do 6617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 6618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) func_stripname '-L' '' "$deplib" 6619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$func_stripname_result" 6620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newlib_search_path " $func_resolve_sysroot_result" 6621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Need to link against all dependency_libs? 6624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkalldeplibs" = yes; then 6625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 6626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Need to hardcode shared library paths 6628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # or/and link against static libraries 6629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdependency_libs="$deplib $newdependency_libs" 6630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_preserve_dup_deps ; then 6632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$tmp_libs " in 6633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) func_append specialdeplibs " $deplib" ;; 6634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append tmp_libs " $deplib" 6637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # for deplib 6638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $linkmode = prog... 6640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" = "prog,link"; then 6642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$library_names" && 6643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { { test "$prefer_static_libs" = no || 6644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$prefer_static_libs,$installed" = "built,yes"; } || 6645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$old_library"; }; then 6646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need to hardcode the library path 6647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 6648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure the rpath contains only unique directories. 6649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$temp_rpath:" in 6650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *"$absdir:"*) ;; 6651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append temp_rpath "$absdir:" ;; 6652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Hardcode the library path. 6656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Skip directories that are in the system default run-time 6657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # search path. 6658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $sys_lib_dlsearch_path " in 6659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $absdir "*) ;; 6660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$compile_rpath " in 6662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $absdir "*) ;; 6663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append compile_rpath " $absdir" ;; 6664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $sys_lib_dlsearch_path " in 6668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 6669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$finalize_rpath " in 6671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 6672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_rpath " $libdir" ;; 6673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # $linkmode,$pass = prog,link... 6677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$alldeplibs" = yes && 6679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test "$deplibs_check_method" = pass_all || 6680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test "$build_libtool_libs" = yes && 6681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$library_names"; }; }; then 6682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We only need to search for static libraries 6683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 6684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_static=no # Whether the deplib will be linked statically 6688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats use_static_libs=$prefer_static_libs 6689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$use_static_libs" = built && test "$installed" = yes; then 6690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats use_static_libs=no 6691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$library_names" && 6693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test "$use_static_libs" = no || test -z "$old_library"; }; then 6694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 6695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* | *cegcc*) 6696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # No point in relinking DLLs because paths are not encoded 6697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append notinst_deplibs " $lib" 6698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats need_relink=no 6699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$installed" = no; then 6702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append notinst_deplibs " $lib" 6703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats need_relink=yes 6704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This is a shared library 6708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Warn about portability, can't link against -module's on some 6710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # systems (darwin). Don't bleat about dlopened modules though! 6711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopenmodule="" 6712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dlpremoduletest in $dlprefiles; do 6713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$dlpremoduletest" = "X$lib"; then 6714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlopenmodule="$dlpremoduletest" 6715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 6716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 6718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 6719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 6720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog; then 6721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: Linking the executable $output against the loadable module" 6722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: Linking the shared library $output against the loadable module" 6724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** $linklib is not portable!" 6726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib && 6728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$hardcode_into_libs" = yes; then 6729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Hardcode the library path. 6730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Skip directories that are in the system default run-time 6731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # search path. 6732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $sys_lib_dlsearch_path " in 6733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $absdir "*) ;; 6734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$compile_rpath " in 6736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $absdir "*) ;; 6737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append compile_rpath " $absdir" ;; 6738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $sys_lib_dlsearch_path " in 6742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 6743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 6744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$finalize_rpath " in 6745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 6746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_rpath " $libdir" ;; 6747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$old_archive_from_expsyms_cmds"; then 6753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # figure out the soname 6754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $library_names 6755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 6756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats realname="$1" 6757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 6758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=`eval "\\$ECHO \"$libname_spec\""` 6759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # use dlname if we got it. it's perfectly good, no? 6760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlname"; then 6761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats soname="$dlname" 6762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$soname_spec"; then 6763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # bleh windows 6764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 6765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | mingw* | *cegcc*) 6766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age 6767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=$func_arith_result 6768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix="-$major" 6769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval soname=\"$soname_spec\" 6772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats soname="$realname" 6774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make a new name for the extract_expsyms_cmds to use 6777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats soroot="$soname" 6778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$soroot" 6779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats soname="$func_basename_result" 6780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname 'lib' '.dll' "$soname" 6781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newlib=libimp-$func_stripname_result.a 6782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the library has no export list, then create one now 6784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$output_objdir/$soname-def"; then : 6785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "extracting exported symbol list from \`$soname'" 6787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 6788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Create $newlib 6791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$output_objdir/$newlib"; then :; else 6792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "generating import library for \`$soname'" 6793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 6794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # make sure the library variables are pointing to the new library 6796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir=$output_objdir 6797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linklib=$newlib 6798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # test -n "$old_archive_from_expsyms_cmds" 6799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog || test "$opt_mode" != relink; then 6801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_shlibpath= 6802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_dir= 6803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add= 6804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib_linked=yes 6805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $hardcode_action in 6806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats immediate | unsupported) 6807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_direct" = no; then 6808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$dir/$linklib" 6809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 6810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 6811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sysv4*uw2*) add_dir="-L$dir" ;; 6812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 6813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-unixware7*) add_dir="-L$dir" ;; 6814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-darwin* ) 6815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # if the lib is a (non-dlopened) module then we can not 6816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # link against it, someone is ignoring the earlier warnings 6817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if /usr/bin/file -L $add 2> /dev/null | 6818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $GREP ": [^:]* bundle" >/dev/null ; then 6819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$dlopenmodule" != "X$lib"; then 6820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: lib $linklib is a module, not a shared library" 6821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$old_library" ; then 6822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 6823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** And there doesn't seem to be a static archive available" 6824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** The link will probably fail, sorry" 6825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$dir/$old_library" 6827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$old_library"; then 6829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$dir/$old_library" 6830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_minus_L" = no; then 6834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 6835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sunos*) add_shlibpath="$dir" ;; 6836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_dir="-L$dir" 6838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_shlibpath_var" = no; then 6840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_shlibpath="$dir" 6841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib_linked=no 6844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink) 6847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_direct" = yes && 6848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$hardcode_direct_absolute" = no; then 6849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$dir/$linklib" 6850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_minus_L" = yes; then 6851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_dir="-L$absdir" 6852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Try looking first in the location we're being installed to. 6853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$inst_prefix_dir"; then 6854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $libdir in 6855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]*) 6856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append add_dir " -L$inst_prefix_dir$libdir" 6857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_shlibpath_var" = yes; then 6862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_shlibpath="$dir" 6863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib_linked=no 6866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) lib_linked=no ;; 6869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$lib_linked" != yes; then 6872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_configuration "unsupported hardcode properties" 6873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$add_shlibpath"; then 6876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$compile_shlibpath: in 6877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$add_shlibpath:"*) ;; 6878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append compile_shlibpath "$add_shlibpath:" ;; 6879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog; then 6882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 6883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add" && compile_deplibs="$add $compile_deplibs" 6884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add_dir" && deplibs="$add_dir $deplibs" 6886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add" && deplibs="$add $deplibs" 6887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_direct" != yes && 6888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$hardcode_minus_L" != yes && 6889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$hardcode_shlibpath_var" = yes; then 6890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$finalize_shlibpath: in 6891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$libdir:"*) ;; 6892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_shlibpath "$libdir:" ;; 6893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog || test "$opt_mode" = relink; then 6899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_shlibpath= 6900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_dir= 6901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add= 6902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Finalize command for both is simple: just hardcode it. 6903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_direct" = yes && 6904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$hardcode_direct_absolute" = no; then 6905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$libdir/$linklib" 6906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_minus_L" = yes; then 6907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_dir="-L$libdir" 6908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_shlibpath_var" = yes; then 6910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$finalize_shlibpath: in 6911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$libdir:"*) ;; 6912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_shlibpath "$libdir:" ;; 6913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$hardcode_automatic" = yes; then 6916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$inst_prefix_dir" && 6917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -f "$inst_prefix_dir$libdir/$linklib" ; then 6918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$inst_prefix_dir$libdir/$linklib" 6919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="$libdir/$linklib" 6921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We cannot seem to hardcode it, guess we'll fake it. 6924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add_dir="-L$libdir" 6925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Try looking first in the location we're being installed to. 6926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$inst_prefix_dir"; then 6927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $libdir in 6928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]*) 6929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append add_dir " -L$inst_prefix_dir$libdir" 6930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 6931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 6932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats add="-l$name" 6934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog; then 6937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 6938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 6939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add_dir" && deplibs="$add_dir $deplibs" 6941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$add" && deplibs="$add $deplibs" 6942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$linkmode" = prog; then 6945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Here we assume that one of hardcode_direct or hardcode_minus_L 6946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # is not unsupported. This is valid on all known static and 6947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # shared platforms. 6948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_direct" != unsupported; then 6949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$old_library" && linklib="$old_library" 6950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$dir/$linklib $compile_deplibs" 6951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$dir/$linklib $finalize_deplibs" 6952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="-l$name -L$dir $compile_deplibs" 6954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="-l$name -L$dir $finalize_deplibs" 6955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$build_libtool_libs" = yes; then 6957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Not a shared library 6958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$deplibs_check_method" != pass_all; then 6959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We're trying link a shared library against a static one 6960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # but the system doesn't support it. 6961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just print a warning and add the library to dependency_libs so 6963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # that the program can be linked against the static library. 6964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 6965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: This system can not link to static lib archive $lib." 6966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** I have the capability to make that library automatically link in when" 6967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** you link to this library. But I can only do this if you have a" 6968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** shared version of the library, which you do not appear to have." 6969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$module" = yes; then 6970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** But as you try to build a module library, libtool will still create " 6971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** a static module, that should work as long as the dlopening application" 6972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 6973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$global_symbol_pipe"; then 6974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 6975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** However, this would only work if libtool was able to extract symbol" 6976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 6977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** not find such a program. So, this module is probably useless." 6978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** \`nm' from GNU binutils and a full rebuild may help." 6979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = no; then 6981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=module 6982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 6983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 6985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 6988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$dir/$old_library $deplibs" 6989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_static=yes 6990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 6991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # link shared/static library? 6992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 6993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = lib; then 6994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dependency_libs" && 6995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test "$hardcode_into_libs" != yes || 6996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_old_libs" = yes || 6997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$link_static" = yes; }; then 6998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Extract -R from dependency_libs 6999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats temp_deplibs= 7000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $dependency_libs; do 7001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $libdir in 7002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R*) func_stripname '-R' '' "$libdir" 7003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats temp_xrpath=$func_stripname_result 7004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $xrpath " in 7005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $temp_xrpath "*) ;; 7006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append xrpath " $temp_xrpath";; 7007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac;; 7008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append temp_deplibs " $libdir";; 7009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs="$temp_deplibs" 7012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newlib_search_path " $absdir" 7015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Link against this library 7016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 7017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # ... and its dependency_libs 7018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_libs= 7019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $dependency_libs; do 7020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdependency_libs="$deplib $newdependency_libs" 7021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 7022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) func_stripname '-L' '' "$deplib" 7023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$func_stripname_result";; 7024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_resolve_sysroot "$deplib" ;; 7025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $opt_preserve_dup_deps ; then 7027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$tmp_libs " in 7028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $func_resolve_sysroot_result "*) 7029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append specialdeplibs " $func_resolve_sysroot_result" ;; 7030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append tmp_libs " $func_resolve_sysroot_result" 7033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$link_all_deplibs" != no; then 7036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add the search paths of all dependency libraries 7037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $dependency_libs; do 7038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats path= 7039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 7040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) path="$deplib" ;; 7041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 7042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$deplib" 7043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplib=$func_resolve_sysroot_result 7044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$deplib" "" "." 7045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir=$func_dirname_result 7046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We need an absolute path. 7047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $dir in 7048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 7049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir=`cd "$dir" && pwd` 7051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$absdir"; then 7052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "cannot determine absolute directory name of \`$dir'" 7053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats absdir="$dir" 7054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $GREP "^installed=no" $deplib > /dev/null; then 7058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 7059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-darwin*) 7060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats depdepl= 7061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 7062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$deplibrary_names" ; then 7063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for tmp in $deplibrary_names ; do 7064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats depdepl=$tmp 7065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$absdir/$objdir/$depdepl" ; then 7067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats depdepl="$absdir/$objdir/$depdepl" 7068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$darwin_install_name"; then 7070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 7071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 7073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 7074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats path= 7075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats path="-L$absdir/$objdir" 7080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 7084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libdir" && \ 7085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$deplib' is not a valid libtool archive" 7086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$absdir" != "$libdir" && \ 7087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`$deplib' seems to be moved" 7088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats path="-L$absdir" 7090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $deplibs " in 7094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $path "*) ;; 7095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) deplibs="$path $deplibs" ;; 7096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # link_all_deplibs != no 7099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi # linkmode = lib 7100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # for deplib in $libs 7101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = link; then 7102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = "prog"; then 7103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 7104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 7105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 7107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs="$newdependency_libs" 7110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" = dlpreopen; then 7111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Link the dlpreopened libraries before other libraries 7112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $save_deplibs; do 7113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$deplib $deplibs" 7114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" != dlopen; then 7117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$pass" != conv; then 7118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure lib_search_path contains only unique directories. 7119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib_search_path= 7120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dir in $newlib_search_path; do 7121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$lib_search_path " in 7122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $dir "*) ;; 7123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append lib_search_path " $dir" ;; 7124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newlib_search_path= 7127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode,$pass" != "prog,link"; then 7130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats vars="deplibs" 7131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats vars="compile_deplibs finalize_deplibs" 7133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for var in $vars dependency_libs; do 7135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add libraries to $var in reverse order 7136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval tmp_libs=\"\$$var\" 7137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_libs= 7138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $tmp_libs; do 7139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: Pedantically, this is the right thing to do, so 7140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # that some nasty dependency loop isn't accidentally 7141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # broken: 7142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats #new_libs="$deplib $new_libs" 7143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Pragmatically, this seems to cause very few problems in 7144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # practice: 7145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 7146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) new_libs="$deplib $new_libs" ;; 7147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R*) ;; 7148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # And here is the reason: when a library appears more 7150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # than once as an explicit dependence of a library, or 7151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # is implicitly linked in more than once by the 7152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # compiler, it is considered special, and multiple 7153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # occurrences thereof are not removed. Compare this 7154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # with having the same library being listed as a 7155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # dependency of multiple other libraries: in this case, 7156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # we know (pedantically, we assume) the library does not 7157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # need to be listed more than once, so we keep only the 7158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # last copy. This is not always right, but it is rare 7159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # enough that we require users that really mean to play 7160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # such unportable linking tricks to link the library 7161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # using -Wl,-lname, so that libtool does not consider it 7162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # for duplicate removal. 7163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $specialdeplibs " in 7164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) new_libs="$deplib $new_libs" ;; 7165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $new_libs " in 7167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 7168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) new_libs="$deplib $new_libs" ;; 7169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_libs= 7176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $new_libs; do 7177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 7178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) 7179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $tmp_libs " in 7180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 7181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append tmp_libs " $deplib" ;; 7182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append tmp_libs " $deplib" ;; 7185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval $var=\"$tmp_libs\" 7188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # for var 7189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Last step: remove runtime libs from dependency_libs 7191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # (they stay in deplibs) 7192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_libs= 7193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for i in $dependency_libs ; do 7194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $predeps $postdeps $compiler_lib_search_path " in 7195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $i "*) 7196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats i="" 7197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$i" ; then 7200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append tmp_libs " $i" 7201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs=$tmp_libs 7204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # for pass 7205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog; then 7206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlfiles="$newdlfiles" 7207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$linkmode" = prog || test "$linkmode" = lib; then 7209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefiles="$newdlprefiles" 7210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $linkmode in 7213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlib) 7214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 7215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-dlopen' is ignored for archives" 7216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $deplibs" in 7219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *\ -l* | *\ -L*) 7220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-l' and \`-L' are ignored for archives" ;; 7221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$rpath" && \ 7224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-rpath' is ignored for archives" 7225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$xrpath" && \ 7227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-R' is ignored for archives" 7228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$vinfo" && \ 7230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-version-info/-version-number' is ignored for archives" 7231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$release" && \ 7233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-release' is ignored for archives" 7234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$export_symbols$export_symbols_regex" && \ 7236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-export-symbols' is ignored for archives" 7237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now set the variables for building old libraries. 7239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 7240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlibs="$output" 7241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append objs "$old_deplibs" 7242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib) 7245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure we only generate libraries of the form `libNAME.la'. 7246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $outputname in 7247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib*) 7248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname 'lib' '.la' "$outputname" 7249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 7250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval shared_ext=\"$shrext_cmds\" 7251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libname=\"$libname_spec\" 7252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$module" = no && \ 7255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "libtool library \`$output' must begin with \`lib'" 7256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_lib_prefix" != no; then 7258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add the "lib" prefix for modules if required 7259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.la' "$outputname" 7260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 7261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval shared_ext=\"$shrext_cmds\" 7262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libname=\"$libname_spec\" 7263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.la' "$outputname" 7265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=$func_stripname_result 7266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$objs"; then 7271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$deplibs_check_method" != pass_all; then 7272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 7273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 7276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** objects $objs is not portable!" 7277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $objs" 7278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$dlself" != no && \ 7282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-dlopen self' is ignored for libtool libraries" 7283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $rpath 7285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 7286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$#" -gt 1 && \ 7287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "ignoring multiple \`-rpath's for a libtool library" 7288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats install_libdir="$1" 7290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlibs= 7292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$rpath"; then 7293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes; then 7294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Building a libtool convenience library. 7295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Some compilers have problems with a `.al' extension so 7296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # convenience libraries should have the same extension an 7297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # archive normally would. 7298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlibs="$output_objdir/$libname.$libext $oldlibs" 7299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=convenience 7300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 7301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$vinfo" && \ 7304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 7305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$release" && \ 7307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-release' is ignored for convenience libraries" 7308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Parse the version information argument. 7311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS=':' 7312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $vinfo 0 0 0 7313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 7314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 7315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$7" && \ 7317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "too many parameters to \`-version-info'" 7318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # convert absolute version numbers to libtool ages 7320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # this retains compatibility with .la files and attempts 7321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # to make the code below a bit more comprehensible 7322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $vinfo_number in 7324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats yes) 7325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats number_major="$1" 7326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats number_minor="$2" 7327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats number_revision="$3" 7328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 7329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # There are really only two kinds -- those that 7330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # use the current revision as the major version 7331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and those that subtract age and use age as 7332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # a minor version. But, then there is irix 7333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # which has an extra 1 added just for fun 7334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 7335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $version_type in 7336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # correct linux to gnu/linux during the next big refactor 7337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin|linux|osf|windows|none) 7338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $number_major + $number_minor 7339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats current=$func_arith_result 7340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats age="$number_minor" 7341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats revision="$number_revision" 7342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats freebsd-aout|freebsd-elf|qnx|sunos) 7344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats current="$number_major" 7345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats revision="$number_minor" 7346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats age="0" 7347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats irix|nonstopux) 7349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $number_major + $number_minor 7350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats current=$func_arith_result 7351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats age="$number_minor" 7352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats revision="$number_minor" 7353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_irix_increment=no 7354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_configuration "$modename: unknown library version type \`$version_type'" 7357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats no) 7361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats current="$1" 7362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats revision="$2" 7363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats age="$3" 7364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check that each of the things are valid numbers. 7368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $current in 7369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 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]) ;; 7370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "CURRENT \`$current' must be a nonnegative integer" 7372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$vinfo' is not valid version information" 7373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $revision in 7377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 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]) ;; 7378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "REVISION \`$revision' must be a nonnegative integer" 7380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$vinfo' is not valid version information" 7381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $age in 7385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 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]) ;; 7386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "AGE \`$age' must be a nonnegative integer" 7388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$vinfo' is not valid version information" 7389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$age" -gt "$current"; then 7393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_error "AGE \`$age' is greater than the current interface number \`$current'" 7394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$vinfo' is not valid version information" 7395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Calculate the version variables. 7398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major= 7399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix= 7400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring= 7401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $version_type in 7402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats none) ;; 7403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin) 7405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Like Linux, but with the current version available in 7406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # verstring for coding it into the library header 7407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age 7408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=.$func_arith_result 7409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix="$major.$age.$revision" 7410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Darwin ld doesn't like 0 for these options... 7411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current + 1 7412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats minor_current=$func_arith_result 7413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 7414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 7415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats freebsd-aout) 7418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=".$current" 7419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=".$current.$revision"; 7420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats freebsd-elf) 7423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=".$current" 7424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=".$current" 7425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats irix | nonstopux) 7428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$lt_irix_increment" = "Xno"; then 7429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age 7430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age + 1 7432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=$func_arith_result 7434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $version_type in 7436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats nonstopux) verstring_prefix=nonstopux ;; 7437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) verstring_prefix=sgi ;; 7438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="$verstring_prefix$major.$revision" 7440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add in all the interfaces that we are compatible with. 7442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats loop=$revision 7443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test "$loop" -ne 0; do 7444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $revision - $loop 7445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats iface=$func_arith_result 7446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $loop - 1 7447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats loop=$func_arith_result 7448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="$verstring_prefix$major.$iface:$verstring" 7449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Before this point, $major must not contain `.'. 7452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=.$major 7453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix="$major.$revision" 7454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linux) # correct to gnu/linux during the next big refactor 7457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age 7458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=.$func_arith_result 7459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix="$major.$age.$revision" 7460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats osf) 7463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age 7464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=.$func_arith_result 7465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=".$current.$age.$revision" 7466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="$current.$age.$revision" 7467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add in all the interfaces that we are compatible with. 7469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats loop=$age 7470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test "$loop" -ne 0; do 7471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $loop 7472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats iface=$func_arith_result 7473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $loop - 1 7474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats loop=$func_arith_result 7475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="$verstring:${iface}.0" 7476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make executables depend on our current version. 7479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append verstring ":${current}.0" 7480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats qnx) 7483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=".$current" 7484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=".$current" 7485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats sunos) 7488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=".$current" 7489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=".$current.$revision" 7490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats windows) 7493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Use '-' rather than '.', since we only want one 7494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # extension on DOS 8.3 filesystems. 7495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $current - $age 7496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=$func_arith_result 7497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix="-$major" 7498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_configuration "unknown library version type \`$version_type'" 7502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Clear the version info if we defaulted, and they specified a release. 7506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$vinfo" && test -n "$release"; then 7507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major= 7508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $version_type in 7509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats darwin) 7510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # we can't check for "0.0" in archive_cmds due to quoting 7511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # problems, so we reset it completely 7512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring= 7513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="0.0" 7516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_version" = no; then 7519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix= 7520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=".0.0" 7522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove version info from name if versioning should be avoided 7526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$avoid_version" = yes && test "$need_version" = no; then 7527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major= 7528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix= 7529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats verstring="" 7530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Check to see if the archive will have undefined symbols. 7533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$allow_undefined" = yes; then 7534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$allow_undefined_flag" = unsupported; then 7535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "undefined symbols not allowed in $host shared libraries" 7536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 7537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 7538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't allow undefined symbols. 7541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats allow_undefined_flag="$no_undefined_flag" 7542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_generate_dlsyms "$libname" "$libname" "yes" 7547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $symfileobj" 7548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobjs" = "X " && libobjs= 7549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" != relink; then 7551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove our outputs, but don't remove object files since they 7552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # may have been created when compiling PIC objects. 7553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats removelist= 7554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tempremovelist=`$ECHO "$output_objdir/*"` 7555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for p in $tempremovelist; do 7556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $p in 7557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.$objext | *.gcno) 7558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 7560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$precious_files_regex" != "X"; then 7561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 7562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats then 7563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 7564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append removelist " $p" 7567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) ;; 7569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$removelist" && \ 7572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "${RM}r \$removelist" 7573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now set the variables for building old libraries. 7576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 7577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append oldlibs " $output_objdir/$libname.$libext" 7578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Transform .lo files to .o files. 7580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 7581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Eliminate all temporary directories. 7584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats #for path in $notinst_path; do 7585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 7586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 7587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 7588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats #done 7589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$xrpath"; then 7591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the user specified any rpath flags, then add them. 7592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats temp_xrpath= 7593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $xrpath; do 7594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_replace_sysroot "$libdir" 7595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append temp_xrpath " -R$func_replace_sysroot_result" 7596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$finalize_rpath " in 7597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 7598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_rpath " $libdir" ;; 7599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 7602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs="$temp_xrpath $dependency_libs" 7603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure dlfiles contains only unique files that won't be dlpreopened 7607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_dlfiles="$dlfiles" 7608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlfiles= 7609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $old_dlfiles; do 7610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $dlprefiles $dlfiles " in 7611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $lib "*) ;; 7612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append dlfiles " $lib" ;; 7613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure dlprefiles contains only unique files 7617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_dlprefiles="$dlprefiles" 7618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefiles= 7619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $old_dlprefiles; do 7620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$dlprefiles " in 7621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $lib "*) ;; 7622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append dlprefiles " $lib" ;; 7623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes; then 7627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$rpath"; then 7628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 7629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 7630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # these systems don't actually have a c library (as such)! 7631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-rhapsody* | *-*-darwin1.[012]) 7633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Rhapsody C library is in the System framework 7634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append deplibs " System.ltframework" 7635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-netbsd*) 7637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't link with libc until the a.out ld.so is fixed. 7638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 7640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do not include libc due to us having libc/libc_r. 7641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sco3.2v5* | *-*-sco5v6*) 7643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Causes problems with __ctype 7644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 7646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Compiler inserts libc in the correct place for threads to work 7647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add libc to deplibs on all other systems if necessary. 7650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_need_lc" = "yes"; then 7651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append deplibs " -lc" 7652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Transform deplibs into only deplibs that can be linked in shared. 7658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name_save=$name 7659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname_save=$libname 7660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats release_save=$release 7661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix_save=$versuffix 7662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major_save=$major 7663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # I'm not sure if I'm treating the release correctly. I think 7664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # release should show up in the -l (ie -lgmp5) so we don't want to 7665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # add it in twice. Is that correct? 7666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats release="" 7667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix="" 7668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major="" 7669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdeplibs= 7670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=no 7671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplibs_check_method in 7672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats pass_all) 7673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't check for shared/static. Everything works. 7674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This might be a little naive. We might want to check 7675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # whether the library exists or not. But this is on 7676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # osf3 & osf4 and I'm not really sure... Just 7677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # implementing what was already the behavior. 7678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdeplibs=$deplibs 7679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test_compile) 7681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This code stresses the "libraries are programs" paradigm to its 7682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # limits. Maybe even breaks it. We compile a program, linking it 7683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # against the deplibs as a proxy for the library. Then we can check 7684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # whether they linked in statically or dynamically with ldd. 7685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM conftest.c 7686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cat > conftest.c <<EOF 7687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats int main() { return 0; } 7688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik StaatsEOF 7689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM conftest 7690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 7691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ldd_output=`ldd conftest` 7692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for i in $deplibs; do 7693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $i in 7694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -l*) 7695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname -l '' "$i" 7696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 7697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $predeps $postdeps " in 7699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $i "*) 7700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $i" 7701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats i="" 7702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$i" ; then 7706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=`eval "\\$ECHO \"$libname_spec\""` 7707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $deplib_matches; shift 7709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplib_match=$1 7710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $i" 7712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=yes 7714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** I have the capability to make that library automatically link in when" 7717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** you link to this library. But I can only do this if you have a" 7718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** shared version of the library, which I believe you do not have" 7719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** because a test_compile did reveal that the linker did not use it for" 7720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** its dynamic dependency list that programs get resolved with at runtime." 7721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $i" 7726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Error occurred in the first compile. Let's try to salvage 7731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the situation: Compile a separate program for each library. 7732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for i in $deplibs; do 7733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $i in 7734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -l*) 7735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname -l '' "$i" 7736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 7737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM conftest 7738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 7739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ldd_output=`ldd conftest` 7740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $predeps $postdeps " in 7742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $i "*) 7743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $i" 7744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats i="" 7745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$i" ; then 7749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=`eval "\\$ECHO \"$libname_spec\""` 7750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 7751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $deplib_matches; shift 7752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplib_match=$1 7753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 7754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $i" 7755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=yes 7757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: dynamic linker does not accept needed library $i." 7759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** I have the capability to make that library automatically link in when" 7760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** you link to this library. But I can only do this if you have a" 7761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** shared version of the library, which you do not appear to have" 7762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** because a test_compile did reveal that the linker did not use this one" 7763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** as a dynamic dependency that programs can get resolved with at runtime." 7764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=yes 7768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 7770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** make it link in! You will probably need to install it or some" 7771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** library that it depends on before this library will be fully" 7772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** functional. Installing it before continuing would be even better." 7773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $i" 7777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file_magic*) 7783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $deplibs_check_method; shift 7784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for a_deplib in $deplibs; do 7786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $a_deplib in 7787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -l*) 7788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname -l '' "$a_deplib" 7789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 7790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $predeps $postdeps " in 7792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $a_deplib "*) 7793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $a_deplib" 7794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats a_deplib="" 7795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$a_deplib" ; then 7799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=`eval "\\$ECHO \"$libname_spec\""` 7800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$file_magic_glob"; then 7801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 7802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libnameglob=$libname 7804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 7806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$want_nocaseglob" = yes; then 7808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shopt -s nocaseglob 7809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $nocaseglob 7811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 7813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for potent_lib in $potential_libs; do 7815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Follow soft links. 7816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ls -lLd "$potent_lib" 2>/dev/null | 7817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $GREP " -> " >/dev/null; then 7818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 7819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The statement above tries to avoid entering an 7821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # endless loop below, in case of cyclic links. 7822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We might still enter an endless loop, since a link 7823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # loop can be closed while we follow links, 7824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # but so what? 7825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats potlib="$potent_lib" 7826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while test -h "$potlib" 2>/dev/null; do 7827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 7828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $potliblink in 7829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 7830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 7831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 7834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $SED -e 10q | 7835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $EGREP "$file_magic_regex" > /dev/null; then 7836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $a_deplib" 7837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats a_deplib="" 7838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 2 7839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$a_deplib" ; then 7844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=yes 7845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** I have the capability to make that library automatically link in when" 7848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** you link to this library. But I can only do this if you have a" 7849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** shared version of the library, which you do not appear to have" 7850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** because I did check the linker path looking for a file starting" 7851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$potlib" ; then 7852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 7853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** with $libname and none of the candidates passed a file format test" 7855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** using a file magic. Last file checked: $potlib" 7856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add a -L argument. 7861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $a_deplib" 7862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # Gone through all deplibs. 7865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats match_pattern*) 7867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $deplibs_check_method; shift 7868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 7869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for a_deplib in $deplibs; do 7870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $a_deplib in 7871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -l*) 7872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname -l '' "$a_deplib" 7873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$func_stripname_result 7874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $predeps $postdeps " in 7876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $a_deplib "*) 7877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $a_deplib" 7878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats a_deplib="" 7879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$a_deplib" ; then 7883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=`eval "\\$ECHO \"$libname_spec\""` 7884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 7885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 7886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for potent_lib in $potential_libs; do 7887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats potlib="$potent_lib" # see symlink-check above in file_magic test 7888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 7889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $EGREP "$match_pattern_regex" > /dev/null; then 7890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $a_deplib" 7891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats a_deplib="" 7892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 2 7893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$a_deplib" ; then 7898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=yes 7899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 7901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** I have the capability to make that library automatically link in when" 7902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** you link to this library. But I can only do this if you have a" 7903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** shared version of the library, which you do not appear to have" 7904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** because I did check the linker path looking for a file starting" 7905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$potlib" ; then 7906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 7907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** with $libname and none of the candidates passed a file format test" 7909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** using a regex pattern. Last file checked: $potlib" 7910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 7914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add a -L argument. 7915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdeplibs " $a_deplib" 7916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done # Gone through all deplibs. 7919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats none | unknown | *) 7921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdeplibs="" 7922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 7923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 7924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for i in $predeps $postdeps ; do 7925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # can't use Xsed below, because $i might contain '/' 7926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 7927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 7928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $tmp_deplibs in 7930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[!\ \ ]*) 7931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$deplibs_check_method" = "Xnone"; then 7933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** Warning: inter-library dependencies are not supported in this platform." 7934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** Warning: inter-library dependencies are not known to be supported." 7936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** All declared inter-library dependencies are being dropped." 7938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats droppeddeps=yes 7939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats versuffix=$versuffix_save 7944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats major=$major_save 7945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats release=$release_save 7946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libname=$libname_save 7947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name=$name_save 7948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 7950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-rhapsody* | *-*-darwin1.[012]) 7951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # On Rhapsody replace the C library with the System framework 7952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 7953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 7954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 7955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$droppeddeps" = yes; then 7957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$module" = yes; then 7958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** Warning: libtool could not satisfy all declared inter-library" 7960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 7961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** a static module, that should work as long as the dlopening" 7962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** application is linked with the -dlopen flag." 7963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$global_symbol_pipe"; then 7964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** However, this would only work if libtool was able to extract symbol" 7966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 7967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** not find such a program. So, this module is probably useless." 7968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** \`nm' from GNU binutils and a full rebuild may help." 7969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = no; then 7971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlibs="$output_objdir/$libname.$libext" 7972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=module 7973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 7974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 7976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** The inter-library dependencies that have been dropped here will be" 7979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** automatically added whenever a program is linked with this library" 7980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** or is declared to -dlopen it." 7981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 7982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$allow_undefined" = no; then 7983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 7984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** Since this library must not contain undefined symbols," 7985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** because either the platform does not support them or" 7986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** it was explicitly requested with -no-undefined," 7987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "*** libtool will only create a static version of it." 7988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_old_libs" = no; then 7989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldlibs="$output_objdir/$libname.$libext" 7990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=module 7991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_old_libs=yes 7992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 7993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 7994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 7998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Done checking deplibs! 7999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs=$newdeplibs 8000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 8003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-darwin*) 8004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # move library search paths that coincide with paths to not yet 8011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # installed libraries to the beginning of the library search list 8012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_libs= 8013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for path in $notinst_path; do 8014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $new_libs " in 8015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" -L$path/$objdir "*) ;; 8016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $deplibs " in 8018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" -L$path/$objdir "*) 8019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append new_libs " -L$path/$objdir" ;; 8020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $deplibs; do 8025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 8026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) 8027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $new_libs " in 8028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 8029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append new_libs " $deplib" ;; 8030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append new_libs " $deplib" ;; 8033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$new_libs" 8036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # All the library-specific variables (install_libdir is set above). 8038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats library_names= 8039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_library= 8040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlname= 8041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Test again, we may have decided not to build it any more 8043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = yes; then 8044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remove ${wl} instances when linking with ld. 8045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: should test the right _cmds variable. 8046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $archive_cmds in 8047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *\$LD\ *) wl= ;; 8048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_into_libs" = yes; then 8050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Hardcode the library paths 8051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats hardcode_libdirs= 8052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dep_rpath= 8053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath="$finalize_rpath" 8054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 8055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $rpath; do 8056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_flag_spec"; then 8057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_separator"; then 8058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_replace_sysroot "$libdir" 8059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir=$func_replace_sysroot_result 8060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$hardcode_libdirs"; then 8061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats hardcode_libdirs="$libdir" 8062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just accumulate the unique libdirs. 8064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval flag=\"$hardcode_libdir_flag_spec\" 8074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append dep_rpath " $flag" 8075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$runpath_var"; then 8077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$perm_rpath " in 8078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 8079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append perm_rpath " $libdir" ;; 8080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Substitute the hardcoded libdirs into the rpath. 8084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_separator" && 8085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$hardcode_libdirs"; then 8086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir="$hardcode_libdirs" 8087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 8088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$runpath_var" && test -n "$perm_rpath"; then 8090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We should set the runpath_var. 8091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath= 8092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dir in $perm_rpath; do 8093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rpath "$dir:" 8094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 8096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 8098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shlibpath="$finalize_shlibpath" 8101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 8102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$shlibpath"; then 8103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 8104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Get the real and link names of the library. 8107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval shared_ext=\"$shrext_cmds\" 8108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval library_names=\"$library_names_spec\" 8109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set dummy $library_names 8110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 8111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats realname="$1" 8112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 8113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$soname_spec"; then 8115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval soname=\"$soname_spec\" 8116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats soname="$realname" 8118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$dlname"; then 8120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlname=$soname 8121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lib="$output_objdir/$realname" 8124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats linknames= 8125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for link 8126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 8127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append linknames " $link" 8128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Use standard objects if they are pic 8131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 8132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobjs" = "X " && libobjs= 8133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats delfiles= 8135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$include_expsyms"; then 8136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 8137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols="$output_objdir/$libname.uexp" 8138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $export_symbols" 8139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats orig_export_symbols= 8142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host_os in 8143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cygwin* | mingw* | cegcc*) 8144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 8145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # exporting using user supplied symfile 8146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 8147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and it's NOT already a .def file. Must figure out 8148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # which of the given symbols are data symbols and tag 8149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # them as such. So, trigger use of export_symbols_cmds. 8150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # export_symbols gets reassigned inside the "prepare 8151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the list of exported symbols" if statement, so the 8152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # include_expsyms logic still works. 8153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats orig_export_symbols="$export_symbols" 8154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols= 8155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats always_export_symbols=yes 8156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Prepare the list of exported symbols 8162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$export_symbols"; then 8163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 8164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "generating symbol list for \`$libname.la'" 8165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols="$output_objdir/$libname.exp" 8166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $export_symbols 8167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$export_symbols_cmds 8168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS='~' 8169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for cmd1 in $cmds; do 8170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 8171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Take the normal branch if the nm_file_list_spec branch 8172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # doesn't work or if tool conversion is not needed. 8173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $nm_file_list_spec~$to_tool_file_cmd in 8174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 8175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats try_normal_branch=yes 8176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmd=\"$cmd1\" 8177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $cmd" 8178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$func_len_result 8179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats try_normal_branch=no 8182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$try_normal_branch" = yes \ 8185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && { test "$len" -lt "$max_cmd_len" \ 8186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats || test "$max_cmd_len" -le -1; } 8187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats then 8188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$cmd" 'exit $?' 8189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats skipped_export=false 8190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$nm_file_list_spec"; then 8191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$output" 8192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_la=$func_basename_result 8193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_libobjs=$libobjs 8194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_output=$output 8195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=${output_objdir}/${output_la}.nm 8196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output" 8197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobjs=$nm_file_list_spec$func_to_tool_file_result 8198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $output" 8199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating $NM input file list: $output" 8200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $save_libobjs; do 8201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$obj" 8202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$func_to_tool_file_result" 8203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done > "$output" 8204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmd=\"$cmd1\" 8205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$cmd" 'exit $?' 8206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$save_output 8207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobjs=$save_libobjs 8208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats skipped_export=false 8209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The command line is too long to execute in one step. 8211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "using reloadable object file for export list..." 8212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats skipped_export=: 8213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Break out early, otherwise skipped_export may be 8214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # set to false by a later but shorter cmd. 8215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 8216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 8219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 8220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$include_expsyms"; then 8227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_export_symbols="$export_symbols" 8228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 8233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The given exports_symbols file has to be filtered, so filter it. 8234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: $output_objdir/$libname.filter potentially contains lots of 8236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 's' commands which not all seds can handle. GNU sed should be fine 8237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # though. Also, the filter scales superlinearly with the number of 8238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # global variables. join(1) would be nice here, but unfortunately 8239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # isn't a blessed tool. 8240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols=$output_objdir/$libname.def 8243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_deplibs= 8247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for test_deplib in $deplibs; do 8248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $convenience " in 8249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $test_deplib "*) ;; 8250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append tmp_deplibs " $test_deplib" 8252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats deplibs="$tmp_deplibs" 8256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$convenience"; then 8258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$whole_archive_flag_spec" && 8259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$compiler_needs_object" = yes && 8260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libobjs"; then 8261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # extract the archives, so we have objects to list. 8262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # TODO: could optimize this to just extract one archive. 8263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats whole_archive_flag_spec= 8264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$whole_archive_flag_spec"; then 8266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_libobjs=$libobjs 8267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobjs" = "X " && libobjs= 8269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop="$output_objdir/${outputname}x" 8271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append generated " $gentop" 8272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_archives $gentop $convenience 8274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $func_extract_archives_result" 8275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobjs" = "X " && libobjs= 8276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 8280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval flag=\"$thread_safe_flag_spec\" 8281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append linker_flags " $flag" 8282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make a backup of the uninstalled library when relinking 8285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" = relink; then 8286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 8287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each of the archive commands. 8290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$module" = yes && test -n "$module_cmds" ; then 8291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval test_cmds=\"$module_expsym_cmds\" 8293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$module_expsym_cmds 8294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval test_cmds=\"$module_cmds\" 8296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$module_cmds 8297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval test_cmds=\"$archive_expsym_cmds\" 8301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$archive_expsym_cmds 8302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval test_cmds=\"$archive_cmds\" 8304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$archive_cmds 8305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$skipped_export" != "X:" && 8309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $test_cmds" && 8310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$func_len_result && 8311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 8312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 8313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The command line is too long to link in one step, link piecewise 8315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # or, if using GNU ld and skipped_export is not :, use a linker 8316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # script. 8317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Save the value of $output and $libobjs because we want to 8319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # use them later. If we have whole_archive_flag_spec, we 8320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # want to use save_libobjs as it was before 8321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # whole_archive_flag_spec was expanded, because we can't 8322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # assume the linker understands whole_archive_flag_spec. 8323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This may have to be revisited, in case too many 8324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # convenience libraries get linked in and end up exceeding 8325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the spec. 8326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 8327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_libobjs=$libobjs 8328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_output=$output 8330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$output" 8331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_la=$func_basename_result 8332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Clear the reloadable object creation command queue and 8334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # initialize k to one. 8335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test_cmds= 8336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_cmds= 8337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objlist= 8338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats last_robj= 8339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats k=1 8340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 8342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=${output_objdir}/${output_la}.lnkscript 8343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating GNU ld script: $output" 8344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo 'INPUT (' > $output 8345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $save_libobjs 8346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 8347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$obj" 8348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$func_to_tool_file_result" >> $output 8349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo ')' >> $output 8351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $output" 8352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output" 8353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$func_to_tool_file_result 8354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 8355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=${output_objdir}/${output_la}.lnk 8356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating linker input file list: $output" 8357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : > $output 8358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats set x $save_libobjs 8359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 8360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats firstobj= 8361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$compiler_needs_object" = yes; then 8362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats firstobj="$1 " 8363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats shift 8364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj 8366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 8367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$obj" 8368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$func_to_tool_file_result" >> $output 8369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $output" 8371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output" 8372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 8373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$save_libobjs"; then 8375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating reloadable object files..." 8376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$output_objdir/$output_la-${k}.$objext 8377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval test_cmds=\"$reload_cmds\" 8378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $test_cmds" 8379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len0=$func_len_result 8380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$len0 8381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Loop over the list of objects to be linked. 8383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $save_libobjs 8384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 8385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $obj" 8386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $len + $func_len_result 8387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$func_arith_result 8388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$objlist" = X || 8389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$len" -lt "$max_cmd_len"; then 8390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append objlist " $obj" 8391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The command $test_cmds is almost too long, add a 8393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # command to the queue. 8394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$k" -eq 1 ; then 8395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The first file doesn't have a previous command to add. 8396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_objs=$objlist 8397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"$reload_cmds\" 8398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # All subsequent reloadable object files will link in 8400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the last one created. 8401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_objs="$objlist $last_robj" 8402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 8403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats last_robj=$output_objdir/$output_la-${k}.$objext 8405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $k + 1 8406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats k=$func_arith_result 8407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$output_objdir/$output_la-${k}.$objext 8408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objlist=" $obj" 8409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $last_robj" 8410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $len0 + $func_len_result 8411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$func_arith_result 8412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Handle the remaining objects by creating one last 8415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # reloadable object file. All subsequent reloadable object 8416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # files will link in the last one created. 8417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_objs="$objlist $last_robj" 8419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 8420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$last_robj"; then 8421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 8422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $output" 8424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output= 8427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ${skipped_export-false}; then 8430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "generating symbol list for \`$libname.la'" 8431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols="$output_objdir/$libname.exp" 8432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $export_symbols 8433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobjs=$output 8434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Append the command to create the export file. 8435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 8436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 8437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$last_robj"; then 8438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 8439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$save_libobjs" && 8443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating a temporary reloadable object file: $output" 8444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Loop through the commands generated above and execute them. 8446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS='~' 8447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for cmd in $concat_cmds; do 8448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 8449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_silent || { 8450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_expand "$cmd" 8451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "func_echo $func_quote_for_expand_result" 8452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 8453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval "$cmd" || { 8454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_exit=$? 8455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Restore the uninstalled library and exit 8457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" = relink; then 8458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ( cd "$output_objdir" && \ 8459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM "${realname}T" && \ 8460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MV "${realname}U" "$realname" ) 8461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $lt_exit 8464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 8465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 8467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols_regex" && ${skipped_export-false}; then 8469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 8470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 8471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if ${skipped_export-false}; then 8475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$include_expsyms"; then 8476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tmp_export_symbols="$export_symbols" 8477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 8478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 8479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$orig_export_symbols"; then 8482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The given exports_symbols file has to be filtered, so filter it. 8483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 8484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: $output_objdir/$libname.filter potentially contains lots of 8485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # 's' commands which not all seds can handle. GNU sed should be fine 8486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # though. Also, the filter scales superlinearly with the number of 8487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # global variables. join(1) would be nice here, but unfortunately 8488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # isn't a blessed tool. 8489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 8490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append delfiles " $export_symbols $output_objdir/$libname.filter" 8491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats export_symbols=$output_objdir/$libname.def 8492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 8493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobjs=$output 8497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Restore the value of output. 8498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$save_output 8499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 8501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 8502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobjs" = "X " && libobjs= 8503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Expand the library linking commands again to reset the 8505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # value of $libobjs for piecewise linking. 8506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each of the archive commands. 8508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$module" = yes && test -n "$module_cmds" ; then 8509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 8510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$module_expsym_cmds 8511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$module_cmds 8513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 8516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$archive_expsym_cmds 8517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$archive_cmds 8519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$delfiles"; then 8524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Append the command to remove temporary files to $cmds. 8525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmds=\"\$cmds~\$RM $delfiles\" 8526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add any objects from preloaded convenience libraries 8529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlprefiles"; then 8530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop="$output_objdir/${outputname}x" 8531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append generated " $gentop" 8532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_archives $gentop $dlprefiles 8534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append libobjs " $func_extract_archives_result" 8535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "X$libobjs" = "X " && libobjs= 8536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_ifs="$IFS"; IFS='~' 8539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for cmd in $cmds; do 8540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 8541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmd=\"$cmd\" 8542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_silent || { 8543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_expand "$cmd" 8544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval "func_echo $func_quote_for_expand_result" 8545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 8546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval "$cmd" || { 8547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats lt_exit=$? 8548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Restore the uninstalled library and exit 8550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" = relink; then 8551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ( cd "$output_objdir" && \ 8552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM "${realname}T" && \ 8553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $MV "${realname}U" "$realname" ) 8554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $lt_exit 8557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 8558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats IFS="$save_ifs" 8560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Restore the uninstalled library and exit 8562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" = relink; then 8563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 8564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$convenience"; then 8566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$whole_archive_flag_spec"; then 8567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '${RM}r "$gentop"' 8568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 8572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Create links to the real library. 8575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for linkname in $linknames; do 8576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$realname" != "$linkname"; then 8577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 8578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If -module or -export-dynamic was specified, set the dlname. 8582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$module" = yes || test "$export_dynamic" = yes; then 8583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # On all known operating systems, these are identical. 8584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlname="$soname" 8585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats obj) 8590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 8591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-dlopen' is ignored for objects" 8592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $deplibs" in 8595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *\ -l* | *\ -L*) 8596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-l' and \`-L' are ignored for objects" ;; 8597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$rpath" && \ 8600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-rpath' is ignored for objects" 8601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$xrpath" && \ 8603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-R' is ignored for objects" 8604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$vinfo" && \ 8606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-version-info' is ignored for objects" 8607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$release" && \ 8609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-release' is ignored for objects" 8610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $output in 8612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) 8613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$objs$old_deplibs" && \ 8614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "cannot build library object \`$output' from non-libtool objects" 8615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobj=$output 8617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_lo2o "$libobj" 8618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats obj=$func_lo2o_result 8619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libobj= 8622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats obj="$output" 8623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete the old objects. 8627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $obj $libobj 8628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Objects from convenience libraries. This assumes 8630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # single-version convenience libraries. Whenever we create 8631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # different ones for PIC/non-PIC, this we'll have to duplicate 8632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the extraction. 8633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_conv_objs= 8634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop= 8635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # reload_cmds runs $LD directly, so let us get rid of 8636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # -Wl from whole_archive_flag_spec and hope we can get by with 8637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # turning comma into space.. 8638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wl= 8639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$convenience"; then 8641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$whole_archive_flag_spec"; then 8642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 8643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 8644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop="$output_objdir/${obj}x" 8646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append generated " $gentop" 8647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_archives $gentop $convenience 8649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_conv_objs="$reload_objs $func_extract_archives_result" 8650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If we're not building shared, we need to use non_pic_objs 8654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 8655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Create the old-style object. 8657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 8658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output="$obj" 8660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$reload_cmds" 'exit $?' 8661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8662809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Exit if we aren't doing a library object file. 8663809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$libobj"; then 8664809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$gentop"; then 8665809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '${RM}r "$gentop"' 8666809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8667809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8668809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 8669809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8670809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8671809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" != yes; then 8672809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$gentop"; then 8673809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '${RM}r "$gentop"' 8674809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8675809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8676809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Create an invalid libtool object if no PIC, so that we don't 8677809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # accidentally link it into a program. 8678809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # $show "echo timestamp > $libobj" 8679809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 8680809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 8681809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8682809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8683809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$pic_flag" || test "$pic_mode" != default; then 8684809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only do commands if we really have different PIC objects. 8685809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats reload_objs="$libobjs $reload_conv_objs" 8686809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output="$libobj" 8687809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$reload_cmds" 'exit $?' 8688809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8689809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8690809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$gentop"; then 8691809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '${RM}r "$gentop"' 8692809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8693809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8694809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 8695809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8696809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8697809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats prog) 8698809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 8699809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin*) func_stripname '' '.exe' "$output" 8700809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$func_stripname_result.exe;; 8701809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8702809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$vinfo" && \ 8703809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-version-info' is ignored for programs" 8704809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8705809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$release" && \ 8706809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`-release' is ignored for programs" 8707809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8708809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$preload" = yes \ 8709809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && test "$dlopen_support" = unknown \ 8710809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && test "$dlopen_self" = unknown \ 8711809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats && test "$dlopen_self_static" = unknown && \ 8712809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 8713809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8714809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 8715809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-rhapsody* | *-*-darwin1.[012]) 8716809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # On Rhapsody replace the C library is the System framework 8717809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 8718809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 8719809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8720809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8721809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8722809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 8723809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-darwin*) 8724809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't allow lazy linking, it breaks C++ global constructors 8725809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # But is supposedly fixed on 10.4 or later (yay!). 8726809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$tagname" = CXX ; then 8727809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 8728809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 10.[0123]) 8729809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " ${wl}-bind_at_load" 8730809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " ${wl}-bind_at_load" 8731809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8732809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8733809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8734809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Time to change all our "foo.ltframework" stuff back to "-framework foo" 8735809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8736809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 8737809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8738809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8739809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8740809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8741809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # move library search paths that coincide with paths to not yet 8742809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # installed libraries to the beginning of the library search list 8743809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats new_libs= 8744809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for path in $notinst_path; do 8745809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $new_libs " in 8746809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" -L$path/$objdir "*) ;; 8747809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8748809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $compile_deplibs " in 8749809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" -L$path/$objdir "*) 8750809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append new_libs " -L$path/$objdir" ;; 8751809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8752809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8753809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8754809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8755809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $compile_deplibs; do 8756809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 8757809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) 8758809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $new_libs " in 8759809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $deplib "*) ;; 8760809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append new_libs " $deplib" ;; 8761809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8762809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8763809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append new_libs " $deplib" ;; 8764809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8765809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8766809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_deplibs="$new_libs" 8767809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8768809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8769809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append compile_command " $compile_deplibs" 8770809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append finalize_command " $finalize_deplibs" 8771809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8772809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$rpath$xrpath"; then 8773809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If the user specified any rpath flags, then add them. 8774809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $rpath $xrpath; do 8775809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This is the magic to use -rpath. 8776809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$finalize_rpath " in 8777809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 8778809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_rpath " $libdir" ;; 8779809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8780809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8781809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8782809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8783809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now hardcode the library paths 8784809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath= 8785809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats hardcode_libdirs= 8786809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $compile_rpath $finalize_rpath; do 8787809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_flag_spec"; then 8788809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_separator"; then 8789809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$hardcode_libdirs"; then 8790809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats hardcode_libdirs="$libdir" 8791809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8792809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just accumulate the unique libdirs. 8793809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8794809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8795809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8796809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8797809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8798809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8799809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8800809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8801809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8802809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval flag=\"$hardcode_libdir_flag_spec\" 8803809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rpath " $flag" 8804809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8805809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$runpath_var"; then 8806809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$perm_rpath " in 8807809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 8808809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append perm_rpath " $libdir" ;; 8809809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8810809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8811809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 8812809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 8813809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 8814809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$dllsearchpath: in 8815809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$libdir:"*) ;; 8816809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ::) dllsearchpath=$libdir;; 8817809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append dllsearchpath ":$libdir";; 8818809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8819809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case :$dllsearchpath: in 8820809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *":$testbindir:"*) ;; 8821809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ::) dllsearchpath=$testbindir;; 8822809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append dllsearchpath ":$testbindir";; 8823809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8824809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8825809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8826809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8827809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Substitute the hardcoded libdirs into the rpath. 8828809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_separator" && 8829809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$hardcode_libdirs"; then 8830809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir="$hardcode_libdirs" 8831809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval rpath=\" $hardcode_libdir_flag_spec\" 8832809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8833809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_rpath="$rpath" 8834809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8835809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath= 8836809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats hardcode_libdirs= 8837809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for libdir in $finalize_rpath; do 8838809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_flag_spec"; then 8839809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_separator"; then 8840809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$hardcode_libdirs"; then 8841809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats hardcode_libdirs="$libdir" 8842809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8843809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Just accumulate the unique libdirs. 8844809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 8845809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 8846809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8847809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8848809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 8849809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8850809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8851809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8852809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8853809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval flag=\"$hardcode_libdir_flag_spec\" 8854809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rpath " $flag" 8855809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8856809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$runpath_var"; then 8857809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$finalize_perm_rpath " in 8858809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $libdir "*) ;; 8859809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append finalize_perm_rpath " $libdir" ;; 8860809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8861809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8862809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8863809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Substitute the hardcoded libdirs into the rpath. 8864809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$hardcode_libdir_separator" && 8865809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$hardcode_libdirs"; then 8866809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libdir="$hardcode_libdirs" 8867809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval rpath=\" $hardcode_libdir_flag_spec\" 8868809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8869809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_rpath="$rpath" 8870809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8871809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$libobjs" && test "$build_old_libs" = yes; then 8872809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Transform all the library objects into standard objects. 8873809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8874809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 8875809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8876809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8877809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 8878809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8879809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # template prelinking step 8880809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$prelink_cmds"; then 8881809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$prelink_cmds" 'exit $?' 8882809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8883809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8884809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrappers_required=yes 8885809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 8886809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cegcc* | *mingw32ce*) 8887809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 8888809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrappers_required=no 8889809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8890809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* ) 8891809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" != yes; then 8892809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrappers_required=no 8893809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8894809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8895809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 8896809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 8897809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats wrappers_required=no 8898809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8899809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 8900809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 8901809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$wrappers_required" = no; then 8902809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Replace the output file specification. 8903809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8904809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command="$compile_command$compile_rpath" 8905809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8906809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We have no uninstalled library dependencies, so finalize right now. 8907809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit_status=0 8908809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$link_command" 'exit_status=$?' 8909809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8910809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$postlink_cmds"; then 8911809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output" 8912809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8913809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$postlink_cmds" 'exit $?' 8914809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8915809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8916809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete the generated files. 8917809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -f "$output_objdir/${outputname}S.${objext}"; then 8918809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 8919809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8920809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8921809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $exit_status 8922809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8923809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8924809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$compile_shlibpath$finalize_shlibpath"; then 8925809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 8926809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8927809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$finalize_shlibpath"; then 8928809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 8929809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8930809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8931809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_var= 8932809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_var= 8933809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$runpath_var"; then 8934809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$perm_rpath"; then 8935809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We should set the runpath_var. 8936809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath= 8937809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dir in $perm_rpath; do 8938809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rpath "$dir:" 8939809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8940809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 8941809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8942809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$finalize_perm_rpath"; then 8943809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We should set the runpath_var. 8944809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rpath= 8945809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dir in $finalize_perm_rpath; do 8946809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rpath "$dir:" 8947809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 8948809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 8949809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8950809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8951809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8952809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$no_install" = yes; then 8953809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # We don't need to create a wrapper script. 8954809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command="$compile_var$compile_command$compile_rpath" 8955809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Replace the output file specification. 8956809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 8957809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete the old output file. 8958809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $output 8959809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Link the executable and exit 8960809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$link_command" 'exit $?' 8961809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8962809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$postlink_cmds"; then 8963809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output" 8964809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 8965809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$postlink_cmds" 'exit $?' 8966809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8967809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8968809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 8969809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8970809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8971809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_action" = relink; then 8972809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Fast installation is not supported 8973809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command="$compile_var$compile_command$compile_rpath" 8974809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="$finalize_var$finalize_command$finalize_rpath" 8975809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8976809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "this platform does not like uninstalled shared libraries" 8977809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_warning "\`$output' will be relinked during installation" 8978809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8979809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$fast_install" != no; then 8980809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command="$finalize_var$compile_command$finalize_rpath" 8981809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$fast_install" = yes; then 8982809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 8983809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8984809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # fast_install is set to needless 8985809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 8986809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8987809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 8988809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command="$compile_var$compile_command$compile_rpath" 8989809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="$finalize_var$finalize_command$finalize_rpath" 8990809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8991809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 8992809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8993809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Replace the output file specification. 8994809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 8995809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8996809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete the old output files. 8997809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 8998809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 8999809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$link_command" 'exit $?' 9000809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9001809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$postlink_cmds"; then 9002809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output_objdir/$outputname" 9003809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 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'` 9004809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$postlink_cmds" 'exit $?' 9005809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9006809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9007809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now create the wrapper script. 9008809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating $output" 9009809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9010809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Quote the relink command for shipping. 9011809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$relink_command"; then 9012809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Preserve any variables that may affect compiler behavior 9013809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for var in $variables_saved_for_relink; do 9014809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval test -z \"\${$var+set}\"; then 9015809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9016809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif eval var_value=\$$var; test -z "$var_value"; then 9017809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="$var=; export $var; $relink_command" 9018809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9019809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$var_value" 9020809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9021809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9022809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9023809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="(cd `pwd`; $relink_command)" 9024809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9025809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9026809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9027809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only actually do things if not in dry run mode. 9028809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 9029809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # win32 will think the script is a binary if it has 9030809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # a .exe suffix, so we strip it off here. 9031809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $output in 9032809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.exe) func_stripname '' '.exe' "$output" 9033809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output=$func_stripname_result ;; 9034809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9035809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # test for cygwin because mv fails w/o .exe extensions 9036809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 9037809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin*) 9038809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exeext=.exe 9039809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$outputname" 9040809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats outputname=$func_stripname_result ;; 9041809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) exeext= ;; 9042809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9043809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host in 9044809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin* | *mingw* ) 9045809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname_and_basename "$output" "" "." 9046809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_name=$func_basename_result 9047809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output_path=$func_dirname_result 9048809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cwrappersource="$output_path/$objdir/lt-$output_name.c" 9049809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cwrapper="$output_path/$output_name.exe" 9050809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM $cwrappersource $cwrapper 9051809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 9052809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9053809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_emit_cwrapperexe_src > $cwrappersource 9054809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9055809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # The wrapper executable is built using the $host compiler, 9056809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # because it contains $host paths and files. If cross- 9057809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # compiling, it, like the target executable, must be 9058809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # executed on the $host or under an emulation environment. 9059809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 9060809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 9061809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $STRIP $cwrapper 9062809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 9063809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9064809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now, create the wrapper script for func_source use: 9065809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_scriptname $cwrapper 9066809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM $func_ltwrapper_scriptname_result 9067809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 9068809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 9069809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # note: this script will not be executed, so do not chmod. 9070809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x$build" = "x$host" ; then 9071809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 9072809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9073809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_emit_wrapper no > $func_ltwrapper_scriptname_result 9074809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9075809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 9076809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9077809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats * ) 9078809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM $output 9079809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 9080809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9081809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_emit_wrapper no > $output 9082809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats chmod +x $output 9083809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9084809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9085809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 9086809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 9087809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9088809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9089809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9090809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # See if we need to build an old-fashioned archive. 9091809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for oldlib in $oldlibs; do 9092809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9093809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = convenience; then 9094809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs="$libobjs_save $symfileobj" 9095809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats addlibs="$convenience" 9096809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 9097809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9098809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$build_libtool_libs" = module; then 9099809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs="$libobjs_save" 9100809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats build_libtool_libs=no 9101809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9102809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs="$old_deplibs $non_pic_objects" 9103809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$preload" = yes && test -f "$symfileobj"; then 9104809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append oldobjs " $symfileobj" 9105809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9106809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9107809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats addlibs="$old_convenience" 9108809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9109809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9110809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$addlibs"; then 9111809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop="$output_objdir/${outputname}x" 9112809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append generated " $gentop" 9113809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9114809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_archives $gentop $addlibs 9115809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append oldobjs " $func_extract_archives_result" 9116809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9117809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9118809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each command in the archive commands. 9119809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 9120809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$old_archive_from_new_cmds 9121809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9122809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9123809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add any objects from preloaded convenience libraries 9124809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$dlprefiles"; then 9125809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop="$output_objdir/${outputname}x" 9126809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append generated " $gentop" 9127809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9128809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_extract_archives $gentop $dlprefiles 9129809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append oldobjs " $func_extract_archives_result" 9130809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9131809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9132809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # POSIX demands no paths to be encoded in archives. We have 9133809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # to avoid creating archives with duplicate basenames if we 9134809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # might have to extract them afterwards, e.g., when creating a 9135809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # static archive out of a convenience library, or when linking 9136809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the entirety of a libtool archive into another (currently 9137809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # not supported by libtool). 9138809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if (for obj in $oldobjs 9139809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 9140809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$obj" 9141809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$func_basename_result" 9142809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done | sort | sort -uc >/dev/null 2>&1); then 9143809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 9144809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9145809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats echo "copying selected object files to avoid basename conflicts..." 9146809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats gentop="$output_objdir/${outputname}x" 9147809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append generated " $gentop" 9148809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mkdir_p "$gentop" 9149809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_oldobjs=$oldobjs 9150809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs= 9151809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats counter=1 9152809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $save_oldobjs 9153809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 9154809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$obj" 9155809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objbase="$func_basename_result" 9156809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $oldobjs " in 9157809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats " ") oldobjs=$obj ;; 9158809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\ /]"$objbase "*) 9159809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats while :; do 9160809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Make sure we don't pick an alternate name that also 9161809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # overlaps. 9162809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newobj=lt$counter-$objbase 9163809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $counter + 1 9164809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats counter=$func_arith_result 9165809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $oldobjs " in 9166809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *[\ /]"$newobj "*) ;; 9167809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) if test ! -f "$gentop/$newobj"; then break; fi ;; 9168809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9169809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9170809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 9171809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append oldobjs " $gentop/$newobj" 9172809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9173809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append oldobjs " $obj" ;; 9174809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9175809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9176809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9177809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 9178809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tool_oldlib=$func_to_tool_file_result 9179809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmds=\"$old_archive_cmds\" 9180809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9181809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $cmds" 9182809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$func_len_result 9183809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 9184809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$old_archive_cmds 9185809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -n "$archiver_list_spec"; then 9186809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "using command file archive linking..." 9187809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $oldobjs 9188809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 9189809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$obj" 9190809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO "$func_to_tool_file_result" 9191809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done > $output_objdir/$libname.libcmd 9192809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_to_tool_file "$output_objdir/$libname.libcmd" 9193809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs=" $archiver_list_spec$func_to_tool_file_result" 9194809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats cmds=$old_archive_cmds 9195809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9196809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the command line is too long to link in one step, link in parts 9197809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "using piecewise archive linking..." 9198809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_RANLIB=$RANLIB 9199809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats RANLIB=: 9200809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objlist= 9201809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats concat_cmds= 9202809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats save_oldobjs=$oldobjs 9203809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs= 9204809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Is there a better way of finding the last object in the list? 9205809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $save_oldobjs 9206809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 9207809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats last_oldobj=$obj 9208809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9209809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval test_cmds=\"$old_archive_cmds\" 9210809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $test_cmds" 9211809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len0=$func_len_result 9212809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$len0 9213809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for obj in $save_oldobjs 9214809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 9215809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_len " $obj" 9216809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_arith $len + $func_len_result 9217809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$func_arith_result 9218809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append objlist " $obj" 9219809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$len" -lt "$max_cmd_len"; then 9220809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 9221809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9222809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the above command should be used before it gets too long 9223809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs=$objlist 9224809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$obj" = "$last_oldobj" ; then 9225809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats RANLIB=$save_RANLIB 9226809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9227809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 9228809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 9229809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats objlist= 9230809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats len=$len0 9231809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9232809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9233809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats RANLIB=$save_RANLIB 9234809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats oldobjs=$objlist 9235809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$oldobjs" = "X" ; then 9236809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmds=\"\$concat_cmds\" 9237809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9238809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 9239809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9240809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9241809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9242809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$cmds" 'exit $?' 9243809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9244809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9245809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$generated" && \ 9246809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "${RM}r$generated" 9247809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9248809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Now create the libtool archive. 9249809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $output in 9250809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 9251809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats old_library= 9252809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$build_old_libs" = yes && old_library="$libname.$libext" 9253809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_verbose "creating $output" 9254809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9255809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Preserve any variables that may affect compiler behavior 9256809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for var in $variables_saved_for_relink; do 9257809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if eval test -z \"\${$var+set}\"; then 9258809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 9259809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif eval var_value=\$$var; test -z "$var_value"; then 9260809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="$var=; export $var; $relink_command" 9261809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9262809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_quote_for_eval "$var_value" 9263809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 9264809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9265809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9266809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Quote the link command for shipping. 9267809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 9268809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 9269809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$hardcode_automatic" = yes ; then 9270809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 9271809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9272809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9273809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only create the output if not a dry run. 9274809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_dry_run || { 9275809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for installed in no yes; do 9276809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$installed" = yes; then 9277809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -z "$install_libdir"; then 9278809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats break 9279809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9280809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats output="$output_objdir/$outputname"i 9281809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Replace all uninstalled libtool libraries with the installed ones 9282809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdependency_libs= 9283809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for deplib in $dependency_libs; do 9284809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $deplib in 9285809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 9286809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$deplib" 9287809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 9288809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_resolve_sysroot "$deplib" 9289809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 9290809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libdir" && \ 9291809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$deplib' is not a valid libtool archive" 9292809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 9293809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9294809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -L*) 9295809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname -L '' "$deplib" 9296809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_replace_sysroot "$func_stripname_result" 9297809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdependency_libs " -L$func_replace_sysroot_result" 9298809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9299809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -R*) 9300809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname -R '' "$deplib" 9301809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_replace_sysroot "$func_stripname_result" 9302809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdependency_libs " -R$func_replace_sysroot_result" 9303809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9304809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append newdependency_libs " $deplib" ;; 9305809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9306809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9307809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dependency_libs="$newdependency_libs" 9308809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdlfiles= 9309809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9310809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $dlfiles; do 9311809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $lib in 9312809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 9313809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$lib" 9314809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 9315809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9316809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libdir" && \ 9317809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$lib' is not a valid libtool archive" 9318809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 9319809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9320809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append newdlfiles " $lib" ;; 9321809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9322809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9323809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlfiles="$newdlfiles" 9324809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdlprefiles= 9325809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $dlprefiles; do 9326809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $lib in 9327809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 9328809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Only pass preopened files to the pseudo-archive (for 9329809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # eventual linking with the app. that links it) if we 9330809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # didn't already link the preopened objects directly into 9331809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # the library: 9332809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$lib" 9333809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 9334809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 9335809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$libdir" && \ 9336809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_error "\`$lib' is not a valid libtool archive" 9337809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 9338809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9339809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9340809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9341809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefiles="$newdlprefiles" 9342809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9343809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdlfiles= 9344809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $dlfiles; do 9345809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $lib in 9346809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9347809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) abs=`pwd`"/$lib" ;; 9348809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9349809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlfiles " $abs" 9350809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9351809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlfiles="$newdlfiles" 9352809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats newdlprefiles= 9353809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for lib in $dlprefiles; do 9354809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $lib in 9355809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 9356809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) abs=`pwd`"/$lib" ;; 9357809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9358809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append newdlprefiles " $abs" 9359809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9360809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dlprefiles="$newdlprefiles" 9361809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9362809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $RM $output 9363809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # place dlname in correct position for cygwin 9364809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # In fact, it would be nice if we could use this code for all target 9365809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # systems that can't hard-code library paths into their executables 9366809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # and that have no shared library path variable independent of PATH, 9367809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # but it turns out we can't easily determine that from inspecting 9368809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # libtool variables, so we have to hard-code the OSs to which it 9369809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # applies here; at the moment, that means platforms that use the PE 9370809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # object format with DLL files. See the long comment at the top of 9371809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # tests/bindir.at for full details. 9372809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tdlname=$dlname 9373809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $host,$output,$installed,$module,$dlname in 9374809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 9375809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # If a -bindir argument was supplied, place the dll there. 9376809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "x$bindir" != x ; 9377809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats then 9378809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_relative_path "$install_libdir" "$bindir" 9379809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tdlname=$func_relative_path_result$dlname 9380809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9381809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Otherwise fall back on heuristic. 9382809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats tdlname=../bin/$dlname 9383809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9384809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9385809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9386809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO > $output "\ 9387809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# $outputname - a libtool library file 9388809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 9389809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# 9390809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Please DO NOT delete this file! 9391809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# It is necessary for linking the library. 9392809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9393809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The name that we can dlopen(3). 9394809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdlname='$tdlname' 9395809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9396809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Names of this library. 9397809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslibrary_names='$library_names' 9398809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9399809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The name of the static archive. 9400809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsold_library='$old_library' 9401809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9402809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Linker flags that can not go in dependency_libs. 9403809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinherited_linker_flags='$new_inherited_linker_flags' 9404809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9405809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Libraries that this one depends upon. 9406809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdependency_libs='$dependency_libs' 9407809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9408809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Names of additional weak libraries provided by this library 9409809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsweak_library_names='$weak_libs' 9410809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9411809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Version information for $libname. 9412809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatscurrent=$current 9413809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsage=$age 9414809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrevision=$revision 9415809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9416809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Is this an already installed library? 9417809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsinstalled=$installed 9418809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9419809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Should we warn about portability when linking against -modules? 9420809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsshouldnotlink=$module 9421809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9422809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Files to dlopen/dlpreopen 9423809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdlopen='$dlfiles' 9424809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsdlpreopen='$dlprefiles' 9425809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9426809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Directory that this library needs to be installed in: 9427809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatslibdir='$install_libdir'" 9428809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$installed" = no && test "$need_relink" = yes; then 9429809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $ECHO >> $output "\ 9430809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsrelink_command=\"$relink_command\"" 9431809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9432809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9433809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats } 9434809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9435809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do a symbolic link so that the libtool archive can be found in 9436809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # LD_LIBRARY_PATH before the program is installed. 9437809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 9438809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9439809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9440809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_SUCCESS 9441809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 9442809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9443809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 9444809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mode_link ${1+"$@"} 9445809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9446809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9447809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# func_mode_uninstall arg... 9448809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfunc_mode_uninstall () 9449809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ 9450809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats $opt_debug 9451809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats RM="$nonopt" 9452809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats files= 9453809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rmforce= 9454809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit_status=0 9455809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9456809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # This variable tells wrapper scripts just to set variables rather 9457809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # than running their programs. 9458809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats libtool_install_magic="$magic" 9459809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9460809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for arg 9461809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats do 9462809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $arg in 9463809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -f) func_append RM " $arg"; rmforce=yes ;; 9464809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats -*) func_append RM " $arg" ;; 9465809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append files " $arg" ;; 9466809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9467809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9468809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9469809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -z "$RM" && \ 9470809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify an RM program" 9471809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9472809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rmdirs= 9473809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9474809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for file in $files; do 9475809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_dirname "$file" "" "." 9476809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats dir="$func_dirname_result" 9477809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$dir" = X.; then 9478809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats odir="$objdir" 9479809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9480809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats odir="$dir/$objdir" 9481809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9482809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_basename "$file" 9483809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats name="$func_basename_result" 9484809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$opt_mode" = uninstall && odir="$dir" 9485809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9486809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Remember odir for removal later, being careful to avoid duplicates 9487809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" = clean; then 9488809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $rmdirs " in 9489809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $odir "*) ;; 9490809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) func_append rmdirs " $odir" ;; 9491809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9492809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9493809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9494809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Don't error if the file doesn't exist and rm -f was used. 9495809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if { test -L "$file"; } >/dev/null 2>&1 || 9496809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats { test -h "$file"; } >/dev/null 2>&1 || 9497809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -f "$file"; then 9498809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats : 9499809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test -d "$file"; then 9500809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit_status=1 9501809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 9502809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats elif test "$rmforce" = yes; then 9503809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats continue 9504809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9505809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9506809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats rmfiles="$file" 9507809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9508809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $name in 9509809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.la) 9510809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Possibly a libtool archive, so verify it. 9511809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_lalib_p "$file"; then 9512809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source $dir/$name 9513809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9514809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Delete the libtool libraries and symlinks. 9515809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for n in $library_names; do 9516809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $odir/$n" 9517809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9518809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$old_library" && func_append rmfiles " $odir/$old_library" 9519809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9520809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case "$opt_mode" in 9521809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats clean) 9522809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case " $library_names " in 9523809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *" $dlname "*) ;; 9524809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 9525809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9526809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 9527809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9528809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats uninstall) 9529809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$library_names"; then 9530809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each command in the postuninstall commands. 9531809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9532809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9533809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9534809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$old_library"; then 9535809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do each command in the old_postuninstall commands. 9536809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 9537809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9538809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # FIXME: should reinstall the best remaining shared library. 9539809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9540809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9541809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9542809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9543809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9544809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.lo) 9545809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Possibly a libtool object, so verify it. 9546809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_lalib_p "$file"; then 9547809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9548809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Read the .lo file 9549809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source $dir/$name 9550809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9551809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add PIC object to the list of files to remove. 9552809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$pic_object" && 9553809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$pic_object" != none; then 9554809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $dir/$pic_object" 9555809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9556809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9557809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Add non-PIC object to the list of files to remove. 9558809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -n "$non_pic_object" && 9559809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats test "$non_pic_object" != none; then 9560809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $dir/$non_pic_object" 9561809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9562809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9563809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9564809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9565809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *) 9566809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$opt_mode" = clean ; then 9567809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats noexename=$name 9568809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats case $file in 9569809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats *.exe) 9570809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$file" 9571809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats file=$func_stripname_result 9572809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_stripname '' '.exe' "$name" 9573809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats noexename=$func_stripname_result 9574809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # $file with .exe has already been added to rmfiles, 9575809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # add $file without .exe 9576809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $file" 9577809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9578809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9579809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Do a test to see if this is a libtool program. 9580809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_ltwrapper_p "$file"; then 9581809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if func_ltwrapper_executable_p "$file"; then 9582809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_ltwrapper_scriptname "$file" 9583809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 9584809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source $func_ltwrapper_scriptname_result 9585809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $func_ltwrapper_scriptname_result" 9586809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats else 9587809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats relink_command= 9588809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_source $dir/$noexename 9589809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9590809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9591809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # note $name still contains .exe if it was in $file originally 9592809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # as does the version of $file that was added into $rmfiles 9593809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 9594809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "$fast_install" = yes && test -n "$relink_command"; then 9595809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $odir/lt-$name" 9596809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9597809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test "X$noexename" != "X$name" ; then 9598809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_append rmfiles " $odir/lt-${noexename}.c" 9599809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9600809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9601809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9602809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats ;; 9603809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats esac 9604809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "$RM $rmfiles" 'exit_status=1' 9605809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9606809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9607809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats # Try to remove the ${objdir}s in the directories where we deleted files 9608809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats for dir in $rmdirs; do 9609809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats if test -d "$dir"; then 9610809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_show_eval "rmdir $dir >/dev/null 2>&1" 9611809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats fi 9612809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats done 9613809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9614809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $exit_status 9615809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 9616809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9617809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 9618809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_mode_uninstall ${1+"$@"} 9619809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9620809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest -z "$opt_mode" && { 9621809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats help="$generic_help" 9622809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "you must specify a MODE" 9623809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats} 9624809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9625809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatstest -z "$exec_cmd" && \ 9626809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats func_fatal_help "invalid operation mode \`$opt_mode'" 9627809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9628809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsif test -n "$exec_cmd"; then 9629809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats eval exec "$exec_cmd" 9630809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats exit $EXIT_FAILURE 9631809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsfi 9632809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9633809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsexit $exit_status 9634809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9635809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9636809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# The TAGs below are defined such that we never get into a situation 9637809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# in which we disable both kinds of libraries. Given conflicting 9638809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# choices, we go for a static library, that is the most portable, 9639809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# since we can't tell whether shared libraries were disabled because 9640809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# the user asked for that or because the platform doesn't support 9641809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# them. This is particularly important on AIX, because we don't 9642809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# support having both static and shared libraries enabled at the same 9643809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# time on that platform, so we default to a shared-only configuration. 9644809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# If a disable-shared tag is given, we'll fallback to a static-only 9645809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# configuration. But we'll never go from static-only to shared-only. 9646809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9647809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 9648809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbuild_libtool_libs=no 9649809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbuild_old_libs=yes 9650809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### END LIBTOOL TAG CONFIG: disable-shared 9651809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9652809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### BEGIN LIBTOOL TAG CONFIG: disable-static 9653809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staatsbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 9654809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# ### END LIBTOOL TAG CONFIG: disable-static 9655809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9656809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# Local Variables: 9657809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# mode:shell-script 9658809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# sh-indentation:2 9659809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# End: 9660809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats# vi:sw=2 9661809aa5b70a1ce508ecf244790bfe6a282c8df3cErik Staats 9662