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