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