ltmain.sh revision 04007eba
104007ebaSmrg 204007ebaSmrg# libtool (GNU libtool) 2.4.2 304007ebaSmrg# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 404007ebaSmrg 504007ebaSmrg# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 604007ebaSmrg# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 704007ebaSmrg# This is free software; see the source for copying conditions. There is NO 804007ebaSmrg# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 904007ebaSmrg 1004007ebaSmrg# GNU Libtool is free software; you can redistribute it and/or modify 1104007ebaSmrg# it under the terms of the GNU General Public License as published by 1204007ebaSmrg# the Free Software Foundation; either version 2 of the License, or 1304007ebaSmrg# (at your option) any later version. 1404007ebaSmrg# 1504007ebaSmrg# As a special exception to the GNU General Public License, 1604007ebaSmrg# if you distribute this file as part of a program or library that 1704007ebaSmrg# is built using GNU Libtool, you may include this file under the 1804007ebaSmrg# same distribution terms that you use for the rest of that program. 1904007ebaSmrg# 2004007ebaSmrg# GNU Libtool is distributed in the hope that it will be useful, but 2104007ebaSmrg# WITHOUT ANY WARRANTY; without even the implied warranty of 2204007ebaSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2304007ebaSmrg# General Public License for more details. 2404007ebaSmrg# 2504007ebaSmrg# You should have received a copy of the GNU General Public License 2604007ebaSmrg# along with GNU Libtool; see the file COPYING. If not, a copy 2704007ebaSmrg# can be downloaded from http://www.gnu.org/licenses/gpl.html, 2804007ebaSmrg# or obtained by writing to the Free Software Foundation, Inc., 2904007ebaSmrg# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 3004007ebaSmrg 3104007ebaSmrg# Usage: $progname [OPTION]... [MODE-ARG]... 3204007ebaSmrg# 3304007ebaSmrg# Provide generalized library-building support services. 3404007ebaSmrg# 3504007ebaSmrg# --config show all configuration variables 3604007ebaSmrg# --debug enable verbose shell tracing 3704007ebaSmrg# -n, --dry-run display commands without modifying any files 3804007ebaSmrg# --features display basic configuration information and exit 3904007ebaSmrg# --mode=MODE use operation mode MODE 4004007ebaSmrg# --preserve-dup-deps don't remove duplicate dependency libraries 4104007ebaSmrg# --quiet, --silent don't print informational messages 4204007ebaSmrg# --no-quiet, --no-silent 4304007ebaSmrg# print informational messages (default) 4404007ebaSmrg# --no-warn don't display warning messages 4504007ebaSmrg# --tag=TAG use configuration variables from tag TAG 4604007ebaSmrg# -v, --verbose print more informational messages than default 4704007ebaSmrg# --no-verbose don't print the extra informational messages 4804007ebaSmrg# --version print version information 4904007ebaSmrg# -h, --help, --help-all print short, long, or detailed help message 5004007ebaSmrg# 5104007ebaSmrg# MODE must be one of the following: 5204007ebaSmrg# 5304007ebaSmrg# clean remove files from the build directory 5404007ebaSmrg# compile compile a source file into a libtool object 5504007ebaSmrg# execute automatically set library path, then run a program 5604007ebaSmrg# finish complete the installation of libtool libraries 5704007ebaSmrg# install install libraries or executables 5804007ebaSmrg# link create a library or an executable 5904007ebaSmrg# uninstall remove libraries from an installed directory 6004007ebaSmrg# 6104007ebaSmrg# MODE-ARGS vary depending on the MODE. When passed as first option, 6204007ebaSmrg# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. 6304007ebaSmrg# Try `$progname --help --mode=MODE' for a more detailed description of MODE. 6404007ebaSmrg# 6504007ebaSmrg# When reporting a bug, please describe a test case to reproduce it and 6604007ebaSmrg# include the following information: 6704007ebaSmrg# 6804007ebaSmrg# host-triplet: $host 6904007ebaSmrg# shell: $SHELL 7004007ebaSmrg# compiler: $LTCC 7104007ebaSmrg# compiler flags: $LTCFLAGS 7204007ebaSmrg# linker: $LD (gnu? $with_gnu_ld) 7304007ebaSmrg# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.3 7404007ebaSmrg# automake: $automake_version 7504007ebaSmrg# autoconf: $autoconf_version 7604007ebaSmrg# 7704007ebaSmrg# Report bugs to <bug-libtool@gnu.org>. 7804007ebaSmrg# GNU libtool home page: <http://www.gnu.org/software/libtool/>. 7904007ebaSmrg# General help using GNU software: <http://www.gnu.org/gethelp/>. 8004007ebaSmrg 8104007ebaSmrgPROGRAM=libtool 8204007ebaSmrgPACKAGE=libtool 8304007ebaSmrgVERSION="2.4.2 Debian-2.4.2-1.3" 8404007ebaSmrgTIMESTAMP="" 8504007ebaSmrgpackage_revision=1.3337 8604007ebaSmrg 8704007ebaSmrg# Be Bourne compatible 8804007ebaSmrgif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then 8904007ebaSmrg emulate sh 9004007ebaSmrg NULLCMD=: 9104007ebaSmrg # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which 9204007ebaSmrg # is contrary to our usage. Disable this feature. 9304007ebaSmrg alias -g '${1+"$@"}'='"$@"' 9404007ebaSmrg setopt NO_GLOB_SUBST 9504007ebaSmrgelse 9604007ebaSmrg case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac 9704007ebaSmrgfi 9804007ebaSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 9904007ebaSmrgDUALCASE=1; export DUALCASE # for MKS sh 10004007ebaSmrg 10104007ebaSmrg# A function that is used when there is no print builtin or printf. 10204007ebaSmrgfunc_fallback_echo () 10304007ebaSmrg{ 10404007ebaSmrg eval 'cat <<_LTECHO_EOF 10504007ebaSmrg$1 10604007ebaSmrg_LTECHO_EOF' 10704007ebaSmrg} 10804007ebaSmrg 10904007ebaSmrg# NLS nuisances: We save the old values to restore during execute mode. 11004007ebaSmrglt_user_locale= 11104007ebaSmrglt_safe_locale= 11204007ebaSmrgfor lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 11304007ebaSmrgdo 11404007ebaSmrg eval "if test \"\${$lt_var+set}\" = set; then 11504007ebaSmrg save_$lt_var=\$$lt_var 11604007ebaSmrg $lt_var=C 11704007ebaSmrg export $lt_var 11804007ebaSmrg lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" 11904007ebaSmrg lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" 12004007ebaSmrg fi" 12104007ebaSmrgdone 12204007ebaSmrgLC_ALL=C 12304007ebaSmrgLANGUAGE=C 12404007ebaSmrgexport LANGUAGE LC_ALL 12504007ebaSmrg 12604007ebaSmrg$lt_unset CDPATH 12704007ebaSmrg 12804007ebaSmrg 12904007ebaSmrg# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh 13004007ebaSmrg# is ksh but when the shell is invoked as "sh" and the current value of 13104007ebaSmrg# the _XPG environment variable is not equal to 1 (one), the special 13204007ebaSmrg# positional parameter $0, within a function call, is the name of the 13304007ebaSmrg# function. 13404007ebaSmrgprogpath="$0" 13504007ebaSmrg 13604007ebaSmrg 13704007ebaSmrg 13804007ebaSmrg: ${CP="cp -f"} 13904007ebaSmrgtest "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} 14004007ebaSmrg: ${MAKE="make"} 14104007ebaSmrg: ${MKDIR="mkdir"} 14204007ebaSmrg: ${MV="mv -f"} 14304007ebaSmrg: ${RM="rm -f"} 14404007ebaSmrg: ${SHELL="${CONFIG_SHELL-/bin/sh}"} 14504007ebaSmrg: ${Xsed="$SED -e 1s/^X//"} 14604007ebaSmrg 14704007ebaSmrg# Global variables: 14804007ebaSmrgEXIT_SUCCESS=0 14904007ebaSmrgEXIT_FAILURE=1 15004007ebaSmrgEXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. 15104007ebaSmrgEXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. 15204007ebaSmrg 15304007ebaSmrgexit_status=$EXIT_SUCCESS 15404007ebaSmrg 15504007ebaSmrg# Make sure IFS has a sensible default 15604007ebaSmrglt_nl=' 15704007ebaSmrg' 15804007ebaSmrgIFS=" $lt_nl" 15904007ebaSmrg 16004007ebaSmrgdirname="s,/[^/]*$,," 16104007ebaSmrgbasename="s,^.*/,," 16204007ebaSmrg 16304007ebaSmrg# func_dirname file append nondir_replacement 16404007ebaSmrg# Compute the dirname of FILE. If nonempty, add APPEND to the result, 16504007ebaSmrg# otherwise set result to NONDIR_REPLACEMENT. 16604007ebaSmrgfunc_dirname () 16704007ebaSmrg{ 16804007ebaSmrg func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` 16904007ebaSmrg if test "X$func_dirname_result" = "X${1}"; then 17004007ebaSmrg func_dirname_result="${3}" 17104007ebaSmrg else 17204007ebaSmrg func_dirname_result="$func_dirname_result${2}" 17304007ebaSmrg fi 17404007ebaSmrg} # func_dirname may be replaced by extended shell implementation 17504007ebaSmrg 17604007ebaSmrg 17704007ebaSmrg# func_basename file 17804007ebaSmrgfunc_basename () 17904007ebaSmrg{ 18004007ebaSmrg func_basename_result=`$ECHO "${1}" | $SED "$basename"` 18104007ebaSmrg} # func_basename may be replaced by extended shell implementation 18204007ebaSmrg 18304007ebaSmrg 18404007ebaSmrg# func_dirname_and_basename file append nondir_replacement 18504007ebaSmrg# perform func_basename and func_dirname in a single function 18604007ebaSmrg# call: 18704007ebaSmrg# dirname: Compute the dirname of FILE. If nonempty, 18804007ebaSmrg# add APPEND to the result, otherwise set result 18904007ebaSmrg# to NONDIR_REPLACEMENT. 19004007ebaSmrg# value returned in "$func_dirname_result" 19104007ebaSmrg# basename: Compute filename of FILE. 19204007ebaSmrg# value retuned in "$func_basename_result" 19304007ebaSmrg# Implementation must be kept synchronized with func_dirname 19404007ebaSmrg# and func_basename. For efficiency, we do not delegate to 19504007ebaSmrg# those functions but instead duplicate the functionality here. 19604007ebaSmrgfunc_dirname_and_basename () 19704007ebaSmrg{ 19804007ebaSmrg # Extract subdirectory from the argument. 19904007ebaSmrg func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` 20004007ebaSmrg if test "X$func_dirname_result" = "X${1}"; then 20104007ebaSmrg func_dirname_result="${3}" 20204007ebaSmrg else 20304007ebaSmrg func_dirname_result="$func_dirname_result${2}" 20404007ebaSmrg fi 20504007ebaSmrg func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` 20604007ebaSmrg} # func_dirname_and_basename may be replaced by extended shell implementation 20704007ebaSmrg 20804007ebaSmrg 20904007ebaSmrg# func_stripname prefix suffix name 21004007ebaSmrg# strip PREFIX and SUFFIX off of NAME. 21104007ebaSmrg# PREFIX and SUFFIX must not contain globbing or regex special 21204007ebaSmrg# characters, hashes, percent signs, but SUFFIX may contain a leading 21304007ebaSmrg# dot (in which case that matches only a dot). 21404007ebaSmrg# func_strip_suffix prefix name 21504007ebaSmrgfunc_stripname () 21604007ebaSmrg{ 21704007ebaSmrg case ${2} in 21804007ebaSmrg .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; 21904007ebaSmrg *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; 22004007ebaSmrg esac 22104007ebaSmrg} # func_stripname may be replaced by extended shell implementation 22204007ebaSmrg 22304007ebaSmrg 22404007ebaSmrg# These SED scripts presuppose an absolute path with a trailing slash. 22504007ebaSmrgpathcar='s,^/\([^/]*\).*$,\1,' 22604007ebaSmrgpathcdr='s,^/[^/]*,,' 22704007ebaSmrgremovedotparts=':dotsl 22804007ebaSmrg s@/\./@/@g 22904007ebaSmrg t dotsl 23004007ebaSmrg s,/\.$,/,' 23104007ebaSmrgcollapseslashes='s@/\{1,\}@/@g' 23204007ebaSmrgfinalslash='s,/*$,/,' 23304007ebaSmrg 23404007ebaSmrg# func_normal_abspath PATH 23504007ebaSmrg# Remove doubled-up and trailing slashes, "." path components, 23604007ebaSmrg# and cancel out any ".." path components in PATH after making 23704007ebaSmrg# it an absolute path. 23804007ebaSmrg# value returned in "$func_normal_abspath_result" 23904007ebaSmrgfunc_normal_abspath () 24004007ebaSmrg{ 24104007ebaSmrg # Start from root dir and reassemble the path. 24204007ebaSmrg func_normal_abspath_result= 24304007ebaSmrg func_normal_abspath_tpath=$1 24404007ebaSmrg func_normal_abspath_altnamespace= 24504007ebaSmrg case $func_normal_abspath_tpath in 24604007ebaSmrg "") 24704007ebaSmrg # Empty path, that just means $cwd. 24804007ebaSmrg func_stripname '' '/' "`pwd`" 24904007ebaSmrg func_normal_abspath_result=$func_stripname_result 25004007ebaSmrg return 25104007ebaSmrg ;; 25204007ebaSmrg # The next three entries are used to spot a run of precisely 25304007ebaSmrg # two leading slashes without using negated character classes; 25404007ebaSmrg # we take advantage of case's first-match behaviour. 25504007ebaSmrg ///*) 25604007ebaSmrg # Unusual form of absolute path, do nothing. 25704007ebaSmrg ;; 25804007ebaSmrg //*) 25904007ebaSmrg # Not necessarily an ordinary path; POSIX reserves leading '//' 26004007ebaSmrg # and for example Cygwin uses it to access remote file shares 26104007ebaSmrg # over CIFS/SMB, so we conserve a leading double slash if found. 26204007ebaSmrg func_normal_abspath_altnamespace=/ 26304007ebaSmrg ;; 26404007ebaSmrg /*) 26504007ebaSmrg # Absolute path, do nothing. 26604007ebaSmrg ;; 26704007ebaSmrg *) 26804007ebaSmrg # Relative path, prepend $cwd. 26904007ebaSmrg func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath 27004007ebaSmrg ;; 27104007ebaSmrg esac 27204007ebaSmrg # Cancel out all the simple stuff to save iterations. We also want 27304007ebaSmrg # the path to end with a slash for ease of parsing, so make sure 27404007ebaSmrg # there is one (and only one) here. 27504007ebaSmrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 27604007ebaSmrg -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` 27704007ebaSmrg while :; do 27804007ebaSmrg # Processed it all yet? 27904007ebaSmrg if test "$func_normal_abspath_tpath" = / ; then 28004007ebaSmrg # If we ascended to the root using ".." the result may be empty now. 28104007ebaSmrg if test -z "$func_normal_abspath_result" ; then 28204007ebaSmrg func_normal_abspath_result=/ 28304007ebaSmrg fi 28404007ebaSmrg break 28504007ebaSmrg fi 28604007ebaSmrg func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28704007ebaSmrg -e "$pathcar"` 28804007ebaSmrg func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ 28904007ebaSmrg -e "$pathcdr"` 29004007ebaSmrg # Figure out what to do with it 29104007ebaSmrg case $func_normal_abspath_tcomponent in 29204007ebaSmrg "") 29304007ebaSmrg # Trailing empty path component, ignore it. 29404007ebaSmrg ;; 29504007ebaSmrg ..) 29604007ebaSmrg # Parent dir; strip last assembled component from result. 29704007ebaSmrg func_dirname "$func_normal_abspath_result" 29804007ebaSmrg func_normal_abspath_result=$func_dirname_result 29904007ebaSmrg ;; 30004007ebaSmrg *) 30104007ebaSmrg # Actual path component, append it. 30204007ebaSmrg func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent 30304007ebaSmrg ;; 30404007ebaSmrg esac 30504007ebaSmrg done 30604007ebaSmrg # Restore leading double-slash if one was found on entry. 30704007ebaSmrg func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result 30804007ebaSmrg} 30904007ebaSmrg 31004007ebaSmrg# func_relative_path SRCDIR DSTDIR 31104007ebaSmrg# generates a relative path from SRCDIR to DSTDIR, with a trailing 31204007ebaSmrg# slash if non-empty, suitable for immediately appending a filename 31304007ebaSmrg# without needing to append a separator. 31404007ebaSmrg# value returned in "$func_relative_path_result" 31504007ebaSmrgfunc_relative_path () 31604007ebaSmrg{ 31704007ebaSmrg func_relative_path_result= 31804007ebaSmrg func_normal_abspath "$1" 31904007ebaSmrg func_relative_path_tlibdir=$func_normal_abspath_result 32004007ebaSmrg func_normal_abspath "$2" 32104007ebaSmrg func_relative_path_tbindir=$func_normal_abspath_result 32204007ebaSmrg 32304007ebaSmrg # Ascend the tree starting from libdir 32404007ebaSmrg while :; do 32504007ebaSmrg # check if we have found a prefix of bindir 32604007ebaSmrg case $func_relative_path_tbindir in 32704007ebaSmrg $func_relative_path_tlibdir) 32804007ebaSmrg # found an exact match 32904007ebaSmrg func_relative_path_tcancelled= 33004007ebaSmrg break 33104007ebaSmrg ;; 33204007ebaSmrg $func_relative_path_tlibdir*) 33304007ebaSmrg # found a matching prefix 33404007ebaSmrg func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" 33504007ebaSmrg func_relative_path_tcancelled=$func_stripname_result 33604007ebaSmrg if test -z "$func_relative_path_result"; then 33704007ebaSmrg func_relative_path_result=. 33804007ebaSmrg fi 33904007ebaSmrg break 34004007ebaSmrg ;; 34104007ebaSmrg *) 34204007ebaSmrg func_dirname $func_relative_path_tlibdir 34304007ebaSmrg func_relative_path_tlibdir=${func_dirname_result} 34404007ebaSmrg if test "x$func_relative_path_tlibdir" = x ; then 34504007ebaSmrg # Have to descend all the way to the root! 34604007ebaSmrg func_relative_path_result=../$func_relative_path_result 34704007ebaSmrg func_relative_path_tcancelled=$func_relative_path_tbindir 34804007ebaSmrg break 34904007ebaSmrg fi 35004007ebaSmrg func_relative_path_result=../$func_relative_path_result 35104007ebaSmrg ;; 35204007ebaSmrg esac 35304007ebaSmrg done 35404007ebaSmrg 35504007ebaSmrg # Now calculate path; take care to avoid doubling-up slashes. 35604007ebaSmrg func_stripname '' '/' "$func_relative_path_result" 35704007ebaSmrg func_relative_path_result=$func_stripname_result 35804007ebaSmrg func_stripname '/' '/' "$func_relative_path_tcancelled" 35904007ebaSmrg if test "x$func_stripname_result" != x ; then 36004007ebaSmrg func_relative_path_result=${func_relative_path_result}/${func_stripname_result} 36104007ebaSmrg fi 36204007ebaSmrg 36304007ebaSmrg # Normalisation. If bindir is libdir, return empty string, 36404007ebaSmrg # else relative path ending with a slash; either way, target 36504007ebaSmrg # file name can be directly appended. 36604007ebaSmrg if test ! -z "$func_relative_path_result"; then 36704007ebaSmrg func_stripname './' '' "$func_relative_path_result/" 36804007ebaSmrg func_relative_path_result=$func_stripname_result 36904007ebaSmrg fi 37004007ebaSmrg} 37104007ebaSmrg 37204007ebaSmrg# The name of this program: 37304007ebaSmrgfunc_dirname_and_basename "$progpath" 37404007ebaSmrgprogname=$func_basename_result 37504007ebaSmrg 37604007ebaSmrg# Make sure we have an absolute path for reexecution: 37704007ebaSmrgcase $progpath in 37804007ebaSmrg [\\/]*|[A-Za-z]:\\*) ;; 37904007ebaSmrg *[\\/]*) 38004007ebaSmrg progdir=$func_dirname_result 38104007ebaSmrg progdir=`cd "$progdir" && pwd` 38204007ebaSmrg progpath="$progdir/$progname" 38304007ebaSmrg ;; 38404007ebaSmrg *) 38504007ebaSmrg save_IFS="$IFS" 38604007ebaSmrg IFS=${PATH_SEPARATOR-:} 38704007ebaSmrg for progdir in $PATH; do 38804007ebaSmrg IFS="$save_IFS" 38904007ebaSmrg test -x "$progdir/$progname" && break 39004007ebaSmrg done 39104007ebaSmrg IFS="$save_IFS" 39204007ebaSmrg test -n "$progdir" || progdir=`pwd` 39304007ebaSmrg progpath="$progdir/$progname" 39404007ebaSmrg ;; 39504007ebaSmrgesac 39604007ebaSmrg 39704007ebaSmrg# Sed substitution that helps us do robust quoting. It backslashifies 39804007ebaSmrg# metacharacters that are still active within double-quoted strings. 39904007ebaSmrgXsed="${SED}"' -e 1s/^X//' 40004007ebaSmrgsed_quote_subst='s/\([`"$\\]\)/\\\1/g' 40104007ebaSmrg 40204007ebaSmrg# Same as above, but do not quote variable references. 40304007ebaSmrgdouble_quote_subst='s/\(["`\\]\)/\\\1/g' 40404007ebaSmrg 40504007ebaSmrg# Sed substitution that turns a string into a regex matching for the 40604007ebaSmrg# string literally. 40704007ebaSmrgsed_make_literal_regex='s,[].[^$\\*\/],\\&,g' 40804007ebaSmrg 40904007ebaSmrg# Sed substitution that converts a w32 file name or path 41004007ebaSmrg# which contains forward slashes, into one that contains 41104007ebaSmrg# (escaped) backslashes. A very naive implementation. 41204007ebaSmrglt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' 41304007ebaSmrg 41404007ebaSmrg# Re-`\' parameter expansions in output of double_quote_subst that were 41504007ebaSmrg# `\'-ed in input to the same. If an odd number of `\' preceded a '$' 41604007ebaSmrg# in input to double_quote_subst, that '$' was protected from expansion. 41704007ebaSmrg# Since each input `\' is now two `\'s, look for any number of runs of 41804007ebaSmrg# four `\'s followed by two `\'s and then a '$'. `\' that '$'. 41904007ebaSmrgbs='\\' 42004007ebaSmrgbs2='\\\\' 42104007ebaSmrgbs4='\\\\\\\\' 42204007ebaSmrgdollar='\$' 42304007ebaSmrgsed_double_backslash="\ 42404007ebaSmrg s/$bs4/&\\ 42504007ebaSmrg/g 42604007ebaSmrg s/^$bs2$dollar/$bs&/ 42704007ebaSmrg s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g 42804007ebaSmrg s/\n//g" 42904007ebaSmrg 43004007ebaSmrg# Standard options: 43104007ebaSmrgopt_dry_run=false 43204007ebaSmrgopt_help=false 43304007ebaSmrgopt_quiet=false 43404007ebaSmrgopt_verbose=false 43504007ebaSmrgopt_warning=: 43604007ebaSmrg 43704007ebaSmrg# func_echo arg... 43804007ebaSmrg# Echo program name prefixed message, along with the current mode 43904007ebaSmrg# name if it has been set yet. 44004007ebaSmrgfunc_echo () 44104007ebaSmrg{ 44204007ebaSmrg $ECHO "$progname: ${opt_mode+$opt_mode: }$*" 44304007ebaSmrg} 44404007ebaSmrg 44504007ebaSmrg# func_verbose arg... 44604007ebaSmrg# Echo program name prefixed message in verbose mode only. 44704007ebaSmrgfunc_verbose () 44804007ebaSmrg{ 44904007ebaSmrg $opt_verbose && func_echo ${1+"$@"} 45004007ebaSmrg 45104007ebaSmrg # A bug in bash halts the script if the last line of a function 45204007ebaSmrg # fails when set -e is in force, so we need another command to 45304007ebaSmrg # work around that: 45404007ebaSmrg : 45504007ebaSmrg} 45604007ebaSmrg 45704007ebaSmrg# func_echo_all arg... 45804007ebaSmrg# Invoke $ECHO with all args, space-separated. 45904007ebaSmrgfunc_echo_all () 46004007ebaSmrg{ 46104007ebaSmrg $ECHO "$*" 46204007ebaSmrg} 46304007ebaSmrg 46404007ebaSmrg# func_error arg... 46504007ebaSmrg# Echo program name prefixed message to standard error. 46604007ebaSmrgfunc_error () 46704007ebaSmrg{ 46804007ebaSmrg $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 46904007ebaSmrg} 47004007ebaSmrg 47104007ebaSmrg# func_warning arg... 47204007ebaSmrg# Echo program name prefixed warning message to standard error. 47304007ebaSmrgfunc_warning () 47404007ebaSmrg{ 47504007ebaSmrg $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 47604007ebaSmrg 47704007ebaSmrg # bash bug again: 47804007ebaSmrg : 47904007ebaSmrg} 48004007ebaSmrg 48104007ebaSmrg# func_fatal_error arg... 48204007ebaSmrg# Echo program name prefixed message to standard error, and exit. 48304007ebaSmrgfunc_fatal_error () 48404007ebaSmrg{ 48504007ebaSmrg func_error ${1+"$@"} 48604007ebaSmrg exit $EXIT_FAILURE 48704007ebaSmrg} 48804007ebaSmrg 48904007ebaSmrg# func_fatal_help arg... 49004007ebaSmrg# Echo program name prefixed message to standard error, followed by 49104007ebaSmrg# a help hint, and exit. 49204007ebaSmrgfunc_fatal_help () 49304007ebaSmrg{ 49404007ebaSmrg func_error ${1+"$@"} 49504007ebaSmrg func_fatal_error "$help" 49604007ebaSmrg} 49704007ebaSmrghelp="Try \`$progname --help' for more information." ## default 49804007ebaSmrg 49904007ebaSmrg 50004007ebaSmrg# func_grep expression filename 50104007ebaSmrg# Check whether EXPRESSION matches any line of FILENAME, without output. 50204007ebaSmrgfunc_grep () 50304007ebaSmrg{ 50404007ebaSmrg $GREP "$1" "$2" >/dev/null 2>&1 50504007ebaSmrg} 50604007ebaSmrg 50704007ebaSmrg 50804007ebaSmrg# func_mkdir_p directory-path 50904007ebaSmrg# Make sure the entire path to DIRECTORY-PATH is available. 51004007ebaSmrgfunc_mkdir_p () 51104007ebaSmrg{ 51204007ebaSmrg my_directory_path="$1" 51304007ebaSmrg my_dir_list= 51404007ebaSmrg 51504007ebaSmrg if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then 51604007ebaSmrg 51704007ebaSmrg # Protect directory names starting with `-' 51804007ebaSmrg case $my_directory_path in 51904007ebaSmrg -*) my_directory_path="./$my_directory_path" ;; 52004007ebaSmrg esac 52104007ebaSmrg 52204007ebaSmrg # While some portion of DIR does not yet exist... 52304007ebaSmrg while test ! -d "$my_directory_path"; do 52404007ebaSmrg # ...make a list in topmost first order. Use a colon delimited 52504007ebaSmrg # list incase some portion of path contains whitespace. 52604007ebaSmrg my_dir_list="$my_directory_path:$my_dir_list" 52704007ebaSmrg 52804007ebaSmrg # If the last portion added has no slash in it, the list is done 52904007ebaSmrg case $my_directory_path in */*) ;; *) break ;; esac 53004007ebaSmrg 53104007ebaSmrg # ...otherwise throw away the child directory and loop 53204007ebaSmrg my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` 53304007ebaSmrg done 53404007ebaSmrg my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` 53504007ebaSmrg 53604007ebaSmrg save_mkdir_p_IFS="$IFS"; IFS=':' 53704007ebaSmrg for my_dir in $my_dir_list; do 53804007ebaSmrg IFS="$save_mkdir_p_IFS" 53904007ebaSmrg # mkdir can fail with a `File exist' error if two processes 54004007ebaSmrg # try to create one of the directories concurrently. Don't 54104007ebaSmrg # stop in that case! 54204007ebaSmrg $MKDIR "$my_dir" 2>/dev/null || : 54304007ebaSmrg done 54404007ebaSmrg IFS="$save_mkdir_p_IFS" 54504007ebaSmrg 54604007ebaSmrg # Bail out if we (or some other process) failed to create a directory. 54704007ebaSmrg test -d "$my_directory_path" || \ 54804007ebaSmrg func_fatal_error "Failed to create \`$1'" 54904007ebaSmrg fi 55004007ebaSmrg} 55104007ebaSmrg 55204007ebaSmrg 55304007ebaSmrg# func_mktempdir [string] 55404007ebaSmrg# Make a temporary directory that won't clash with other running 55504007ebaSmrg# libtool processes, and avoids race conditions if possible. If 55604007ebaSmrg# given, STRING is the basename for that directory. 55704007ebaSmrgfunc_mktempdir () 55804007ebaSmrg{ 55904007ebaSmrg my_template="${TMPDIR-/tmp}/${1-$progname}" 56004007ebaSmrg 56104007ebaSmrg if test "$opt_dry_run" = ":"; then 56204007ebaSmrg # Return a directory name, but don't create it in dry-run mode 56304007ebaSmrg my_tmpdir="${my_template}-$$" 56404007ebaSmrg else 56504007ebaSmrg 56604007ebaSmrg # If mktemp works, use that first and foremost 56704007ebaSmrg my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` 56804007ebaSmrg 56904007ebaSmrg if test ! -d "$my_tmpdir"; then 57004007ebaSmrg # Failing that, at least try and use $RANDOM to avoid a race 57104007ebaSmrg my_tmpdir="${my_template}-${RANDOM-0}$$" 57204007ebaSmrg 57304007ebaSmrg save_mktempdir_umask=`umask` 57404007ebaSmrg umask 0077 57504007ebaSmrg $MKDIR "$my_tmpdir" 57604007ebaSmrg umask $save_mktempdir_umask 57704007ebaSmrg fi 57804007ebaSmrg 57904007ebaSmrg # If we're not in dry-run mode, bomb out on failure 58004007ebaSmrg test -d "$my_tmpdir" || \ 58104007ebaSmrg func_fatal_error "cannot create temporary directory \`$my_tmpdir'" 58204007ebaSmrg fi 58304007ebaSmrg 58404007ebaSmrg $ECHO "$my_tmpdir" 58504007ebaSmrg} 58604007ebaSmrg 58704007ebaSmrg 58804007ebaSmrg# func_quote_for_eval arg 58904007ebaSmrg# Aesthetically quote ARG to be evaled later. 59004007ebaSmrg# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT 59104007ebaSmrg# is double-quoted, suitable for a subsequent eval, whereas 59204007ebaSmrg# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters 59304007ebaSmrg# which are still active within double quotes backslashified. 59404007ebaSmrgfunc_quote_for_eval () 59504007ebaSmrg{ 59604007ebaSmrg case $1 in 59704007ebaSmrg *[\\\`\"\$]*) 59804007ebaSmrg func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; 59904007ebaSmrg *) 60004007ebaSmrg func_quote_for_eval_unquoted_result="$1" ;; 60104007ebaSmrg esac 60204007ebaSmrg 60304007ebaSmrg case $func_quote_for_eval_unquoted_result in 60404007ebaSmrg # Double-quote args containing shell metacharacters to delay 60504007ebaSmrg # word splitting, command substitution and and variable 60604007ebaSmrg # expansion for a subsequent eval. 60704007ebaSmrg # Many Bourne shells cannot handle close brackets correctly 60804007ebaSmrg # in scan sets, so we specify it separately. 60904007ebaSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 61004007ebaSmrg func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" 61104007ebaSmrg ;; 61204007ebaSmrg *) 61304007ebaSmrg func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" 61404007ebaSmrg esac 61504007ebaSmrg} 61604007ebaSmrg 61704007ebaSmrg 61804007ebaSmrg# func_quote_for_expand arg 61904007ebaSmrg# Aesthetically quote ARG to be evaled later; same as above, 62004007ebaSmrg# but do not quote variable references. 62104007ebaSmrgfunc_quote_for_expand () 62204007ebaSmrg{ 62304007ebaSmrg case $1 in 62404007ebaSmrg *[\\\`\"]*) 62504007ebaSmrg my_arg=`$ECHO "$1" | $SED \ 62604007ebaSmrg -e "$double_quote_subst" -e "$sed_double_backslash"` ;; 62704007ebaSmrg *) 62804007ebaSmrg my_arg="$1" ;; 62904007ebaSmrg esac 63004007ebaSmrg 63104007ebaSmrg case $my_arg in 63204007ebaSmrg # Double-quote args containing shell metacharacters to delay 63304007ebaSmrg # word splitting and command substitution for a subsequent eval. 63404007ebaSmrg # Many Bourne shells cannot handle close brackets correctly 63504007ebaSmrg # in scan sets, so we specify it separately. 63604007ebaSmrg *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") 63704007ebaSmrg my_arg="\"$my_arg\"" 63804007ebaSmrg ;; 63904007ebaSmrg esac 64004007ebaSmrg 64104007ebaSmrg func_quote_for_expand_result="$my_arg" 64204007ebaSmrg} 64304007ebaSmrg 64404007ebaSmrg 64504007ebaSmrg# func_show_eval cmd [fail_exp] 64604007ebaSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 64704007ebaSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 64804007ebaSmrg# is given, then evaluate it. 64904007ebaSmrgfunc_show_eval () 65004007ebaSmrg{ 65104007ebaSmrg my_cmd="$1" 65204007ebaSmrg my_fail_exp="${2-:}" 65304007ebaSmrg 65404007ebaSmrg ${opt_silent-false} || { 65504007ebaSmrg func_quote_for_expand "$my_cmd" 65604007ebaSmrg eval "func_echo $func_quote_for_expand_result" 65704007ebaSmrg } 65804007ebaSmrg 65904007ebaSmrg if ${opt_dry_run-false}; then :; else 66004007ebaSmrg eval "$my_cmd" 66104007ebaSmrg my_status=$? 66204007ebaSmrg if test "$my_status" -eq 0; then :; else 66304007ebaSmrg eval "(exit $my_status); $my_fail_exp" 66404007ebaSmrg fi 66504007ebaSmrg fi 66604007ebaSmrg} 66704007ebaSmrg 66804007ebaSmrg 66904007ebaSmrg# func_show_eval_locale cmd [fail_exp] 67004007ebaSmrg# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is 67104007ebaSmrg# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP 67204007ebaSmrg# is given, then evaluate it. Use the saved locale for evaluation. 67304007ebaSmrgfunc_show_eval_locale () 67404007ebaSmrg{ 67504007ebaSmrg my_cmd="$1" 67604007ebaSmrg my_fail_exp="${2-:}" 67704007ebaSmrg 67804007ebaSmrg ${opt_silent-false} || { 67904007ebaSmrg func_quote_for_expand "$my_cmd" 68004007ebaSmrg eval "func_echo $func_quote_for_expand_result" 68104007ebaSmrg } 68204007ebaSmrg 68304007ebaSmrg if ${opt_dry_run-false}; then :; else 68404007ebaSmrg eval "$lt_user_locale 68504007ebaSmrg $my_cmd" 68604007ebaSmrg my_status=$? 68704007ebaSmrg eval "$lt_safe_locale" 68804007ebaSmrg if test "$my_status" -eq 0; then :; else 68904007ebaSmrg eval "(exit $my_status); $my_fail_exp" 69004007ebaSmrg fi 69104007ebaSmrg fi 69204007ebaSmrg} 69304007ebaSmrg 69404007ebaSmrg# func_tr_sh 69504007ebaSmrg# Turn $1 into a string suitable for a shell variable name. 69604007ebaSmrg# Result is stored in $func_tr_sh_result. All characters 69704007ebaSmrg# not in the set a-zA-Z0-9_ are replaced with '_'. Further, 69804007ebaSmrg# if $1 begins with a digit, a '_' is prepended as well. 69904007ebaSmrgfunc_tr_sh () 70004007ebaSmrg{ 70104007ebaSmrg case $1 in 70204007ebaSmrg [0-9]* | *[!a-zA-Z0-9_]*) 70304007ebaSmrg func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` 70404007ebaSmrg ;; 70504007ebaSmrg * ) 70604007ebaSmrg func_tr_sh_result=$1 70704007ebaSmrg ;; 70804007ebaSmrg esac 70904007ebaSmrg} 71004007ebaSmrg 71104007ebaSmrg 71204007ebaSmrg# func_version 71304007ebaSmrg# Echo version message to standard output and exit. 71404007ebaSmrgfunc_version () 71504007ebaSmrg{ 71604007ebaSmrg $opt_debug 71704007ebaSmrg 71804007ebaSmrg $SED -n '/(C)/!b go 71904007ebaSmrg :more 72004007ebaSmrg /\./!{ 72104007ebaSmrg N 72204007ebaSmrg s/\n# / / 72304007ebaSmrg b more 72404007ebaSmrg } 72504007ebaSmrg :go 72604007ebaSmrg /^# '$PROGRAM' (GNU /,/# warranty; / { 72704007ebaSmrg s/^# // 72804007ebaSmrg s/^# *$// 72904007ebaSmrg s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ 73004007ebaSmrg p 73104007ebaSmrg }' < "$progpath" 73204007ebaSmrg exit $? 73304007ebaSmrg} 73404007ebaSmrg 73504007ebaSmrg# func_usage 73604007ebaSmrg# Echo short help message to standard output and exit. 73704007ebaSmrgfunc_usage () 73804007ebaSmrg{ 73904007ebaSmrg $opt_debug 74004007ebaSmrg 74104007ebaSmrg $SED -n '/^# Usage:/,/^# *.*--help/ { 74204007ebaSmrg s/^# // 74304007ebaSmrg s/^# *$// 74404007ebaSmrg s/\$progname/'$progname'/ 74504007ebaSmrg p 74604007ebaSmrg }' < "$progpath" 74704007ebaSmrg echo 74804007ebaSmrg $ECHO "run \`$progname --help | more' for full usage" 74904007ebaSmrg exit $? 75004007ebaSmrg} 75104007ebaSmrg 75204007ebaSmrg# func_help [NOEXIT] 75304007ebaSmrg# Echo long help message to standard output and exit, 75404007ebaSmrg# unless 'noexit' is passed as argument. 75504007ebaSmrgfunc_help () 75604007ebaSmrg{ 75704007ebaSmrg $opt_debug 75804007ebaSmrg 75904007ebaSmrg $SED -n '/^# Usage:/,/# Report bugs to/ { 76004007ebaSmrg :print 76104007ebaSmrg s/^# // 76204007ebaSmrg s/^# *$// 76304007ebaSmrg s*\$progname*'$progname'* 76404007ebaSmrg s*\$host*'"$host"'* 76504007ebaSmrg s*\$SHELL*'"$SHELL"'* 76604007ebaSmrg s*\$LTCC*'"$LTCC"'* 76704007ebaSmrg s*\$LTCFLAGS*'"$LTCFLAGS"'* 76804007ebaSmrg s*\$LD*'"$LD"'* 76904007ebaSmrg s/\$with_gnu_ld/'"$with_gnu_ld"'/ 77004007ebaSmrg s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ 77104007ebaSmrg s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ 77204007ebaSmrg p 77304007ebaSmrg d 77404007ebaSmrg } 77504007ebaSmrg /^# .* home page:/b print 77604007ebaSmrg /^# General help using/b print 77704007ebaSmrg ' < "$progpath" 77804007ebaSmrg ret=$? 77904007ebaSmrg if test -z "$1"; then 78004007ebaSmrg exit $ret 78104007ebaSmrg fi 78204007ebaSmrg} 78304007ebaSmrg 78404007ebaSmrg# func_missing_arg argname 78504007ebaSmrg# Echo program name prefixed message to standard error and set global 78604007ebaSmrg# exit_cmd. 78704007ebaSmrgfunc_missing_arg () 78804007ebaSmrg{ 78904007ebaSmrg $opt_debug 79004007ebaSmrg 79104007ebaSmrg func_error "missing argument for $1." 79204007ebaSmrg exit_cmd=exit 79304007ebaSmrg} 79404007ebaSmrg 79504007ebaSmrg 79604007ebaSmrg# func_split_short_opt shortopt 79704007ebaSmrg# Set func_split_short_opt_name and func_split_short_opt_arg shell 79804007ebaSmrg# variables after splitting SHORTOPT after the 2nd character. 79904007ebaSmrgfunc_split_short_opt () 80004007ebaSmrg{ 80104007ebaSmrg my_sed_short_opt='1s/^\(..\).*$/\1/;q' 80204007ebaSmrg my_sed_short_rest='1s/^..\(.*\)$/\1/;q' 80304007ebaSmrg 80404007ebaSmrg func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` 80504007ebaSmrg func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` 80604007ebaSmrg} # func_split_short_opt may be replaced by extended shell implementation 80704007ebaSmrg 80804007ebaSmrg 80904007ebaSmrg# func_split_long_opt longopt 81004007ebaSmrg# Set func_split_long_opt_name and func_split_long_opt_arg shell 81104007ebaSmrg# variables after splitting LONGOPT at the `=' sign. 81204007ebaSmrgfunc_split_long_opt () 81304007ebaSmrg{ 81404007ebaSmrg my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' 81504007ebaSmrg my_sed_long_arg='1s/^--[^=]*=//' 81604007ebaSmrg 81704007ebaSmrg func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` 81804007ebaSmrg func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` 81904007ebaSmrg} # func_split_long_opt may be replaced by extended shell implementation 82004007ebaSmrg 82104007ebaSmrgexit_cmd=: 82204007ebaSmrg 82304007ebaSmrg 82404007ebaSmrg 82504007ebaSmrg 82604007ebaSmrg 82704007ebaSmrgmagic="%%%MAGIC variable%%%" 82804007ebaSmrgmagic_exe="%%%MAGIC EXE variable%%%" 82904007ebaSmrg 83004007ebaSmrg# Global variables. 83104007ebaSmrgnonopt= 83204007ebaSmrgpreserve_args= 83304007ebaSmrglo2o="s/\\.lo\$/.${objext}/" 83404007ebaSmrgo2lo="s/\\.${objext}\$/.lo/" 83504007ebaSmrgextracted_archives= 83604007ebaSmrgextracted_serial=0 83704007ebaSmrg 83804007ebaSmrg# If this variable is set in any of the actions, the command in it 83904007ebaSmrg# will be execed at the end. This prevents here-documents from being 84004007ebaSmrg# left over by shells. 84104007ebaSmrgexec_cmd= 84204007ebaSmrg 84304007ebaSmrg# func_append var value 84404007ebaSmrg# Append VALUE to the end of shell variable VAR. 84504007ebaSmrgfunc_append () 84604007ebaSmrg{ 84704007ebaSmrg eval "${1}=\$${1}\${2}" 84804007ebaSmrg} # func_append may be replaced by extended shell implementation 84904007ebaSmrg 85004007ebaSmrg# func_append_quoted var value 85104007ebaSmrg# Quote VALUE and append to the end of shell variable VAR, separated 85204007ebaSmrg# by a space. 85304007ebaSmrgfunc_append_quoted () 85404007ebaSmrg{ 85504007ebaSmrg func_quote_for_eval "${2}" 85604007ebaSmrg eval "${1}=\$${1}\\ \$func_quote_for_eval_result" 85704007ebaSmrg} # func_append_quoted may be replaced by extended shell implementation 85804007ebaSmrg 85904007ebaSmrg 86004007ebaSmrg# func_arith arithmetic-term... 86104007ebaSmrgfunc_arith () 86204007ebaSmrg{ 86304007ebaSmrg func_arith_result=`expr "${@}"` 86404007ebaSmrg} # func_arith may be replaced by extended shell implementation 86504007ebaSmrg 86604007ebaSmrg 86704007ebaSmrg# func_len string 86804007ebaSmrg# STRING may not start with a hyphen. 86904007ebaSmrgfunc_len () 87004007ebaSmrg{ 87104007ebaSmrg func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` 87204007ebaSmrg} # func_len may be replaced by extended shell implementation 87304007ebaSmrg 87404007ebaSmrg 87504007ebaSmrg# func_lo2o object 87604007ebaSmrgfunc_lo2o () 87704007ebaSmrg{ 87804007ebaSmrg func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` 87904007ebaSmrg} # func_lo2o may be replaced by extended shell implementation 88004007ebaSmrg 88104007ebaSmrg 88204007ebaSmrg# func_xform libobj-or-source 88304007ebaSmrgfunc_xform () 88404007ebaSmrg{ 88504007ebaSmrg func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` 88604007ebaSmrg} # func_xform may be replaced by extended shell implementation 88704007ebaSmrg 88804007ebaSmrg 88904007ebaSmrg# func_fatal_configuration arg... 89004007ebaSmrg# Echo program name prefixed message to standard error, followed by 89104007ebaSmrg# a configuration failure hint, and exit. 89204007ebaSmrgfunc_fatal_configuration () 89304007ebaSmrg{ 89404007ebaSmrg func_error ${1+"$@"} 89504007ebaSmrg func_error "See the $PACKAGE documentation for more information." 89604007ebaSmrg func_fatal_error "Fatal configuration error." 89704007ebaSmrg} 89804007ebaSmrg 89904007ebaSmrg 90004007ebaSmrg# func_config 90104007ebaSmrg# Display the configuration for all the tags in this script. 90204007ebaSmrgfunc_config () 90304007ebaSmrg{ 90404007ebaSmrg re_begincf='^# ### BEGIN LIBTOOL' 90504007ebaSmrg re_endcf='^# ### END LIBTOOL' 90604007ebaSmrg 90704007ebaSmrg # Default configuration. 90804007ebaSmrg $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" 90904007ebaSmrg 91004007ebaSmrg # Now print the configurations for the tags. 91104007ebaSmrg for tagname in $taglist; do 91204007ebaSmrg $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" 91304007ebaSmrg done 91404007ebaSmrg 91504007ebaSmrg exit $? 91604007ebaSmrg} 91704007ebaSmrg 91804007ebaSmrg# func_features 91904007ebaSmrg# Display the features supported by this script. 92004007ebaSmrgfunc_features () 92104007ebaSmrg{ 92204007ebaSmrg echo "host: $host" 92304007ebaSmrg if test "$build_libtool_libs" = yes; then 92404007ebaSmrg echo "enable shared libraries" 92504007ebaSmrg else 92604007ebaSmrg echo "disable shared libraries" 92704007ebaSmrg fi 92804007ebaSmrg if test "$build_old_libs" = yes; then 92904007ebaSmrg echo "enable static libraries" 93004007ebaSmrg else 93104007ebaSmrg echo "disable static libraries" 93204007ebaSmrg fi 93304007ebaSmrg 93404007ebaSmrg exit $? 93504007ebaSmrg} 93604007ebaSmrg 93704007ebaSmrg# func_enable_tag tagname 93804007ebaSmrg# Verify that TAGNAME is valid, and either flag an error and exit, or 93904007ebaSmrg# enable the TAGNAME tag. We also add TAGNAME to the global $taglist 94004007ebaSmrg# variable here. 94104007ebaSmrgfunc_enable_tag () 94204007ebaSmrg{ 94304007ebaSmrg # Global variable: 94404007ebaSmrg tagname="$1" 94504007ebaSmrg 94604007ebaSmrg re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" 94704007ebaSmrg re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" 94804007ebaSmrg sed_extractcf="/$re_begincf/,/$re_endcf/p" 94904007ebaSmrg 95004007ebaSmrg # Validate tagname. 95104007ebaSmrg case $tagname in 95204007ebaSmrg *[!-_A-Za-z0-9,/]*) 95304007ebaSmrg func_fatal_error "invalid tag name: $tagname" 95404007ebaSmrg ;; 95504007ebaSmrg esac 95604007ebaSmrg 95704007ebaSmrg # Don't test for the "default" C tag, as we know it's 95804007ebaSmrg # there but not specially marked. 95904007ebaSmrg case $tagname in 96004007ebaSmrg CC) ;; 96104007ebaSmrg *) 96204007ebaSmrg if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then 96304007ebaSmrg taglist="$taglist $tagname" 96404007ebaSmrg 96504007ebaSmrg # Evaluate the configuration. Be careful to quote the path 96604007ebaSmrg # and the sed script, to avoid splitting on whitespace, but 96704007ebaSmrg # also don't use non-portable quotes within backquotes within 96804007ebaSmrg # quotes we have to do it in 2 steps: 96904007ebaSmrg extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` 97004007ebaSmrg eval "$extractedcf" 97104007ebaSmrg else 97204007ebaSmrg func_error "ignoring unknown tag $tagname" 97304007ebaSmrg fi 97404007ebaSmrg ;; 97504007ebaSmrg esac 97604007ebaSmrg} 97704007ebaSmrg 97804007ebaSmrg# func_check_version_match 97904007ebaSmrg# Ensure that we are using m4 macros, and libtool script from the same 98004007ebaSmrg# release of libtool. 98104007ebaSmrgfunc_check_version_match () 98204007ebaSmrg{ 98304007ebaSmrg if test "$package_revision" != "$macro_revision"; then 98404007ebaSmrg if test "$VERSION" != "$macro_version"; then 98504007ebaSmrg if test -z "$macro_version"; then 98604007ebaSmrg cat >&2 <<_LT_EOF 98704007ebaSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 98804007ebaSmrg$progname: definition of this LT_INIT comes from an older release. 98904007ebaSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99004007ebaSmrg$progname: and run autoconf again. 99104007ebaSmrg_LT_EOF 99204007ebaSmrg else 99304007ebaSmrg cat >&2 <<_LT_EOF 99404007ebaSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, but the 99504007ebaSmrg$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. 99604007ebaSmrg$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION 99704007ebaSmrg$progname: and run autoconf again. 99804007ebaSmrg_LT_EOF 99904007ebaSmrg fi 100004007ebaSmrg else 100104007ebaSmrg cat >&2 <<_LT_EOF 100204007ebaSmrg$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, 100304007ebaSmrg$progname: but the definition of this LT_INIT comes from revision $macro_revision. 100404007ebaSmrg$progname: You should recreate aclocal.m4 with macros from revision $package_revision 100504007ebaSmrg$progname: of $PACKAGE $VERSION and run autoconf again. 100604007ebaSmrg_LT_EOF 100704007ebaSmrg fi 100804007ebaSmrg 100904007ebaSmrg exit $EXIT_MISMATCH 101004007ebaSmrg fi 101104007ebaSmrg} 101204007ebaSmrg 101304007ebaSmrg 101404007ebaSmrg# Shorthand for --mode=foo, only valid as the first argument 101504007ebaSmrgcase $1 in 101604007ebaSmrgclean|clea|cle|cl) 101704007ebaSmrg shift; set dummy --mode clean ${1+"$@"}; shift 101804007ebaSmrg ;; 101904007ebaSmrgcompile|compil|compi|comp|com|co|c) 102004007ebaSmrg shift; set dummy --mode compile ${1+"$@"}; shift 102104007ebaSmrg ;; 102204007ebaSmrgexecute|execut|execu|exec|exe|ex|e) 102304007ebaSmrg shift; set dummy --mode execute ${1+"$@"}; shift 102404007ebaSmrg ;; 102504007ebaSmrgfinish|finis|fini|fin|fi|f) 102604007ebaSmrg shift; set dummy --mode finish ${1+"$@"}; shift 102704007ebaSmrg ;; 102804007ebaSmrginstall|instal|insta|inst|ins|in|i) 102904007ebaSmrg shift; set dummy --mode install ${1+"$@"}; shift 103004007ebaSmrg ;; 103104007ebaSmrglink|lin|li|l) 103204007ebaSmrg shift; set dummy --mode link ${1+"$@"}; shift 103304007ebaSmrg ;; 103404007ebaSmrguninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) 103504007ebaSmrg shift; set dummy --mode uninstall ${1+"$@"}; shift 103604007ebaSmrg ;; 103704007ebaSmrgesac 103804007ebaSmrg 103904007ebaSmrg 104004007ebaSmrg 104104007ebaSmrg# Option defaults: 104204007ebaSmrgopt_debug=: 104304007ebaSmrgopt_dry_run=false 104404007ebaSmrgopt_config=false 104504007ebaSmrgopt_preserve_dup_deps=false 104604007ebaSmrgopt_features=false 104704007ebaSmrgopt_finish=false 104804007ebaSmrgopt_help=false 104904007ebaSmrgopt_help_all=false 105004007ebaSmrgopt_silent=: 105104007ebaSmrgopt_warning=: 105204007ebaSmrgopt_verbose=: 105304007ebaSmrgopt_silent=false 105404007ebaSmrgopt_verbose=false 105504007ebaSmrg 105604007ebaSmrg 105704007ebaSmrg# Parse options once, thoroughly. This comes as soon as possible in the 105804007ebaSmrg# script to make things like `--version' happen as quickly as we can. 105904007ebaSmrg{ 106004007ebaSmrg # this just eases exit handling 106104007ebaSmrg while test $# -gt 0; do 106204007ebaSmrg opt="$1" 106304007ebaSmrg shift 106404007ebaSmrg case $opt in 106504007ebaSmrg --debug|-x) opt_debug='set -x' 106604007ebaSmrg func_echo "enabling shell trace mode" 106704007ebaSmrg $opt_debug 106804007ebaSmrg ;; 106904007ebaSmrg --dry-run|--dryrun|-n) 107004007ebaSmrg opt_dry_run=: 107104007ebaSmrg ;; 107204007ebaSmrg --config) 107304007ebaSmrg opt_config=: 107404007ebaSmrgfunc_config 107504007ebaSmrg ;; 107604007ebaSmrg --dlopen|-dlopen) 107704007ebaSmrg optarg="$1" 107804007ebaSmrg opt_dlopen="${opt_dlopen+$opt_dlopen 107904007ebaSmrg}$optarg" 108004007ebaSmrg shift 108104007ebaSmrg ;; 108204007ebaSmrg --preserve-dup-deps) 108304007ebaSmrg opt_preserve_dup_deps=: 108404007ebaSmrg ;; 108504007ebaSmrg --features) 108604007ebaSmrg opt_features=: 108704007ebaSmrgfunc_features 108804007ebaSmrg ;; 108904007ebaSmrg --finish) 109004007ebaSmrg opt_finish=: 109104007ebaSmrgset dummy --mode finish ${1+"$@"}; shift 109204007ebaSmrg ;; 109304007ebaSmrg --help) 109404007ebaSmrg opt_help=: 109504007ebaSmrg ;; 109604007ebaSmrg --help-all) 109704007ebaSmrg opt_help_all=: 109804007ebaSmrgopt_help=': help-all' 109904007ebaSmrg ;; 110004007ebaSmrg --mode) 110104007ebaSmrg test $# = 0 && func_missing_arg $opt && break 110204007ebaSmrg optarg="$1" 110304007ebaSmrg opt_mode="$optarg" 110404007ebaSmrgcase $optarg in 110504007ebaSmrg # Valid mode arguments: 110604007ebaSmrg clean|compile|execute|finish|install|link|relink|uninstall) ;; 110704007ebaSmrg 110804007ebaSmrg # Catch anything else as an error 110904007ebaSmrg *) func_error "invalid argument for $opt" 111004007ebaSmrg exit_cmd=exit 111104007ebaSmrg break 111204007ebaSmrg ;; 111304007ebaSmrgesac 111404007ebaSmrg shift 111504007ebaSmrg ;; 111604007ebaSmrg --no-silent|--no-quiet) 111704007ebaSmrg opt_silent=false 111804007ebaSmrgfunc_append preserve_args " $opt" 111904007ebaSmrg ;; 112004007ebaSmrg --no-warning|--no-warn) 112104007ebaSmrg opt_warning=false 112204007ebaSmrgfunc_append preserve_args " $opt" 112304007ebaSmrg ;; 112404007ebaSmrg --no-verbose) 112504007ebaSmrg opt_verbose=false 112604007ebaSmrgfunc_append preserve_args " $opt" 112704007ebaSmrg ;; 112804007ebaSmrg --silent|--quiet) 112904007ebaSmrg opt_silent=: 113004007ebaSmrgfunc_append preserve_args " $opt" 113104007ebaSmrg opt_verbose=false 113204007ebaSmrg ;; 113304007ebaSmrg --verbose|-v) 113404007ebaSmrg opt_verbose=: 113504007ebaSmrgfunc_append preserve_args " $opt" 113604007ebaSmrgopt_silent=false 113704007ebaSmrg ;; 113804007ebaSmrg --tag) 113904007ebaSmrg test $# = 0 && func_missing_arg $opt && break 114004007ebaSmrg optarg="$1" 114104007ebaSmrg opt_tag="$optarg" 114204007ebaSmrgfunc_append preserve_args " $opt $optarg" 114304007ebaSmrgfunc_enable_tag "$optarg" 114404007ebaSmrg shift 114504007ebaSmrg ;; 114604007ebaSmrg 114704007ebaSmrg -\?|-h) func_usage ;; 114804007ebaSmrg --help) func_help ;; 114904007ebaSmrg --version) func_version ;; 115004007ebaSmrg 115104007ebaSmrg # Separate optargs to long options: 115204007ebaSmrg --*=*) 115304007ebaSmrg func_split_long_opt "$opt" 115404007ebaSmrg set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} 115504007ebaSmrg shift 115604007ebaSmrg ;; 115704007ebaSmrg 115804007ebaSmrg # Separate non-argument short options: 115904007ebaSmrg -\?*|-h*|-n*|-v*) 116004007ebaSmrg func_split_short_opt "$opt" 116104007ebaSmrg set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} 116204007ebaSmrg shift 116304007ebaSmrg ;; 116404007ebaSmrg 116504007ebaSmrg --) break ;; 116604007ebaSmrg -*) func_fatal_help "unrecognized option \`$opt'" ;; 116704007ebaSmrg *) set dummy "$opt" ${1+"$@"}; shift; break ;; 116804007ebaSmrg esac 116904007ebaSmrg done 117004007ebaSmrg 117104007ebaSmrg # Validate options: 117204007ebaSmrg 117304007ebaSmrg # save first non-option argument 117404007ebaSmrg if test "$#" -gt 0; then 117504007ebaSmrg nonopt="$opt" 117604007ebaSmrg shift 117704007ebaSmrg fi 117804007ebaSmrg 117904007ebaSmrg # preserve --debug 118004007ebaSmrg test "$opt_debug" = : || func_append preserve_args " --debug" 118104007ebaSmrg 118204007ebaSmrg case $host in 118304007ebaSmrg *cygwin* | *mingw* | *pw32* | *cegcc*) 118404007ebaSmrg # don't eliminate duplications in $postdeps and $predeps 118504007ebaSmrg opt_duplicate_compiler_generated_deps=: 118604007ebaSmrg ;; 118704007ebaSmrg *) 118804007ebaSmrg opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps 118904007ebaSmrg ;; 119004007ebaSmrg esac 119104007ebaSmrg 119204007ebaSmrg $opt_help || { 119304007ebaSmrg # Sanity checks first: 119404007ebaSmrg func_check_version_match 119504007ebaSmrg 119604007ebaSmrg if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then 119704007ebaSmrg func_fatal_configuration "not configured to build any kind of library" 119804007ebaSmrg fi 119904007ebaSmrg 120004007ebaSmrg # Darwin sucks 120104007ebaSmrg eval std_shrext=\"$shrext_cmds\" 120204007ebaSmrg 120304007ebaSmrg # Only execute mode is allowed to have -dlopen flags. 120404007ebaSmrg if test -n "$opt_dlopen" && test "$opt_mode" != execute; then 120504007ebaSmrg func_error "unrecognized option \`-dlopen'" 120604007ebaSmrg $ECHO "$help" 1>&2 120704007ebaSmrg exit $EXIT_FAILURE 120804007ebaSmrg fi 120904007ebaSmrg 121004007ebaSmrg # Change the help message to a mode-specific one. 121104007ebaSmrg generic_help="$help" 121204007ebaSmrg help="Try \`$progname --help --mode=$opt_mode' for more information." 121304007ebaSmrg } 121404007ebaSmrg 121504007ebaSmrg 121604007ebaSmrg # Bail if the options were screwed 121704007ebaSmrg $exit_cmd $EXIT_FAILURE 121804007ebaSmrg} 121904007ebaSmrg 122004007ebaSmrg 122104007ebaSmrg 122204007ebaSmrg 122304007ebaSmrg## ----------- ## 122404007ebaSmrg## Main. ## 122504007ebaSmrg## ----------- ## 122604007ebaSmrg 122704007ebaSmrg# func_lalib_p file 122804007ebaSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 122904007ebaSmrg# This function is only a basic sanity check; it will hardly flush out 123004007ebaSmrg# determined imposters. 123104007ebaSmrgfunc_lalib_p () 123204007ebaSmrg{ 123304007ebaSmrg test -f "$1" && 123404007ebaSmrg $SED -e 4q "$1" 2>/dev/null \ 123504007ebaSmrg | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 123604007ebaSmrg} 123704007ebaSmrg 123804007ebaSmrg# func_lalib_unsafe_p file 123904007ebaSmrg# True iff FILE is a libtool `.la' library or `.lo' object file. 124004007ebaSmrg# This function implements the same check as func_lalib_p without 124104007ebaSmrg# resorting to external programs. To this end, it redirects stdin and 124204007ebaSmrg# closes it afterwards, without saving the original file descriptor. 124304007ebaSmrg# As a safety measure, use it only where a negative result would be 124404007ebaSmrg# fatal anyway. Works if `file' does not exist. 124504007ebaSmrgfunc_lalib_unsafe_p () 124604007ebaSmrg{ 124704007ebaSmrg lalib_p=no 124804007ebaSmrg if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then 124904007ebaSmrg for lalib_p_l in 1 2 3 4 125004007ebaSmrg do 125104007ebaSmrg read lalib_p_line 125204007ebaSmrg case "$lalib_p_line" in 125304007ebaSmrg \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; 125404007ebaSmrg esac 125504007ebaSmrg done 125604007ebaSmrg exec 0<&5 5<&- 125704007ebaSmrg fi 125804007ebaSmrg test "$lalib_p" = yes 125904007ebaSmrg} 126004007ebaSmrg 126104007ebaSmrg# func_ltwrapper_script_p file 126204007ebaSmrg# True iff FILE is a libtool wrapper script 126304007ebaSmrg# This function is only a basic sanity check; it will hardly flush out 126404007ebaSmrg# determined imposters. 126504007ebaSmrgfunc_ltwrapper_script_p () 126604007ebaSmrg{ 126704007ebaSmrg func_lalib_p "$1" 126804007ebaSmrg} 126904007ebaSmrg 127004007ebaSmrg# func_ltwrapper_executable_p file 127104007ebaSmrg# True iff FILE is a libtool wrapper executable 127204007ebaSmrg# This function is only a basic sanity check; it will hardly flush out 127304007ebaSmrg# determined imposters. 127404007ebaSmrgfunc_ltwrapper_executable_p () 127504007ebaSmrg{ 127604007ebaSmrg func_ltwrapper_exec_suffix= 127704007ebaSmrg case $1 in 127804007ebaSmrg *.exe) ;; 127904007ebaSmrg *) func_ltwrapper_exec_suffix=.exe ;; 128004007ebaSmrg esac 128104007ebaSmrg $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 128204007ebaSmrg} 128304007ebaSmrg 128404007ebaSmrg# func_ltwrapper_scriptname file 128504007ebaSmrg# Assumes file is an ltwrapper_executable 128604007ebaSmrg# uses $file to determine the appropriate filename for a 128704007ebaSmrg# temporary ltwrapper_script. 128804007ebaSmrgfunc_ltwrapper_scriptname () 128904007ebaSmrg{ 129004007ebaSmrg func_dirname_and_basename "$1" "" "." 129104007ebaSmrg func_stripname '' '.exe' "$func_basename_result" 129204007ebaSmrg func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" 129304007ebaSmrg} 129404007ebaSmrg 129504007ebaSmrg# func_ltwrapper_p file 129604007ebaSmrg# True iff FILE is a libtool wrapper script or wrapper executable 129704007ebaSmrg# This function is only a basic sanity check; it will hardly flush out 129804007ebaSmrg# determined imposters. 129904007ebaSmrgfunc_ltwrapper_p () 130004007ebaSmrg{ 130104007ebaSmrg func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" 130204007ebaSmrg} 130304007ebaSmrg 130404007ebaSmrg 130504007ebaSmrg# func_execute_cmds commands fail_cmd 130604007ebaSmrg# Execute tilde-delimited COMMANDS. 130704007ebaSmrg# If FAIL_CMD is given, eval that upon failure. 130804007ebaSmrg# FAIL_CMD may read-access the current command in variable CMD! 130904007ebaSmrgfunc_execute_cmds () 131004007ebaSmrg{ 131104007ebaSmrg $opt_debug 131204007ebaSmrg save_ifs=$IFS; IFS='~' 131304007ebaSmrg for cmd in $1; do 131404007ebaSmrg IFS=$save_ifs 131504007ebaSmrg eval cmd=\"$cmd\" 131604007ebaSmrg func_show_eval "$cmd" "${2-:}" 131704007ebaSmrg done 131804007ebaSmrg IFS=$save_ifs 131904007ebaSmrg} 132004007ebaSmrg 132104007ebaSmrg 132204007ebaSmrg# func_source file 132304007ebaSmrg# Source FILE, adding directory component if necessary. 132404007ebaSmrg# Note that it is not necessary on cygwin/mingw to append a dot to 132504007ebaSmrg# FILE even if both FILE and FILE.exe exist: automatic-append-.exe 132604007ebaSmrg# behavior happens only for exec(3), not for open(2)! Also, sourcing 132704007ebaSmrg# `FILE.' does not work on cygwin managed mounts. 132804007ebaSmrgfunc_source () 132904007ebaSmrg{ 133004007ebaSmrg $opt_debug 133104007ebaSmrg case $1 in 133204007ebaSmrg */* | *\\*) . "$1" ;; 133304007ebaSmrg *) . "./$1" ;; 133404007ebaSmrg esac 133504007ebaSmrg} 133604007ebaSmrg 133704007ebaSmrg 133804007ebaSmrg# func_resolve_sysroot PATH 133904007ebaSmrg# Replace a leading = in PATH with a sysroot. Store the result into 134004007ebaSmrg# func_resolve_sysroot_result 134104007ebaSmrgfunc_resolve_sysroot () 134204007ebaSmrg{ 134304007ebaSmrg func_resolve_sysroot_result=$1 134404007ebaSmrg case $func_resolve_sysroot_result in 134504007ebaSmrg =*) 134604007ebaSmrg func_stripname '=' '' "$func_resolve_sysroot_result" 134704007ebaSmrg func_resolve_sysroot_result=$lt_sysroot$func_stripname_result 134804007ebaSmrg ;; 134904007ebaSmrg esac 135004007ebaSmrg} 135104007ebaSmrg 135204007ebaSmrg# func_replace_sysroot PATH 135304007ebaSmrg# If PATH begins with the sysroot, replace it with = and 135404007ebaSmrg# store the result into func_replace_sysroot_result. 135504007ebaSmrgfunc_replace_sysroot () 135604007ebaSmrg{ 135704007ebaSmrg case "$lt_sysroot:$1" in 135804007ebaSmrg ?*:"$lt_sysroot"*) 135904007ebaSmrg func_stripname "$lt_sysroot" '' "$1" 136004007ebaSmrg func_replace_sysroot_result="=$func_stripname_result" 136104007ebaSmrg ;; 136204007ebaSmrg *) 136304007ebaSmrg # Including no sysroot. 136404007ebaSmrg func_replace_sysroot_result=$1 136504007ebaSmrg ;; 136604007ebaSmrg esac 136704007ebaSmrg} 136804007ebaSmrg 136904007ebaSmrg# func_infer_tag arg 137004007ebaSmrg# Infer tagged configuration to use if any are available and 137104007ebaSmrg# if one wasn't chosen via the "--tag" command line option. 137204007ebaSmrg# Only attempt this if the compiler in the base compile 137304007ebaSmrg# command doesn't match the default compiler. 137404007ebaSmrg# arg is usually of the form 'gcc ...' 137504007ebaSmrgfunc_infer_tag () 137604007ebaSmrg{ 137704007ebaSmrg $opt_debug 137804007ebaSmrg if test -n "$available_tags" && test -z "$tagname"; then 137904007ebaSmrg CC_quoted= 138004007ebaSmrg for arg in $CC; do 138104007ebaSmrg func_append_quoted CC_quoted "$arg" 138204007ebaSmrg done 138304007ebaSmrg CC_expanded=`func_echo_all $CC` 138404007ebaSmrg CC_quoted_expanded=`func_echo_all $CC_quoted` 138504007ebaSmrg case $@ in 138604007ebaSmrg # Blanks in the command may have been stripped by the calling shell, 138704007ebaSmrg # but not from the CC environment variable when configure was run. 138804007ebaSmrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 138904007ebaSmrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; 139004007ebaSmrg # Blanks at the start of $base_compile will cause this to fail 139104007ebaSmrg # if we don't check for them as well. 139204007ebaSmrg *) 139304007ebaSmrg for z in $available_tags; do 139404007ebaSmrg if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then 139504007ebaSmrg # Evaluate the configuration. 139604007ebaSmrg eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" 139704007ebaSmrg CC_quoted= 139804007ebaSmrg for arg in $CC; do 139904007ebaSmrg # Double-quote args containing other shell metacharacters. 140004007ebaSmrg func_append_quoted CC_quoted "$arg" 140104007ebaSmrg done 140204007ebaSmrg CC_expanded=`func_echo_all $CC` 140304007ebaSmrg CC_quoted_expanded=`func_echo_all $CC_quoted` 140404007ebaSmrg case "$@ " in 140504007ebaSmrg " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ 140604007ebaSmrg " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) 140704007ebaSmrg # The compiler in the base compile command matches 140804007ebaSmrg # the one in the tagged configuration. 140904007ebaSmrg # Assume this is the tagged configuration we want. 141004007ebaSmrg tagname=$z 141104007ebaSmrg break 141204007ebaSmrg ;; 141304007ebaSmrg esac 141404007ebaSmrg fi 141504007ebaSmrg done 141604007ebaSmrg # If $tagname still isn't set, then no tagged configuration 141704007ebaSmrg # was found and let the user know that the "--tag" command 141804007ebaSmrg # line option must be used. 141904007ebaSmrg if test -z "$tagname"; then 142004007ebaSmrg func_echo "unable to infer tagged configuration" 142104007ebaSmrg func_fatal_error "specify a tag with \`--tag'" 142204007ebaSmrg# else 142304007ebaSmrg# func_verbose "using $tagname tagged configuration" 142404007ebaSmrg fi 142504007ebaSmrg ;; 142604007ebaSmrg esac 142704007ebaSmrg fi 142804007ebaSmrg} 142904007ebaSmrg 143004007ebaSmrg 143104007ebaSmrg 143204007ebaSmrg# func_write_libtool_object output_name pic_name nonpic_name 143304007ebaSmrg# Create a libtool object file (analogous to a ".la" file), 143404007ebaSmrg# but don't create it if we're doing a dry run. 143504007ebaSmrgfunc_write_libtool_object () 143604007ebaSmrg{ 143704007ebaSmrg write_libobj=${1} 143804007ebaSmrg if test "$build_libtool_libs" = yes; then 143904007ebaSmrg write_lobj=\'${2}\' 144004007ebaSmrg else 144104007ebaSmrg write_lobj=none 144204007ebaSmrg fi 144304007ebaSmrg 144404007ebaSmrg if test "$build_old_libs" = yes; then 144504007ebaSmrg write_oldobj=\'${3}\' 144604007ebaSmrg else 144704007ebaSmrg write_oldobj=none 144804007ebaSmrg fi 144904007ebaSmrg 145004007ebaSmrg $opt_dry_run || { 145104007ebaSmrg cat >${write_libobj}T <<EOF 145204007ebaSmrg# $write_libobj - a libtool object file 145304007ebaSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 145404007ebaSmrg# 145504007ebaSmrg# Please DO NOT delete this file! 145604007ebaSmrg# It is necessary for linking the library. 145704007ebaSmrg 145804007ebaSmrg# Name of the PIC object. 145904007ebaSmrgpic_object=$write_lobj 146004007ebaSmrg 146104007ebaSmrg# Name of the non-PIC object 146204007ebaSmrgnon_pic_object=$write_oldobj 146304007ebaSmrg 146404007ebaSmrgEOF 146504007ebaSmrg $MV "${write_libobj}T" "${write_libobj}" 146604007ebaSmrg } 146704007ebaSmrg} 146804007ebaSmrg 146904007ebaSmrg 147004007ebaSmrg################################################## 147104007ebaSmrg# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # 147204007ebaSmrg################################################## 147304007ebaSmrg 147404007ebaSmrg# func_convert_core_file_wine_to_w32 ARG 147504007ebaSmrg# Helper function used by file name conversion functions when $build is *nix, 147604007ebaSmrg# and $host is mingw, cygwin, or some other w32 environment. Relies on a 147704007ebaSmrg# correctly configured wine environment available, with the winepath program 147804007ebaSmrg# in $build's $PATH. 147904007ebaSmrg# 148004007ebaSmrg# ARG is the $build file name to be converted to w32 format. 148104007ebaSmrg# Result is available in $func_convert_core_file_wine_to_w32_result, and will 148204007ebaSmrg# be empty on error (or when ARG is empty) 148304007ebaSmrgfunc_convert_core_file_wine_to_w32 () 148404007ebaSmrg{ 148504007ebaSmrg $opt_debug 148604007ebaSmrg func_convert_core_file_wine_to_w32_result="$1" 148704007ebaSmrg if test -n "$1"; then 148804007ebaSmrg # Unfortunately, winepath does not exit with a non-zero error code, so we 148904007ebaSmrg # are forced to check the contents of stdout. On the other hand, if the 149004007ebaSmrg # command is not found, the shell will set an exit code of 127 and print 149104007ebaSmrg # *an error message* to stdout. So we must check for both error code of 149204007ebaSmrg # zero AND non-empty stdout, which explains the odd construction: 149304007ebaSmrg func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` 149404007ebaSmrg if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then 149504007ebaSmrg func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | 149604007ebaSmrg $SED -e "$lt_sed_naive_backslashify"` 149704007ebaSmrg else 149804007ebaSmrg func_convert_core_file_wine_to_w32_result= 149904007ebaSmrg fi 150004007ebaSmrg fi 150104007ebaSmrg} 150204007ebaSmrg# end: func_convert_core_file_wine_to_w32 150304007ebaSmrg 150404007ebaSmrg 150504007ebaSmrg# func_convert_core_path_wine_to_w32 ARG 150604007ebaSmrg# Helper function used by path conversion functions when $build is *nix, and 150704007ebaSmrg# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly 150804007ebaSmrg# configured wine environment available, with the winepath program in $build's 150904007ebaSmrg# $PATH. Assumes ARG has no leading or trailing path separator characters. 151004007ebaSmrg# 151104007ebaSmrg# ARG is path to be converted from $build format to win32. 151204007ebaSmrg# Result is available in $func_convert_core_path_wine_to_w32_result. 151304007ebaSmrg# Unconvertible file (directory) names in ARG are skipped; if no directory names 151404007ebaSmrg# are convertible, then the result may be empty. 151504007ebaSmrgfunc_convert_core_path_wine_to_w32 () 151604007ebaSmrg{ 151704007ebaSmrg $opt_debug 151804007ebaSmrg # unfortunately, winepath doesn't convert paths, only file names 151904007ebaSmrg func_convert_core_path_wine_to_w32_result="" 152004007ebaSmrg if test -n "$1"; then 152104007ebaSmrg oldIFS=$IFS 152204007ebaSmrg IFS=: 152304007ebaSmrg for func_convert_core_path_wine_to_w32_f in $1; do 152404007ebaSmrg IFS=$oldIFS 152504007ebaSmrg func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" 152604007ebaSmrg if test -n "$func_convert_core_file_wine_to_w32_result" ; then 152704007ebaSmrg if test -z "$func_convert_core_path_wine_to_w32_result"; then 152804007ebaSmrg func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" 152904007ebaSmrg else 153004007ebaSmrg func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" 153104007ebaSmrg fi 153204007ebaSmrg fi 153304007ebaSmrg done 153404007ebaSmrg IFS=$oldIFS 153504007ebaSmrg fi 153604007ebaSmrg} 153704007ebaSmrg# end: func_convert_core_path_wine_to_w32 153804007ebaSmrg 153904007ebaSmrg 154004007ebaSmrg# func_cygpath ARGS... 154104007ebaSmrg# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when 154204007ebaSmrg# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) 154304007ebaSmrg# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or 154404007ebaSmrg# (2), returns the Cygwin file name or path in func_cygpath_result (input 154504007ebaSmrg# file name or path is assumed to be in w32 format, as previously converted 154604007ebaSmrg# from $build's *nix or MSYS format). In case (3), returns the w32 file name 154704007ebaSmrg# or path in func_cygpath_result (input file name or path is assumed to be in 154804007ebaSmrg# Cygwin format). Returns an empty string on error. 154904007ebaSmrg# 155004007ebaSmrg# ARGS are passed to cygpath, with the last one being the file name or path to 155104007ebaSmrg# be converted. 155204007ebaSmrg# 155304007ebaSmrg# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH 155404007ebaSmrg# environment variable; do not put it in $PATH. 155504007ebaSmrgfunc_cygpath () 155604007ebaSmrg{ 155704007ebaSmrg $opt_debug 155804007ebaSmrg if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then 155904007ebaSmrg func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` 156004007ebaSmrg if test "$?" -ne 0; then 156104007ebaSmrg # on failure, ensure result is empty 156204007ebaSmrg func_cygpath_result= 156304007ebaSmrg fi 156404007ebaSmrg else 156504007ebaSmrg func_cygpath_result= 156604007ebaSmrg func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" 156704007ebaSmrg fi 156804007ebaSmrg} 156904007ebaSmrg#end: func_cygpath 157004007ebaSmrg 157104007ebaSmrg 157204007ebaSmrg# func_convert_core_msys_to_w32 ARG 157304007ebaSmrg# Convert file name or path ARG from MSYS format to w32 format. Return 157404007ebaSmrg# result in func_convert_core_msys_to_w32_result. 157504007ebaSmrgfunc_convert_core_msys_to_w32 () 157604007ebaSmrg{ 157704007ebaSmrg $opt_debug 157804007ebaSmrg # awkward: cmd appends spaces to result 157904007ebaSmrg func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | 158004007ebaSmrg $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` 158104007ebaSmrg} 158204007ebaSmrg#end: func_convert_core_msys_to_w32 158304007ebaSmrg 158404007ebaSmrg 158504007ebaSmrg# func_convert_file_check ARG1 ARG2 158604007ebaSmrg# Verify that ARG1 (a file name in $build format) was converted to $host 158704007ebaSmrg# format in ARG2. Otherwise, emit an error message, but continue (resetting 158804007ebaSmrg# func_to_host_file_result to ARG1). 158904007ebaSmrgfunc_convert_file_check () 159004007ebaSmrg{ 159104007ebaSmrg $opt_debug 159204007ebaSmrg if test -z "$2" && test -n "$1" ; then 159304007ebaSmrg func_error "Could not determine host file name corresponding to" 159404007ebaSmrg func_error " \`$1'" 159504007ebaSmrg func_error "Continuing, but uninstalled executables may not work." 159604007ebaSmrg # Fallback: 159704007ebaSmrg func_to_host_file_result="$1" 159804007ebaSmrg fi 159904007ebaSmrg} 160004007ebaSmrg# end func_convert_file_check 160104007ebaSmrg 160204007ebaSmrg 160304007ebaSmrg# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH 160404007ebaSmrg# Verify that FROM_PATH (a path in $build format) was converted to $host 160504007ebaSmrg# format in TO_PATH. Otherwise, emit an error message, but continue, resetting 160604007ebaSmrg# func_to_host_file_result to a simplistic fallback value (see below). 160704007ebaSmrgfunc_convert_path_check () 160804007ebaSmrg{ 160904007ebaSmrg $opt_debug 161004007ebaSmrg if test -z "$4" && test -n "$3"; then 161104007ebaSmrg func_error "Could not determine the host path corresponding to" 161204007ebaSmrg func_error " \`$3'" 161304007ebaSmrg func_error "Continuing, but uninstalled executables may not work." 161404007ebaSmrg # Fallback. This is a deliberately simplistic "conversion" and 161504007ebaSmrg # should not be "improved". See libtool.info. 161604007ebaSmrg if test "x$1" != "x$2"; then 161704007ebaSmrg lt_replace_pathsep_chars="s|$1|$2|g" 161804007ebaSmrg func_to_host_path_result=`echo "$3" | 161904007ebaSmrg $SED -e "$lt_replace_pathsep_chars"` 162004007ebaSmrg else 162104007ebaSmrg func_to_host_path_result="$3" 162204007ebaSmrg fi 162304007ebaSmrg fi 162404007ebaSmrg} 162504007ebaSmrg# end func_convert_path_check 162604007ebaSmrg 162704007ebaSmrg 162804007ebaSmrg# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG 162904007ebaSmrg# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT 163004007ebaSmrg# and appending REPL if ORIG matches BACKPAT. 163104007ebaSmrgfunc_convert_path_front_back_pathsep () 163204007ebaSmrg{ 163304007ebaSmrg $opt_debug 163404007ebaSmrg case $4 in 163504007ebaSmrg $1 ) func_to_host_path_result="$3$func_to_host_path_result" 163604007ebaSmrg ;; 163704007ebaSmrg esac 163804007ebaSmrg case $4 in 163904007ebaSmrg $2 ) func_append func_to_host_path_result "$3" 164004007ebaSmrg ;; 164104007ebaSmrg esac 164204007ebaSmrg} 164304007ebaSmrg# end func_convert_path_front_back_pathsep 164404007ebaSmrg 164504007ebaSmrg 164604007ebaSmrg################################################## 164704007ebaSmrg# $build to $host FILE NAME CONVERSION FUNCTIONS # 164804007ebaSmrg################################################## 164904007ebaSmrg# invoked via `$to_host_file_cmd ARG' 165004007ebaSmrg# 165104007ebaSmrg# In each case, ARG is the path to be converted from $build to $host format. 165204007ebaSmrg# Result will be available in $func_to_host_file_result. 165304007ebaSmrg 165404007ebaSmrg 165504007ebaSmrg# func_to_host_file ARG 165604007ebaSmrg# Converts the file name ARG from $build format to $host format. Return result 165704007ebaSmrg# in func_to_host_file_result. 165804007ebaSmrgfunc_to_host_file () 165904007ebaSmrg{ 166004007ebaSmrg $opt_debug 166104007ebaSmrg $to_host_file_cmd "$1" 166204007ebaSmrg} 166304007ebaSmrg# end func_to_host_file 166404007ebaSmrg 166504007ebaSmrg 166604007ebaSmrg# func_to_tool_file ARG LAZY 166704007ebaSmrg# converts the file name ARG from $build format to toolchain format. Return 166804007ebaSmrg# result in func_to_tool_file_result. If the conversion in use is listed 166904007ebaSmrg# in (the comma separated) LAZY, no conversion takes place. 167004007ebaSmrgfunc_to_tool_file () 167104007ebaSmrg{ 167204007ebaSmrg $opt_debug 167304007ebaSmrg case ,$2, in 167404007ebaSmrg *,"$to_tool_file_cmd",*) 167504007ebaSmrg func_to_tool_file_result=$1 167604007ebaSmrg ;; 167704007ebaSmrg *) 167804007ebaSmrg $to_tool_file_cmd "$1" 167904007ebaSmrg func_to_tool_file_result=$func_to_host_file_result 168004007ebaSmrg ;; 168104007ebaSmrg esac 168204007ebaSmrg} 168304007ebaSmrg# end func_to_tool_file 168404007ebaSmrg 168504007ebaSmrg 168604007ebaSmrg# func_convert_file_noop ARG 168704007ebaSmrg# Copy ARG to func_to_host_file_result. 168804007ebaSmrgfunc_convert_file_noop () 168904007ebaSmrg{ 169004007ebaSmrg func_to_host_file_result="$1" 169104007ebaSmrg} 169204007ebaSmrg# end func_convert_file_noop 169304007ebaSmrg 169404007ebaSmrg 169504007ebaSmrg# func_convert_file_msys_to_w32 ARG 169604007ebaSmrg# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic 169704007ebaSmrg# conversion to w32 is not available inside the cwrapper. Returns result in 169804007ebaSmrg# func_to_host_file_result. 169904007ebaSmrgfunc_convert_file_msys_to_w32 () 170004007ebaSmrg{ 170104007ebaSmrg $opt_debug 170204007ebaSmrg func_to_host_file_result="$1" 170304007ebaSmrg if test -n "$1"; then 170404007ebaSmrg func_convert_core_msys_to_w32 "$1" 170504007ebaSmrg func_to_host_file_result="$func_convert_core_msys_to_w32_result" 170604007ebaSmrg fi 170704007ebaSmrg func_convert_file_check "$1" "$func_to_host_file_result" 170804007ebaSmrg} 170904007ebaSmrg# end func_convert_file_msys_to_w32 171004007ebaSmrg 171104007ebaSmrg 171204007ebaSmrg# func_convert_file_cygwin_to_w32 ARG 171304007ebaSmrg# Convert file name ARG from Cygwin to w32 format. Returns result in 171404007ebaSmrg# func_to_host_file_result. 171504007ebaSmrgfunc_convert_file_cygwin_to_w32 () 171604007ebaSmrg{ 171704007ebaSmrg $opt_debug 171804007ebaSmrg func_to_host_file_result="$1" 171904007ebaSmrg if test -n "$1"; then 172004007ebaSmrg # because $build is cygwin, we call "the" cygpath in $PATH; no need to use 172104007ebaSmrg # LT_CYGPATH in this case. 172204007ebaSmrg func_to_host_file_result=`cygpath -m "$1"` 172304007ebaSmrg fi 172404007ebaSmrg func_convert_file_check "$1" "$func_to_host_file_result" 172504007ebaSmrg} 172604007ebaSmrg# end func_convert_file_cygwin_to_w32 172704007ebaSmrg 172804007ebaSmrg 172904007ebaSmrg# func_convert_file_nix_to_w32 ARG 173004007ebaSmrg# Convert file name ARG from *nix to w32 format. Requires a wine environment 173104007ebaSmrg# and a working winepath. Returns result in func_to_host_file_result. 173204007ebaSmrgfunc_convert_file_nix_to_w32 () 173304007ebaSmrg{ 173404007ebaSmrg $opt_debug 173504007ebaSmrg func_to_host_file_result="$1" 173604007ebaSmrg if test -n "$1"; then 173704007ebaSmrg func_convert_core_file_wine_to_w32 "$1" 173804007ebaSmrg func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" 173904007ebaSmrg fi 174004007ebaSmrg func_convert_file_check "$1" "$func_to_host_file_result" 174104007ebaSmrg} 174204007ebaSmrg# end func_convert_file_nix_to_w32 174304007ebaSmrg 174404007ebaSmrg 174504007ebaSmrg# func_convert_file_msys_to_cygwin ARG 174604007ebaSmrg# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 174704007ebaSmrg# Returns result in func_to_host_file_result. 174804007ebaSmrgfunc_convert_file_msys_to_cygwin () 174904007ebaSmrg{ 175004007ebaSmrg $opt_debug 175104007ebaSmrg func_to_host_file_result="$1" 175204007ebaSmrg if test -n "$1"; then 175304007ebaSmrg func_convert_core_msys_to_w32 "$1" 175404007ebaSmrg func_cygpath -u "$func_convert_core_msys_to_w32_result" 175504007ebaSmrg func_to_host_file_result="$func_cygpath_result" 175604007ebaSmrg fi 175704007ebaSmrg func_convert_file_check "$1" "$func_to_host_file_result" 175804007ebaSmrg} 175904007ebaSmrg# end func_convert_file_msys_to_cygwin 176004007ebaSmrg 176104007ebaSmrg 176204007ebaSmrg# func_convert_file_nix_to_cygwin ARG 176304007ebaSmrg# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed 176404007ebaSmrg# in a wine environment, working winepath, and LT_CYGPATH set. Returns result 176504007ebaSmrg# in func_to_host_file_result. 176604007ebaSmrgfunc_convert_file_nix_to_cygwin () 176704007ebaSmrg{ 176804007ebaSmrg $opt_debug 176904007ebaSmrg func_to_host_file_result="$1" 177004007ebaSmrg if test -n "$1"; then 177104007ebaSmrg # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. 177204007ebaSmrg func_convert_core_file_wine_to_w32 "$1" 177304007ebaSmrg func_cygpath -u "$func_convert_core_file_wine_to_w32_result" 177404007ebaSmrg func_to_host_file_result="$func_cygpath_result" 177504007ebaSmrg fi 177604007ebaSmrg func_convert_file_check "$1" "$func_to_host_file_result" 177704007ebaSmrg} 177804007ebaSmrg# end func_convert_file_nix_to_cygwin 177904007ebaSmrg 178004007ebaSmrg 178104007ebaSmrg############################################# 178204007ebaSmrg# $build to $host PATH CONVERSION FUNCTIONS # 178304007ebaSmrg############################################# 178404007ebaSmrg# invoked via `$to_host_path_cmd ARG' 178504007ebaSmrg# 178604007ebaSmrg# In each case, ARG is the path to be converted from $build to $host format. 178704007ebaSmrg# The result will be available in $func_to_host_path_result. 178804007ebaSmrg# 178904007ebaSmrg# Path separators are also converted from $build format to $host format. If 179004007ebaSmrg# ARG begins or ends with a path separator character, it is preserved (but 179104007ebaSmrg# converted to $host format) on output. 179204007ebaSmrg# 179304007ebaSmrg# All path conversion functions are named using the following convention: 179404007ebaSmrg# file name conversion function : func_convert_file_X_to_Y () 179504007ebaSmrg# path conversion function : func_convert_path_X_to_Y () 179604007ebaSmrg# where, for any given $build/$host combination the 'X_to_Y' value is the 179704007ebaSmrg# same. If conversion functions are added for new $build/$host combinations, 179804007ebaSmrg# the two new functions must follow this pattern, or func_init_to_host_path_cmd 179904007ebaSmrg# will break. 180004007ebaSmrg 180104007ebaSmrg 180204007ebaSmrg# func_init_to_host_path_cmd 180304007ebaSmrg# Ensures that function "pointer" variable $to_host_path_cmd is set to the 180404007ebaSmrg# appropriate value, based on the value of $to_host_file_cmd. 180504007ebaSmrgto_host_path_cmd= 180604007ebaSmrgfunc_init_to_host_path_cmd () 180704007ebaSmrg{ 180804007ebaSmrg $opt_debug 180904007ebaSmrg if test -z "$to_host_path_cmd"; then 181004007ebaSmrg func_stripname 'func_convert_file_' '' "$to_host_file_cmd" 181104007ebaSmrg to_host_path_cmd="func_convert_path_${func_stripname_result}" 181204007ebaSmrg fi 181304007ebaSmrg} 181404007ebaSmrg 181504007ebaSmrg 181604007ebaSmrg# func_to_host_path ARG 181704007ebaSmrg# Converts the path ARG from $build format to $host format. Return result 181804007ebaSmrg# in func_to_host_path_result. 181904007ebaSmrgfunc_to_host_path () 182004007ebaSmrg{ 182104007ebaSmrg $opt_debug 182204007ebaSmrg func_init_to_host_path_cmd 182304007ebaSmrg $to_host_path_cmd "$1" 182404007ebaSmrg} 182504007ebaSmrg# end func_to_host_path 182604007ebaSmrg 182704007ebaSmrg 182804007ebaSmrg# func_convert_path_noop ARG 182904007ebaSmrg# Copy ARG to func_to_host_path_result. 183004007ebaSmrgfunc_convert_path_noop () 183104007ebaSmrg{ 183204007ebaSmrg func_to_host_path_result="$1" 183304007ebaSmrg} 183404007ebaSmrg# end func_convert_path_noop 183504007ebaSmrg 183604007ebaSmrg 183704007ebaSmrg# func_convert_path_msys_to_w32 ARG 183804007ebaSmrg# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic 183904007ebaSmrg# conversion to w32 is not available inside the cwrapper. Returns result in 184004007ebaSmrg# func_to_host_path_result. 184104007ebaSmrgfunc_convert_path_msys_to_w32 () 184204007ebaSmrg{ 184304007ebaSmrg $opt_debug 184404007ebaSmrg func_to_host_path_result="$1" 184504007ebaSmrg if test -n "$1"; then 184604007ebaSmrg # Remove leading and trailing path separator characters from ARG. MSYS 184704007ebaSmrg # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; 184804007ebaSmrg # and winepath ignores them completely. 184904007ebaSmrg func_stripname : : "$1" 185004007ebaSmrg func_to_host_path_tmp1=$func_stripname_result 185104007ebaSmrg func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 185204007ebaSmrg func_to_host_path_result="$func_convert_core_msys_to_w32_result" 185304007ebaSmrg func_convert_path_check : ";" \ 185404007ebaSmrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 185504007ebaSmrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 185604007ebaSmrg fi 185704007ebaSmrg} 185804007ebaSmrg# end func_convert_path_msys_to_w32 185904007ebaSmrg 186004007ebaSmrg 186104007ebaSmrg# func_convert_path_cygwin_to_w32 ARG 186204007ebaSmrg# Convert path ARG from Cygwin to w32 format. Returns result in 186304007ebaSmrg# func_to_host_file_result. 186404007ebaSmrgfunc_convert_path_cygwin_to_w32 () 186504007ebaSmrg{ 186604007ebaSmrg $opt_debug 186704007ebaSmrg func_to_host_path_result="$1" 186804007ebaSmrg if test -n "$1"; then 186904007ebaSmrg # See func_convert_path_msys_to_w32: 187004007ebaSmrg func_stripname : : "$1" 187104007ebaSmrg func_to_host_path_tmp1=$func_stripname_result 187204007ebaSmrg func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` 187304007ebaSmrg func_convert_path_check : ";" \ 187404007ebaSmrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 187504007ebaSmrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 187604007ebaSmrg fi 187704007ebaSmrg} 187804007ebaSmrg# end func_convert_path_cygwin_to_w32 187904007ebaSmrg 188004007ebaSmrg 188104007ebaSmrg# func_convert_path_nix_to_w32 ARG 188204007ebaSmrg# Convert path ARG from *nix to w32 format. Requires a wine environment and 188304007ebaSmrg# a working winepath. Returns result in func_to_host_file_result. 188404007ebaSmrgfunc_convert_path_nix_to_w32 () 188504007ebaSmrg{ 188604007ebaSmrg $opt_debug 188704007ebaSmrg func_to_host_path_result="$1" 188804007ebaSmrg if test -n "$1"; then 188904007ebaSmrg # See func_convert_path_msys_to_w32: 189004007ebaSmrg func_stripname : : "$1" 189104007ebaSmrg func_to_host_path_tmp1=$func_stripname_result 189204007ebaSmrg func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 189304007ebaSmrg func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" 189404007ebaSmrg func_convert_path_check : ";" \ 189504007ebaSmrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 189604007ebaSmrg func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" 189704007ebaSmrg fi 189804007ebaSmrg} 189904007ebaSmrg# end func_convert_path_nix_to_w32 190004007ebaSmrg 190104007ebaSmrg 190204007ebaSmrg# func_convert_path_msys_to_cygwin ARG 190304007ebaSmrg# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. 190404007ebaSmrg# Returns result in func_to_host_file_result. 190504007ebaSmrgfunc_convert_path_msys_to_cygwin () 190604007ebaSmrg{ 190704007ebaSmrg $opt_debug 190804007ebaSmrg func_to_host_path_result="$1" 190904007ebaSmrg if test -n "$1"; then 191004007ebaSmrg # See func_convert_path_msys_to_w32: 191104007ebaSmrg func_stripname : : "$1" 191204007ebaSmrg func_to_host_path_tmp1=$func_stripname_result 191304007ebaSmrg func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" 191404007ebaSmrg func_cygpath -u -p "$func_convert_core_msys_to_w32_result" 191504007ebaSmrg func_to_host_path_result="$func_cygpath_result" 191604007ebaSmrg func_convert_path_check : : \ 191704007ebaSmrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 191804007ebaSmrg func_convert_path_front_back_pathsep ":*" "*:" : "$1" 191904007ebaSmrg fi 192004007ebaSmrg} 192104007ebaSmrg# end func_convert_path_msys_to_cygwin 192204007ebaSmrg 192304007ebaSmrg 192404007ebaSmrg# func_convert_path_nix_to_cygwin ARG 192504007ebaSmrg# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a 192604007ebaSmrg# a wine environment, working winepath, and LT_CYGPATH set. Returns result in 192704007ebaSmrg# func_to_host_file_result. 192804007ebaSmrgfunc_convert_path_nix_to_cygwin () 192904007ebaSmrg{ 193004007ebaSmrg $opt_debug 193104007ebaSmrg func_to_host_path_result="$1" 193204007ebaSmrg if test -n "$1"; then 193304007ebaSmrg # Remove leading and trailing path separator characters from 193404007ebaSmrg # ARG. msys behavior is inconsistent here, cygpath turns them 193504007ebaSmrg # into '.;' and ';.', and winepath ignores them completely. 193604007ebaSmrg func_stripname : : "$1" 193704007ebaSmrg func_to_host_path_tmp1=$func_stripname_result 193804007ebaSmrg func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" 193904007ebaSmrg func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" 194004007ebaSmrg func_to_host_path_result="$func_cygpath_result" 194104007ebaSmrg func_convert_path_check : : \ 194204007ebaSmrg "$func_to_host_path_tmp1" "$func_to_host_path_result" 194304007ebaSmrg func_convert_path_front_back_pathsep ":*" "*:" : "$1" 194404007ebaSmrg fi 194504007ebaSmrg} 194604007ebaSmrg# end func_convert_path_nix_to_cygwin 194704007ebaSmrg 194804007ebaSmrg 194904007ebaSmrg# func_mode_compile arg... 195004007ebaSmrgfunc_mode_compile () 195104007ebaSmrg{ 195204007ebaSmrg $opt_debug 195304007ebaSmrg # Get the compilation command and the source file. 195404007ebaSmrg base_compile= 195504007ebaSmrg srcfile="$nonopt" # always keep a non-empty value in "srcfile" 195604007ebaSmrg suppress_opt=yes 195704007ebaSmrg suppress_output= 195804007ebaSmrg arg_mode=normal 195904007ebaSmrg libobj= 196004007ebaSmrg later= 196104007ebaSmrg pie_flag= 196204007ebaSmrg 196304007ebaSmrg for arg 196404007ebaSmrg do 196504007ebaSmrg case $arg_mode in 196604007ebaSmrg arg ) 196704007ebaSmrg # do not "continue". Instead, add this to base_compile 196804007ebaSmrg lastarg="$arg" 196904007ebaSmrg arg_mode=normal 197004007ebaSmrg ;; 197104007ebaSmrg 197204007ebaSmrg target ) 197304007ebaSmrg libobj="$arg" 197404007ebaSmrg arg_mode=normal 197504007ebaSmrg continue 197604007ebaSmrg ;; 197704007ebaSmrg 197804007ebaSmrg normal ) 197904007ebaSmrg # Accept any command-line options. 198004007ebaSmrg case $arg in 198104007ebaSmrg -o) 198204007ebaSmrg test -n "$libobj" && \ 198304007ebaSmrg func_fatal_error "you cannot specify \`-o' more than once" 198404007ebaSmrg arg_mode=target 198504007ebaSmrg continue 198604007ebaSmrg ;; 198704007ebaSmrg 198804007ebaSmrg -pie | -fpie | -fPIE) 198904007ebaSmrg func_append pie_flag " $arg" 199004007ebaSmrg continue 199104007ebaSmrg ;; 199204007ebaSmrg 199304007ebaSmrg -shared | -static | -prefer-pic | -prefer-non-pic) 199404007ebaSmrg func_append later " $arg" 199504007ebaSmrg continue 199604007ebaSmrg ;; 199704007ebaSmrg 199804007ebaSmrg -no-suppress) 199904007ebaSmrg suppress_opt=no 200004007ebaSmrg continue 200104007ebaSmrg ;; 200204007ebaSmrg 200304007ebaSmrg -Xcompiler) 200404007ebaSmrg arg_mode=arg # the next one goes into the "base_compile" arg list 200504007ebaSmrg continue # The current "srcfile" will either be retained or 200604007ebaSmrg ;; # replaced later. I would guess that would be a bug. 200704007ebaSmrg 200804007ebaSmrg -Wc,*) 200904007ebaSmrg func_stripname '-Wc,' '' "$arg" 201004007ebaSmrg args=$func_stripname_result 201104007ebaSmrg lastarg= 201204007ebaSmrg save_ifs="$IFS"; IFS=',' 201304007ebaSmrg for arg in $args; do 201404007ebaSmrg IFS="$save_ifs" 201504007ebaSmrg func_append_quoted lastarg "$arg" 201604007ebaSmrg done 201704007ebaSmrg IFS="$save_ifs" 201804007ebaSmrg func_stripname ' ' '' "$lastarg" 201904007ebaSmrg lastarg=$func_stripname_result 202004007ebaSmrg 202104007ebaSmrg # Add the arguments to base_compile. 202204007ebaSmrg func_append base_compile " $lastarg" 202304007ebaSmrg continue 202404007ebaSmrg ;; 202504007ebaSmrg 202604007ebaSmrg *) 202704007ebaSmrg # Accept the current argument as the source file. 202804007ebaSmrg # The previous "srcfile" becomes the current argument. 202904007ebaSmrg # 203004007ebaSmrg lastarg="$srcfile" 203104007ebaSmrg srcfile="$arg" 203204007ebaSmrg ;; 203304007ebaSmrg esac # case $arg 203404007ebaSmrg ;; 203504007ebaSmrg esac # case $arg_mode 203604007ebaSmrg 203704007ebaSmrg # Aesthetically quote the previous argument. 203804007ebaSmrg func_append_quoted base_compile "$lastarg" 203904007ebaSmrg done # for arg 204004007ebaSmrg 204104007ebaSmrg case $arg_mode in 204204007ebaSmrg arg) 204304007ebaSmrg func_fatal_error "you must specify an argument for -Xcompile" 204404007ebaSmrg ;; 204504007ebaSmrg target) 204604007ebaSmrg func_fatal_error "you must specify a target with \`-o'" 204704007ebaSmrg ;; 204804007ebaSmrg *) 204904007ebaSmrg # Get the name of the library object. 205004007ebaSmrg test -z "$libobj" && { 205104007ebaSmrg func_basename "$srcfile" 205204007ebaSmrg libobj="$func_basename_result" 205304007ebaSmrg } 205404007ebaSmrg ;; 205504007ebaSmrg esac 205604007ebaSmrg 205704007ebaSmrg # Recognize several different file suffixes. 205804007ebaSmrg # If the user specifies -o file.o, it is replaced with file.lo 205904007ebaSmrg case $libobj in 206004007ebaSmrg *.[cCFSifmso] | \ 206104007ebaSmrg *.ada | *.adb | *.ads | *.asm | \ 206204007ebaSmrg *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ 206304007ebaSmrg *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) 206404007ebaSmrg func_xform "$libobj" 206504007ebaSmrg libobj=$func_xform_result 206604007ebaSmrg ;; 206704007ebaSmrg esac 206804007ebaSmrg 206904007ebaSmrg case $libobj in 207004007ebaSmrg *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; 207104007ebaSmrg *) 207204007ebaSmrg func_fatal_error "cannot determine name of library object from \`$libobj'" 207304007ebaSmrg ;; 207404007ebaSmrg esac 207504007ebaSmrg 207604007ebaSmrg func_infer_tag $base_compile 207704007ebaSmrg 207804007ebaSmrg for arg in $later; do 207904007ebaSmrg case $arg in 208004007ebaSmrg -shared) 208104007ebaSmrg test "$build_libtool_libs" != yes && \ 208204007ebaSmrg func_fatal_configuration "can not build a shared library" 208304007ebaSmrg build_old_libs=no 208404007ebaSmrg continue 208504007ebaSmrg ;; 208604007ebaSmrg 208704007ebaSmrg -static) 208804007ebaSmrg build_libtool_libs=no 208904007ebaSmrg build_old_libs=yes 209004007ebaSmrg continue 209104007ebaSmrg ;; 209204007ebaSmrg 209304007ebaSmrg -prefer-pic) 209404007ebaSmrg pic_mode=yes 209504007ebaSmrg continue 209604007ebaSmrg ;; 209704007ebaSmrg 209804007ebaSmrg -prefer-non-pic) 209904007ebaSmrg pic_mode=no 210004007ebaSmrg continue 210104007ebaSmrg ;; 210204007ebaSmrg esac 210304007ebaSmrg done 210404007ebaSmrg 210504007ebaSmrg func_quote_for_eval "$libobj" 210604007ebaSmrg test "X$libobj" != "X$func_quote_for_eval_result" \ 210704007ebaSmrg && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ 210804007ebaSmrg && func_warning "libobj name \`$libobj' may not contain shell special characters." 210904007ebaSmrg func_dirname_and_basename "$obj" "/" "" 211004007ebaSmrg objname="$func_basename_result" 211104007ebaSmrg xdir="$func_dirname_result" 211204007ebaSmrg lobj=${xdir}$objdir/$objname 211304007ebaSmrg 211404007ebaSmrg test -z "$base_compile" && \ 211504007ebaSmrg func_fatal_help "you must specify a compilation command" 211604007ebaSmrg 211704007ebaSmrg # Delete any leftover library objects. 211804007ebaSmrg if test "$build_old_libs" = yes; then 211904007ebaSmrg removelist="$obj $lobj $libobj ${libobj}T" 212004007ebaSmrg else 212104007ebaSmrg removelist="$lobj $libobj ${libobj}T" 212204007ebaSmrg fi 212304007ebaSmrg 212404007ebaSmrg # On Cygwin there's no "real" PIC flag so we must build both object types 212504007ebaSmrg case $host_os in 212604007ebaSmrg cygwin* | mingw* | pw32* | os2* | cegcc*) 212704007ebaSmrg pic_mode=default 212804007ebaSmrg ;; 212904007ebaSmrg esac 213004007ebaSmrg if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then 213104007ebaSmrg # non-PIC code in shared libraries is not supported 213204007ebaSmrg pic_mode=default 213304007ebaSmrg fi 213404007ebaSmrg 213504007ebaSmrg # Calculate the filename of the output object if compiler does 213604007ebaSmrg # not support -o with -c 213704007ebaSmrg if test "$compiler_c_o" = no; then 213804007ebaSmrg output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} 213904007ebaSmrg lockfile="$output_obj.lock" 214004007ebaSmrg else 214104007ebaSmrg output_obj= 214204007ebaSmrg need_locks=no 214304007ebaSmrg lockfile= 214404007ebaSmrg fi 214504007ebaSmrg 214604007ebaSmrg # Lock this critical section if it is needed 214704007ebaSmrg # We use this script file to make the link, it avoids creating a new file 214804007ebaSmrg if test "$need_locks" = yes; then 214904007ebaSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 215004007ebaSmrg func_echo "Waiting for $lockfile to be removed" 215104007ebaSmrg sleep 2 215204007ebaSmrg done 215304007ebaSmrg elif test "$need_locks" = warn; then 215404007ebaSmrg if test -f "$lockfile"; then 215504007ebaSmrg $ECHO "\ 215604007ebaSmrg*** ERROR, $lockfile exists and contains: 215704007ebaSmrg`cat $lockfile 2>/dev/null` 215804007ebaSmrg 215904007ebaSmrgThis indicates that another process is trying to use the same 216004007ebaSmrgtemporary object file, and libtool could not work around it because 216104007ebaSmrgyour compiler does not support \`-c' and \`-o' together. If you 216204007ebaSmrgrepeat this compilation, it may succeed, by chance, but you had better 216304007ebaSmrgavoid parallel builds (make -j) in this platform, or get a better 216404007ebaSmrgcompiler." 216504007ebaSmrg 216604007ebaSmrg $opt_dry_run || $RM $removelist 216704007ebaSmrg exit $EXIT_FAILURE 216804007ebaSmrg fi 216904007ebaSmrg func_append removelist " $output_obj" 217004007ebaSmrg $ECHO "$srcfile" > "$lockfile" 217104007ebaSmrg fi 217204007ebaSmrg 217304007ebaSmrg $opt_dry_run || $RM $removelist 217404007ebaSmrg func_append removelist " $lockfile" 217504007ebaSmrg trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 217604007ebaSmrg 217704007ebaSmrg func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 217804007ebaSmrg srcfile=$func_to_tool_file_result 217904007ebaSmrg func_quote_for_eval "$srcfile" 218004007ebaSmrg qsrcfile=$func_quote_for_eval_result 218104007ebaSmrg 218204007ebaSmrg # Only build a PIC object if we are building libtool libraries. 218304007ebaSmrg if test "$build_libtool_libs" = yes; then 218404007ebaSmrg # Without this assignment, base_compile gets emptied. 218504007ebaSmrg fbsd_hideous_sh_bug=$base_compile 218604007ebaSmrg 218704007ebaSmrg if test "$pic_mode" != no; then 218804007ebaSmrg command="$base_compile $qsrcfile $pic_flag" 218904007ebaSmrg else 219004007ebaSmrg # Don't build PIC code 219104007ebaSmrg command="$base_compile $qsrcfile" 219204007ebaSmrg fi 219304007ebaSmrg 219404007ebaSmrg func_mkdir_p "$xdir$objdir" 219504007ebaSmrg 219604007ebaSmrg if test -z "$output_obj"; then 219704007ebaSmrg # Place PIC objects in $objdir 219804007ebaSmrg func_append command " -o $lobj" 219904007ebaSmrg fi 220004007ebaSmrg 220104007ebaSmrg func_show_eval_locale "$command" \ 220204007ebaSmrg 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' 220304007ebaSmrg 220404007ebaSmrg if test "$need_locks" = warn && 220504007ebaSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 220604007ebaSmrg $ECHO "\ 220704007ebaSmrg*** ERROR, $lockfile contains: 220804007ebaSmrg`cat $lockfile 2>/dev/null` 220904007ebaSmrg 221004007ebaSmrgbut it should contain: 221104007ebaSmrg$srcfile 221204007ebaSmrg 221304007ebaSmrgThis indicates that another process is trying to use the same 221404007ebaSmrgtemporary object file, and libtool could not work around it because 221504007ebaSmrgyour compiler does not support \`-c' and \`-o' together. If you 221604007ebaSmrgrepeat this compilation, it may succeed, by chance, but you had better 221704007ebaSmrgavoid parallel builds (make -j) in this platform, or get a better 221804007ebaSmrgcompiler." 221904007ebaSmrg 222004007ebaSmrg $opt_dry_run || $RM $removelist 222104007ebaSmrg exit $EXIT_FAILURE 222204007ebaSmrg fi 222304007ebaSmrg 222404007ebaSmrg # Just move the object if needed, then go on to compile the next one 222504007ebaSmrg if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then 222604007ebaSmrg func_show_eval '$MV "$output_obj" "$lobj"' \ 222704007ebaSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 222804007ebaSmrg fi 222904007ebaSmrg 223004007ebaSmrg # Allow error messages only from the first compilation. 223104007ebaSmrg if test "$suppress_opt" = yes; then 223204007ebaSmrg suppress_output=' >/dev/null 2>&1' 223304007ebaSmrg fi 223404007ebaSmrg fi 223504007ebaSmrg 223604007ebaSmrg # Only build a position-dependent object if we build old libraries. 223704007ebaSmrg if test "$build_old_libs" = yes; then 223804007ebaSmrg if test "$pic_mode" != yes; then 223904007ebaSmrg # Don't build PIC code 224004007ebaSmrg command="$base_compile $qsrcfile$pie_flag" 224104007ebaSmrg else 224204007ebaSmrg command="$base_compile $qsrcfile $pic_flag" 224304007ebaSmrg fi 224404007ebaSmrg if test "$compiler_c_o" = yes; then 224504007ebaSmrg func_append command " -o $obj" 224604007ebaSmrg fi 224704007ebaSmrg 224804007ebaSmrg # Suppress compiler output if we already did a PIC compilation. 224904007ebaSmrg func_append command "$suppress_output" 225004007ebaSmrg func_show_eval_locale "$command" \ 225104007ebaSmrg '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 225204007ebaSmrg 225304007ebaSmrg if test "$need_locks" = warn && 225404007ebaSmrg test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then 225504007ebaSmrg $ECHO "\ 225604007ebaSmrg*** ERROR, $lockfile contains: 225704007ebaSmrg`cat $lockfile 2>/dev/null` 225804007ebaSmrg 225904007ebaSmrgbut it should contain: 226004007ebaSmrg$srcfile 226104007ebaSmrg 226204007ebaSmrgThis indicates that another process is trying to use the same 226304007ebaSmrgtemporary object file, and libtool could not work around it because 226404007ebaSmrgyour compiler does not support \`-c' and \`-o' together. If you 226504007ebaSmrgrepeat this compilation, it may succeed, by chance, but you had better 226604007ebaSmrgavoid parallel builds (make -j) in this platform, or get a better 226704007ebaSmrgcompiler." 226804007ebaSmrg 226904007ebaSmrg $opt_dry_run || $RM $removelist 227004007ebaSmrg exit $EXIT_FAILURE 227104007ebaSmrg fi 227204007ebaSmrg 227304007ebaSmrg # Just move the object if needed 227404007ebaSmrg if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then 227504007ebaSmrg func_show_eval '$MV "$output_obj" "$obj"' \ 227604007ebaSmrg 'error=$?; $opt_dry_run || $RM $removelist; exit $error' 227704007ebaSmrg fi 227804007ebaSmrg fi 227904007ebaSmrg 228004007ebaSmrg $opt_dry_run || { 228104007ebaSmrg func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" 228204007ebaSmrg 228304007ebaSmrg # Unlock the critical section if it was locked 228404007ebaSmrg if test "$need_locks" != no; then 228504007ebaSmrg removelist=$lockfile 228604007ebaSmrg $RM "$lockfile" 228704007ebaSmrg fi 228804007ebaSmrg } 228904007ebaSmrg 229004007ebaSmrg exit $EXIT_SUCCESS 229104007ebaSmrg} 229204007ebaSmrg 229304007ebaSmrg$opt_help || { 229404007ebaSmrg test "$opt_mode" = compile && func_mode_compile ${1+"$@"} 229504007ebaSmrg} 229604007ebaSmrg 229704007ebaSmrgfunc_mode_help () 229804007ebaSmrg{ 229904007ebaSmrg # We need to display help for each of the modes. 230004007ebaSmrg case $opt_mode in 230104007ebaSmrg "") 230204007ebaSmrg # Generic help is extracted from the usage comments 230304007ebaSmrg # at the start of this file. 230404007ebaSmrg func_help 230504007ebaSmrg ;; 230604007ebaSmrg 230704007ebaSmrg clean) 230804007ebaSmrg $ECHO \ 230904007ebaSmrg"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... 231004007ebaSmrg 231104007ebaSmrgRemove files from the build directory. 231204007ebaSmrg 231304007ebaSmrgRM is the name of the program to use to delete files associated with each FILE 231404007ebaSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 231504007ebaSmrgto RM. 231604007ebaSmrg 231704007ebaSmrgIf FILE is a libtool library, object or program, all the files associated 231804007ebaSmrgwith it are deleted. Otherwise, only FILE itself is deleted using RM." 231904007ebaSmrg ;; 232004007ebaSmrg 232104007ebaSmrg compile) 232204007ebaSmrg $ECHO \ 232304007ebaSmrg"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE 232404007ebaSmrg 232504007ebaSmrgCompile a source file into a libtool library object. 232604007ebaSmrg 232704007ebaSmrgThis mode accepts the following additional options: 232804007ebaSmrg 232904007ebaSmrg -o OUTPUT-FILE set the output file name to OUTPUT-FILE 233004007ebaSmrg -no-suppress do not suppress compiler output for multiple passes 233104007ebaSmrg -prefer-pic try to build PIC objects only 233204007ebaSmrg -prefer-non-pic try to build non-PIC objects only 233304007ebaSmrg -shared do not build a \`.o' file suitable for static linking 233404007ebaSmrg -static only build a \`.o' file suitable for static linking 233504007ebaSmrg -Wc,FLAG pass FLAG directly to the compiler 233604007ebaSmrg 233704007ebaSmrgCOMPILE-COMMAND is a command to be used in creating a \`standard' object file 233804007ebaSmrgfrom the given SOURCEFILE. 233904007ebaSmrg 234004007ebaSmrgThe output file name is determined by removing the directory component from 234104007ebaSmrgSOURCEFILE, then substituting the C source code suffix \`.c' with the 234204007ebaSmrglibrary object suffix, \`.lo'." 234304007ebaSmrg ;; 234404007ebaSmrg 234504007ebaSmrg execute) 234604007ebaSmrg $ECHO \ 234704007ebaSmrg"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... 234804007ebaSmrg 234904007ebaSmrgAutomatically set library path, then run a program. 235004007ebaSmrg 235104007ebaSmrgThis mode accepts the following additional options: 235204007ebaSmrg 235304007ebaSmrg -dlopen FILE add the directory containing FILE to the library path 235404007ebaSmrg 235504007ebaSmrgThis mode sets the library path environment variable according to \`-dlopen' 235604007ebaSmrgflags. 235704007ebaSmrg 235804007ebaSmrgIf any of the ARGS are libtool executable wrappers, then they are translated 235904007ebaSmrginto their corresponding uninstalled binary, and any of their required library 236004007ebaSmrgdirectories are added to the library path. 236104007ebaSmrg 236204007ebaSmrgThen, COMMAND is executed, with ARGS as arguments." 236304007ebaSmrg ;; 236404007ebaSmrg 236504007ebaSmrg finish) 236604007ebaSmrg $ECHO \ 236704007ebaSmrg"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... 236804007ebaSmrg 236904007ebaSmrgComplete the installation of libtool libraries. 237004007ebaSmrg 237104007ebaSmrgEach LIBDIR is a directory that contains libtool libraries. 237204007ebaSmrg 237304007ebaSmrgThe commands that this mode executes may require superuser privileges. Use 237404007ebaSmrgthe \`--dry-run' option if you just want to see what would be executed." 237504007ebaSmrg ;; 237604007ebaSmrg 237704007ebaSmrg install) 237804007ebaSmrg $ECHO \ 237904007ebaSmrg"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... 238004007ebaSmrg 238104007ebaSmrgInstall executables or libraries. 238204007ebaSmrg 238304007ebaSmrgINSTALL-COMMAND is the installation command. The first component should be 238404007ebaSmrgeither the \`install' or \`cp' program. 238504007ebaSmrg 238604007ebaSmrgThe following components of INSTALL-COMMAND are treated specially: 238704007ebaSmrg 238804007ebaSmrg -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation 238904007ebaSmrg 239004007ebaSmrgThe rest of the components are interpreted as arguments to that command (only 239104007ebaSmrgBSD-compatible install options are recognized)." 239204007ebaSmrg ;; 239304007ebaSmrg 239404007ebaSmrg link) 239504007ebaSmrg $ECHO \ 239604007ebaSmrg"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... 239704007ebaSmrg 239804007ebaSmrgLink object files or libraries together to form another library, or to 239904007ebaSmrgcreate an executable program. 240004007ebaSmrg 240104007ebaSmrgLINK-COMMAND is a command using the C compiler that you would use to create 240204007ebaSmrga program from several object files. 240304007ebaSmrg 240404007ebaSmrgThe following components of LINK-COMMAND are treated specially: 240504007ebaSmrg 240604007ebaSmrg -all-static do not do any dynamic linking at all 240704007ebaSmrg -avoid-version do not add a version suffix if possible 240804007ebaSmrg -bindir BINDIR specify path to binaries directory (for systems where 240904007ebaSmrg libraries must be found in the PATH setting at runtime) 241004007ebaSmrg -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime 241104007ebaSmrg -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols 241204007ebaSmrg -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) 241304007ebaSmrg -export-symbols SYMFILE 241404007ebaSmrg try to export only the symbols listed in SYMFILE 241504007ebaSmrg -export-symbols-regex REGEX 241604007ebaSmrg try to export only the symbols matching REGEX 241704007ebaSmrg -LLIBDIR search LIBDIR for required installed libraries 241804007ebaSmrg -lNAME OUTPUT-FILE requires the installed library libNAME 241904007ebaSmrg -module build a library that can dlopened 242004007ebaSmrg -no-fast-install disable the fast-install mode 242104007ebaSmrg -no-install link a not-installable executable 242204007ebaSmrg -no-undefined declare that a library does not refer to external symbols 242304007ebaSmrg -o OUTPUT-FILE create OUTPUT-FILE from the specified objects 242404007ebaSmrg -objectlist FILE Use a list of object files found in FILE to specify objects 242504007ebaSmrg -precious-files-regex REGEX 242604007ebaSmrg don't remove output files matching REGEX 242704007ebaSmrg -release RELEASE specify package release information 242804007ebaSmrg -rpath LIBDIR the created library will eventually be installed in LIBDIR 242904007ebaSmrg -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries 243004007ebaSmrg -shared only do dynamic linking of libtool libraries 243104007ebaSmrg -shrext SUFFIX override the standard shared library file extension 243204007ebaSmrg -static do not do any dynamic linking of uninstalled libtool libraries 243304007ebaSmrg -static-libtool-libs 243404007ebaSmrg do not do any dynamic linking of libtool libraries 243504007ebaSmrg -version-info CURRENT[:REVISION[:AGE]] 243604007ebaSmrg specify library version info [each variable defaults to 0] 243704007ebaSmrg -weak LIBNAME declare that the target provides the LIBNAME interface 243804007ebaSmrg -Wc,FLAG 243904007ebaSmrg -Xcompiler FLAG pass linker-specific FLAG directly to the compiler 244004007ebaSmrg -Wl,FLAG 244104007ebaSmrg -Xlinker FLAG pass linker-specific FLAG directly to the linker 244204007ebaSmrg -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) 244304007ebaSmrg 244404007ebaSmrgAll other options (arguments beginning with \`-') are ignored. 244504007ebaSmrg 244604007ebaSmrgEvery other argument is treated as a filename. Files ending in \`.la' are 244704007ebaSmrgtreated as uninstalled libtool libraries, other files are standard or library 244804007ebaSmrgobject files. 244904007ebaSmrg 245004007ebaSmrgIf the OUTPUT-FILE ends in \`.la', then a libtool library is created, 245104007ebaSmrgonly library objects (\`.lo' files) may be specified, and \`-rpath' is 245204007ebaSmrgrequired, except when creating a convenience library. 245304007ebaSmrg 245404007ebaSmrgIf OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created 245504007ebaSmrgusing \`ar' and \`ranlib', or on Windows using \`lib'. 245604007ebaSmrg 245704007ebaSmrgIf OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file 245804007ebaSmrgis created, otherwise an executable program is created." 245904007ebaSmrg ;; 246004007ebaSmrg 246104007ebaSmrg uninstall) 246204007ebaSmrg $ECHO \ 246304007ebaSmrg"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... 246404007ebaSmrg 246504007ebaSmrgRemove libraries from an installation directory. 246604007ebaSmrg 246704007ebaSmrgRM is the name of the program to use to delete files associated with each FILE 246804007ebaSmrg(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed 246904007ebaSmrgto RM. 247004007ebaSmrg 247104007ebaSmrgIf FILE is a libtool library, all the files associated with it are deleted. 247204007ebaSmrgOtherwise, only FILE itself is deleted using RM." 247304007ebaSmrg ;; 247404007ebaSmrg 247504007ebaSmrg *) 247604007ebaSmrg func_fatal_help "invalid operation mode \`$opt_mode'" 247704007ebaSmrg ;; 247804007ebaSmrg esac 247904007ebaSmrg 248004007ebaSmrg echo 248104007ebaSmrg $ECHO "Try \`$progname --help' for more information about other modes." 248204007ebaSmrg} 248304007ebaSmrg 248404007ebaSmrg# Now that we've collected a possible --mode arg, show help if necessary 248504007ebaSmrgif $opt_help; then 248604007ebaSmrg if test "$opt_help" = :; then 248704007ebaSmrg func_mode_help 248804007ebaSmrg else 248904007ebaSmrg { 249004007ebaSmrg func_help noexit 249104007ebaSmrg for opt_mode in compile link execute install finish uninstall clean; do 249204007ebaSmrg func_mode_help 249304007ebaSmrg done 249404007ebaSmrg } | sed -n '1p; 2,$s/^Usage:/ or: /p' 249504007ebaSmrg { 249604007ebaSmrg func_help noexit 249704007ebaSmrg for opt_mode in compile link execute install finish uninstall clean; do 249804007ebaSmrg echo 249904007ebaSmrg func_mode_help 250004007ebaSmrg done 250104007ebaSmrg } | 250204007ebaSmrg sed '1d 250304007ebaSmrg /^When reporting/,/^Report/{ 250404007ebaSmrg H 250504007ebaSmrg d 250604007ebaSmrg } 250704007ebaSmrg $x 250804007ebaSmrg /information about other modes/d 250904007ebaSmrg /more detailed .*MODE/d 251004007ebaSmrg s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' 251104007ebaSmrg fi 251204007ebaSmrg exit $? 251304007ebaSmrgfi 251404007ebaSmrg 251504007ebaSmrg 251604007ebaSmrg# func_mode_execute arg... 251704007ebaSmrgfunc_mode_execute () 251804007ebaSmrg{ 251904007ebaSmrg $opt_debug 252004007ebaSmrg # The first argument is the command name. 252104007ebaSmrg cmd="$nonopt" 252204007ebaSmrg test -z "$cmd" && \ 252304007ebaSmrg func_fatal_help "you must specify a COMMAND" 252404007ebaSmrg 252504007ebaSmrg # Handle -dlopen flags immediately. 252604007ebaSmrg for file in $opt_dlopen; do 252704007ebaSmrg test -f "$file" \ 252804007ebaSmrg || func_fatal_help "\`$file' is not a file" 252904007ebaSmrg 253004007ebaSmrg dir= 253104007ebaSmrg case $file in 253204007ebaSmrg *.la) 253304007ebaSmrg func_resolve_sysroot "$file" 253404007ebaSmrg file=$func_resolve_sysroot_result 253504007ebaSmrg 253604007ebaSmrg # Check to see that this really is a libtool archive. 253704007ebaSmrg func_lalib_unsafe_p "$file" \ 253804007ebaSmrg || func_fatal_help "\`$lib' is not a valid libtool archive" 253904007ebaSmrg 254004007ebaSmrg # Read the libtool library. 254104007ebaSmrg dlname= 254204007ebaSmrg library_names= 254304007ebaSmrg func_source "$file" 254404007ebaSmrg 254504007ebaSmrg # Skip this library if it cannot be dlopened. 254604007ebaSmrg if test -z "$dlname"; then 254704007ebaSmrg # Warn if it was a shared library. 254804007ebaSmrg test -n "$library_names" && \ 254904007ebaSmrg func_warning "\`$file' was not linked with \`-export-dynamic'" 255004007ebaSmrg continue 255104007ebaSmrg fi 255204007ebaSmrg 255304007ebaSmrg func_dirname "$file" "" "." 255404007ebaSmrg dir="$func_dirname_result" 255504007ebaSmrg 255604007ebaSmrg if test -f "$dir/$objdir/$dlname"; then 255704007ebaSmrg func_append dir "/$objdir" 255804007ebaSmrg else 255904007ebaSmrg if test ! -f "$dir/$dlname"; then 256004007ebaSmrg func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 256104007ebaSmrg fi 256204007ebaSmrg fi 256304007ebaSmrg ;; 256404007ebaSmrg 256504007ebaSmrg *.lo) 256604007ebaSmrg # Just add the directory containing the .lo file. 256704007ebaSmrg func_dirname "$file" "" "." 256804007ebaSmrg dir="$func_dirname_result" 256904007ebaSmrg ;; 257004007ebaSmrg 257104007ebaSmrg *) 257204007ebaSmrg func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" 257304007ebaSmrg continue 257404007ebaSmrg ;; 257504007ebaSmrg esac 257604007ebaSmrg 257704007ebaSmrg # Get the absolute pathname. 257804007ebaSmrg absdir=`cd "$dir" && pwd` 257904007ebaSmrg test -n "$absdir" && dir="$absdir" 258004007ebaSmrg 258104007ebaSmrg # Now add the directory to shlibpath_var. 258204007ebaSmrg if eval "test -z \"\$$shlibpath_var\""; then 258304007ebaSmrg eval "$shlibpath_var=\"\$dir\"" 258404007ebaSmrg else 258504007ebaSmrg eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" 258604007ebaSmrg fi 258704007ebaSmrg done 258804007ebaSmrg 258904007ebaSmrg # This variable tells wrapper scripts just to set shlibpath_var 259004007ebaSmrg # rather than running their programs. 259104007ebaSmrg libtool_execute_magic="$magic" 259204007ebaSmrg 259304007ebaSmrg # Check if any of the arguments is a wrapper script. 259404007ebaSmrg args= 259504007ebaSmrg for file 259604007ebaSmrg do 259704007ebaSmrg case $file in 259804007ebaSmrg -* | *.la | *.lo ) ;; 259904007ebaSmrg *) 260004007ebaSmrg # Do a test to see if this is really a libtool program. 260104007ebaSmrg if func_ltwrapper_script_p "$file"; then 260204007ebaSmrg func_source "$file" 260304007ebaSmrg # Transform arg to wrapped name. 260404007ebaSmrg file="$progdir/$program" 260504007ebaSmrg elif func_ltwrapper_executable_p "$file"; then 260604007ebaSmrg func_ltwrapper_scriptname "$file" 260704007ebaSmrg func_source "$func_ltwrapper_scriptname_result" 260804007ebaSmrg # Transform arg to wrapped name. 260904007ebaSmrg file="$progdir/$program" 261004007ebaSmrg fi 261104007ebaSmrg ;; 261204007ebaSmrg esac 261304007ebaSmrg # Quote arguments (to preserve shell metacharacters). 261404007ebaSmrg func_append_quoted args "$file" 261504007ebaSmrg done 261604007ebaSmrg 261704007ebaSmrg if test "X$opt_dry_run" = Xfalse; then 261804007ebaSmrg if test -n "$shlibpath_var"; then 261904007ebaSmrg # Export the shlibpath_var. 262004007ebaSmrg eval "export $shlibpath_var" 262104007ebaSmrg fi 262204007ebaSmrg 262304007ebaSmrg # Restore saved environment variables 262404007ebaSmrg for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES 262504007ebaSmrg do 262604007ebaSmrg eval "if test \"\${save_$lt_var+set}\" = set; then 262704007ebaSmrg $lt_var=\$save_$lt_var; export $lt_var 262804007ebaSmrg else 262904007ebaSmrg $lt_unset $lt_var 263004007ebaSmrg fi" 263104007ebaSmrg done 263204007ebaSmrg 263304007ebaSmrg # Now prepare to actually exec the command. 263404007ebaSmrg exec_cmd="\$cmd$args" 263504007ebaSmrg else 263604007ebaSmrg # Display what would be done. 263704007ebaSmrg if test -n "$shlibpath_var"; then 263804007ebaSmrg eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" 263904007ebaSmrg echo "export $shlibpath_var" 264004007ebaSmrg fi 264104007ebaSmrg $ECHO "$cmd$args" 264204007ebaSmrg exit $EXIT_SUCCESS 264304007ebaSmrg fi 264404007ebaSmrg} 264504007ebaSmrg 264604007ebaSmrgtest "$opt_mode" = execute && func_mode_execute ${1+"$@"} 264704007ebaSmrg 264804007ebaSmrg 264904007ebaSmrg# func_mode_finish arg... 265004007ebaSmrgfunc_mode_finish () 265104007ebaSmrg{ 265204007ebaSmrg $opt_debug 265304007ebaSmrg libs= 265404007ebaSmrg libdirs= 265504007ebaSmrg admincmds= 265604007ebaSmrg 265704007ebaSmrg for opt in "$nonopt" ${1+"$@"} 265804007ebaSmrg do 265904007ebaSmrg if test -d "$opt"; then 266004007ebaSmrg func_append libdirs " $opt" 266104007ebaSmrg 266204007ebaSmrg elif test -f "$opt"; then 266304007ebaSmrg if func_lalib_unsafe_p "$opt"; then 266404007ebaSmrg func_append libs " $opt" 266504007ebaSmrg else 266604007ebaSmrg func_warning "\`$opt' is not a valid libtool archive" 266704007ebaSmrg fi 266804007ebaSmrg 266904007ebaSmrg else 267004007ebaSmrg func_fatal_error "invalid argument \`$opt'" 267104007ebaSmrg fi 267204007ebaSmrg done 267304007ebaSmrg 267404007ebaSmrg if test -n "$libs"; then 267504007ebaSmrg if test -n "$lt_sysroot"; then 267604007ebaSmrg sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` 267704007ebaSmrg sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" 267804007ebaSmrg else 267904007ebaSmrg sysroot_cmd= 268004007ebaSmrg fi 268104007ebaSmrg 268204007ebaSmrg # Remove sysroot references 268304007ebaSmrg if $opt_dry_run; then 268404007ebaSmrg for lib in $libs; do 268504007ebaSmrg echo "removing references to $lt_sysroot and \`=' prefixes from $lib" 268604007ebaSmrg done 268704007ebaSmrg else 268804007ebaSmrg tmpdir=`func_mktempdir` 268904007ebaSmrg for lib in $libs; do 269004007ebaSmrg sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ 269104007ebaSmrg > $tmpdir/tmp-la 269204007ebaSmrg mv -f $tmpdir/tmp-la $lib 269304007ebaSmrg done 269404007ebaSmrg ${RM}r "$tmpdir" 269504007ebaSmrg fi 269604007ebaSmrg fi 269704007ebaSmrg 269804007ebaSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 269904007ebaSmrg for libdir in $libdirs; do 270004007ebaSmrg if test -n "$finish_cmds"; then 270104007ebaSmrg # Do each command in the finish commands. 270204007ebaSmrg func_execute_cmds "$finish_cmds" 'admincmds="$admincmds 270304007ebaSmrg'"$cmd"'"' 270404007ebaSmrg fi 270504007ebaSmrg if test -n "$finish_eval"; then 270604007ebaSmrg # Do the single finish_eval. 270704007ebaSmrg eval cmds=\"$finish_eval\" 270804007ebaSmrg $opt_dry_run || eval "$cmds" || func_append admincmds " 270904007ebaSmrg $cmds" 271004007ebaSmrg fi 271104007ebaSmrg done 271204007ebaSmrg fi 271304007ebaSmrg 271404007ebaSmrg # Exit here if they wanted silent mode. 271504007ebaSmrg $opt_silent && exit $EXIT_SUCCESS 271604007ebaSmrg 271704007ebaSmrg if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then 271804007ebaSmrg echo "----------------------------------------------------------------------" 271904007ebaSmrg echo "Libraries have been installed in:" 272004007ebaSmrg for libdir in $libdirs; do 272104007ebaSmrg $ECHO " $libdir" 272204007ebaSmrg done 272304007ebaSmrg echo 272404007ebaSmrg echo "If you ever happen to want to link against installed libraries" 272504007ebaSmrg echo "in a given directory, LIBDIR, you must either use libtool, and" 272604007ebaSmrg echo "specify the full pathname of the library, or use the \`-LLIBDIR'" 272704007ebaSmrg echo "flag during linking and do at least one of the following:" 272804007ebaSmrg if test -n "$shlibpath_var"; then 272904007ebaSmrg echo " - add LIBDIR to the \`$shlibpath_var' environment variable" 273004007ebaSmrg echo " during execution" 273104007ebaSmrg fi 273204007ebaSmrg if test -n "$runpath_var"; then 273304007ebaSmrg echo " - add LIBDIR to the \`$runpath_var' environment variable" 273404007ebaSmrg echo " during linking" 273504007ebaSmrg fi 273604007ebaSmrg if test -n "$hardcode_libdir_flag_spec"; then 273704007ebaSmrg libdir=LIBDIR 273804007ebaSmrg eval flag=\"$hardcode_libdir_flag_spec\" 273904007ebaSmrg 274004007ebaSmrg $ECHO " - use the \`$flag' linker flag" 274104007ebaSmrg fi 274204007ebaSmrg if test -n "$admincmds"; then 274304007ebaSmrg $ECHO " - have your system administrator run these commands:$admincmds" 274404007ebaSmrg fi 274504007ebaSmrg if test -f /etc/ld.so.conf; then 274604007ebaSmrg echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" 274704007ebaSmrg fi 274804007ebaSmrg echo 274904007ebaSmrg 275004007ebaSmrg echo "See any operating system documentation about shared libraries for" 275104007ebaSmrg case $host in 275204007ebaSmrg solaris2.[6789]|solaris2.1[0-9]) 275304007ebaSmrg echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" 275404007ebaSmrg echo "pages." 275504007ebaSmrg ;; 275604007ebaSmrg *) 275704007ebaSmrg echo "more information, such as the ld(1) and ld.so(8) manual pages." 275804007ebaSmrg ;; 275904007ebaSmrg esac 276004007ebaSmrg echo "----------------------------------------------------------------------" 276104007ebaSmrg fi 276204007ebaSmrg exit $EXIT_SUCCESS 276304007ebaSmrg} 276404007ebaSmrg 276504007ebaSmrgtest "$opt_mode" = finish && func_mode_finish ${1+"$@"} 276604007ebaSmrg 276704007ebaSmrg 276804007ebaSmrg# func_mode_install arg... 276904007ebaSmrgfunc_mode_install () 277004007ebaSmrg{ 277104007ebaSmrg $opt_debug 277204007ebaSmrg # There may be an optional sh(1) argument at the beginning of 277304007ebaSmrg # install_prog (especially on Windows NT). 277404007ebaSmrg if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || 277504007ebaSmrg # Allow the use of GNU shtool's install command. 277604007ebaSmrg case $nonopt in *shtool*) :;; *) false;; esac; then 277704007ebaSmrg # Aesthetically quote it. 277804007ebaSmrg func_quote_for_eval "$nonopt" 277904007ebaSmrg install_prog="$func_quote_for_eval_result " 278004007ebaSmrg arg=$1 278104007ebaSmrg shift 278204007ebaSmrg else 278304007ebaSmrg install_prog= 278404007ebaSmrg arg=$nonopt 278504007ebaSmrg fi 278604007ebaSmrg 278704007ebaSmrg # The real first argument should be the name of the installation program. 278804007ebaSmrg # Aesthetically quote it. 278904007ebaSmrg func_quote_for_eval "$arg" 279004007ebaSmrg func_append install_prog "$func_quote_for_eval_result" 279104007ebaSmrg install_shared_prog=$install_prog 279204007ebaSmrg case " $install_prog " in 279304007ebaSmrg *[\\\ /]cp\ *) install_cp=: ;; 279404007ebaSmrg *) install_cp=false ;; 279504007ebaSmrg esac 279604007ebaSmrg 279704007ebaSmrg # We need to accept at least all the BSD install flags. 279804007ebaSmrg dest= 279904007ebaSmrg files= 280004007ebaSmrg opts= 280104007ebaSmrg prev= 280204007ebaSmrg install_type= 280304007ebaSmrg isdir=no 280404007ebaSmrg stripme= 280504007ebaSmrg no_mode=: 280604007ebaSmrg for arg 280704007ebaSmrg do 280804007ebaSmrg arg2= 280904007ebaSmrg if test -n "$dest"; then 281004007ebaSmrg func_append files " $dest" 281104007ebaSmrg dest=$arg 281204007ebaSmrg continue 281304007ebaSmrg fi 281404007ebaSmrg 281504007ebaSmrg case $arg in 281604007ebaSmrg -d) isdir=yes ;; 281704007ebaSmrg -f) 281804007ebaSmrg if $install_cp; then :; else 281904007ebaSmrg prev=$arg 282004007ebaSmrg fi 282104007ebaSmrg ;; 282204007ebaSmrg -g | -m | -o) 282304007ebaSmrg prev=$arg 282404007ebaSmrg ;; 282504007ebaSmrg -s) 282604007ebaSmrg stripme=" -s" 282704007ebaSmrg continue 282804007ebaSmrg ;; 282904007ebaSmrg -*) 283004007ebaSmrg ;; 283104007ebaSmrg *) 283204007ebaSmrg # If the previous option needed an argument, then skip it. 283304007ebaSmrg if test -n "$prev"; then 283404007ebaSmrg if test "x$prev" = x-m && test -n "$install_override_mode"; then 283504007ebaSmrg arg2=$install_override_mode 283604007ebaSmrg no_mode=false 283704007ebaSmrg fi 283804007ebaSmrg prev= 283904007ebaSmrg else 284004007ebaSmrg dest=$arg 284104007ebaSmrg continue 284204007ebaSmrg fi 284304007ebaSmrg ;; 284404007ebaSmrg esac 284504007ebaSmrg 284604007ebaSmrg # Aesthetically quote the argument. 284704007ebaSmrg func_quote_for_eval "$arg" 284804007ebaSmrg func_append install_prog " $func_quote_for_eval_result" 284904007ebaSmrg if test -n "$arg2"; then 285004007ebaSmrg func_quote_for_eval "$arg2" 285104007ebaSmrg fi 285204007ebaSmrg func_append install_shared_prog " $func_quote_for_eval_result" 285304007ebaSmrg done 285404007ebaSmrg 285504007ebaSmrg test -z "$install_prog" && \ 285604007ebaSmrg func_fatal_help "you must specify an install program" 285704007ebaSmrg 285804007ebaSmrg test -n "$prev" && \ 285904007ebaSmrg func_fatal_help "the \`$prev' option requires an argument" 286004007ebaSmrg 286104007ebaSmrg if test -n "$install_override_mode" && $no_mode; then 286204007ebaSmrg if $install_cp; then :; else 286304007ebaSmrg func_quote_for_eval "$install_override_mode" 286404007ebaSmrg func_append install_shared_prog " -m $func_quote_for_eval_result" 286504007ebaSmrg fi 286604007ebaSmrg fi 286704007ebaSmrg 286804007ebaSmrg if test -z "$files"; then 286904007ebaSmrg if test -z "$dest"; then 287004007ebaSmrg func_fatal_help "no file or destination specified" 287104007ebaSmrg else 287204007ebaSmrg func_fatal_help "you must specify a destination" 287304007ebaSmrg fi 287404007ebaSmrg fi 287504007ebaSmrg 287604007ebaSmrg # Strip any trailing slash from the destination. 287704007ebaSmrg func_stripname '' '/' "$dest" 287804007ebaSmrg dest=$func_stripname_result 287904007ebaSmrg 288004007ebaSmrg # Check to see that the destination is a directory. 288104007ebaSmrg test -d "$dest" && isdir=yes 288204007ebaSmrg if test "$isdir" = yes; then 288304007ebaSmrg destdir="$dest" 288404007ebaSmrg destname= 288504007ebaSmrg else 288604007ebaSmrg func_dirname_and_basename "$dest" "" "." 288704007ebaSmrg destdir="$func_dirname_result" 288804007ebaSmrg destname="$func_basename_result" 288904007ebaSmrg 289004007ebaSmrg # Not a directory, so check to see that there is only one file specified. 289104007ebaSmrg set dummy $files; shift 289204007ebaSmrg test "$#" -gt 1 && \ 289304007ebaSmrg func_fatal_help "\`$dest' is not a directory" 289404007ebaSmrg fi 289504007ebaSmrg case $destdir in 289604007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 289704007ebaSmrg *) 289804007ebaSmrg for file in $files; do 289904007ebaSmrg case $file in 290004007ebaSmrg *.lo) ;; 290104007ebaSmrg *) 290204007ebaSmrg func_fatal_help "\`$destdir' must be an absolute directory name" 290304007ebaSmrg ;; 290404007ebaSmrg esac 290504007ebaSmrg done 290604007ebaSmrg ;; 290704007ebaSmrg esac 290804007ebaSmrg 290904007ebaSmrg # This variable tells wrapper scripts just to set variables rather 291004007ebaSmrg # than running their programs. 291104007ebaSmrg libtool_install_magic="$magic" 291204007ebaSmrg 291304007ebaSmrg staticlibs= 291404007ebaSmrg future_libdirs= 291504007ebaSmrg current_libdirs= 291604007ebaSmrg for file in $files; do 291704007ebaSmrg 291804007ebaSmrg # Do each installation. 291904007ebaSmrg case $file in 292004007ebaSmrg *.$libext) 292104007ebaSmrg # Do the static libraries later. 292204007ebaSmrg func_append staticlibs " $file" 292304007ebaSmrg ;; 292404007ebaSmrg 292504007ebaSmrg *.la) 292604007ebaSmrg func_resolve_sysroot "$file" 292704007ebaSmrg file=$func_resolve_sysroot_result 292804007ebaSmrg 292904007ebaSmrg # Check to see that this really is a libtool archive. 293004007ebaSmrg func_lalib_unsafe_p "$file" \ 293104007ebaSmrg || func_fatal_help "\`$file' is not a valid libtool archive" 293204007ebaSmrg 293304007ebaSmrg library_names= 293404007ebaSmrg old_library= 293504007ebaSmrg relink_command= 293604007ebaSmrg func_source "$file" 293704007ebaSmrg 293804007ebaSmrg # Add the libdir to current_libdirs if it is the destination. 293904007ebaSmrg if test "X$destdir" = "X$libdir"; then 294004007ebaSmrg case "$current_libdirs " in 294104007ebaSmrg *" $libdir "*) ;; 294204007ebaSmrg *) func_append current_libdirs " $libdir" ;; 294304007ebaSmrg esac 294404007ebaSmrg else 294504007ebaSmrg # Note the libdir as a future libdir. 294604007ebaSmrg case "$future_libdirs " in 294704007ebaSmrg *" $libdir "*) ;; 294804007ebaSmrg *) func_append future_libdirs " $libdir" ;; 294904007ebaSmrg esac 295004007ebaSmrg fi 295104007ebaSmrg 295204007ebaSmrg func_dirname "$file" "/" "" 295304007ebaSmrg dir="$func_dirname_result" 295404007ebaSmrg func_append dir "$objdir" 295504007ebaSmrg 295604007ebaSmrg if test -n "$relink_command"; then 295704007ebaSmrg # Determine the prefix the user has applied to our future dir. 295804007ebaSmrg inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` 295904007ebaSmrg 296004007ebaSmrg # Don't allow the user to place us outside of our expected 296104007ebaSmrg # location b/c this prevents finding dependent libraries that 296204007ebaSmrg # are installed to the same prefix. 296304007ebaSmrg # At present, this check doesn't affect windows .dll's that 296404007ebaSmrg # are installed into $libdir/../bin (currently, that works fine) 296504007ebaSmrg # but it's something to keep an eye on. 296604007ebaSmrg test "$inst_prefix_dir" = "$destdir" && \ 296704007ebaSmrg func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" 296804007ebaSmrg 296904007ebaSmrg if test -n "$inst_prefix_dir"; then 297004007ebaSmrg # Stick the inst_prefix_dir data into the link command. 297104007ebaSmrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` 297204007ebaSmrg else 297304007ebaSmrg relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` 297404007ebaSmrg fi 297504007ebaSmrg 297604007ebaSmrg func_warning "relinking \`$file'" 297704007ebaSmrg func_show_eval "$relink_command" \ 297804007ebaSmrg 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' 297904007ebaSmrg fi 298004007ebaSmrg 298104007ebaSmrg # See the names of the shared library. 298204007ebaSmrg set dummy $library_names; shift 298304007ebaSmrg if test -n "$1"; then 298404007ebaSmrg realname="$1" 298504007ebaSmrg shift 298604007ebaSmrg 298704007ebaSmrg srcname="$realname" 298804007ebaSmrg test -n "$relink_command" && srcname="$realname"T 298904007ebaSmrg 299004007ebaSmrg # Install the shared library and build the symlinks. 299104007ebaSmrg func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 299204007ebaSmrg 'exit $?' 299304007ebaSmrg tstripme="$stripme" 299404007ebaSmrg case $host_os in 299504007ebaSmrg cygwin* | mingw* | pw32* | cegcc*) 299604007ebaSmrg case $realname in 299704007ebaSmrg *.dll.a) 299804007ebaSmrg tstripme="" 299904007ebaSmrg ;; 300004007ebaSmrg esac 300104007ebaSmrg ;; 300204007ebaSmrg esac 300304007ebaSmrg if test -n "$tstripme" && test -n "$striplib"; then 300404007ebaSmrg func_show_eval "$striplib $destdir/$realname" 'exit $?' 300504007ebaSmrg fi 300604007ebaSmrg 300704007ebaSmrg if test "$#" -gt 0; then 300804007ebaSmrg # Delete the old symlinks, and create new ones. 300904007ebaSmrg # Try `ln -sf' first, because the `ln' binary might depend on 301004007ebaSmrg # the symlink we replace! Solaris /bin/ln does not understand -f, 301104007ebaSmrg # so we also need to try rm && ln -s. 301204007ebaSmrg for linkname 301304007ebaSmrg do 301404007ebaSmrg test "$linkname" != "$realname" \ 301504007ebaSmrg && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" 301604007ebaSmrg done 301704007ebaSmrg fi 301804007ebaSmrg 301904007ebaSmrg # Do each command in the postinstall commands. 302004007ebaSmrg lib="$destdir/$realname" 302104007ebaSmrg func_execute_cmds "$postinstall_cmds" 'exit $?' 302204007ebaSmrg fi 302304007ebaSmrg 302404007ebaSmrg # Install the pseudo-library for information purposes. 302504007ebaSmrg func_basename "$file" 302604007ebaSmrg name="$func_basename_result" 302704007ebaSmrg instname="$dir/$name"i 302804007ebaSmrg func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' 302904007ebaSmrg 303004007ebaSmrg # Maybe install the static library, too. 303104007ebaSmrg test -n "$old_library" && func_append staticlibs " $dir/$old_library" 303204007ebaSmrg ;; 303304007ebaSmrg 303404007ebaSmrg *.lo) 303504007ebaSmrg # Install (i.e. copy) a libtool object. 303604007ebaSmrg 303704007ebaSmrg # Figure out destination file name, if it wasn't already specified. 303804007ebaSmrg if test -n "$destname"; then 303904007ebaSmrg destfile="$destdir/$destname" 304004007ebaSmrg else 304104007ebaSmrg func_basename "$file" 304204007ebaSmrg destfile="$func_basename_result" 304304007ebaSmrg destfile="$destdir/$destfile" 304404007ebaSmrg fi 304504007ebaSmrg 304604007ebaSmrg # Deduce the name of the destination old-style object file. 304704007ebaSmrg case $destfile in 304804007ebaSmrg *.lo) 304904007ebaSmrg func_lo2o "$destfile" 305004007ebaSmrg staticdest=$func_lo2o_result 305104007ebaSmrg ;; 305204007ebaSmrg *.$objext) 305304007ebaSmrg staticdest="$destfile" 305404007ebaSmrg destfile= 305504007ebaSmrg ;; 305604007ebaSmrg *) 305704007ebaSmrg func_fatal_help "cannot copy a libtool object to \`$destfile'" 305804007ebaSmrg ;; 305904007ebaSmrg esac 306004007ebaSmrg 306104007ebaSmrg # Install the libtool object if requested. 306204007ebaSmrg test -n "$destfile" && \ 306304007ebaSmrg func_show_eval "$install_prog $file $destfile" 'exit $?' 306404007ebaSmrg 306504007ebaSmrg # Install the old object if enabled. 306604007ebaSmrg if test "$build_old_libs" = yes; then 306704007ebaSmrg # Deduce the name of the old-style object file. 306804007ebaSmrg func_lo2o "$file" 306904007ebaSmrg staticobj=$func_lo2o_result 307004007ebaSmrg func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' 307104007ebaSmrg fi 307204007ebaSmrg exit $EXIT_SUCCESS 307304007ebaSmrg ;; 307404007ebaSmrg 307504007ebaSmrg *) 307604007ebaSmrg # Figure out destination file name, if it wasn't already specified. 307704007ebaSmrg if test -n "$destname"; then 307804007ebaSmrg destfile="$destdir/$destname" 307904007ebaSmrg else 308004007ebaSmrg func_basename "$file" 308104007ebaSmrg destfile="$func_basename_result" 308204007ebaSmrg destfile="$destdir/$destfile" 308304007ebaSmrg fi 308404007ebaSmrg 308504007ebaSmrg # If the file is missing, and there is a .exe on the end, strip it 308604007ebaSmrg # because it is most likely a libtool script we actually want to 308704007ebaSmrg # install 308804007ebaSmrg stripped_ext="" 308904007ebaSmrg case $file in 309004007ebaSmrg *.exe) 309104007ebaSmrg if test ! -f "$file"; then 309204007ebaSmrg func_stripname '' '.exe' "$file" 309304007ebaSmrg file=$func_stripname_result 309404007ebaSmrg stripped_ext=".exe" 309504007ebaSmrg fi 309604007ebaSmrg ;; 309704007ebaSmrg esac 309804007ebaSmrg 309904007ebaSmrg # Do a test to see if this is really a libtool program. 310004007ebaSmrg case $host in 310104007ebaSmrg *cygwin* | *mingw*) 310204007ebaSmrg if func_ltwrapper_executable_p "$file"; then 310304007ebaSmrg func_ltwrapper_scriptname "$file" 310404007ebaSmrg wrapper=$func_ltwrapper_scriptname_result 310504007ebaSmrg else 310604007ebaSmrg func_stripname '' '.exe' "$file" 310704007ebaSmrg wrapper=$func_stripname_result 310804007ebaSmrg fi 310904007ebaSmrg ;; 311004007ebaSmrg *) 311104007ebaSmrg wrapper=$file 311204007ebaSmrg ;; 311304007ebaSmrg esac 311404007ebaSmrg if func_ltwrapper_script_p "$wrapper"; then 311504007ebaSmrg notinst_deplibs= 311604007ebaSmrg relink_command= 311704007ebaSmrg 311804007ebaSmrg func_source "$wrapper" 311904007ebaSmrg 312004007ebaSmrg # Check the variables that should have been set. 312104007ebaSmrg test -z "$generated_by_libtool_version" && \ 312204007ebaSmrg func_fatal_error "invalid libtool wrapper script \`$wrapper'" 312304007ebaSmrg 312404007ebaSmrg finalize=yes 312504007ebaSmrg for lib in $notinst_deplibs; do 312604007ebaSmrg # Check to see that each library is installed. 312704007ebaSmrg libdir= 312804007ebaSmrg if test -f "$lib"; then 312904007ebaSmrg func_source "$lib" 313004007ebaSmrg fi 313104007ebaSmrg libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test 313204007ebaSmrg if test -n "$libdir" && test ! -f "$libfile"; then 313304007ebaSmrg func_warning "\`$lib' has not been installed in \`$libdir'" 313404007ebaSmrg finalize=no 313504007ebaSmrg fi 313604007ebaSmrg done 313704007ebaSmrg 313804007ebaSmrg relink_command= 313904007ebaSmrg func_source "$wrapper" 314004007ebaSmrg 314104007ebaSmrg outputname= 314204007ebaSmrg if test "$fast_install" = no && test -n "$relink_command"; then 314304007ebaSmrg $opt_dry_run || { 314404007ebaSmrg if test "$finalize" = yes; then 314504007ebaSmrg tmpdir=`func_mktempdir` 314604007ebaSmrg func_basename "$file$stripped_ext" 314704007ebaSmrg file="$func_basename_result" 314804007ebaSmrg outputname="$tmpdir/$file" 314904007ebaSmrg # Replace the output file specification. 315004007ebaSmrg relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` 315104007ebaSmrg 315204007ebaSmrg $opt_silent || { 315304007ebaSmrg func_quote_for_expand "$relink_command" 315404007ebaSmrg eval "func_echo $func_quote_for_expand_result" 315504007ebaSmrg } 315604007ebaSmrg if eval "$relink_command"; then : 315704007ebaSmrg else 315804007ebaSmrg func_error "error: relink \`$file' with the above command before installing it" 315904007ebaSmrg $opt_dry_run || ${RM}r "$tmpdir" 316004007ebaSmrg continue 316104007ebaSmrg fi 316204007ebaSmrg file="$outputname" 316304007ebaSmrg else 316404007ebaSmrg func_warning "cannot relink \`$file'" 316504007ebaSmrg fi 316604007ebaSmrg } 316704007ebaSmrg else 316804007ebaSmrg # Install the binary that we compiled earlier. 316904007ebaSmrg file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` 317004007ebaSmrg fi 317104007ebaSmrg fi 317204007ebaSmrg 317304007ebaSmrg # remove .exe since cygwin /usr/bin/install will append another 317404007ebaSmrg # one anyway 317504007ebaSmrg case $install_prog,$host in 317604007ebaSmrg */usr/bin/install*,*cygwin*) 317704007ebaSmrg case $file:$destfile in 317804007ebaSmrg *.exe:*.exe) 317904007ebaSmrg # this is ok 318004007ebaSmrg ;; 318104007ebaSmrg *.exe:*) 318204007ebaSmrg destfile=$destfile.exe 318304007ebaSmrg ;; 318404007ebaSmrg *:*.exe) 318504007ebaSmrg func_stripname '' '.exe' "$destfile" 318604007ebaSmrg destfile=$func_stripname_result 318704007ebaSmrg ;; 318804007ebaSmrg esac 318904007ebaSmrg ;; 319004007ebaSmrg esac 319104007ebaSmrg func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' 319204007ebaSmrg $opt_dry_run || if test -n "$outputname"; then 319304007ebaSmrg ${RM}r "$tmpdir" 319404007ebaSmrg fi 319504007ebaSmrg ;; 319604007ebaSmrg esac 319704007ebaSmrg done 319804007ebaSmrg 319904007ebaSmrg for file in $staticlibs; do 320004007ebaSmrg func_basename "$file" 320104007ebaSmrg name="$func_basename_result" 320204007ebaSmrg 320304007ebaSmrg # Set up the ranlib parameters. 320404007ebaSmrg oldlib="$destdir/$name" 320504007ebaSmrg func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 320604007ebaSmrg tool_oldlib=$func_to_tool_file_result 320704007ebaSmrg 320804007ebaSmrg func_show_eval "$install_prog \$file \$oldlib" 'exit $?' 320904007ebaSmrg 321004007ebaSmrg if test -n "$stripme" && test -n "$old_striplib"; then 321104007ebaSmrg func_show_eval "$old_striplib $tool_oldlib" 'exit $?' 321204007ebaSmrg fi 321304007ebaSmrg 321404007ebaSmrg # Do each command in the postinstall commands. 321504007ebaSmrg func_execute_cmds "$old_postinstall_cmds" 'exit $?' 321604007ebaSmrg done 321704007ebaSmrg 321804007ebaSmrg test -n "$future_libdirs" && \ 321904007ebaSmrg func_warning "remember to run \`$progname --finish$future_libdirs'" 322004007ebaSmrg 322104007ebaSmrg if test -n "$current_libdirs"; then 322204007ebaSmrg # Maybe just do a dry run. 322304007ebaSmrg $opt_dry_run && current_libdirs=" -n$current_libdirs" 322404007ebaSmrg exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' 322504007ebaSmrg else 322604007ebaSmrg exit $EXIT_SUCCESS 322704007ebaSmrg fi 322804007ebaSmrg} 322904007ebaSmrg 323004007ebaSmrgtest "$opt_mode" = install && func_mode_install ${1+"$@"} 323104007ebaSmrg 323204007ebaSmrg 323304007ebaSmrg# func_generate_dlsyms outputname originator pic_p 323404007ebaSmrg# Extract symbols from dlprefiles and create ${outputname}S.o with 323504007ebaSmrg# a dlpreopen symbol table. 323604007ebaSmrgfunc_generate_dlsyms () 323704007ebaSmrg{ 323804007ebaSmrg $opt_debug 323904007ebaSmrg my_outputname="$1" 324004007ebaSmrg my_originator="$2" 324104007ebaSmrg my_pic_p="${3-no}" 324204007ebaSmrg my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` 324304007ebaSmrg my_dlsyms= 324404007ebaSmrg 324504007ebaSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 324604007ebaSmrg if test -n "$NM" && test -n "$global_symbol_pipe"; then 324704007ebaSmrg my_dlsyms="${my_outputname}S.c" 324804007ebaSmrg else 324904007ebaSmrg func_error "not configured to extract global symbols from dlpreopened files" 325004007ebaSmrg fi 325104007ebaSmrg fi 325204007ebaSmrg 325304007ebaSmrg if test -n "$my_dlsyms"; then 325404007ebaSmrg case $my_dlsyms in 325504007ebaSmrg "") ;; 325604007ebaSmrg *.c) 325704007ebaSmrg # Discover the nlist of each of the dlfiles. 325804007ebaSmrg nlist="$output_objdir/${my_outputname}.nm" 325904007ebaSmrg 326004007ebaSmrg func_show_eval "$RM $nlist ${nlist}S ${nlist}T" 326104007ebaSmrg 326204007ebaSmrg # Parse the name list into a source file. 326304007ebaSmrg func_verbose "creating $output_objdir/$my_dlsyms" 326404007ebaSmrg 326504007ebaSmrg $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ 326604007ebaSmrg/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ 326704007ebaSmrg/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ 326804007ebaSmrg 326904007ebaSmrg#ifdef __cplusplus 327004007ebaSmrgextern \"C\" { 327104007ebaSmrg#endif 327204007ebaSmrg 327304007ebaSmrg#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) 327404007ebaSmrg#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" 327504007ebaSmrg#endif 327604007ebaSmrg 327704007ebaSmrg/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ 327804007ebaSmrg#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) 327904007ebaSmrg/* DATA imports from DLLs on WIN32 con't be const, because runtime 328004007ebaSmrg relocations are performed -- see ld's documentation on pseudo-relocs. */ 328104007ebaSmrg# define LT_DLSYM_CONST 328204007ebaSmrg#elif defined(__osf__) 328304007ebaSmrg/* This system does not cope well with relocations in const data. */ 328404007ebaSmrg# define LT_DLSYM_CONST 328504007ebaSmrg#else 328604007ebaSmrg# define LT_DLSYM_CONST const 328704007ebaSmrg#endif 328804007ebaSmrg 328904007ebaSmrg/* External symbol declarations for the compiler. */\ 329004007ebaSmrg" 329104007ebaSmrg 329204007ebaSmrg if test "$dlself" = yes; then 329304007ebaSmrg func_verbose "generating symbol list for \`$output'" 329404007ebaSmrg 329504007ebaSmrg $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" 329604007ebaSmrg 329704007ebaSmrg # Add our own program objects to the symbol list. 329804007ebaSmrg progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` 329904007ebaSmrg for progfile in $progfiles; do 330004007ebaSmrg func_to_tool_file "$progfile" func_convert_file_msys_to_w32 330104007ebaSmrg func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" 330204007ebaSmrg $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" 330304007ebaSmrg done 330404007ebaSmrg 330504007ebaSmrg if test -n "$exclude_expsyms"; then 330604007ebaSmrg $opt_dry_run || { 330704007ebaSmrg eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' 330804007ebaSmrg eval '$MV "$nlist"T "$nlist"' 330904007ebaSmrg } 331004007ebaSmrg fi 331104007ebaSmrg 331204007ebaSmrg if test -n "$export_symbols_regex"; then 331304007ebaSmrg $opt_dry_run || { 331404007ebaSmrg eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' 331504007ebaSmrg eval '$MV "$nlist"T "$nlist"' 331604007ebaSmrg } 331704007ebaSmrg fi 331804007ebaSmrg 331904007ebaSmrg # Prepare the list of exported symbols 332004007ebaSmrg if test -z "$export_symbols"; then 332104007ebaSmrg export_symbols="$output_objdir/$outputname.exp" 332204007ebaSmrg $opt_dry_run || { 332304007ebaSmrg $RM $export_symbols 332404007ebaSmrg eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' 332504007ebaSmrg case $host in 332604007ebaSmrg *cygwin* | *mingw* | *cegcc* ) 332704007ebaSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 332804007ebaSmrg eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' 332904007ebaSmrg ;; 333004007ebaSmrg esac 333104007ebaSmrg } 333204007ebaSmrg else 333304007ebaSmrg $opt_dry_run || { 333404007ebaSmrg eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' 333504007ebaSmrg eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' 333604007ebaSmrg eval '$MV "$nlist"T "$nlist"' 333704007ebaSmrg case $host in 333804007ebaSmrg *cygwin* | *mingw* | *cegcc* ) 333904007ebaSmrg eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' 334004007ebaSmrg eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' 334104007ebaSmrg ;; 334204007ebaSmrg esac 334304007ebaSmrg } 334404007ebaSmrg fi 334504007ebaSmrg fi 334604007ebaSmrg 334704007ebaSmrg for dlprefile in $dlprefiles; do 334804007ebaSmrg func_verbose "extracting global C symbols from \`$dlprefile'" 334904007ebaSmrg func_basename "$dlprefile" 335004007ebaSmrg name="$func_basename_result" 335104007ebaSmrg case $host in 335204007ebaSmrg *cygwin* | *mingw* | *cegcc* ) 335304007ebaSmrg # if an import library, we need to obtain dlname 335404007ebaSmrg if func_win32_import_lib_p "$dlprefile"; then 335504007ebaSmrg func_tr_sh "$dlprefile" 335604007ebaSmrg eval "curr_lafile=\$libfile_$func_tr_sh_result" 335704007ebaSmrg dlprefile_dlbasename="" 335804007ebaSmrg if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then 335904007ebaSmrg # Use subshell, to avoid clobbering current variable values 336004007ebaSmrg dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` 336104007ebaSmrg if test -n "$dlprefile_dlname" ; then 336204007ebaSmrg func_basename "$dlprefile_dlname" 336304007ebaSmrg dlprefile_dlbasename="$func_basename_result" 336404007ebaSmrg else 336504007ebaSmrg # no lafile. user explicitly requested -dlpreopen <import library>. 336604007ebaSmrg $sharedlib_from_linklib_cmd "$dlprefile" 336704007ebaSmrg dlprefile_dlbasename=$sharedlib_from_linklib_result 336804007ebaSmrg fi 336904007ebaSmrg fi 337004007ebaSmrg $opt_dry_run || { 337104007ebaSmrg if test -n "$dlprefile_dlbasename" ; then 337204007ebaSmrg eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' 337304007ebaSmrg else 337404007ebaSmrg func_warning "Could not compute DLL name from $name" 337504007ebaSmrg eval '$ECHO ": $name " >> "$nlist"' 337604007ebaSmrg fi 337704007ebaSmrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 337804007ebaSmrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | 337904007ebaSmrg $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" 338004007ebaSmrg } 338104007ebaSmrg else # not an import lib 338204007ebaSmrg $opt_dry_run || { 338304007ebaSmrg eval '$ECHO ": $name " >> "$nlist"' 338404007ebaSmrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 338504007ebaSmrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 338604007ebaSmrg } 338704007ebaSmrg fi 338804007ebaSmrg ;; 338904007ebaSmrg *) 339004007ebaSmrg $opt_dry_run || { 339104007ebaSmrg eval '$ECHO ": $name " >> "$nlist"' 339204007ebaSmrg func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 339304007ebaSmrg eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" 339404007ebaSmrg } 339504007ebaSmrg ;; 339604007ebaSmrg esac 339704007ebaSmrg done 339804007ebaSmrg 339904007ebaSmrg $opt_dry_run || { 340004007ebaSmrg # Make sure we have at least an empty file. 340104007ebaSmrg test -f "$nlist" || : > "$nlist" 340204007ebaSmrg 340304007ebaSmrg if test -n "$exclude_expsyms"; then 340404007ebaSmrg $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T 340504007ebaSmrg $MV "$nlist"T "$nlist" 340604007ebaSmrg fi 340704007ebaSmrg 340804007ebaSmrg # Try sorting and uniquifying the output. 340904007ebaSmrg if $GREP -v "^: " < "$nlist" | 341004007ebaSmrg if sort -k 3 </dev/null >/dev/null 2>&1; then 341104007ebaSmrg sort -k 3 341204007ebaSmrg else 341304007ebaSmrg sort +2 341404007ebaSmrg fi | 341504007ebaSmrg uniq > "$nlist"S; then 341604007ebaSmrg : 341704007ebaSmrg else 341804007ebaSmrg $GREP -v "^: " < "$nlist" > "$nlist"S 341904007ebaSmrg fi 342004007ebaSmrg 342104007ebaSmrg if test -f "$nlist"S; then 342204007ebaSmrg eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' 342304007ebaSmrg else 342404007ebaSmrg echo '/* NONE */' >> "$output_objdir/$my_dlsyms" 342504007ebaSmrg fi 342604007ebaSmrg 342704007ebaSmrg echo >> "$output_objdir/$my_dlsyms" "\ 342804007ebaSmrg 342904007ebaSmrg/* The mapping between symbol names and symbols. */ 343004007ebaSmrgtypedef struct { 343104007ebaSmrg const char *name; 343204007ebaSmrg void *address; 343304007ebaSmrg} lt_dlsymlist; 343404007ebaSmrgextern LT_DLSYM_CONST lt_dlsymlist 343504007ebaSmrglt_${my_prefix}_LTX_preloaded_symbols[]; 343604007ebaSmrgLT_DLSYM_CONST lt_dlsymlist 343704007ebaSmrglt_${my_prefix}_LTX_preloaded_symbols[] = 343804007ebaSmrg{\ 343904007ebaSmrg { \"$my_originator\", (void *) 0 }," 344004007ebaSmrg 344104007ebaSmrg case $need_lib_prefix in 344204007ebaSmrg no) 344304007ebaSmrg eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" 344404007ebaSmrg ;; 344504007ebaSmrg *) 344604007ebaSmrg eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" 344704007ebaSmrg ;; 344804007ebaSmrg esac 344904007ebaSmrg echo >> "$output_objdir/$my_dlsyms" "\ 345004007ebaSmrg {0, (void *) 0} 345104007ebaSmrg}; 345204007ebaSmrg 345304007ebaSmrg/* This works around a problem in FreeBSD linker */ 345404007ebaSmrg#ifdef FREEBSD_WORKAROUND 345504007ebaSmrgstatic const void *lt_preloaded_setup() { 345604007ebaSmrg return lt_${my_prefix}_LTX_preloaded_symbols; 345704007ebaSmrg} 345804007ebaSmrg#endif 345904007ebaSmrg 346004007ebaSmrg#ifdef __cplusplus 346104007ebaSmrg} 346204007ebaSmrg#endif\ 346304007ebaSmrg" 346404007ebaSmrg } # !$opt_dry_run 346504007ebaSmrg 346604007ebaSmrg pic_flag_for_symtable= 346704007ebaSmrg case "$compile_command " in 346804007ebaSmrg *" -static "*) ;; 346904007ebaSmrg *) 347004007ebaSmrg case $host in 347104007ebaSmrg # compiling the symbol table file with pic_flag works around 347204007ebaSmrg # a FreeBSD bug that causes programs to crash when -lm is 347304007ebaSmrg # linked before any other PIC object. But we must not use 347404007ebaSmrg # pic_flag when linking with -static. The problem exists in 347504007ebaSmrg # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. 347604007ebaSmrg *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) 347704007ebaSmrg pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; 347804007ebaSmrg *-*-hpux*) 347904007ebaSmrg pic_flag_for_symtable=" $pic_flag" ;; 348004007ebaSmrg *) 348104007ebaSmrg if test "X$my_pic_p" != Xno; then 348204007ebaSmrg pic_flag_for_symtable=" $pic_flag" 348304007ebaSmrg fi 348404007ebaSmrg ;; 348504007ebaSmrg esac 348604007ebaSmrg ;; 348704007ebaSmrg esac 348804007ebaSmrg symtab_cflags= 348904007ebaSmrg for arg in $LTCFLAGS; do 349004007ebaSmrg case $arg in 349104007ebaSmrg -pie | -fpie | -fPIE) ;; 349204007ebaSmrg *) func_append symtab_cflags " $arg" ;; 349304007ebaSmrg esac 349404007ebaSmrg done 349504007ebaSmrg 349604007ebaSmrg # Now compile the dynamic symbol file. 349704007ebaSmrg func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' 349804007ebaSmrg 349904007ebaSmrg # Clean up the generated files. 350004007ebaSmrg func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' 350104007ebaSmrg 350204007ebaSmrg # Transform the symbol file into the correct name. 350304007ebaSmrg symfileobj="$output_objdir/${my_outputname}S.$objext" 350404007ebaSmrg case $host in 350504007ebaSmrg *cygwin* | *mingw* | *cegcc* ) 350604007ebaSmrg if test -f "$output_objdir/$my_outputname.def"; then 350704007ebaSmrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350804007ebaSmrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` 350904007ebaSmrg else 351004007ebaSmrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351104007ebaSmrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351204007ebaSmrg fi 351304007ebaSmrg ;; 351404007ebaSmrg *) 351504007ebaSmrg compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351604007ebaSmrg finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` 351704007ebaSmrg ;; 351804007ebaSmrg esac 351904007ebaSmrg ;; 352004007ebaSmrg *) 352104007ebaSmrg func_fatal_error "unknown suffix for \`$my_dlsyms'" 352204007ebaSmrg ;; 352304007ebaSmrg esac 352404007ebaSmrg else 352504007ebaSmrg # We keep going just in case the user didn't refer to 352604007ebaSmrg # lt_preloaded_symbols. The linker will fail if global_symbol_pipe 352704007ebaSmrg # really was required. 352804007ebaSmrg 352904007ebaSmrg # Nullify the symbol file. 353004007ebaSmrg compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` 353104007ebaSmrg finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` 353204007ebaSmrg fi 353304007ebaSmrg} 353404007ebaSmrg 353504007ebaSmrg# func_win32_libid arg 353604007ebaSmrg# return the library type of file 'arg' 353704007ebaSmrg# 353804007ebaSmrg# Need a lot of goo to handle *both* DLLs and import libs 353904007ebaSmrg# Has to be a shell function in order to 'eat' the argument 354004007ebaSmrg# that is supplied when $file_magic_command is called. 354104007ebaSmrg# Despite the name, also deal with 64 bit binaries. 354204007ebaSmrgfunc_win32_libid () 354304007ebaSmrg{ 354404007ebaSmrg $opt_debug 354504007ebaSmrg win32_libid_type="unknown" 354604007ebaSmrg win32_fileres=`file -L $1 2>/dev/null` 354704007ebaSmrg case $win32_fileres in 354804007ebaSmrg *ar\ archive\ import\ library*) # definitely import 354904007ebaSmrg win32_libid_type="x86 archive import" 355004007ebaSmrg ;; 355104007ebaSmrg *ar\ archive*) # could be an import, or static 355204007ebaSmrg # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. 355304007ebaSmrg if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | 355404007ebaSmrg $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then 355504007ebaSmrg func_to_tool_file "$1" func_convert_file_msys_to_w32 355604007ebaSmrg win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | 355704007ebaSmrg $SED -n -e ' 355804007ebaSmrg 1,100{ 355904007ebaSmrg / I /{ 356004007ebaSmrg s,.*,import, 356104007ebaSmrg p 356204007ebaSmrg q 356304007ebaSmrg } 356404007ebaSmrg }'` 356504007ebaSmrg case $win32_nmres in 356604007ebaSmrg import*) win32_libid_type="x86 archive import";; 356704007ebaSmrg *) win32_libid_type="x86 archive static";; 356804007ebaSmrg esac 356904007ebaSmrg fi 357004007ebaSmrg ;; 357104007ebaSmrg *DLL*) 357204007ebaSmrg win32_libid_type="x86 DLL" 357304007ebaSmrg ;; 357404007ebaSmrg *executable*) # but shell scripts are "executable" too... 357504007ebaSmrg case $win32_fileres in 357604007ebaSmrg *MS\ Windows\ PE\ Intel*) 357704007ebaSmrg win32_libid_type="x86 DLL" 357804007ebaSmrg ;; 357904007ebaSmrg esac 358004007ebaSmrg ;; 358104007ebaSmrg esac 358204007ebaSmrg $ECHO "$win32_libid_type" 358304007ebaSmrg} 358404007ebaSmrg 358504007ebaSmrg# func_cygming_dll_for_implib ARG 358604007ebaSmrg# 358704007ebaSmrg# Platform-specific function to extract the 358804007ebaSmrg# name of the DLL associated with the specified 358904007ebaSmrg# import library ARG. 359004007ebaSmrg# Invoked by eval'ing the libtool variable 359104007ebaSmrg# $sharedlib_from_linklib_cmd 359204007ebaSmrg# Result is available in the variable 359304007ebaSmrg# $sharedlib_from_linklib_result 359404007ebaSmrgfunc_cygming_dll_for_implib () 359504007ebaSmrg{ 359604007ebaSmrg $opt_debug 359704007ebaSmrg sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` 359804007ebaSmrg} 359904007ebaSmrg 360004007ebaSmrg# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs 360104007ebaSmrg# 360204007ebaSmrg# The is the core of a fallback implementation of a 360304007ebaSmrg# platform-specific function to extract the name of the 360404007ebaSmrg# DLL associated with the specified import library LIBNAME. 360504007ebaSmrg# 360604007ebaSmrg# SECTION_NAME is either .idata$6 or .idata$7, depending 360704007ebaSmrg# on the platform and compiler that created the implib. 360804007ebaSmrg# 360904007ebaSmrg# Echos the name of the DLL associated with the 361004007ebaSmrg# specified import library. 361104007ebaSmrgfunc_cygming_dll_for_implib_fallback_core () 361204007ebaSmrg{ 361304007ebaSmrg $opt_debug 361404007ebaSmrg match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` 361504007ebaSmrg $OBJDUMP -s --section "$1" "$2" 2>/dev/null | 361604007ebaSmrg $SED '/^Contents of section '"$match_literal"':/{ 361704007ebaSmrg # Place marker at beginning of archive member dllname section 361804007ebaSmrg s/.*/====MARK====/ 361904007ebaSmrg p 362004007ebaSmrg d 362104007ebaSmrg } 362204007ebaSmrg # These lines can sometimes be longer than 43 characters, but 362304007ebaSmrg # are always uninteresting 362404007ebaSmrg /:[ ]*file format pe[i]\{,1\}-/d 362504007ebaSmrg /^In archive [^:]*:/d 362604007ebaSmrg # Ensure marker is printed 362704007ebaSmrg /^====MARK====/p 362804007ebaSmrg # Remove all lines with less than 43 characters 362904007ebaSmrg /^.\{43\}/!d 363004007ebaSmrg # From remaining lines, remove first 43 characters 363104007ebaSmrg s/^.\{43\}//' | 363204007ebaSmrg $SED -n ' 363304007ebaSmrg # Join marker and all lines until next marker into a single line 363404007ebaSmrg /^====MARK====/ b para 363504007ebaSmrg H 363604007ebaSmrg $ b para 363704007ebaSmrg b 363804007ebaSmrg :para 363904007ebaSmrg x 364004007ebaSmrg s/\n//g 364104007ebaSmrg # Remove the marker 364204007ebaSmrg s/^====MARK====// 364304007ebaSmrg # Remove trailing dots and whitespace 364404007ebaSmrg s/[\. \t]*$// 364504007ebaSmrg # Print 364604007ebaSmrg /./p' | 364704007ebaSmrg # we now have a list, one entry per line, of the stringified 364804007ebaSmrg # contents of the appropriate section of all members of the 364904007ebaSmrg # archive which possess that section. Heuristic: eliminate 365004007ebaSmrg # all those which have a first or second character that is 365104007ebaSmrg # a '.' (that is, objdump's representation of an unprintable 365204007ebaSmrg # character.) This should work for all archives with less than 365304007ebaSmrg # 0x302f exports -- but will fail for DLLs whose name actually 365404007ebaSmrg # begins with a literal '.' or a single character followed by 365504007ebaSmrg # a '.'. 365604007ebaSmrg # 365704007ebaSmrg # Of those that remain, print the first one. 365804007ebaSmrg $SED -e '/^\./d;/^.\./d;q' 365904007ebaSmrg} 366004007ebaSmrg 366104007ebaSmrg# func_cygming_gnu_implib_p ARG 366204007ebaSmrg# This predicate returns with zero status (TRUE) if 366304007ebaSmrg# ARG is a GNU/binutils-style import library. Returns 366404007ebaSmrg# with nonzero status (FALSE) otherwise. 366504007ebaSmrgfunc_cygming_gnu_implib_p () 366604007ebaSmrg{ 366704007ebaSmrg $opt_debug 366804007ebaSmrg func_to_tool_file "$1" func_convert_file_msys_to_w32 366904007ebaSmrg 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)$'` 367004007ebaSmrg test -n "$func_cygming_gnu_implib_tmp" 367104007ebaSmrg} 367204007ebaSmrg 367304007ebaSmrg# func_cygming_ms_implib_p ARG 367404007ebaSmrg# This predicate returns with zero status (TRUE) if 367504007ebaSmrg# ARG is an MS-style import library. Returns 367604007ebaSmrg# with nonzero status (FALSE) otherwise. 367704007ebaSmrgfunc_cygming_ms_implib_p () 367804007ebaSmrg{ 367904007ebaSmrg $opt_debug 368004007ebaSmrg func_to_tool_file "$1" func_convert_file_msys_to_w32 368104007ebaSmrg func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` 368204007ebaSmrg test -n "$func_cygming_ms_implib_tmp" 368304007ebaSmrg} 368404007ebaSmrg 368504007ebaSmrg# func_cygming_dll_for_implib_fallback ARG 368604007ebaSmrg# Platform-specific function to extract the 368704007ebaSmrg# name of the DLL associated with the specified 368804007ebaSmrg# import library ARG. 368904007ebaSmrg# 369004007ebaSmrg# This fallback implementation is for use when $DLLTOOL 369104007ebaSmrg# does not support the --identify-strict option. 369204007ebaSmrg# Invoked by eval'ing the libtool variable 369304007ebaSmrg# $sharedlib_from_linklib_cmd 369404007ebaSmrg# Result is available in the variable 369504007ebaSmrg# $sharedlib_from_linklib_result 369604007ebaSmrgfunc_cygming_dll_for_implib_fallback () 369704007ebaSmrg{ 369804007ebaSmrg $opt_debug 369904007ebaSmrg if func_cygming_gnu_implib_p "$1" ; then 370004007ebaSmrg # binutils import library 370104007ebaSmrg sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` 370204007ebaSmrg elif func_cygming_ms_implib_p "$1" ; then 370304007ebaSmrg # ms-generated import library 370404007ebaSmrg sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` 370504007ebaSmrg else 370604007ebaSmrg # unknown 370704007ebaSmrg sharedlib_from_linklib_result="" 370804007ebaSmrg fi 370904007ebaSmrg} 371004007ebaSmrg 371104007ebaSmrg 371204007ebaSmrg# func_extract_an_archive dir oldlib 371304007ebaSmrgfunc_extract_an_archive () 371404007ebaSmrg{ 371504007ebaSmrg $opt_debug 371604007ebaSmrg f_ex_an_ar_dir="$1"; shift 371704007ebaSmrg f_ex_an_ar_oldlib="$1" 371804007ebaSmrg if test "$lock_old_archive_extraction" = yes; then 371904007ebaSmrg lockfile=$f_ex_an_ar_oldlib.lock 372004007ebaSmrg until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do 372104007ebaSmrg func_echo "Waiting for $lockfile to be removed" 372204007ebaSmrg sleep 2 372304007ebaSmrg done 372404007ebaSmrg fi 372504007ebaSmrg func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 372604007ebaSmrg 'stat=$?; rm -f "$lockfile"; exit $stat' 372704007ebaSmrg if test "$lock_old_archive_extraction" = yes; then 372804007ebaSmrg $opt_dry_run || rm -f "$lockfile" 372904007ebaSmrg fi 373004007ebaSmrg if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then 373104007ebaSmrg : 373204007ebaSmrg else 373304007ebaSmrg func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 373404007ebaSmrg fi 373504007ebaSmrg} 373604007ebaSmrg 373704007ebaSmrg 373804007ebaSmrg# func_extract_archives gentop oldlib ... 373904007ebaSmrgfunc_extract_archives () 374004007ebaSmrg{ 374104007ebaSmrg $opt_debug 374204007ebaSmrg my_gentop="$1"; shift 374304007ebaSmrg my_oldlibs=${1+"$@"} 374404007ebaSmrg my_oldobjs="" 374504007ebaSmrg my_xlib="" 374604007ebaSmrg my_xabs="" 374704007ebaSmrg my_xdir="" 374804007ebaSmrg 374904007ebaSmrg for my_xlib in $my_oldlibs; do 375004007ebaSmrg # Extract the objects. 375104007ebaSmrg case $my_xlib in 375204007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; 375304007ebaSmrg *) my_xabs=`pwd`"/$my_xlib" ;; 375404007ebaSmrg esac 375504007ebaSmrg func_basename "$my_xlib" 375604007ebaSmrg my_xlib="$func_basename_result" 375704007ebaSmrg my_xlib_u=$my_xlib 375804007ebaSmrg while :; do 375904007ebaSmrg case " $extracted_archives " in 376004007ebaSmrg *" $my_xlib_u "*) 376104007ebaSmrg func_arith $extracted_serial + 1 376204007ebaSmrg extracted_serial=$func_arith_result 376304007ebaSmrg my_xlib_u=lt$extracted_serial-$my_xlib ;; 376404007ebaSmrg *) break ;; 376504007ebaSmrg esac 376604007ebaSmrg done 376704007ebaSmrg extracted_archives="$extracted_archives $my_xlib_u" 376804007ebaSmrg my_xdir="$my_gentop/$my_xlib_u" 376904007ebaSmrg 377004007ebaSmrg func_mkdir_p "$my_xdir" 377104007ebaSmrg 377204007ebaSmrg case $host in 377304007ebaSmrg *-darwin*) 377404007ebaSmrg func_verbose "Extracting $my_xabs" 377504007ebaSmrg # Do not bother doing anything if just a dry run 377604007ebaSmrg $opt_dry_run || { 377704007ebaSmrg darwin_orig_dir=`pwd` 377804007ebaSmrg cd $my_xdir || exit $? 377904007ebaSmrg darwin_archive=$my_xabs 378004007ebaSmrg darwin_curdir=`pwd` 378104007ebaSmrg darwin_base_archive=`basename "$darwin_archive"` 378204007ebaSmrg darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` 378304007ebaSmrg if test -n "$darwin_arches"; then 378404007ebaSmrg darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` 378504007ebaSmrg darwin_arch= 378604007ebaSmrg func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" 378704007ebaSmrg for darwin_arch in $darwin_arches ; do 378804007ebaSmrg func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" 378904007ebaSmrg $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" 379004007ebaSmrg cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" 379104007ebaSmrg func_extract_an_archive "`pwd`" "${darwin_base_archive}" 379204007ebaSmrg cd "$darwin_curdir" 379304007ebaSmrg $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" 379404007ebaSmrg done # $darwin_arches 379504007ebaSmrg ## Okay now we've a bunch of thin objects, gotta fatten them up :) 379604007ebaSmrg darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` 379704007ebaSmrg darwin_file= 379804007ebaSmrg darwin_files= 379904007ebaSmrg for darwin_file in $darwin_filelist; do 380004007ebaSmrg darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` 380104007ebaSmrg $LIPO -create -output "$darwin_file" $darwin_files 380204007ebaSmrg done # $darwin_filelist 380304007ebaSmrg $RM -rf unfat-$$ 380404007ebaSmrg cd "$darwin_orig_dir" 380504007ebaSmrg else 380604007ebaSmrg cd $darwin_orig_dir 380704007ebaSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 380804007ebaSmrg fi # $darwin_arches 380904007ebaSmrg } # !$opt_dry_run 381004007ebaSmrg ;; 381104007ebaSmrg *) 381204007ebaSmrg func_extract_an_archive "$my_xdir" "$my_xabs" 381304007ebaSmrg ;; 381404007ebaSmrg esac 381504007ebaSmrg my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` 381604007ebaSmrg done 381704007ebaSmrg 381804007ebaSmrg func_extract_archives_result="$my_oldobjs" 381904007ebaSmrg} 382004007ebaSmrg 382104007ebaSmrg 382204007ebaSmrg# func_emit_wrapper [arg=no] 382304007ebaSmrg# 382404007ebaSmrg# Emit a libtool wrapper script on stdout. 382504007ebaSmrg# Don't directly open a file because we may want to 382604007ebaSmrg# incorporate the script contents within a cygwin/mingw 382704007ebaSmrg# wrapper executable. Must ONLY be called from within 382804007ebaSmrg# func_mode_link because it depends on a number of variables 382904007ebaSmrg# set therein. 383004007ebaSmrg# 383104007ebaSmrg# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR 383204007ebaSmrg# variable will take. If 'yes', then the emitted script 383304007ebaSmrg# will assume that the directory in which it is stored is 383404007ebaSmrg# the $objdir directory. This is a cygwin/mingw-specific 383504007ebaSmrg# behavior. 383604007ebaSmrgfunc_emit_wrapper () 383704007ebaSmrg{ 383804007ebaSmrg func_emit_wrapper_arg1=${1-no} 383904007ebaSmrg 384004007ebaSmrg $ECHO "\ 384104007ebaSmrg#! $SHELL 384204007ebaSmrg 384304007ebaSmrg# $output - temporary wrapper script for $objdir/$outputname 384404007ebaSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 384504007ebaSmrg# 384604007ebaSmrg# The $output program cannot be directly executed until all the libtool 384704007ebaSmrg# libraries that it depends on are installed. 384804007ebaSmrg# 384904007ebaSmrg# This wrapper script should never be moved out of the build directory. 385004007ebaSmrg# If it is, it will not operate correctly. 385104007ebaSmrg 385204007ebaSmrg# Sed substitution that helps us do robust quoting. It backslashifies 385304007ebaSmrg# metacharacters that are still active within double-quoted strings. 385404007ebaSmrgsed_quote_subst='$sed_quote_subst' 385504007ebaSmrg 385604007ebaSmrg# Be Bourne compatible 385704007ebaSmrgif test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then 385804007ebaSmrg emulate sh 385904007ebaSmrg NULLCMD=: 386004007ebaSmrg # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which 386104007ebaSmrg # is contrary to our usage. Disable this feature. 386204007ebaSmrg alias -g '\${1+\"\$@\"}'='\"\$@\"' 386304007ebaSmrg setopt NO_GLOB_SUBST 386404007ebaSmrgelse 386504007ebaSmrg case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac 386604007ebaSmrgfi 386704007ebaSmrgBIN_SH=xpg4; export BIN_SH # for Tru64 386804007ebaSmrgDUALCASE=1; export DUALCASE # for MKS sh 386904007ebaSmrg 387004007ebaSmrg# The HP-UX ksh and POSIX shell print the target directory to stdout 387104007ebaSmrg# if CDPATH is set. 387204007ebaSmrg(unset CDPATH) >/dev/null 2>&1 && unset CDPATH 387304007ebaSmrg 387404007ebaSmrgrelink_command=\"$relink_command\" 387504007ebaSmrg 387604007ebaSmrg# This environment variable determines our operation mode. 387704007ebaSmrgif test \"\$libtool_install_magic\" = \"$magic\"; then 387804007ebaSmrg # install mode needs the following variables: 387904007ebaSmrg generated_by_libtool_version='$macro_version' 388004007ebaSmrg notinst_deplibs='$notinst_deplibs' 388104007ebaSmrgelse 388204007ebaSmrg # When we are sourced in execute mode, \$file and \$ECHO are already set. 388304007ebaSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 388404007ebaSmrg file=\"\$0\"" 388504007ebaSmrg 388604007ebaSmrg qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` 388704007ebaSmrg $ECHO "\ 388804007ebaSmrg 388904007ebaSmrg# A function that is used when there is no print builtin or printf. 389004007ebaSmrgfunc_fallback_echo () 389104007ebaSmrg{ 389204007ebaSmrg eval 'cat <<_LTECHO_EOF 389304007ebaSmrg\$1 389404007ebaSmrg_LTECHO_EOF' 389504007ebaSmrg} 389604007ebaSmrg ECHO=\"$qECHO\" 389704007ebaSmrg fi 389804007ebaSmrg 389904007ebaSmrg# Very basic option parsing. These options are (a) specific to 390004007ebaSmrg# the libtool wrapper, (b) are identical between the wrapper 390104007ebaSmrg# /script/ and the wrapper /executable/ which is used only on 390204007ebaSmrg# windows platforms, and (c) all begin with the string "--lt-" 390304007ebaSmrg# (application programs are unlikely to have options which match 390404007ebaSmrg# this pattern). 390504007ebaSmrg# 390604007ebaSmrg# There are only two supported options: --lt-debug and 390704007ebaSmrg# --lt-dump-script. There is, deliberately, no --lt-help. 390804007ebaSmrg# 390904007ebaSmrg# The first argument to this parsing function should be the 391004007ebaSmrg# script's $0 value, followed by "$@". 391104007ebaSmrglt_option_debug= 391204007ebaSmrgfunc_parse_lt_options () 391304007ebaSmrg{ 391404007ebaSmrg lt_script_arg0=\$0 391504007ebaSmrg shift 391604007ebaSmrg for lt_opt 391704007ebaSmrg do 391804007ebaSmrg case \"\$lt_opt\" in 391904007ebaSmrg --lt-debug) lt_option_debug=1 ;; 392004007ebaSmrg --lt-dump-script) 392104007ebaSmrg lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` 392204007ebaSmrg test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. 392304007ebaSmrg lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` 392404007ebaSmrg cat \"\$lt_dump_D/\$lt_dump_F\" 392504007ebaSmrg exit 0 392604007ebaSmrg ;; 392704007ebaSmrg --lt-*) 392804007ebaSmrg \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 392904007ebaSmrg exit 1 393004007ebaSmrg ;; 393104007ebaSmrg esac 393204007ebaSmrg done 393304007ebaSmrg 393404007ebaSmrg # Print the debug banner immediately: 393504007ebaSmrg if test -n \"\$lt_option_debug\"; then 393604007ebaSmrg echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 393704007ebaSmrg fi 393804007ebaSmrg} 393904007ebaSmrg 394004007ebaSmrg# Used when --lt-debug. Prints its arguments to stdout 394104007ebaSmrg# (redirection is the responsibility of the caller) 394204007ebaSmrgfunc_lt_dump_args () 394304007ebaSmrg{ 394404007ebaSmrg lt_dump_args_N=1; 394504007ebaSmrg for lt_arg 394604007ebaSmrg do 394704007ebaSmrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" 394804007ebaSmrg lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` 394904007ebaSmrg done 395004007ebaSmrg} 395104007ebaSmrg 395204007ebaSmrg# Core function for launching the target application 395304007ebaSmrgfunc_exec_program_core () 395404007ebaSmrg{ 395504007ebaSmrg" 395604007ebaSmrg case $host in 395704007ebaSmrg # Backslashes separate directories on plain windows 395804007ebaSmrg *-*-mingw | *-*-os2* | *-cegcc*) 395904007ebaSmrg $ECHO "\ 396004007ebaSmrg if test -n \"\$lt_option_debug\"; then 396104007ebaSmrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 396204007ebaSmrg func_lt_dump_args \${1+\"\$@\"} 1>&2 396304007ebaSmrg fi 396404007ebaSmrg exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} 396504007ebaSmrg" 396604007ebaSmrg ;; 396704007ebaSmrg 396804007ebaSmrg *) 396904007ebaSmrg $ECHO "\ 397004007ebaSmrg if test -n \"\$lt_option_debug\"; then 397104007ebaSmrg \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 397204007ebaSmrg func_lt_dump_args \${1+\"\$@\"} 1>&2 397304007ebaSmrg fi 397404007ebaSmrg exec \"\$progdir/\$program\" \${1+\"\$@\"} 397504007ebaSmrg" 397604007ebaSmrg ;; 397704007ebaSmrg esac 397804007ebaSmrg $ECHO "\ 397904007ebaSmrg \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 398004007ebaSmrg exit 1 398104007ebaSmrg} 398204007ebaSmrg 398304007ebaSmrg# A function to encapsulate launching the target application 398404007ebaSmrg# Strips options in the --lt-* namespace from \$@ and 398504007ebaSmrg# launches target application with the remaining arguments. 398604007ebaSmrgfunc_exec_program () 398704007ebaSmrg{ 398804007ebaSmrg case \" \$* \" in 398904007ebaSmrg *\\ --lt-*) 399004007ebaSmrg for lt_wr_arg 399104007ebaSmrg do 399204007ebaSmrg case \$lt_wr_arg in 399304007ebaSmrg --lt-*) ;; 399404007ebaSmrg *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; 399504007ebaSmrg esac 399604007ebaSmrg shift 399704007ebaSmrg done ;; 399804007ebaSmrg esac 399904007ebaSmrg func_exec_program_core \${1+\"\$@\"} 400004007ebaSmrg} 400104007ebaSmrg 400204007ebaSmrg # Parse options 400304007ebaSmrg func_parse_lt_options \"\$0\" \${1+\"\$@\"} 400404007ebaSmrg 400504007ebaSmrg # Find the directory that this script lives in. 400604007ebaSmrg thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` 400704007ebaSmrg test \"x\$thisdir\" = \"x\$file\" && thisdir=. 400804007ebaSmrg 400904007ebaSmrg # Follow symbolic links until we get to the real thisdir. 401004007ebaSmrg file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` 401104007ebaSmrg while test -n \"\$file\"; do 401204007ebaSmrg destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` 401304007ebaSmrg 401404007ebaSmrg # If there was a directory component, then change thisdir. 401504007ebaSmrg if test \"x\$destdir\" != \"x\$file\"; then 401604007ebaSmrg case \"\$destdir\" in 401704007ebaSmrg [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; 401804007ebaSmrg *) thisdir=\"\$thisdir/\$destdir\" ;; 401904007ebaSmrg esac 402004007ebaSmrg fi 402104007ebaSmrg 402204007ebaSmrg file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` 402304007ebaSmrg file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` 402404007ebaSmrg done 402504007ebaSmrg 402604007ebaSmrg # Usually 'no', except on cygwin/mingw when embedded into 402704007ebaSmrg # the cwrapper. 402804007ebaSmrg WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 402904007ebaSmrg if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then 403004007ebaSmrg # special case for '.' 403104007ebaSmrg if test \"\$thisdir\" = \".\"; then 403204007ebaSmrg thisdir=\`pwd\` 403304007ebaSmrg fi 403404007ebaSmrg # remove .libs from thisdir 403504007ebaSmrg case \"\$thisdir\" in 403604007ebaSmrg *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; 403704007ebaSmrg $objdir ) thisdir=. ;; 403804007ebaSmrg esac 403904007ebaSmrg fi 404004007ebaSmrg 404104007ebaSmrg # Try to get the absolute directory name. 404204007ebaSmrg absdir=\`cd \"\$thisdir\" && pwd\` 404304007ebaSmrg test -n \"\$absdir\" && thisdir=\"\$absdir\" 404404007ebaSmrg" 404504007ebaSmrg 404604007ebaSmrg if test "$fast_install" = yes; then 404704007ebaSmrg $ECHO "\ 404804007ebaSmrg program=lt-'$outputname'$exeext 404904007ebaSmrg progdir=\"\$thisdir/$objdir\" 405004007ebaSmrg 405104007ebaSmrg if test ! -f \"\$progdir/\$program\" || 405204007ebaSmrg { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ 405304007ebaSmrg test \"X\$file\" != \"X\$progdir/\$program\"; }; then 405404007ebaSmrg 405504007ebaSmrg file=\"\$\$-\$program\" 405604007ebaSmrg 405704007ebaSmrg if test ! -d \"\$progdir\"; then 405804007ebaSmrg $MKDIR \"\$progdir\" 405904007ebaSmrg else 406004007ebaSmrg $RM \"\$progdir/\$file\" 406104007ebaSmrg fi" 406204007ebaSmrg 406304007ebaSmrg $ECHO "\ 406404007ebaSmrg 406504007ebaSmrg # relink executable if necessary 406604007ebaSmrg if test -n \"\$relink_command\"; then 406704007ebaSmrg if relink_command_output=\`eval \$relink_command 2>&1\`; then : 406804007ebaSmrg else 406904007ebaSmrg $ECHO \"\$relink_command_output\" >&2 407004007ebaSmrg $RM \"\$progdir/\$file\" 407104007ebaSmrg exit 1 407204007ebaSmrg fi 407304007ebaSmrg fi 407404007ebaSmrg 407504007ebaSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || 407604007ebaSmrg { $RM \"\$progdir/\$program\"; 407704007ebaSmrg $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } 407804007ebaSmrg $RM \"\$progdir/\$file\" 407904007ebaSmrg fi" 408004007ebaSmrg else 408104007ebaSmrg $ECHO "\ 408204007ebaSmrg program='$outputname' 408304007ebaSmrg progdir=\"\$thisdir/$objdir\" 408404007ebaSmrg" 408504007ebaSmrg fi 408604007ebaSmrg 408704007ebaSmrg $ECHO "\ 408804007ebaSmrg 408904007ebaSmrg if test -f \"\$progdir/\$program\"; then" 409004007ebaSmrg 409104007ebaSmrg # fixup the dll searchpath if we need to. 409204007ebaSmrg # 409304007ebaSmrg # Fix the DLL searchpath if we need to. Do this before prepending 409404007ebaSmrg # to shlibpath, because on Windows, both are PATH and uninstalled 409504007ebaSmrg # libraries must come first. 409604007ebaSmrg if test -n "$dllsearchpath"; then 409704007ebaSmrg $ECHO "\ 409804007ebaSmrg # Add the dll search path components to the executable PATH 409904007ebaSmrg PATH=$dllsearchpath:\$PATH 410004007ebaSmrg" 410104007ebaSmrg fi 410204007ebaSmrg 410304007ebaSmrg # Export our shlibpath_var if we have one. 410404007ebaSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 410504007ebaSmrg $ECHO "\ 410604007ebaSmrg # Add our own library path to $shlibpath_var 410704007ebaSmrg $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" 410804007ebaSmrg 410904007ebaSmrg # Some systems cannot cope with colon-terminated $shlibpath_var 411004007ebaSmrg # The second colon is a workaround for a bug in BeOS R4 sed 411104007ebaSmrg $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` 411204007ebaSmrg 411304007ebaSmrg export $shlibpath_var 411404007ebaSmrg" 411504007ebaSmrg fi 411604007ebaSmrg 411704007ebaSmrg $ECHO "\ 411804007ebaSmrg if test \"\$libtool_execute_magic\" != \"$magic\"; then 411904007ebaSmrg # Run the actual program with our arguments. 412004007ebaSmrg func_exec_program \${1+\"\$@\"} 412104007ebaSmrg fi 412204007ebaSmrg else 412304007ebaSmrg # The program doesn't exist. 412404007ebaSmrg \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 412504007ebaSmrg \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 412604007ebaSmrg \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 412704007ebaSmrg exit 1 412804007ebaSmrg fi 412904007ebaSmrgfi\ 413004007ebaSmrg" 413104007ebaSmrg} 413204007ebaSmrg 413304007ebaSmrg 413404007ebaSmrg# func_emit_cwrapperexe_src 413504007ebaSmrg# emit the source code for a wrapper executable on stdout 413604007ebaSmrg# Must ONLY be called from within func_mode_link because 413704007ebaSmrg# it depends on a number of variable set therein. 413804007ebaSmrgfunc_emit_cwrapperexe_src () 413904007ebaSmrg{ 414004007ebaSmrg cat <<EOF 414104007ebaSmrg 414204007ebaSmrg/* $cwrappersource - temporary wrapper executable for $objdir/$outputname 414304007ebaSmrg Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 414404007ebaSmrg 414504007ebaSmrg The $output program cannot be directly executed until all the libtool 414604007ebaSmrg libraries that it depends on are installed. 414704007ebaSmrg 414804007ebaSmrg This wrapper executable should never be moved out of the build directory. 414904007ebaSmrg If it is, it will not operate correctly. 415004007ebaSmrg*/ 415104007ebaSmrgEOF 415204007ebaSmrg cat <<"EOF" 415304007ebaSmrg#ifdef _MSC_VER 415404007ebaSmrg# define _CRT_SECURE_NO_DEPRECATE 1 415504007ebaSmrg#endif 415604007ebaSmrg#include <stdio.h> 415704007ebaSmrg#include <stdlib.h> 415804007ebaSmrg#ifdef _MSC_VER 415904007ebaSmrg# include <direct.h> 416004007ebaSmrg# include <process.h> 416104007ebaSmrg# include <io.h> 416204007ebaSmrg#else 416304007ebaSmrg# include <unistd.h> 416404007ebaSmrg# include <stdint.h> 416504007ebaSmrg# ifdef __CYGWIN__ 416604007ebaSmrg# include <io.h> 416704007ebaSmrg# endif 416804007ebaSmrg#endif 416904007ebaSmrg#include <malloc.h> 417004007ebaSmrg#include <stdarg.h> 417104007ebaSmrg#include <assert.h> 417204007ebaSmrg#include <string.h> 417304007ebaSmrg#include <ctype.h> 417404007ebaSmrg#include <errno.h> 417504007ebaSmrg#include <fcntl.h> 417604007ebaSmrg#include <sys/stat.h> 417704007ebaSmrg 417804007ebaSmrg/* declarations of non-ANSI functions */ 417904007ebaSmrg#if defined(__MINGW32__) 418004007ebaSmrg# ifdef __STRICT_ANSI__ 418104007ebaSmrgint _putenv (const char *); 418204007ebaSmrg# endif 418304007ebaSmrg#elif defined(__CYGWIN__) 418404007ebaSmrg# ifdef __STRICT_ANSI__ 418504007ebaSmrgchar *realpath (const char *, char *); 418604007ebaSmrgint putenv (char *); 418704007ebaSmrgint setenv (const char *, const char *, int); 418804007ebaSmrg# endif 418904007ebaSmrg/* #elif defined (other platforms) ... */ 419004007ebaSmrg#endif 419104007ebaSmrg 419204007ebaSmrg/* portability defines, excluding path handling macros */ 419304007ebaSmrg#if defined(_MSC_VER) 419404007ebaSmrg# define setmode _setmode 419504007ebaSmrg# define stat _stat 419604007ebaSmrg# define chmod _chmod 419704007ebaSmrg# define getcwd _getcwd 419804007ebaSmrg# define putenv _putenv 419904007ebaSmrg# define S_IXUSR _S_IEXEC 420004007ebaSmrg# ifndef _INTPTR_T_DEFINED 420104007ebaSmrg# define _INTPTR_T_DEFINED 420204007ebaSmrg# define intptr_t int 420304007ebaSmrg# endif 420404007ebaSmrg#elif defined(__MINGW32__) 420504007ebaSmrg# define setmode _setmode 420604007ebaSmrg# define stat _stat 420704007ebaSmrg# define chmod _chmod 420804007ebaSmrg# define getcwd _getcwd 420904007ebaSmrg# define putenv _putenv 421004007ebaSmrg#elif defined(__CYGWIN__) 421104007ebaSmrg# define HAVE_SETENV 421204007ebaSmrg# define FOPEN_WB "wb" 421304007ebaSmrg/* #elif defined (other platforms) ... */ 421404007ebaSmrg#endif 421504007ebaSmrg 421604007ebaSmrg#if defined(PATH_MAX) 421704007ebaSmrg# define LT_PATHMAX PATH_MAX 421804007ebaSmrg#elif defined(MAXPATHLEN) 421904007ebaSmrg# define LT_PATHMAX MAXPATHLEN 422004007ebaSmrg#else 422104007ebaSmrg# define LT_PATHMAX 1024 422204007ebaSmrg#endif 422304007ebaSmrg 422404007ebaSmrg#ifndef S_IXOTH 422504007ebaSmrg# define S_IXOTH 0 422604007ebaSmrg#endif 422704007ebaSmrg#ifndef S_IXGRP 422804007ebaSmrg# define S_IXGRP 0 422904007ebaSmrg#endif 423004007ebaSmrg 423104007ebaSmrg/* path handling portability macros */ 423204007ebaSmrg#ifndef DIR_SEPARATOR 423304007ebaSmrg# define DIR_SEPARATOR '/' 423404007ebaSmrg# define PATH_SEPARATOR ':' 423504007ebaSmrg#endif 423604007ebaSmrg 423704007ebaSmrg#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ 423804007ebaSmrg defined (__OS2__) 423904007ebaSmrg# define HAVE_DOS_BASED_FILE_SYSTEM 424004007ebaSmrg# define FOPEN_WB "wb" 424104007ebaSmrg# ifndef DIR_SEPARATOR_2 424204007ebaSmrg# define DIR_SEPARATOR_2 '\\' 424304007ebaSmrg# endif 424404007ebaSmrg# ifndef PATH_SEPARATOR_2 424504007ebaSmrg# define PATH_SEPARATOR_2 ';' 424604007ebaSmrg# endif 424704007ebaSmrg#endif 424804007ebaSmrg 424904007ebaSmrg#ifndef DIR_SEPARATOR_2 425004007ebaSmrg# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) 425104007ebaSmrg#else /* DIR_SEPARATOR_2 */ 425204007ebaSmrg# define IS_DIR_SEPARATOR(ch) \ 425304007ebaSmrg (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) 425404007ebaSmrg#endif /* DIR_SEPARATOR_2 */ 425504007ebaSmrg 425604007ebaSmrg#ifndef PATH_SEPARATOR_2 425704007ebaSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) 425804007ebaSmrg#else /* PATH_SEPARATOR_2 */ 425904007ebaSmrg# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) 426004007ebaSmrg#endif /* PATH_SEPARATOR_2 */ 426104007ebaSmrg 426204007ebaSmrg#ifndef FOPEN_WB 426304007ebaSmrg# define FOPEN_WB "w" 426404007ebaSmrg#endif 426504007ebaSmrg#ifndef _O_BINARY 426604007ebaSmrg# define _O_BINARY 0 426704007ebaSmrg#endif 426804007ebaSmrg 426904007ebaSmrg#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) 427004007ebaSmrg#define XFREE(stale) do { \ 427104007ebaSmrg if (stale) { free ((void *) stale); stale = 0; } \ 427204007ebaSmrg} while (0) 427304007ebaSmrg 427404007ebaSmrg#if defined(LT_DEBUGWRAPPER) 427504007ebaSmrgstatic int lt_debug = 1; 427604007ebaSmrg#else 427704007ebaSmrgstatic int lt_debug = 0; 427804007ebaSmrg#endif 427904007ebaSmrg 428004007ebaSmrgconst char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ 428104007ebaSmrg 428204007ebaSmrgvoid *xmalloc (size_t num); 428304007ebaSmrgchar *xstrdup (const char *string); 428404007ebaSmrgconst char *base_name (const char *name); 428504007ebaSmrgchar *find_executable (const char *wrapper); 428604007ebaSmrgchar *chase_symlinks (const char *pathspec); 428704007ebaSmrgint make_executable (const char *path); 428804007ebaSmrgint check_executable (const char *path); 428904007ebaSmrgchar *strendzap (char *str, const char *pat); 429004007ebaSmrgvoid lt_debugprintf (const char *file, int line, const char *fmt, ...); 429104007ebaSmrgvoid lt_fatal (const char *file, int line, const char *message, ...); 429204007ebaSmrgstatic const char *nonnull (const char *s); 429304007ebaSmrgstatic const char *nonempty (const char *s); 429404007ebaSmrgvoid lt_setenv (const char *name, const char *value); 429504007ebaSmrgchar *lt_extend_str (const char *orig_value, const char *add, int to_end); 429604007ebaSmrgvoid lt_update_exe_path (const char *name, const char *value); 429704007ebaSmrgvoid lt_update_lib_path (const char *name, const char *value); 429804007ebaSmrgchar **prepare_spawn (char **argv); 429904007ebaSmrgvoid lt_dump_script (FILE *f); 430004007ebaSmrgEOF 430104007ebaSmrg 430204007ebaSmrg cat <<EOF 430304007ebaSmrgvolatile const char * MAGIC_EXE = "$magic_exe"; 430404007ebaSmrgconst char * LIB_PATH_VARNAME = "$shlibpath_var"; 430504007ebaSmrgEOF 430604007ebaSmrg 430704007ebaSmrg if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then 430804007ebaSmrg func_to_host_path "$temp_rpath" 430904007ebaSmrg cat <<EOF 431004007ebaSmrgconst char * LIB_PATH_VALUE = "$func_to_host_path_result"; 431104007ebaSmrgEOF 431204007ebaSmrg else 431304007ebaSmrg cat <<"EOF" 431404007ebaSmrgconst char * LIB_PATH_VALUE = ""; 431504007ebaSmrgEOF 431604007ebaSmrg fi 431704007ebaSmrg 431804007ebaSmrg if test -n "$dllsearchpath"; then 431904007ebaSmrg func_to_host_path "$dllsearchpath:" 432004007ebaSmrg cat <<EOF 432104007ebaSmrgconst char * EXE_PATH_VARNAME = "PATH"; 432204007ebaSmrgconst char * EXE_PATH_VALUE = "$func_to_host_path_result"; 432304007ebaSmrgEOF 432404007ebaSmrg else 432504007ebaSmrg cat <<"EOF" 432604007ebaSmrgconst char * EXE_PATH_VARNAME = ""; 432704007ebaSmrgconst char * EXE_PATH_VALUE = ""; 432804007ebaSmrgEOF 432904007ebaSmrg fi 433004007ebaSmrg 433104007ebaSmrg if test "$fast_install" = yes; then 433204007ebaSmrg cat <<EOF 433304007ebaSmrgconst char * TARGET_PROGRAM_NAME = "lt-$outputname"; /* hopefully, no .exe */ 433404007ebaSmrgEOF 433504007ebaSmrg else 433604007ebaSmrg cat <<EOF 433704007ebaSmrgconst char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ 433804007ebaSmrgEOF 433904007ebaSmrg fi 434004007ebaSmrg 434104007ebaSmrg 434204007ebaSmrg cat <<"EOF" 434304007ebaSmrg 434404007ebaSmrg#define LTWRAPPER_OPTION_PREFIX "--lt-" 434504007ebaSmrg 434604007ebaSmrgstatic const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; 434704007ebaSmrgstatic const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-script"; 434804007ebaSmrgstatic const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; 434904007ebaSmrg 435004007ebaSmrgint 435104007ebaSmrgmain (int argc, char *argv[]) 435204007ebaSmrg{ 435304007ebaSmrg char **newargz; 435404007ebaSmrg int newargc; 435504007ebaSmrg char *tmp_pathspec; 435604007ebaSmrg char *actual_cwrapper_path; 435704007ebaSmrg char *actual_cwrapper_name; 435804007ebaSmrg char *target_name; 435904007ebaSmrg char *lt_argv_zero; 436004007ebaSmrg intptr_t rval = 127; 436104007ebaSmrg 436204007ebaSmrg int i; 436304007ebaSmrg 436404007ebaSmrg program_name = (char *) xstrdup (base_name (argv[0])); 436504007ebaSmrg newargz = XMALLOC (char *, argc + 1); 436604007ebaSmrg 436704007ebaSmrg /* very simple arg parsing; don't want to rely on getopt 436804007ebaSmrg * also, copy all non cwrapper options to newargz, except 436904007ebaSmrg * argz[0], which is handled differently 437004007ebaSmrg */ 437104007ebaSmrg newargc=0; 437204007ebaSmrg for (i = 1; i < argc; i++) 437304007ebaSmrg { 437404007ebaSmrg if (strcmp (argv[i], dumpscript_opt) == 0) 437504007ebaSmrg { 437604007ebaSmrgEOF 437704007ebaSmrg case "$host" in 437804007ebaSmrg *mingw* | *cygwin* ) 437904007ebaSmrg # make stdout use "unix" line endings 438004007ebaSmrg echo " setmode(1,_O_BINARY);" 438104007ebaSmrg ;; 438204007ebaSmrg esac 438304007ebaSmrg 438404007ebaSmrg cat <<"EOF" 438504007ebaSmrg lt_dump_script (stdout); 438604007ebaSmrg return 0; 438704007ebaSmrg } 438804007ebaSmrg if (strcmp (argv[i], debug_opt) == 0) 438904007ebaSmrg { 439004007ebaSmrg lt_debug = 1; 439104007ebaSmrg continue; 439204007ebaSmrg } 439304007ebaSmrg if (strcmp (argv[i], ltwrapper_option_prefix) == 0) 439404007ebaSmrg { 439504007ebaSmrg /* however, if there is an option in the LTWRAPPER_OPTION_PREFIX 439604007ebaSmrg namespace, but it is not one of the ones we know about and 439704007ebaSmrg have already dealt with, above (inluding dump-script), then 439804007ebaSmrg report an error. Otherwise, targets might begin to believe 439904007ebaSmrg they are allowed to use options in the LTWRAPPER_OPTION_PREFIX 440004007ebaSmrg namespace. The first time any user complains about this, we'll 440104007ebaSmrg need to make LTWRAPPER_OPTION_PREFIX a configure-time option 440204007ebaSmrg or a configure.ac-settable value. 440304007ebaSmrg */ 440404007ebaSmrg lt_fatal (__FILE__, __LINE__, 440504007ebaSmrg "unrecognized %s option: '%s'", 440604007ebaSmrg ltwrapper_option_prefix, argv[i]); 440704007ebaSmrg } 440804007ebaSmrg /* otherwise ... */ 440904007ebaSmrg newargz[++newargc] = xstrdup (argv[i]); 441004007ebaSmrg } 441104007ebaSmrg newargz[++newargc] = NULL; 441204007ebaSmrg 441304007ebaSmrgEOF 441404007ebaSmrg cat <<EOF 441504007ebaSmrg /* The GNU banner must be the first non-error debug message */ 441604007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\n"); 441704007ebaSmrgEOF 441804007ebaSmrg cat <<"EOF" 441904007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); 442004007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_name); 442104007ebaSmrg 442204007ebaSmrg tmp_pathspec = find_executable (argv[0]); 442304007ebaSmrg if (tmp_pathspec == NULL) 442404007ebaSmrg lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); 442504007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 442604007ebaSmrg "(main) found exe (before symlink chase) at: %s\n", 442704007ebaSmrg tmp_pathspec); 442804007ebaSmrg 442904007ebaSmrg actual_cwrapper_path = chase_symlinks (tmp_pathspec); 443004007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 443104007ebaSmrg "(main) found exe (after symlink chase) at: %s\n", 443204007ebaSmrg actual_cwrapper_path); 443304007ebaSmrg XFREE (tmp_pathspec); 443404007ebaSmrg 443504007ebaSmrg actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); 443604007ebaSmrg strendzap (actual_cwrapper_path, actual_cwrapper_name); 443704007ebaSmrg 443804007ebaSmrg /* wrapper name transforms */ 443904007ebaSmrg strendzap (actual_cwrapper_name, ".exe"); 444004007ebaSmrg tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); 444104007ebaSmrg XFREE (actual_cwrapper_name); 444204007ebaSmrg actual_cwrapper_name = tmp_pathspec; 444304007ebaSmrg tmp_pathspec = 0; 444404007ebaSmrg 444504007ebaSmrg /* target_name transforms -- use actual target program name; might have lt- prefix */ 444604007ebaSmrg target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); 444704007ebaSmrg strendzap (target_name, ".exe"); 444804007ebaSmrg tmp_pathspec = lt_extend_str (target_name, ".exe", 1); 444904007ebaSmrg XFREE (target_name); 445004007ebaSmrg target_name = tmp_pathspec; 445104007ebaSmrg tmp_pathspec = 0; 445204007ebaSmrg 445304007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 445404007ebaSmrg "(main) libtool target name: %s\n", 445504007ebaSmrg target_name); 445604007ebaSmrgEOF 445704007ebaSmrg 445804007ebaSmrg cat <<EOF 445904007ebaSmrg newargz[0] = 446004007ebaSmrg XMALLOC (char, (strlen (actual_cwrapper_path) + 446104007ebaSmrg strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); 446204007ebaSmrg strcpy (newargz[0], actual_cwrapper_path); 446304007ebaSmrg strcat (newargz[0], "$objdir"); 446404007ebaSmrg strcat (newargz[0], "/"); 446504007ebaSmrgEOF 446604007ebaSmrg 446704007ebaSmrg cat <<"EOF" 446804007ebaSmrg /* stop here, and copy so we don't have to do this twice */ 446904007ebaSmrg tmp_pathspec = xstrdup (newargz[0]); 447004007ebaSmrg 447104007ebaSmrg /* do NOT want the lt- prefix here, so use actual_cwrapper_name */ 447204007ebaSmrg strcat (newargz[0], actual_cwrapper_name); 447304007ebaSmrg 447404007ebaSmrg /* DO want the lt- prefix here if it exists, so use target_name */ 447504007ebaSmrg lt_argv_zero = lt_extend_str (tmp_pathspec, target_name, 1); 447604007ebaSmrg XFREE (tmp_pathspec); 447704007ebaSmrg tmp_pathspec = NULL; 447804007ebaSmrgEOF 447904007ebaSmrg 448004007ebaSmrg case $host_os in 448104007ebaSmrg mingw*) 448204007ebaSmrg cat <<"EOF" 448304007ebaSmrg { 448404007ebaSmrg char* p; 448504007ebaSmrg while ((p = strchr (newargz[0], '\\')) != NULL) 448604007ebaSmrg { 448704007ebaSmrg *p = '/'; 448804007ebaSmrg } 448904007ebaSmrg while ((p = strchr (lt_argv_zero, '\\')) != NULL) 449004007ebaSmrg { 449104007ebaSmrg *p = '/'; 449204007ebaSmrg } 449304007ebaSmrg } 449404007ebaSmrgEOF 449504007ebaSmrg ;; 449604007ebaSmrg esac 449704007ebaSmrg 449804007ebaSmrg cat <<"EOF" 449904007ebaSmrg XFREE (target_name); 450004007ebaSmrg XFREE (actual_cwrapper_path); 450104007ebaSmrg XFREE (actual_cwrapper_name); 450204007ebaSmrg 450304007ebaSmrg lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ 450404007ebaSmrg lt_setenv ("DUALCASE", "1"); /* for MSK sh */ 450504007ebaSmrg /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must 450604007ebaSmrg be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpath) 450704007ebaSmrg because on Windows, both *_VARNAMEs are PATH but uninstalled 450804007ebaSmrg libraries must come first. */ 450904007ebaSmrg lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); 451004007ebaSmrg lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); 451104007ebaSmrg 451204007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", 451304007ebaSmrg nonnull (lt_argv_zero)); 451404007ebaSmrg for (i = 0; i < newargc; i++) 451504007ebaSmrg { 451604007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", 451704007ebaSmrg i, nonnull (newargz[i])); 451804007ebaSmrg } 451904007ebaSmrg 452004007ebaSmrgEOF 452104007ebaSmrg 452204007ebaSmrg case $host_os in 452304007ebaSmrg mingw*) 452404007ebaSmrg cat <<"EOF" 452504007ebaSmrg /* execv doesn't actually work on mingw as expected on unix */ 452604007ebaSmrg newargz = prepare_spawn (newargz); 452704007ebaSmrg rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); 452804007ebaSmrg if (rval == -1) 452904007ebaSmrg { 453004007ebaSmrg /* failed to start process */ 453104007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 453204007ebaSmrg "(main) failed to launch target \"%s\": %s\n", 453304007ebaSmrg lt_argv_zero, nonnull (strerror (errno))); 453404007ebaSmrg return 127; 453504007ebaSmrg } 453604007ebaSmrg return rval; 453704007ebaSmrgEOF 453804007ebaSmrg ;; 453904007ebaSmrg *) 454004007ebaSmrg cat <<"EOF" 454104007ebaSmrg execv (lt_argv_zero, newargz); 454204007ebaSmrg return rval; /* =127, but avoids unused variable warning */ 454304007ebaSmrgEOF 454404007ebaSmrg ;; 454504007ebaSmrg esac 454604007ebaSmrg 454704007ebaSmrg cat <<"EOF" 454804007ebaSmrg} 454904007ebaSmrg 455004007ebaSmrgvoid * 455104007ebaSmrgxmalloc (size_t num) 455204007ebaSmrg{ 455304007ebaSmrg void *p = (void *) malloc (num); 455404007ebaSmrg if (!p) 455504007ebaSmrg lt_fatal (__FILE__, __LINE__, "memory exhausted"); 455604007ebaSmrg 455704007ebaSmrg return p; 455804007ebaSmrg} 455904007ebaSmrg 456004007ebaSmrgchar * 456104007ebaSmrgxstrdup (const char *string) 456204007ebaSmrg{ 456304007ebaSmrg return string ? strcpy ((char *) xmalloc (strlen (string) + 1), 456404007ebaSmrg string) : NULL; 456504007ebaSmrg} 456604007ebaSmrg 456704007ebaSmrgconst char * 456804007ebaSmrgbase_name (const char *name) 456904007ebaSmrg{ 457004007ebaSmrg const char *base; 457104007ebaSmrg 457204007ebaSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 457304007ebaSmrg /* Skip over the disk name in MSDOS pathnames. */ 457404007ebaSmrg if (isalpha ((unsigned char) name[0]) && name[1] == ':') 457504007ebaSmrg name += 2; 457604007ebaSmrg#endif 457704007ebaSmrg 457804007ebaSmrg for (base = name; *name; name++) 457904007ebaSmrg if (IS_DIR_SEPARATOR (*name)) 458004007ebaSmrg base = name + 1; 458104007ebaSmrg return base; 458204007ebaSmrg} 458304007ebaSmrg 458404007ebaSmrgint 458504007ebaSmrgcheck_executable (const char *path) 458604007ebaSmrg{ 458704007ebaSmrg struct stat st; 458804007ebaSmrg 458904007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", 459004007ebaSmrg nonempty (path)); 459104007ebaSmrg if ((!path) || (!*path)) 459204007ebaSmrg return 0; 459304007ebaSmrg 459404007ebaSmrg if ((stat (path, &st) >= 0) 459504007ebaSmrg && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) 459604007ebaSmrg return 1; 459704007ebaSmrg else 459804007ebaSmrg return 0; 459904007ebaSmrg} 460004007ebaSmrg 460104007ebaSmrgint 460204007ebaSmrgmake_executable (const char *path) 460304007ebaSmrg{ 460404007ebaSmrg int rval = 0; 460504007ebaSmrg struct stat st; 460604007ebaSmrg 460704007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", 460804007ebaSmrg nonempty (path)); 460904007ebaSmrg if ((!path) || (!*path)) 461004007ebaSmrg return 0; 461104007ebaSmrg 461204007ebaSmrg if (stat (path, &st) >= 0) 461304007ebaSmrg { 461404007ebaSmrg rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); 461504007ebaSmrg } 461604007ebaSmrg return rval; 461704007ebaSmrg} 461804007ebaSmrg 461904007ebaSmrg/* Searches for the full path of the wrapper. Returns 462004007ebaSmrg newly allocated full path name if found, NULL otherwise 462104007ebaSmrg Does not chase symlinks, even on platforms that support them. 462204007ebaSmrg*/ 462304007ebaSmrgchar * 462404007ebaSmrgfind_executable (const char *wrapper) 462504007ebaSmrg{ 462604007ebaSmrg int has_slash = 0; 462704007ebaSmrg const char *p; 462804007ebaSmrg const char *p_next; 462904007ebaSmrg /* static buffer for getcwd */ 463004007ebaSmrg char tmp[LT_PATHMAX + 1]; 463104007ebaSmrg int tmp_len; 463204007ebaSmrg char *concat_name; 463304007ebaSmrg 463404007ebaSmrg lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", 463504007ebaSmrg nonempty (wrapper)); 463604007ebaSmrg 463704007ebaSmrg if ((wrapper == NULL) || (*wrapper == '\0')) 463804007ebaSmrg return NULL; 463904007ebaSmrg 464004007ebaSmrg /* Absolute path? */ 464104007ebaSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 464204007ebaSmrg if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') 464304007ebaSmrg { 464404007ebaSmrg concat_name = xstrdup (wrapper); 464504007ebaSmrg if (check_executable (concat_name)) 464604007ebaSmrg return concat_name; 464704007ebaSmrg XFREE (concat_name); 464804007ebaSmrg } 464904007ebaSmrg else 465004007ebaSmrg { 465104007ebaSmrg#endif 465204007ebaSmrg if (IS_DIR_SEPARATOR (wrapper[0])) 465304007ebaSmrg { 465404007ebaSmrg concat_name = xstrdup (wrapper); 465504007ebaSmrg if (check_executable (concat_name)) 465604007ebaSmrg return concat_name; 465704007ebaSmrg XFREE (concat_name); 465804007ebaSmrg } 465904007ebaSmrg#if defined (HAVE_DOS_BASED_FILE_SYSTEM) 466004007ebaSmrg } 466104007ebaSmrg#endif 466204007ebaSmrg 466304007ebaSmrg for (p = wrapper; *p; p++) 466404007ebaSmrg if (*p == '/') 466504007ebaSmrg { 466604007ebaSmrg has_slash = 1; 466704007ebaSmrg break; 466804007ebaSmrg } 466904007ebaSmrg if (!has_slash) 467004007ebaSmrg { 467104007ebaSmrg /* no slashes; search PATH */ 467204007ebaSmrg const char *path = getenv ("PATH"); 467304007ebaSmrg if (path != NULL) 467404007ebaSmrg { 467504007ebaSmrg for (p = path; *p; p = p_next) 467604007ebaSmrg { 467704007ebaSmrg const char *q; 467804007ebaSmrg size_t p_len; 467904007ebaSmrg for (q = p; *q; q++) 468004007ebaSmrg if (IS_PATH_SEPARATOR (*q)) 468104007ebaSmrg break; 468204007ebaSmrg p_len = q - p; 468304007ebaSmrg p_next = (*q == '\0' ? q : q + 1); 468404007ebaSmrg if (p_len == 0) 468504007ebaSmrg { 468604007ebaSmrg /* empty path: current directory */ 468704007ebaSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 468804007ebaSmrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 468904007ebaSmrg nonnull (strerror (errno))); 469004007ebaSmrg tmp_len = strlen (tmp); 469104007ebaSmrg concat_name = 469204007ebaSmrg XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 469304007ebaSmrg memcpy (concat_name, tmp, tmp_len); 469404007ebaSmrg concat_name[tmp_len] = '/'; 469504007ebaSmrg strcpy (concat_name + tmp_len + 1, wrapper); 469604007ebaSmrg } 469704007ebaSmrg else 469804007ebaSmrg { 469904007ebaSmrg concat_name = 470004007ebaSmrg XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); 470104007ebaSmrg memcpy (concat_name, p, p_len); 470204007ebaSmrg concat_name[p_len] = '/'; 470304007ebaSmrg strcpy (concat_name + p_len + 1, wrapper); 470404007ebaSmrg } 470504007ebaSmrg if (check_executable (concat_name)) 470604007ebaSmrg return concat_name; 470704007ebaSmrg XFREE (concat_name); 470804007ebaSmrg } 470904007ebaSmrg } 471004007ebaSmrg /* not found in PATH; assume curdir */ 471104007ebaSmrg } 471204007ebaSmrg /* Relative path | not found in path: prepend cwd */ 471304007ebaSmrg if (getcwd (tmp, LT_PATHMAX) == NULL) 471404007ebaSmrg lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", 471504007ebaSmrg nonnull (strerror (errno))); 471604007ebaSmrg tmp_len = strlen (tmp); 471704007ebaSmrg concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); 471804007ebaSmrg memcpy (concat_name, tmp, tmp_len); 471904007ebaSmrg concat_name[tmp_len] = '/'; 472004007ebaSmrg strcpy (concat_name + tmp_len + 1, wrapper); 472104007ebaSmrg 472204007ebaSmrg if (check_executable (concat_name)) 472304007ebaSmrg return concat_name; 472404007ebaSmrg XFREE (concat_name); 472504007ebaSmrg return NULL; 472604007ebaSmrg} 472704007ebaSmrg 472804007ebaSmrgchar * 472904007ebaSmrgchase_symlinks (const char *pathspec) 473004007ebaSmrg{ 473104007ebaSmrg#ifndef S_ISLNK 473204007ebaSmrg return xstrdup (pathspec); 473304007ebaSmrg#else 473404007ebaSmrg char buf[LT_PATHMAX]; 473504007ebaSmrg struct stat s; 473604007ebaSmrg char *tmp_pathspec = xstrdup (pathspec); 473704007ebaSmrg char *p; 473804007ebaSmrg int has_symlinks = 0; 473904007ebaSmrg while (strlen (tmp_pathspec) && !has_symlinks) 474004007ebaSmrg { 474104007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 474204007ebaSmrg "checking path component for symlinks: %s\n", 474304007ebaSmrg tmp_pathspec); 474404007ebaSmrg if (lstat (tmp_pathspec, &s) == 0) 474504007ebaSmrg { 474604007ebaSmrg if (S_ISLNK (s.st_mode) != 0) 474704007ebaSmrg { 474804007ebaSmrg has_symlinks = 1; 474904007ebaSmrg break; 475004007ebaSmrg } 475104007ebaSmrg 475204007ebaSmrg /* search backwards for last DIR_SEPARATOR */ 475304007ebaSmrg p = tmp_pathspec + strlen (tmp_pathspec) - 1; 475404007ebaSmrg while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475504007ebaSmrg p--; 475604007ebaSmrg if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) 475704007ebaSmrg { 475804007ebaSmrg /* no more DIR_SEPARATORS left */ 475904007ebaSmrg break; 476004007ebaSmrg } 476104007ebaSmrg *p = '\0'; 476204007ebaSmrg } 476304007ebaSmrg else 476404007ebaSmrg { 476504007ebaSmrg lt_fatal (__FILE__, __LINE__, 476604007ebaSmrg "error accessing file \"%s\": %s", 476704007ebaSmrg tmp_pathspec, nonnull (strerror (errno))); 476804007ebaSmrg } 476904007ebaSmrg } 477004007ebaSmrg XFREE (tmp_pathspec); 477104007ebaSmrg 477204007ebaSmrg if (!has_symlinks) 477304007ebaSmrg { 477404007ebaSmrg return xstrdup (pathspec); 477504007ebaSmrg } 477604007ebaSmrg 477704007ebaSmrg tmp_pathspec = realpath (pathspec, buf); 477804007ebaSmrg if (tmp_pathspec == 0) 477904007ebaSmrg { 478004007ebaSmrg lt_fatal (__FILE__, __LINE__, 478104007ebaSmrg "could not follow symlinks for %s", pathspec); 478204007ebaSmrg } 478304007ebaSmrg return xstrdup (tmp_pathspec); 478404007ebaSmrg#endif 478504007ebaSmrg} 478604007ebaSmrg 478704007ebaSmrgchar * 478804007ebaSmrgstrendzap (char *str, const char *pat) 478904007ebaSmrg{ 479004007ebaSmrg size_t len, patlen; 479104007ebaSmrg 479204007ebaSmrg assert (str != NULL); 479304007ebaSmrg assert (pat != NULL); 479404007ebaSmrg 479504007ebaSmrg len = strlen (str); 479604007ebaSmrg patlen = strlen (pat); 479704007ebaSmrg 479804007ebaSmrg if (patlen <= len) 479904007ebaSmrg { 480004007ebaSmrg str += len - patlen; 480104007ebaSmrg if (strcmp (str, pat) == 0) 480204007ebaSmrg *str = '\0'; 480304007ebaSmrg } 480404007ebaSmrg return str; 480504007ebaSmrg} 480604007ebaSmrg 480704007ebaSmrgvoid 480804007ebaSmrglt_debugprintf (const char *file, int line, const char *fmt, ...) 480904007ebaSmrg{ 481004007ebaSmrg va_list args; 481104007ebaSmrg if (lt_debug) 481204007ebaSmrg { 481304007ebaSmrg (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); 481404007ebaSmrg va_start (args, fmt); 481504007ebaSmrg (void) vfprintf (stderr, fmt, args); 481604007ebaSmrg va_end (args); 481704007ebaSmrg } 481804007ebaSmrg} 481904007ebaSmrg 482004007ebaSmrgstatic void 482104007ebaSmrglt_error_core (int exit_status, const char *file, 482204007ebaSmrg int line, const char *mode, 482304007ebaSmrg const char *message, va_list ap) 482404007ebaSmrg{ 482504007ebaSmrg fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); 482604007ebaSmrg vfprintf (stderr, message, ap); 482704007ebaSmrg fprintf (stderr, ".\n"); 482804007ebaSmrg 482904007ebaSmrg if (exit_status >= 0) 483004007ebaSmrg exit (exit_status); 483104007ebaSmrg} 483204007ebaSmrg 483304007ebaSmrgvoid 483404007ebaSmrglt_fatal (const char *file, int line, const char *message, ...) 483504007ebaSmrg{ 483604007ebaSmrg va_list ap; 483704007ebaSmrg va_start (ap, message); 483804007ebaSmrg lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); 483904007ebaSmrg va_end (ap); 484004007ebaSmrg} 484104007ebaSmrg 484204007ebaSmrgstatic const char * 484304007ebaSmrgnonnull (const char *s) 484404007ebaSmrg{ 484504007ebaSmrg return s ? s : "(null)"; 484604007ebaSmrg} 484704007ebaSmrg 484804007ebaSmrgstatic const char * 484904007ebaSmrgnonempty (const char *s) 485004007ebaSmrg{ 485104007ebaSmrg return (s && !*s) ? "(empty)" : nonnull (s); 485204007ebaSmrg} 485304007ebaSmrg 485404007ebaSmrgvoid 485504007ebaSmrglt_setenv (const char *name, const char *value) 485604007ebaSmrg{ 485704007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 485804007ebaSmrg "(lt_setenv) setting '%s' to '%s'\n", 485904007ebaSmrg nonnull (name), nonnull (value)); 486004007ebaSmrg { 486104007ebaSmrg#ifdef HAVE_SETENV 486204007ebaSmrg /* always make a copy, for consistency with !HAVE_SETENV */ 486304007ebaSmrg char *str = xstrdup (value); 486404007ebaSmrg setenv (name, str, 1); 486504007ebaSmrg#else 486604007ebaSmrg int len = strlen (name) + 1 + strlen (value) + 1; 486704007ebaSmrg char *str = XMALLOC (char, len); 486804007ebaSmrg sprintf (str, "%s=%s", name, value); 486904007ebaSmrg if (putenv (str) != EXIT_SUCCESS) 487004007ebaSmrg { 487104007ebaSmrg XFREE (str); 487204007ebaSmrg } 487304007ebaSmrg#endif 487404007ebaSmrg } 487504007ebaSmrg} 487604007ebaSmrg 487704007ebaSmrgchar * 487804007ebaSmrglt_extend_str (const char *orig_value, const char *add, int to_end) 487904007ebaSmrg{ 488004007ebaSmrg char *new_value; 488104007ebaSmrg if (orig_value && *orig_value) 488204007ebaSmrg { 488304007ebaSmrg int orig_value_len = strlen (orig_value); 488404007ebaSmrg int add_len = strlen (add); 488504007ebaSmrg new_value = XMALLOC (char, add_len + orig_value_len + 1); 488604007ebaSmrg if (to_end) 488704007ebaSmrg { 488804007ebaSmrg strcpy (new_value, orig_value); 488904007ebaSmrg strcpy (new_value + orig_value_len, add); 489004007ebaSmrg } 489104007ebaSmrg else 489204007ebaSmrg { 489304007ebaSmrg strcpy (new_value, add); 489404007ebaSmrg strcpy (new_value + add_len, orig_value); 489504007ebaSmrg } 489604007ebaSmrg } 489704007ebaSmrg else 489804007ebaSmrg { 489904007ebaSmrg new_value = xstrdup (add); 490004007ebaSmrg } 490104007ebaSmrg return new_value; 490204007ebaSmrg} 490304007ebaSmrg 490404007ebaSmrgvoid 490504007ebaSmrglt_update_exe_path (const char *name, const char *value) 490604007ebaSmrg{ 490704007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 490804007ebaSmrg "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", 490904007ebaSmrg nonnull (name), nonnull (value)); 491004007ebaSmrg 491104007ebaSmrg if (name && *name && value && *value) 491204007ebaSmrg { 491304007ebaSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 491404007ebaSmrg /* some systems can't cope with a ':'-terminated path #' */ 491504007ebaSmrg int len = strlen (new_value); 491604007ebaSmrg while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) 491704007ebaSmrg { 491804007ebaSmrg new_value[len-1] = '\0'; 491904007ebaSmrg } 492004007ebaSmrg lt_setenv (name, new_value); 492104007ebaSmrg XFREE (new_value); 492204007ebaSmrg } 492304007ebaSmrg} 492404007ebaSmrg 492504007ebaSmrgvoid 492604007ebaSmrglt_update_lib_path (const char *name, const char *value) 492704007ebaSmrg{ 492804007ebaSmrg lt_debugprintf (__FILE__, __LINE__, 492904007ebaSmrg "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", 493004007ebaSmrg nonnull (name), nonnull (value)); 493104007ebaSmrg 493204007ebaSmrg if (name && *name && value && *value) 493304007ebaSmrg { 493404007ebaSmrg char *new_value = lt_extend_str (getenv (name), value, 0); 493504007ebaSmrg lt_setenv (name, new_value); 493604007ebaSmrg XFREE (new_value); 493704007ebaSmrg } 493804007ebaSmrg} 493904007ebaSmrg 494004007ebaSmrgEOF 494104007ebaSmrg case $host_os in 494204007ebaSmrg mingw*) 494304007ebaSmrg cat <<"EOF" 494404007ebaSmrg 494504007ebaSmrg/* Prepares an argument vector before calling spawn(). 494604007ebaSmrg Note that spawn() does not by itself call the command interpreter 494704007ebaSmrg (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : 494804007ebaSmrg ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); 494904007ebaSmrg GetVersionEx(&v); 495004007ebaSmrg v.dwPlatformId == VER_PLATFORM_WIN32_NT; 495104007ebaSmrg }) ? "cmd.exe" : "command.com"). 495204007ebaSmrg Instead it simply concatenates the arguments, separated by ' ', and calls 495304007ebaSmrg CreateProcess(). We must quote the arguments since Win32 CreateProcess() 495404007ebaSmrg interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a 495504007ebaSmrg special way: 495604007ebaSmrg - Space and tab are interpreted as delimiters. They are not treated as 495704007ebaSmrg delimiters if they are surrounded by double quotes: "...". 495804007ebaSmrg - Unescaped double quotes are removed from the input. Their only effect is 495904007ebaSmrg that within double quotes, space and tab are treated like normal 496004007ebaSmrg characters. 496104007ebaSmrg - Backslashes not followed by double quotes are not special. 496204007ebaSmrg - But 2*n+1 backslashes followed by a double quote become 496304007ebaSmrg n backslashes followed by a double quote (n >= 0): 496404007ebaSmrg \" -> " 496504007ebaSmrg \\\" -> \" 496604007ebaSmrg \\\\\" -> \\" 496704007ebaSmrg */ 496804007ebaSmrg#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" 496904007ebaSmrg#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" 497004007ebaSmrgchar ** 497104007ebaSmrgprepare_spawn (char **argv) 497204007ebaSmrg{ 497304007ebaSmrg size_t argc; 497404007ebaSmrg char **new_argv; 497504007ebaSmrg size_t i; 497604007ebaSmrg 497704007ebaSmrg /* Count number of arguments. */ 497804007ebaSmrg for (argc = 0; argv[argc] != NULL; argc++) 497904007ebaSmrg ; 498004007ebaSmrg 498104007ebaSmrg /* Allocate new argument vector. */ 498204007ebaSmrg new_argv = XMALLOC (char *, argc + 1); 498304007ebaSmrg 498404007ebaSmrg /* Put quoted arguments into the new argument vector. */ 498504007ebaSmrg for (i = 0; i < argc; i++) 498604007ebaSmrg { 498704007ebaSmrg const char *string = argv[i]; 498804007ebaSmrg 498904007ebaSmrg if (string[0] == '\0') 499004007ebaSmrg new_argv[i] = xstrdup ("\"\""); 499104007ebaSmrg else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) 499204007ebaSmrg { 499304007ebaSmrg int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); 499404007ebaSmrg size_t length; 499504007ebaSmrg unsigned int backslashes; 499604007ebaSmrg const char *s; 499704007ebaSmrg char *quoted_string; 499804007ebaSmrg char *p; 499904007ebaSmrg 500004007ebaSmrg length = 0; 500104007ebaSmrg backslashes = 0; 500204007ebaSmrg if (quote_around) 500304007ebaSmrg length++; 500404007ebaSmrg for (s = string; *s != '\0'; s++) 500504007ebaSmrg { 500604007ebaSmrg char c = *s; 500704007ebaSmrg if (c == '"') 500804007ebaSmrg length += backslashes + 1; 500904007ebaSmrg length++; 501004007ebaSmrg if (c == '\\') 501104007ebaSmrg backslashes++; 501204007ebaSmrg else 501304007ebaSmrg backslashes = 0; 501404007ebaSmrg } 501504007ebaSmrg if (quote_around) 501604007ebaSmrg length += backslashes + 1; 501704007ebaSmrg 501804007ebaSmrg quoted_string = XMALLOC (char, length + 1); 501904007ebaSmrg 502004007ebaSmrg p = quoted_string; 502104007ebaSmrg backslashes = 0; 502204007ebaSmrg if (quote_around) 502304007ebaSmrg *p++ = '"'; 502404007ebaSmrg for (s = string; *s != '\0'; s++) 502504007ebaSmrg { 502604007ebaSmrg char c = *s; 502704007ebaSmrg if (c == '"') 502804007ebaSmrg { 502904007ebaSmrg unsigned int j; 503004007ebaSmrg for (j = backslashes + 1; j > 0; j--) 503104007ebaSmrg *p++ = '\\'; 503204007ebaSmrg } 503304007ebaSmrg *p++ = c; 503404007ebaSmrg if (c == '\\') 503504007ebaSmrg backslashes++; 503604007ebaSmrg else 503704007ebaSmrg backslashes = 0; 503804007ebaSmrg } 503904007ebaSmrg if (quote_around) 504004007ebaSmrg { 504104007ebaSmrg unsigned int j; 504204007ebaSmrg for (j = backslashes; j > 0; j--) 504304007ebaSmrg *p++ = '\\'; 504404007ebaSmrg *p++ = '"'; 504504007ebaSmrg } 504604007ebaSmrg *p = '\0'; 504704007ebaSmrg 504804007ebaSmrg new_argv[i] = quoted_string; 504904007ebaSmrg } 505004007ebaSmrg else 505104007ebaSmrg new_argv[i] = (char *) string; 505204007ebaSmrg } 505304007ebaSmrg new_argv[argc] = NULL; 505404007ebaSmrg 505504007ebaSmrg return new_argv; 505604007ebaSmrg} 505704007ebaSmrgEOF 505804007ebaSmrg ;; 505904007ebaSmrg esac 506004007ebaSmrg 506104007ebaSmrg cat <<"EOF" 506204007ebaSmrgvoid lt_dump_script (FILE* f) 506304007ebaSmrg{ 506404007ebaSmrgEOF 506504007ebaSmrg func_emit_wrapper yes | 506604007ebaSmrg $SED -n -e ' 506704007ebaSmrgs/^\(.\{79\}\)\(..*\)/\1\ 506804007ebaSmrg\2/ 506904007ebaSmrgh 507004007ebaSmrgs/\([\\"]\)/\\\1/g 507104007ebaSmrgs/$/\\n/ 507204007ebaSmrgs/\([^\n]*\).*/ fputs ("\1", f);/p 507304007ebaSmrgg 507404007ebaSmrgD' 507504007ebaSmrg cat <<"EOF" 507604007ebaSmrg} 507704007ebaSmrgEOF 507804007ebaSmrg} 507904007ebaSmrg# end: func_emit_cwrapperexe_src 508004007ebaSmrg 508104007ebaSmrg# func_win32_import_lib_p ARG 508204007ebaSmrg# True if ARG is an import lib, as indicated by $file_magic_cmd 508304007ebaSmrgfunc_win32_import_lib_p () 508404007ebaSmrg{ 508504007ebaSmrg $opt_debug 508604007ebaSmrg case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in 508704007ebaSmrg *import*) : ;; 508804007ebaSmrg *) false ;; 508904007ebaSmrg esac 509004007ebaSmrg} 509104007ebaSmrg 509204007ebaSmrg# func_mode_link arg... 509304007ebaSmrgfunc_mode_link () 509404007ebaSmrg{ 509504007ebaSmrg $opt_debug 509604007ebaSmrg case $host in 509704007ebaSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 509804007ebaSmrg # It is impossible to link a dll without this setting, and 509904007ebaSmrg # we shouldn't force the makefile maintainer to figure out 510004007ebaSmrg # which system we are compiling for in order to pass an extra 510104007ebaSmrg # flag for every libtool invocation. 510204007ebaSmrg # allow_undefined=no 510304007ebaSmrg 510404007ebaSmrg # FIXME: Unfortunately, there are problems with the above when trying 510504007ebaSmrg # to make a dll which has undefined symbols, in which case not 510604007ebaSmrg # even a static library is built. For now, we need to specify 510704007ebaSmrg # -no-undefined on the libtool link line when we can be certain 510804007ebaSmrg # that all symbols are satisfied, otherwise we get a static library. 510904007ebaSmrg allow_undefined=yes 511004007ebaSmrg ;; 511104007ebaSmrg *) 511204007ebaSmrg allow_undefined=yes 511304007ebaSmrg ;; 511404007ebaSmrg esac 511504007ebaSmrg libtool_args=$nonopt 511604007ebaSmrg base_compile="$nonopt $@" 511704007ebaSmrg compile_command=$nonopt 511804007ebaSmrg finalize_command=$nonopt 511904007ebaSmrg 512004007ebaSmrg compile_rpath= 512104007ebaSmrg finalize_rpath= 512204007ebaSmrg compile_shlibpath= 512304007ebaSmrg finalize_shlibpath= 512404007ebaSmrg convenience= 512504007ebaSmrg old_convenience= 512604007ebaSmrg deplibs= 512704007ebaSmrg old_deplibs= 512804007ebaSmrg compiler_flags= 512904007ebaSmrg linker_flags= 513004007ebaSmrg dllsearchpath= 513104007ebaSmrg lib_search_path=`pwd` 513204007ebaSmrg inst_prefix_dir= 513304007ebaSmrg new_inherited_linker_flags= 513404007ebaSmrg 513504007ebaSmrg avoid_version=no 513604007ebaSmrg bindir= 513704007ebaSmrg dlfiles= 513804007ebaSmrg dlprefiles= 513904007ebaSmrg dlself=no 514004007ebaSmrg export_dynamic=no 514104007ebaSmrg export_symbols= 514204007ebaSmrg export_symbols_regex= 514304007ebaSmrg generated= 514404007ebaSmrg libobjs= 514504007ebaSmrg ltlibs= 514604007ebaSmrg module=no 514704007ebaSmrg no_install=no 514804007ebaSmrg objs= 514904007ebaSmrg non_pic_objects= 515004007ebaSmrg precious_files_regex= 515104007ebaSmrg prefer_static_libs=no 515204007ebaSmrg preload=no 515304007ebaSmrg prev= 515404007ebaSmrg prevarg= 515504007ebaSmrg release= 515604007ebaSmrg rpath= 515704007ebaSmrg xrpath= 515804007ebaSmrg perm_rpath= 515904007ebaSmrg temp_rpath= 516004007ebaSmrg thread_safe=no 516104007ebaSmrg vinfo= 516204007ebaSmrg vinfo_number=no 516304007ebaSmrg weak_libs= 516404007ebaSmrg single_module="${wl}-single_module" 516504007ebaSmrg func_infer_tag $base_compile 516604007ebaSmrg 516704007ebaSmrg # We need to know -static, to get the right output filenames. 516804007ebaSmrg for arg 516904007ebaSmrg do 517004007ebaSmrg case $arg in 517104007ebaSmrg -shared) 517204007ebaSmrg test "$build_libtool_libs" != yes && \ 517304007ebaSmrg func_fatal_configuration "can not build a shared library" 517404007ebaSmrg build_old_libs=no 517504007ebaSmrg break 517604007ebaSmrg ;; 517704007ebaSmrg -all-static | -static | -static-libtool-libs) 517804007ebaSmrg case $arg in 517904007ebaSmrg -all-static) 518004007ebaSmrg if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then 518104007ebaSmrg func_warning "complete static linking is impossible in this configuration" 518204007ebaSmrg fi 518304007ebaSmrg if test -n "$link_static_flag"; then 518404007ebaSmrg dlopen_self=$dlopen_self_static 518504007ebaSmrg fi 518604007ebaSmrg prefer_static_libs=yes 518704007ebaSmrg ;; 518804007ebaSmrg -static) 518904007ebaSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 519004007ebaSmrg dlopen_self=$dlopen_self_static 519104007ebaSmrg fi 519204007ebaSmrg prefer_static_libs=built 519304007ebaSmrg ;; 519404007ebaSmrg -static-libtool-libs) 519504007ebaSmrg if test -z "$pic_flag" && test -n "$link_static_flag"; then 519604007ebaSmrg dlopen_self=$dlopen_self_static 519704007ebaSmrg fi 519804007ebaSmrg prefer_static_libs=yes 519904007ebaSmrg ;; 520004007ebaSmrg esac 520104007ebaSmrg build_libtool_libs=no 520204007ebaSmrg build_old_libs=yes 520304007ebaSmrg break 520404007ebaSmrg ;; 520504007ebaSmrg esac 520604007ebaSmrg done 520704007ebaSmrg 520804007ebaSmrg # See if our shared archives depend on static archives. 520904007ebaSmrg test -n "$old_archive_from_new_cmds" && build_old_libs=yes 521004007ebaSmrg 521104007ebaSmrg # Go through the arguments, transforming them on the way. 521204007ebaSmrg while test "$#" -gt 0; do 521304007ebaSmrg arg="$1" 521404007ebaSmrg shift 521504007ebaSmrg func_quote_for_eval "$arg" 521604007ebaSmrg qarg=$func_quote_for_eval_unquoted_result 521704007ebaSmrg func_append libtool_args " $func_quote_for_eval_result" 521804007ebaSmrg 521904007ebaSmrg # If the previous option needs an argument, assign it. 522004007ebaSmrg if test -n "$prev"; then 522104007ebaSmrg case $prev in 522204007ebaSmrg output) 522304007ebaSmrg func_append compile_command " @OUTPUT@" 522404007ebaSmrg func_append finalize_command " @OUTPUT@" 522504007ebaSmrg ;; 522604007ebaSmrg esac 522704007ebaSmrg 522804007ebaSmrg case $prev in 522904007ebaSmrg bindir) 523004007ebaSmrg bindir="$arg" 523104007ebaSmrg prev= 523204007ebaSmrg continue 523304007ebaSmrg ;; 523404007ebaSmrg dlfiles|dlprefiles) 523504007ebaSmrg if test "$preload" = no; then 523604007ebaSmrg # Add the symbol object into the linking commands. 523704007ebaSmrg func_append compile_command " @SYMFILE@" 523804007ebaSmrg func_append finalize_command " @SYMFILE@" 523904007ebaSmrg preload=yes 524004007ebaSmrg fi 524104007ebaSmrg case $arg in 524204007ebaSmrg *.la | *.lo) ;; # We handle these cases below. 524304007ebaSmrg force) 524404007ebaSmrg if test "$dlself" = no; then 524504007ebaSmrg dlself=needless 524604007ebaSmrg export_dynamic=yes 524704007ebaSmrg fi 524804007ebaSmrg prev= 524904007ebaSmrg continue 525004007ebaSmrg ;; 525104007ebaSmrg self) 525204007ebaSmrg if test "$prev" = dlprefiles; then 525304007ebaSmrg dlself=yes 525404007ebaSmrg elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then 525504007ebaSmrg dlself=yes 525604007ebaSmrg else 525704007ebaSmrg dlself=needless 525804007ebaSmrg export_dynamic=yes 525904007ebaSmrg fi 526004007ebaSmrg prev= 526104007ebaSmrg continue 526204007ebaSmrg ;; 526304007ebaSmrg *) 526404007ebaSmrg if test "$prev" = dlfiles; then 526504007ebaSmrg func_append dlfiles " $arg" 526604007ebaSmrg else 526704007ebaSmrg func_append dlprefiles " $arg" 526804007ebaSmrg fi 526904007ebaSmrg prev= 527004007ebaSmrg continue 527104007ebaSmrg ;; 527204007ebaSmrg esac 527304007ebaSmrg ;; 527404007ebaSmrg expsyms) 527504007ebaSmrg export_symbols="$arg" 527604007ebaSmrg test -f "$arg" \ 527704007ebaSmrg || func_fatal_error "symbol file \`$arg' does not exist" 527804007ebaSmrg prev= 527904007ebaSmrg continue 528004007ebaSmrg ;; 528104007ebaSmrg expsyms_regex) 528204007ebaSmrg export_symbols_regex="$arg" 528304007ebaSmrg prev= 528404007ebaSmrg continue 528504007ebaSmrg ;; 528604007ebaSmrg framework) 528704007ebaSmrg case $host in 528804007ebaSmrg *-*-darwin*) 528904007ebaSmrg case "$deplibs " in 529004007ebaSmrg *" $qarg.ltframework "*) ;; 529104007ebaSmrg *) func_append deplibs " $qarg.ltframework" # this is fixed later 529204007ebaSmrg ;; 529304007ebaSmrg esac 529404007ebaSmrg ;; 529504007ebaSmrg esac 529604007ebaSmrg prev= 529704007ebaSmrg continue 529804007ebaSmrg ;; 529904007ebaSmrg inst_prefix) 530004007ebaSmrg inst_prefix_dir="$arg" 530104007ebaSmrg prev= 530204007ebaSmrg continue 530304007ebaSmrg ;; 530404007ebaSmrg objectlist) 530504007ebaSmrg if test -f "$arg"; then 530604007ebaSmrg save_arg=$arg 530704007ebaSmrg moreargs= 530804007ebaSmrg for fil in `cat "$save_arg"` 530904007ebaSmrg do 531004007ebaSmrg# func_append moreargs " $fil" 531104007ebaSmrg arg=$fil 531204007ebaSmrg # A libtool-controlled object. 531304007ebaSmrg 531404007ebaSmrg # Check to see that this really is a libtool object. 531504007ebaSmrg if func_lalib_unsafe_p "$arg"; then 531604007ebaSmrg pic_object= 531704007ebaSmrg non_pic_object= 531804007ebaSmrg 531904007ebaSmrg # Read the .lo file 532004007ebaSmrg func_source "$arg" 532104007ebaSmrg 532204007ebaSmrg if test -z "$pic_object" || 532304007ebaSmrg test -z "$non_pic_object" || 532404007ebaSmrg test "$pic_object" = none && 532504007ebaSmrg test "$non_pic_object" = none; then 532604007ebaSmrg func_fatal_error "cannot find name of object for \`$arg'" 532704007ebaSmrg fi 532804007ebaSmrg 532904007ebaSmrg # Extract subdirectory from the argument. 533004007ebaSmrg func_dirname "$arg" "/" "" 533104007ebaSmrg xdir="$func_dirname_result" 533204007ebaSmrg 533304007ebaSmrg if test "$pic_object" != none; then 533404007ebaSmrg # Prepend the subdirectory the object is found in. 533504007ebaSmrg pic_object="$xdir$pic_object" 533604007ebaSmrg 533704007ebaSmrg if test "$prev" = dlfiles; then 533804007ebaSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 533904007ebaSmrg func_append dlfiles " $pic_object" 534004007ebaSmrg prev= 534104007ebaSmrg continue 534204007ebaSmrg else 534304007ebaSmrg # If libtool objects are unsupported, then we need to preload. 534404007ebaSmrg prev=dlprefiles 534504007ebaSmrg fi 534604007ebaSmrg fi 534704007ebaSmrg 534804007ebaSmrg # CHECK ME: I think I busted this. -Ossama 534904007ebaSmrg if test "$prev" = dlprefiles; then 535004007ebaSmrg # Preload the old-style object. 535104007ebaSmrg func_append dlprefiles " $pic_object" 535204007ebaSmrg prev= 535304007ebaSmrg fi 535404007ebaSmrg 535504007ebaSmrg # A PIC object. 535604007ebaSmrg func_append libobjs " $pic_object" 535704007ebaSmrg arg="$pic_object" 535804007ebaSmrg fi 535904007ebaSmrg 536004007ebaSmrg # Non-PIC object. 536104007ebaSmrg if test "$non_pic_object" != none; then 536204007ebaSmrg # Prepend the subdirectory the object is found in. 536304007ebaSmrg non_pic_object="$xdir$non_pic_object" 536404007ebaSmrg 536504007ebaSmrg # A standard non-PIC object 536604007ebaSmrg func_append non_pic_objects " $non_pic_object" 536704007ebaSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 536804007ebaSmrg arg="$non_pic_object" 536904007ebaSmrg fi 537004007ebaSmrg else 537104007ebaSmrg # If the PIC object exists, use it instead. 537204007ebaSmrg # $xdir was prepended to $pic_object above. 537304007ebaSmrg non_pic_object="$pic_object" 537404007ebaSmrg func_append non_pic_objects " $non_pic_object" 537504007ebaSmrg fi 537604007ebaSmrg else 537704007ebaSmrg # Only an error if not doing a dry-run. 537804007ebaSmrg if $opt_dry_run; then 537904007ebaSmrg # Extract subdirectory from the argument. 538004007ebaSmrg func_dirname "$arg" "/" "" 538104007ebaSmrg xdir="$func_dirname_result" 538204007ebaSmrg 538304007ebaSmrg func_lo2o "$arg" 538404007ebaSmrg pic_object=$xdir$objdir/$func_lo2o_result 538504007ebaSmrg non_pic_object=$xdir$func_lo2o_result 538604007ebaSmrg func_append libobjs " $pic_object" 538704007ebaSmrg func_append non_pic_objects " $non_pic_object" 538804007ebaSmrg else 538904007ebaSmrg func_fatal_error "\`$arg' is not a valid libtool object" 539004007ebaSmrg fi 539104007ebaSmrg fi 539204007ebaSmrg done 539304007ebaSmrg else 539404007ebaSmrg func_fatal_error "link input file \`$arg' does not exist" 539504007ebaSmrg fi 539604007ebaSmrg arg=$save_arg 539704007ebaSmrg prev= 539804007ebaSmrg continue 539904007ebaSmrg ;; 540004007ebaSmrg precious_regex) 540104007ebaSmrg precious_files_regex="$arg" 540204007ebaSmrg prev= 540304007ebaSmrg continue 540404007ebaSmrg ;; 540504007ebaSmrg release) 540604007ebaSmrg release="-$arg" 540704007ebaSmrg prev= 540804007ebaSmrg continue 540904007ebaSmrg ;; 541004007ebaSmrg rpath | xrpath) 541104007ebaSmrg # We need an absolute path. 541204007ebaSmrg case $arg in 541304007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 541404007ebaSmrg *) 541504007ebaSmrg func_fatal_error "only absolute run-paths are allowed" 541604007ebaSmrg ;; 541704007ebaSmrg esac 541804007ebaSmrg if test "$prev" = rpath; then 541904007ebaSmrg case "$rpath " in 542004007ebaSmrg *" $arg "*) ;; 542104007ebaSmrg *) func_append rpath " $arg" ;; 542204007ebaSmrg esac 542304007ebaSmrg else 542404007ebaSmrg case "$xrpath " in 542504007ebaSmrg *" $arg "*) ;; 542604007ebaSmrg *) func_append xrpath " $arg" ;; 542704007ebaSmrg esac 542804007ebaSmrg fi 542904007ebaSmrg prev= 543004007ebaSmrg continue 543104007ebaSmrg ;; 543204007ebaSmrg shrext) 543304007ebaSmrg shrext_cmds="$arg" 543404007ebaSmrg prev= 543504007ebaSmrg continue 543604007ebaSmrg ;; 543704007ebaSmrg weak) 543804007ebaSmrg func_append weak_libs " $arg" 543904007ebaSmrg prev= 544004007ebaSmrg continue 544104007ebaSmrg ;; 544204007ebaSmrg xcclinker) 544304007ebaSmrg func_append linker_flags " $qarg" 544404007ebaSmrg func_append compiler_flags " $qarg" 544504007ebaSmrg prev= 544604007ebaSmrg func_append compile_command " $qarg" 544704007ebaSmrg func_append finalize_command " $qarg" 544804007ebaSmrg continue 544904007ebaSmrg ;; 545004007ebaSmrg xcompiler) 545104007ebaSmrg func_append compiler_flags " $qarg" 545204007ebaSmrg prev= 545304007ebaSmrg func_append compile_command " $qarg" 545404007ebaSmrg func_append finalize_command " $qarg" 545504007ebaSmrg continue 545604007ebaSmrg ;; 545704007ebaSmrg xlinker) 545804007ebaSmrg func_append linker_flags " $qarg" 545904007ebaSmrg func_append compiler_flags " $wl$qarg" 546004007ebaSmrg prev= 546104007ebaSmrg func_append compile_command " $wl$qarg" 546204007ebaSmrg func_append finalize_command " $wl$qarg" 546304007ebaSmrg continue 546404007ebaSmrg ;; 546504007ebaSmrg *) 546604007ebaSmrg eval "$prev=\"\$arg\"" 546704007ebaSmrg prev= 546804007ebaSmrg continue 546904007ebaSmrg ;; 547004007ebaSmrg esac 547104007ebaSmrg fi # test -n "$prev" 547204007ebaSmrg 547304007ebaSmrg prevarg="$arg" 547404007ebaSmrg 547504007ebaSmrg case $arg in 547604007ebaSmrg -all-static) 547704007ebaSmrg if test -n "$link_static_flag"; then 547804007ebaSmrg # See comment for -static flag below, for more details. 547904007ebaSmrg func_append compile_command " $link_static_flag" 548004007ebaSmrg func_append finalize_command " $link_static_flag" 548104007ebaSmrg fi 548204007ebaSmrg continue 548304007ebaSmrg ;; 548404007ebaSmrg 548504007ebaSmrg -allow-undefined) 548604007ebaSmrg # FIXME: remove this flag sometime in the future. 548704007ebaSmrg func_fatal_error "\`-allow-undefined' must not be used because it is the default" 548804007ebaSmrg ;; 548904007ebaSmrg 549004007ebaSmrg -avoid-version) 549104007ebaSmrg avoid_version=yes 549204007ebaSmrg continue 549304007ebaSmrg ;; 549404007ebaSmrg 549504007ebaSmrg -bindir) 549604007ebaSmrg prev=bindir 549704007ebaSmrg continue 549804007ebaSmrg ;; 549904007ebaSmrg 550004007ebaSmrg -dlopen) 550104007ebaSmrg prev=dlfiles 550204007ebaSmrg continue 550304007ebaSmrg ;; 550404007ebaSmrg 550504007ebaSmrg -dlpreopen) 550604007ebaSmrg prev=dlprefiles 550704007ebaSmrg continue 550804007ebaSmrg ;; 550904007ebaSmrg 551004007ebaSmrg -export-dynamic) 551104007ebaSmrg export_dynamic=yes 551204007ebaSmrg continue 551304007ebaSmrg ;; 551404007ebaSmrg 551504007ebaSmrg -export-symbols | -export-symbols-regex) 551604007ebaSmrg if test -n "$export_symbols" || test -n "$export_symbols_regex"; then 551704007ebaSmrg func_fatal_error "more than one -exported-symbols argument is not allowed" 551804007ebaSmrg fi 551904007ebaSmrg if test "X$arg" = "X-export-symbols"; then 552004007ebaSmrg prev=expsyms 552104007ebaSmrg else 552204007ebaSmrg prev=expsyms_regex 552304007ebaSmrg fi 552404007ebaSmrg continue 552504007ebaSmrg ;; 552604007ebaSmrg 552704007ebaSmrg -framework) 552804007ebaSmrg prev=framework 552904007ebaSmrg continue 553004007ebaSmrg ;; 553104007ebaSmrg 553204007ebaSmrg -inst-prefix-dir) 553304007ebaSmrg prev=inst_prefix 553404007ebaSmrg continue 553504007ebaSmrg ;; 553604007ebaSmrg 553704007ebaSmrg # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* 553804007ebaSmrg # so, if we see these flags be careful not to treat them like -L 553904007ebaSmrg -L[A-Z][A-Z]*:*) 554004007ebaSmrg case $with_gcc/$host in 554104007ebaSmrg no/*-*-irix* | /*-*-irix*) 554204007ebaSmrg func_append compile_command " $arg" 554304007ebaSmrg func_append finalize_command " $arg" 554404007ebaSmrg ;; 554504007ebaSmrg esac 554604007ebaSmrg continue 554704007ebaSmrg ;; 554804007ebaSmrg 554904007ebaSmrg -L*) 555004007ebaSmrg func_stripname "-L" '' "$arg" 555104007ebaSmrg if test -z "$func_stripname_result"; then 555204007ebaSmrg if test "$#" -gt 0; then 555304007ebaSmrg func_fatal_error "require no space between \`-L' and \`$1'" 555404007ebaSmrg else 555504007ebaSmrg func_fatal_error "need path for \`-L' option" 555604007ebaSmrg fi 555704007ebaSmrg fi 555804007ebaSmrg func_resolve_sysroot "$func_stripname_result" 555904007ebaSmrg dir=$func_resolve_sysroot_result 556004007ebaSmrg # We need an absolute path. 556104007ebaSmrg case $dir in 556204007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 556304007ebaSmrg *) 556404007ebaSmrg absdir=`cd "$dir" && pwd` 556504007ebaSmrg test -z "$absdir" && \ 556604007ebaSmrg func_fatal_error "cannot determine absolute directory name of \`$dir'" 556704007ebaSmrg dir="$absdir" 556804007ebaSmrg ;; 556904007ebaSmrg esac 557004007ebaSmrg case "$deplibs " in 557104007ebaSmrg *" -L$dir "* | *" $arg "*) 557204007ebaSmrg # Will only happen for absolute or sysroot arguments 557304007ebaSmrg ;; 557404007ebaSmrg *) 557504007ebaSmrg # Preserve sysroot, but never include relative directories 557604007ebaSmrg case $dir in 557704007ebaSmrg [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; 557804007ebaSmrg *) func_append deplibs " -L$dir" ;; 557904007ebaSmrg esac 558004007ebaSmrg func_append lib_search_path " $dir" 558104007ebaSmrg ;; 558204007ebaSmrg esac 558304007ebaSmrg case $host in 558404007ebaSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 558504007ebaSmrg testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` 558604007ebaSmrg case :$dllsearchpath: in 558704007ebaSmrg *":$dir:"*) ;; 558804007ebaSmrg ::) dllsearchpath=$dir;; 558904007ebaSmrg *) func_append dllsearchpath ":$dir";; 559004007ebaSmrg esac 559104007ebaSmrg case :$dllsearchpath: in 559204007ebaSmrg *":$testbindir:"*) ;; 559304007ebaSmrg ::) dllsearchpath=$testbindir;; 559404007ebaSmrg *) func_append dllsearchpath ":$testbindir";; 559504007ebaSmrg esac 559604007ebaSmrg ;; 559704007ebaSmrg esac 559804007ebaSmrg continue 559904007ebaSmrg ;; 560004007ebaSmrg 560104007ebaSmrg -l*) 560204007ebaSmrg if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then 560304007ebaSmrg case $host in 560404007ebaSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) 560504007ebaSmrg # These systems don't actually have a C or math library (as such) 560604007ebaSmrg continue 560704007ebaSmrg ;; 560804007ebaSmrg *-*-os2*) 560904007ebaSmrg # These systems don't actually have a C library (as such) 561004007ebaSmrg test "X$arg" = "X-lc" && continue 561104007ebaSmrg ;; 561204007ebaSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 561304007ebaSmrg # Do not include libc due to us having libc/libc_r. 561404007ebaSmrg test "X$arg" = "X-lc" && continue 561504007ebaSmrg ;; 561604007ebaSmrg *-*-rhapsody* | *-*-darwin1.[012]) 561704007ebaSmrg # Rhapsody C and math libraries are in the System framework 561804007ebaSmrg func_append deplibs " System.ltframework" 561904007ebaSmrg continue 562004007ebaSmrg ;; 562104007ebaSmrg *-*-sco3.2v5* | *-*-sco5v6*) 562204007ebaSmrg # Causes problems with __ctype 562304007ebaSmrg test "X$arg" = "X-lc" && continue 562404007ebaSmrg ;; 562504007ebaSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 562604007ebaSmrg # Compiler inserts libc in the correct place for threads to work 562704007ebaSmrg test "X$arg" = "X-lc" && continue 562804007ebaSmrg ;; 562904007ebaSmrg esac 563004007ebaSmrg elif test "X$arg" = "X-lc_r"; then 563104007ebaSmrg case $host in 563204007ebaSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 563304007ebaSmrg # Do not include libc_r directly, use -pthread flag. 563404007ebaSmrg continue 563504007ebaSmrg ;; 563604007ebaSmrg esac 563704007ebaSmrg fi 563804007ebaSmrg func_append deplibs " $arg" 563904007ebaSmrg continue 564004007ebaSmrg ;; 564104007ebaSmrg 564204007ebaSmrg -module) 564304007ebaSmrg module=yes 564404007ebaSmrg continue 564504007ebaSmrg ;; 564604007ebaSmrg 564704007ebaSmrg # Tru64 UNIX uses -model [arg] to determine the layout of C++ 564804007ebaSmrg # classes, name mangling, and exception handling. 564904007ebaSmrg # Darwin uses the -arch flag to determine output architecture. 565004007ebaSmrg -model|-arch|-isysroot|--sysroot) 565104007ebaSmrg func_append compiler_flags " $arg" 565204007ebaSmrg func_append compile_command " $arg" 565304007ebaSmrg func_append finalize_command " $arg" 565404007ebaSmrg prev=xcompiler 565504007ebaSmrg continue 565604007ebaSmrg ;; 565704007ebaSmrg 565804007ebaSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 565904007ebaSmrg |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 566004007ebaSmrg func_append compiler_flags " $arg" 566104007ebaSmrg func_append compile_command " $arg" 566204007ebaSmrg func_append finalize_command " $arg" 566304007ebaSmrg case "$new_inherited_linker_flags " in 566404007ebaSmrg *" $arg "*) ;; 566504007ebaSmrg * ) func_append new_inherited_linker_flags " $arg" ;; 566604007ebaSmrg esac 566704007ebaSmrg continue 566804007ebaSmrg ;; 566904007ebaSmrg 567004007ebaSmrg -multi_module) 567104007ebaSmrg single_module="${wl}-multi_module" 567204007ebaSmrg continue 567304007ebaSmrg ;; 567404007ebaSmrg 567504007ebaSmrg -no-fast-install) 567604007ebaSmrg fast_install=no 567704007ebaSmrg continue 567804007ebaSmrg ;; 567904007ebaSmrg 568004007ebaSmrg -no-install) 568104007ebaSmrg case $host in 568204007ebaSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) 568304007ebaSmrg # The PATH hackery in wrapper scripts is required on Windows 568404007ebaSmrg # and Darwin in order for the loader to find any dlls it needs. 568504007ebaSmrg func_warning "\`-no-install' is ignored for $host" 568604007ebaSmrg func_warning "assuming \`-no-fast-install' instead" 568704007ebaSmrg fast_install=no 568804007ebaSmrg ;; 568904007ebaSmrg *) no_install=yes ;; 569004007ebaSmrg esac 569104007ebaSmrg continue 569204007ebaSmrg ;; 569304007ebaSmrg 569404007ebaSmrg -no-undefined) 569504007ebaSmrg allow_undefined=no 569604007ebaSmrg continue 569704007ebaSmrg ;; 569804007ebaSmrg 569904007ebaSmrg -objectlist) 570004007ebaSmrg prev=objectlist 570104007ebaSmrg continue 570204007ebaSmrg ;; 570304007ebaSmrg 570404007ebaSmrg -o) prev=output ;; 570504007ebaSmrg 570604007ebaSmrg -precious-files-regex) 570704007ebaSmrg prev=precious_regex 570804007ebaSmrg continue 570904007ebaSmrg ;; 571004007ebaSmrg 571104007ebaSmrg -release) 571204007ebaSmrg prev=release 571304007ebaSmrg continue 571404007ebaSmrg ;; 571504007ebaSmrg 571604007ebaSmrg -rpath) 571704007ebaSmrg prev=rpath 571804007ebaSmrg continue 571904007ebaSmrg ;; 572004007ebaSmrg 572104007ebaSmrg -R) 572204007ebaSmrg prev=xrpath 572304007ebaSmrg continue 572404007ebaSmrg ;; 572504007ebaSmrg 572604007ebaSmrg -R*) 572704007ebaSmrg func_stripname '-R' '' "$arg" 572804007ebaSmrg dir=$func_stripname_result 572904007ebaSmrg # We need an absolute path. 573004007ebaSmrg case $dir in 573104007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) ;; 573204007ebaSmrg =*) 573304007ebaSmrg func_stripname '=' '' "$dir" 573404007ebaSmrg dir=$lt_sysroot$func_stripname_result 573504007ebaSmrg ;; 573604007ebaSmrg *) 573704007ebaSmrg func_fatal_error "only absolute run-paths are allowed" 573804007ebaSmrg ;; 573904007ebaSmrg esac 574004007ebaSmrg case "$xrpath " in 574104007ebaSmrg *" $dir "*) ;; 574204007ebaSmrg *) func_append xrpath " $dir" ;; 574304007ebaSmrg esac 574404007ebaSmrg continue 574504007ebaSmrg ;; 574604007ebaSmrg 574704007ebaSmrg -shared) 574804007ebaSmrg # The effects of -shared are defined in a previous loop. 574904007ebaSmrg continue 575004007ebaSmrg ;; 575104007ebaSmrg 575204007ebaSmrg -shrext) 575304007ebaSmrg prev=shrext 575404007ebaSmrg continue 575504007ebaSmrg ;; 575604007ebaSmrg 575704007ebaSmrg -static | -static-libtool-libs) 575804007ebaSmrg # The effects of -static are defined in a previous loop. 575904007ebaSmrg # We used to do the same as -all-static on platforms that 576004007ebaSmrg # didn't have a PIC flag, but the assumption that the effects 576104007ebaSmrg # would be equivalent was wrong. It would break on at least 576204007ebaSmrg # Digital Unix and AIX. 576304007ebaSmrg continue 576404007ebaSmrg ;; 576504007ebaSmrg 576604007ebaSmrg -thread-safe) 576704007ebaSmrg thread_safe=yes 576804007ebaSmrg continue 576904007ebaSmrg ;; 577004007ebaSmrg 577104007ebaSmrg -version-info) 577204007ebaSmrg prev=vinfo 577304007ebaSmrg continue 577404007ebaSmrg ;; 577504007ebaSmrg 577604007ebaSmrg -version-number) 577704007ebaSmrg prev=vinfo 577804007ebaSmrg vinfo_number=yes 577904007ebaSmrg continue 578004007ebaSmrg ;; 578104007ebaSmrg 578204007ebaSmrg -weak) 578304007ebaSmrg prev=weak 578404007ebaSmrg continue 578504007ebaSmrg ;; 578604007ebaSmrg 578704007ebaSmrg -Wc,*) 578804007ebaSmrg func_stripname '-Wc,' '' "$arg" 578904007ebaSmrg args=$func_stripname_result 579004007ebaSmrg arg= 579104007ebaSmrg save_ifs="$IFS"; IFS=',' 579204007ebaSmrg for flag in $args; do 579304007ebaSmrg IFS="$save_ifs" 579404007ebaSmrg func_quote_for_eval "$flag" 579504007ebaSmrg func_append arg " $func_quote_for_eval_result" 579604007ebaSmrg func_append compiler_flags " $func_quote_for_eval_result" 579704007ebaSmrg done 579804007ebaSmrg IFS="$save_ifs" 579904007ebaSmrg func_stripname ' ' '' "$arg" 580004007ebaSmrg arg=$func_stripname_result 580104007ebaSmrg ;; 580204007ebaSmrg 580304007ebaSmrg -Wl,*) 580404007ebaSmrg func_stripname '-Wl,' '' "$arg" 580504007ebaSmrg args=$func_stripname_result 580604007ebaSmrg arg= 580704007ebaSmrg save_ifs="$IFS"; IFS=',' 580804007ebaSmrg for flag in $args; do 580904007ebaSmrg IFS="$save_ifs" 581004007ebaSmrg func_quote_for_eval "$flag" 581104007ebaSmrg func_append arg " $wl$func_quote_for_eval_result" 581204007ebaSmrg func_append compiler_flags " $wl$func_quote_for_eval_result" 581304007ebaSmrg func_append linker_flags " $func_quote_for_eval_result" 581404007ebaSmrg done 581504007ebaSmrg IFS="$save_ifs" 581604007ebaSmrg func_stripname ' ' '' "$arg" 581704007ebaSmrg arg=$func_stripname_result 581804007ebaSmrg ;; 581904007ebaSmrg 582004007ebaSmrg -Xcompiler) 582104007ebaSmrg prev=xcompiler 582204007ebaSmrg continue 582304007ebaSmrg ;; 582404007ebaSmrg 582504007ebaSmrg -Xlinker) 582604007ebaSmrg prev=xlinker 582704007ebaSmrg continue 582804007ebaSmrg ;; 582904007ebaSmrg 583004007ebaSmrg -XCClinker) 583104007ebaSmrg prev=xcclinker 583204007ebaSmrg continue 583304007ebaSmrg ;; 583404007ebaSmrg 583504007ebaSmrg # -msg_* for osf cc 583604007ebaSmrg -msg_*) 583704007ebaSmrg func_quote_for_eval "$arg" 583804007ebaSmrg arg="$func_quote_for_eval_result" 583904007ebaSmrg ;; 584004007ebaSmrg 584104007ebaSmrg # Flags to be passed through unchanged, with rationale: 584204007ebaSmrg # -64, -mips[0-9] enable 64-bit mode for the SGI compiler 584304007ebaSmrg # -r[0-9][0-9]* specify processor for the SGI compiler 584404007ebaSmrg # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler 584504007ebaSmrg # +DA*, +DD* enable 64-bit mode for the HP compiler 584604007ebaSmrg # -q* compiler args for the IBM compiler 584704007ebaSmrg # -m*, -t[45]*, -txscale* architecture-specific flags for GCC 584804007ebaSmrg # -F/path path to uninstalled frameworks, gcc on darwin 584904007ebaSmrg # -p, -pg, --coverage, -fprofile-* profiling flags for GCC 585004007ebaSmrg # @file GCC response files 585104007ebaSmrg # -tp=* Portland pgcc target processor selection 585204007ebaSmrg # --sysroot=* for sysroot support 585304007ebaSmrg # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization 585404007ebaSmrg -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ 585504007ebaSmrg -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ 585604007ebaSmrg -O*|-flto*|-fwhopr*|-fuse-linker-plugin) 585704007ebaSmrg func_quote_for_eval "$arg" 585804007ebaSmrg arg="$func_quote_for_eval_result" 585904007ebaSmrg func_append compile_command " $arg" 586004007ebaSmrg func_append finalize_command " $arg" 586104007ebaSmrg func_append compiler_flags " $arg" 586204007ebaSmrg continue 586304007ebaSmrg ;; 586404007ebaSmrg 586504007ebaSmrg # Some other compiler flag. 586604007ebaSmrg -* | +*) 586704007ebaSmrg func_quote_for_eval "$arg" 586804007ebaSmrg arg="$func_quote_for_eval_result" 586904007ebaSmrg ;; 587004007ebaSmrg 587104007ebaSmrg *.$objext) 587204007ebaSmrg # A standard object. 587304007ebaSmrg func_append objs " $arg" 587404007ebaSmrg ;; 587504007ebaSmrg 587604007ebaSmrg *.lo) 587704007ebaSmrg # A libtool-controlled object. 587804007ebaSmrg 587904007ebaSmrg # Check to see that this really is a libtool object. 588004007ebaSmrg if func_lalib_unsafe_p "$arg"; then 588104007ebaSmrg pic_object= 588204007ebaSmrg non_pic_object= 588304007ebaSmrg 588404007ebaSmrg # Read the .lo file 588504007ebaSmrg func_source "$arg" 588604007ebaSmrg 588704007ebaSmrg if test -z "$pic_object" || 588804007ebaSmrg test -z "$non_pic_object" || 588904007ebaSmrg test "$pic_object" = none && 589004007ebaSmrg test "$non_pic_object" = none; then 589104007ebaSmrg func_fatal_error "cannot find name of object for \`$arg'" 589204007ebaSmrg fi 589304007ebaSmrg 589404007ebaSmrg # Extract subdirectory from the argument. 589504007ebaSmrg func_dirname "$arg" "/" "" 589604007ebaSmrg xdir="$func_dirname_result" 589704007ebaSmrg 589804007ebaSmrg if test "$pic_object" != none; then 589904007ebaSmrg # Prepend the subdirectory the object is found in. 590004007ebaSmrg pic_object="$xdir$pic_object" 590104007ebaSmrg 590204007ebaSmrg if test "$prev" = dlfiles; then 590304007ebaSmrg if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then 590404007ebaSmrg func_append dlfiles " $pic_object" 590504007ebaSmrg prev= 590604007ebaSmrg continue 590704007ebaSmrg else 590804007ebaSmrg # If libtool objects are unsupported, then we need to preload. 590904007ebaSmrg prev=dlprefiles 591004007ebaSmrg fi 591104007ebaSmrg fi 591204007ebaSmrg 591304007ebaSmrg # CHECK ME: I think I busted this. -Ossama 591404007ebaSmrg if test "$prev" = dlprefiles; then 591504007ebaSmrg # Preload the old-style object. 591604007ebaSmrg func_append dlprefiles " $pic_object" 591704007ebaSmrg prev= 591804007ebaSmrg fi 591904007ebaSmrg 592004007ebaSmrg # A PIC object. 592104007ebaSmrg func_append libobjs " $pic_object" 592204007ebaSmrg arg="$pic_object" 592304007ebaSmrg fi 592404007ebaSmrg 592504007ebaSmrg # Non-PIC object. 592604007ebaSmrg if test "$non_pic_object" != none; then 592704007ebaSmrg # Prepend the subdirectory the object is found in. 592804007ebaSmrg non_pic_object="$xdir$non_pic_object" 592904007ebaSmrg 593004007ebaSmrg # A standard non-PIC object 593104007ebaSmrg func_append non_pic_objects " $non_pic_object" 593204007ebaSmrg if test -z "$pic_object" || test "$pic_object" = none ; then 593304007ebaSmrg arg="$non_pic_object" 593404007ebaSmrg fi 593504007ebaSmrg else 593604007ebaSmrg # If the PIC object exists, use it instead. 593704007ebaSmrg # $xdir was prepended to $pic_object above. 593804007ebaSmrg non_pic_object="$pic_object" 593904007ebaSmrg func_append non_pic_objects " $non_pic_object" 594004007ebaSmrg fi 594104007ebaSmrg else 594204007ebaSmrg # Only an error if not doing a dry-run. 594304007ebaSmrg if $opt_dry_run; then 594404007ebaSmrg # Extract subdirectory from the argument. 594504007ebaSmrg func_dirname "$arg" "/" "" 594604007ebaSmrg xdir="$func_dirname_result" 594704007ebaSmrg 594804007ebaSmrg func_lo2o "$arg" 594904007ebaSmrg pic_object=$xdir$objdir/$func_lo2o_result 595004007ebaSmrg non_pic_object=$xdir$func_lo2o_result 595104007ebaSmrg func_append libobjs " $pic_object" 595204007ebaSmrg func_append non_pic_objects " $non_pic_object" 595304007ebaSmrg else 595404007ebaSmrg func_fatal_error "\`$arg' is not a valid libtool object" 595504007ebaSmrg fi 595604007ebaSmrg fi 595704007ebaSmrg ;; 595804007ebaSmrg 595904007ebaSmrg *.$libext) 596004007ebaSmrg # An archive. 596104007ebaSmrg func_append deplibs " $arg" 596204007ebaSmrg func_append old_deplibs " $arg" 596304007ebaSmrg continue 596404007ebaSmrg ;; 596504007ebaSmrg 596604007ebaSmrg *.la) 596704007ebaSmrg # A libtool-controlled library. 596804007ebaSmrg 596904007ebaSmrg func_resolve_sysroot "$arg" 597004007ebaSmrg if test "$prev" = dlfiles; then 597104007ebaSmrg # This library was specified with -dlopen. 597204007ebaSmrg func_append dlfiles " $func_resolve_sysroot_result" 597304007ebaSmrg prev= 597404007ebaSmrg elif test "$prev" = dlprefiles; then 597504007ebaSmrg # The library was specified with -dlpreopen. 597604007ebaSmrg func_append dlprefiles " $func_resolve_sysroot_result" 597704007ebaSmrg prev= 597804007ebaSmrg else 597904007ebaSmrg func_append deplibs " $func_resolve_sysroot_result" 598004007ebaSmrg fi 598104007ebaSmrg continue 598204007ebaSmrg ;; 598304007ebaSmrg 598404007ebaSmrg # Some other compiler argument. 598504007ebaSmrg *) 598604007ebaSmrg # Unknown arguments in both finalize_command and compile_command need 598704007ebaSmrg # to be aesthetically quoted because they are evaled later. 598804007ebaSmrg func_quote_for_eval "$arg" 598904007ebaSmrg arg="$func_quote_for_eval_result" 599004007ebaSmrg ;; 599104007ebaSmrg esac # arg 599204007ebaSmrg 599304007ebaSmrg # Now actually substitute the argument into the commands. 599404007ebaSmrg if test -n "$arg"; then 599504007ebaSmrg func_append compile_command " $arg" 599604007ebaSmrg func_append finalize_command " $arg" 599704007ebaSmrg fi 599804007ebaSmrg done # argument parsing loop 599904007ebaSmrg 600004007ebaSmrg test -n "$prev" && \ 600104007ebaSmrg func_fatal_help "the \`$prevarg' option requires an argument" 600204007ebaSmrg 600304007ebaSmrg if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then 600404007ebaSmrg eval arg=\"$export_dynamic_flag_spec\" 600504007ebaSmrg func_append compile_command " $arg" 600604007ebaSmrg func_append finalize_command " $arg" 600704007ebaSmrg fi 600804007ebaSmrg 600904007ebaSmrg oldlibs= 601004007ebaSmrg # calculate the name of the file, without its directory 601104007ebaSmrg func_basename "$output" 601204007ebaSmrg outputname="$func_basename_result" 601304007ebaSmrg libobjs_save="$libobjs" 601404007ebaSmrg 601504007ebaSmrg if test -n "$shlibpath_var"; then 601604007ebaSmrg # get the directories listed in $shlibpath_var 601704007ebaSmrg eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` 601804007ebaSmrg else 601904007ebaSmrg shlib_search_path= 602004007ebaSmrg fi 602104007ebaSmrg eval sys_lib_search_path=\"$sys_lib_search_path_spec\" 602204007ebaSmrg eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" 602304007ebaSmrg 602404007ebaSmrg func_dirname "$output" "/" "" 602504007ebaSmrg output_objdir="$func_dirname_result$objdir" 602604007ebaSmrg func_to_tool_file "$output_objdir/" 602704007ebaSmrg tool_output_objdir=$func_to_tool_file_result 602804007ebaSmrg # Create the object directory. 602904007ebaSmrg func_mkdir_p "$output_objdir" 603004007ebaSmrg 603104007ebaSmrg # Determine the type of output 603204007ebaSmrg case $output in 603304007ebaSmrg "") 603404007ebaSmrg func_fatal_help "you must specify an output file" 603504007ebaSmrg ;; 603604007ebaSmrg *.$libext) linkmode=oldlib ;; 603704007ebaSmrg *.lo | *.$objext) linkmode=obj ;; 603804007ebaSmrg *.la) linkmode=lib ;; 603904007ebaSmrg *) linkmode=prog ;; # Anything else should be a program. 604004007ebaSmrg esac 604104007ebaSmrg 604204007ebaSmrg specialdeplibs= 604304007ebaSmrg 604404007ebaSmrg libs= 604504007ebaSmrg # Find all interdependent deplibs by searching for libraries 604604007ebaSmrg # that are linked more than once (e.g. -la -lb -la) 604704007ebaSmrg for deplib in $deplibs; do 604804007ebaSmrg if $opt_preserve_dup_deps ; then 604904007ebaSmrg case "$libs " in 605004007ebaSmrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 605104007ebaSmrg esac 605204007ebaSmrg fi 605304007ebaSmrg func_append libs " $deplib" 605404007ebaSmrg done 605504007ebaSmrg 605604007ebaSmrg if test "$linkmode" = lib; then 605704007ebaSmrg libs="$predeps $libs $compiler_lib_search_path $postdeps" 605804007ebaSmrg 605904007ebaSmrg # Compute libraries that are listed more than once in $predeps 606004007ebaSmrg # $postdeps and mark them as special (i.e., whose duplicates are 606104007ebaSmrg # not to be eliminated). 606204007ebaSmrg pre_post_deps= 606304007ebaSmrg if $opt_duplicate_compiler_generated_deps; then 606404007ebaSmrg for pre_post_dep in $predeps $postdeps; do 606504007ebaSmrg case "$pre_post_deps " in 606604007ebaSmrg *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; 606704007ebaSmrg esac 606804007ebaSmrg func_append pre_post_deps " $pre_post_dep" 606904007ebaSmrg done 607004007ebaSmrg fi 607104007ebaSmrg pre_post_deps= 607204007ebaSmrg fi 607304007ebaSmrg 607404007ebaSmrg deplibs= 607504007ebaSmrg newdependency_libs= 607604007ebaSmrg newlib_search_path= 607704007ebaSmrg need_relink=no # whether we're linking any uninstalled libtool libraries 607804007ebaSmrg notinst_deplibs= # not-installed libtool libraries 607904007ebaSmrg notinst_path= # paths that contain not-installed libtool libraries 608004007ebaSmrg 608104007ebaSmrg case $linkmode in 608204007ebaSmrg lib) 608304007ebaSmrg passes="conv dlpreopen link" 608404007ebaSmrg for file in $dlfiles $dlprefiles; do 608504007ebaSmrg case $file in 608604007ebaSmrg *.la) ;; 608704007ebaSmrg *) 608804007ebaSmrg func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" 608904007ebaSmrg ;; 609004007ebaSmrg esac 609104007ebaSmrg done 609204007ebaSmrg ;; 609304007ebaSmrg prog) 609404007ebaSmrg compile_deplibs= 609504007ebaSmrg finalize_deplibs= 609604007ebaSmrg alldeplibs=no 609704007ebaSmrg newdlfiles= 609804007ebaSmrg newdlprefiles= 609904007ebaSmrg passes="conv scan dlopen dlpreopen link" 610004007ebaSmrg ;; 610104007ebaSmrg *) passes="conv" 610204007ebaSmrg ;; 610304007ebaSmrg esac 610404007ebaSmrg 610504007ebaSmrg for pass in $passes; do 610604007ebaSmrg # The preopen pass in lib mode reverses $deplibs; put it back here 610704007ebaSmrg # so that -L comes before libs that need it for instance... 610804007ebaSmrg if test "$linkmode,$pass" = "lib,link"; then 610904007ebaSmrg ## FIXME: Find the place where the list is rebuilt in the wrong 611004007ebaSmrg ## order, and fix it there properly 611104007ebaSmrg tmp_deplibs= 611204007ebaSmrg for deplib in $deplibs; do 611304007ebaSmrg tmp_deplibs="$deplib $tmp_deplibs" 611404007ebaSmrg done 611504007ebaSmrg deplibs="$tmp_deplibs" 611604007ebaSmrg fi 611704007ebaSmrg 611804007ebaSmrg if test "$linkmode,$pass" = "lib,link" || 611904007ebaSmrg test "$linkmode,$pass" = "prog,scan"; then 612004007ebaSmrg libs="$deplibs" 612104007ebaSmrg deplibs= 612204007ebaSmrg fi 612304007ebaSmrg if test "$linkmode" = prog; then 612404007ebaSmrg case $pass in 612504007ebaSmrg dlopen) libs="$dlfiles" ;; 612604007ebaSmrg dlpreopen) libs="$dlprefiles" ;; 612704007ebaSmrg link) 612804007ebaSmrg libs="$deplibs %DEPLIBS%" 612904007ebaSmrg test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" 613004007ebaSmrg ;; 613104007ebaSmrg esac 613204007ebaSmrg fi 613304007ebaSmrg if test "$linkmode,$pass" = "lib,dlpreopen"; then 613404007ebaSmrg # Collect and forward deplibs of preopened libtool libs 613504007ebaSmrg for lib in $dlprefiles; do 613604007ebaSmrg # Ignore non-libtool-libs 613704007ebaSmrg dependency_libs= 613804007ebaSmrg func_resolve_sysroot "$lib" 613904007ebaSmrg case $lib in 614004007ebaSmrg *.la) func_source "$func_resolve_sysroot_result" ;; 614104007ebaSmrg esac 614204007ebaSmrg 614304007ebaSmrg # Collect preopened libtool deplibs, except any this library 614404007ebaSmrg # has declared as weak libs 614504007ebaSmrg for deplib in $dependency_libs; do 614604007ebaSmrg func_basename "$deplib" 614704007ebaSmrg deplib_base=$func_basename_result 614804007ebaSmrg case " $weak_libs " in 614904007ebaSmrg *" $deplib_base "*) ;; 615004007ebaSmrg *) func_append deplibs " $deplib" ;; 615104007ebaSmrg esac 615204007ebaSmrg done 615304007ebaSmrg done 615404007ebaSmrg libs="$dlprefiles" 615504007ebaSmrg fi 615604007ebaSmrg if test "$pass" = dlopen; then 615704007ebaSmrg # Collect dlpreopened libraries 615804007ebaSmrg save_deplibs="$deplibs" 615904007ebaSmrg deplibs= 616004007ebaSmrg fi 616104007ebaSmrg 616204007ebaSmrg for deplib in $libs; do 616304007ebaSmrg lib= 616404007ebaSmrg found=no 616504007ebaSmrg case $deplib in 616604007ebaSmrg -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ 616704007ebaSmrg |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) 616804007ebaSmrg if test "$linkmode,$pass" = "prog,link"; then 616904007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 617004007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 617104007ebaSmrg else 617204007ebaSmrg func_append compiler_flags " $deplib" 617304007ebaSmrg if test "$linkmode" = lib ; then 617404007ebaSmrg case "$new_inherited_linker_flags " in 617504007ebaSmrg *" $deplib "*) ;; 617604007ebaSmrg * ) func_append new_inherited_linker_flags " $deplib" ;; 617704007ebaSmrg esac 617804007ebaSmrg fi 617904007ebaSmrg fi 618004007ebaSmrg continue 618104007ebaSmrg ;; 618204007ebaSmrg -l*) 618304007ebaSmrg if test "$linkmode" != lib && test "$linkmode" != prog; then 618404007ebaSmrg func_warning "\`-l' is ignored for archives/objects" 618504007ebaSmrg continue 618604007ebaSmrg fi 618704007ebaSmrg func_stripname '-l' '' "$deplib" 618804007ebaSmrg name=$func_stripname_result 618904007ebaSmrg if test "$linkmode" = lib; then 619004007ebaSmrg searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" 619104007ebaSmrg else 619204007ebaSmrg searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" 619304007ebaSmrg fi 619404007ebaSmrg for searchdir in $searchdirs; do 619504007ebaSmrg for search_ext in .la $std_shrext .so .a; do 619604007ebaSmrg # Search the libtool library 619704007ebaSmrg lib="$searchdir/lib${name}${search_ext}" 619804007ebaSmrg if test -f "$lib"; then 619904007ebaSmrg if test "$search_ext" = ".la"; then 620004007ebaSmrg found=yes 620104007ebaSmrg else 620204007ebaSmrg found=no 620304007ebaSmrg fi 620404007ebaSmrg break 2 620504007ebaSmrg fi 620604007ebaSmrg done 620704007ebaSmrg done 620804007ebaSmrg if test "$found" != yes; then 620904007ebaSmrg # deplib doesn't seem to be a libtool library 621004007ebaSmrg if test "$linkmode,$pass" = "prog,link"; then 621104007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 621204007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 621304007ebaSmrg else 621404007ebaSmrg deplibs="$deplib $deplibs" 621504007ebaSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 621604007ebaSmrg fi 621704007ebaSmrg continue 621804007ebaSmrg else # deplib is a libtool library 621904007ebaSmrg # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, 622004007ebaSmrg # We need to do some special things here, and not later. 622104007ebaSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 622204007ebaSmrg case " $predeps $postdeps " in 622304007ebaSmrg *" $deplib "*) 622404007ebaSmrg if func_lalib_p "$lib"; then 622504007ebaSmrg library_names= 622604007ebaSmrg old_library= 622704007ebaSmrg func_source "$lib" 622804007ebaSmrg for l in $old_library $library_names; do 622904007ebaSmrg ll="$l" 623004007ebaSmrg done 623104007ebaSmrg if test "X$ll" = "X$old_library" ; then # only static version available 623204007ebaSmrg found=no 623304007ebaSmrg func_dirname "$lib" "" "." 623404007ebaSmrg ladir="$func_dirname_result" 623504007ebaSmrg lib=$ladir/$old_library 623604007ebaSmrg if test "$linkmode,$pass" = "prog,link"; then 623704007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 623804007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 623904007ebaSmrg else 624004007ebaSmrg deplibs="$deplib $deplibs" 624104007ebaSmrg test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" 624204007ebaSmrg fi 624304007ebaSmrg continue 624404007ebaSmrg fi 624504007ebaSmrg fi 624604007ebaSmrg ;; 624704007ebaSmrg *) ;; 624804007ebaSmrg esac 624904007ebaSmrg fi 625004007ebaSmrg fi 625104007ebaSmrg ;; # -l 625204007ebaSmrg *.ltframework) 625304007ebaSmrg if test "$linkmode,$pass" = "prog,link"; then 625404007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 625504007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 625604007ebaSmrg else 625704007ebaSmrg deplibs="$deplib $deplibs" 625804007ebaSmrg if test "$linkmode" = lib ; then 625904007ebaSmrg case "$new_inherited_linker_flags " in 626004007ebaSmrg *" $deplib "*) ;; 626104007ebaSmrg * ) func_append new_inherited_linker_flags " $deplib" ;; 626204007ebaSmrg esac 626304007ebaSmrg fi 626404007ebaSmrg fi 626504007ebaSmrg continue 626604007ebaSmrg ;; 626704007ebaSmrg -L*) 626804007ebaSmrg case $linkmode in 626904007ebaSmrg lib) 627004007ebaSmrg deplibs="$deplib $deplibs" 627104007ebaSmrg test "$pass" = conv && continue 627204007ebaSmrg newdependency_libs="$deplib $newdependency_libs" 627304007ebaSmrg func_stripname '-L' '' "$deplib" 627404007ebaSmrg func_resolve_sysroot "$func_stripname_result" 627504007ebaSmrg func_append newlib_search_path " $func_resolve_sysroot_result" 627604007ebaSmrg ;; 627704007ebaSmrg prog) 627804007ebaSmrg if test "$pass" = conv; then 627904007ebaSmrg deplibs="$deplib $deplibs" 628004007ebaSmrg continue 628104007ebaSmrg fi 628204007ebaSmrg if test "$pass" = scan; then 628304007ebaSmrg deplibs="$deplib $deplibs" 628404007ebaSmrg else 628504007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 628604007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 628704007ebaSmrg fi 628804007ebaSmrg func_stripname '-L' '' "$deplib" 628904007ebaSmrg func_resolve_sysroot "$func_stripname_result" 629004007ebaSmrg func_append newlib_search_path " $func_resolve_sysroot_result" 629104007ebaSmrg ;; 629204007ebaSmrg *) 629304007ebaSmrg func_warning "\`-L' is ignored for archives/objects" 629404007ebaSmrg ;; 629504007ebaSmrg esac # linkmode 629604007ebaSmrg continue 629704007ebaSmrg ;; # -L 629804007ebaSmrg -R*) 629904007ebaSmrg if test "$pass" = link; then 630004007ebaSmrg func_stripname '-R' '' "$deplib" 630104007ebaSmrg func_resolve_sysroot "$func_stripname_result" 630204007ebaSmrg dir=$func_resolve_sysroot_result 630304007ebaSmrg # Make sure the xrpath contains only unique directories. 630404007ebaSmrg case "$xrpath " in 630504007ebaSmrg *" $dir "*) ;; 630604007ebaSmrg *) func_append xrpath " $dir" ;; 630704007ebaSmrg esac 630804007ebaSmrg fi 630904007ebaSmrg deplibs="$deplib $deplibs" 631004007ebaSmrg continue 631104007ebaSmrg ;; 631204007ebaSmrg *.la) 631304007ebaSmrg func_resolve_sysroot "$deplib" 631404007ebaSmrg lib=$func_resolve_sysroot_result 631504007ebaSmrg ;; 631604007ebaSmrg *.$libext) 631704007ebaSmrg if test "$pass" = conv; then 631804007ebaSmrg deplibs="$deplib $deplibs" 631904007ebaSmrg continue 632004007ebaSmrg fi 632104007ebaSmrg case $linkmode in 632204007ebaSmrg lib) 632304007ebaSmrg # Linking convenience modules into shared libraries is allowed, 632404007ebaSmrg # but linking other static libraries is non-portable. 632504007ebaSmrg case " $dlpreconveniencelibs " in 632604007ebaSmrg *" $deplib "*) ;; 632704007ebaSmrg *) 632804007ebaSmrg valid_a_lib=no 632904007ebaSmrg case $deplibs_check_method in 633004007ebaSmrg match_pattern*) 633104007ebaSmrg set dummy $deplibs_check_method; shift 633204007ebaSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 633304007ebaSmrg if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ 633404007ebaSmrg | $EGREP "$match_pattern_regex" > /dev/null; then 633504007ebaSmrg valid_a_lib=yes 633604007ebaSmrg fi 633704007ebaSmrg ;; 633804007ebaSmrg pass_all) 633904007ebaSmrg valid_a_lib=yes 634004007ebaSmrg ;; 634104007ebaSmrg esac 634204007ebaSmrg if test "$valid_a_lib" != yes; then 634304007ebaSmrg echo 634404007ebaSmrg $ECHO "*** Warning: Trying to link with static lib archive $deplib." 634504007ebaSmrg echo "*** I have the capability to make that library automatically link in when" 634604007ebaSmrg echo "*** you link to this library. But I can only do this if you have a" 634704007ebaSmrg echo "*** shared version of the library, which you do not appear to have" 634804007ebaSmrg echo "*** because the file extensions .$libext of this argument makes me believe" 634904007ebaSmrg echo "*** that it is just a static archive that I should not use here." 635004007ebaSmrg else 635104007ebaSmrg echo 635204007ebaSmrg $ECHO "*** Warning: Linking the shared library $output against the" 635304007ebaSmrg $ECHO "*** static library $deplib is not portable!" 635404007ebaSmrg deplibs="$deplib $deplibs" 635504007ebaSmrg fi 635604007ebaSmrg ;; 635704007ebaSmrg esac 635804007ebaSmrg continue 635904007ebaSmrg ;; 636004007ebaSmrg prog) 636104007ebaSmrg if test "$pass" != link; then 636204007ebaSmrg deplibs="$deplib $deplibs" 636304007ebaSmrg else 636404007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 636504007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 636604007ebaSmrg fi 636704007ebaSmrg continue 636804007ebaSmrg ;; 636904007ebaSmrg esac # linkmode 637004007ebaSmrg ;; # *.$libext 637104007ebaSmrg *.lo | *.$objext) 637204007ebaSmrg if test "$pass" = conv; then 637304007ebaSmrg deplibs="$deplib $deplibs" 637404007ebaSmrg elif test "$linkmode" = prog; then 637504007ebaSmrg if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then 637604007ebaSmrg # If there is no dlopen support or we're linking statically, 637704007ebaSmrg # we need to preload. 637804007ebaSmrg func_append newdlprefiles " $deplib" 637904007ebaSmrg compile_deplibs="$deplib $compile_deplibs" 638004007ebaSmrg finalize_deplibs="$deplib $finalize_deplibs" 638104007ebaSmrg else 638204007ebaSmrg func_append newdlfiles " $deplib" 638304007ebaSmrg fi 638404007ebaSmrg fi 638504007ebaSmrg continue 638604007ebaSmrg ;; 638704007ebaSmrg %DEPLIBS%) 638804007ebaSmrg alldeplibs=yes 638904007ebaSmrg continue 639004007ebaSmrg ;; 639104007ebaSmrg esac # case $deplib 639204007ebaSmrg 639304007ebaSmrg if test "$found" = yes || test -f "$lib"; then : 639404007ebaSmrg else 639504007ebaSmrg func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" 639604007ebaSmrg fi 639704007ebaSmrg 639804007ebaSmrg # Check to see that this really is a libtool archive. 639904007ebaSmrg func_lalib_unsafe_p "$lib" \ 640004007ebaSmrg || func_fatal_error "\`$lib' is not a valid libtool archive" 640104007ebaSmrg 640204007ebaSmrg func_dirname "$lib" "" "." 640304007ebaSmrg ladir="$func_dirname_result" 640404007ebaSmrg 640504007ebaSmrg dlname= 640604007ebaSmrg dlopen= 640704007ebaSmrg dlpreopen= 640804007ebaSmrg libdir= 640904007ebaSmrg library_names= 641004007ebaSmrg old_library= 641104007ebaSmrg inherited_linker_flags= 641204007ebaSmrg # If the library was installed with an old release of libtool, 641304007ebaSmrg # it will not redefine variables installed, or shouldnotlink 641404007ebaSmrg installed=yes 641504007ebaSmrg shouldnotlink=no 641604007ebaSmrg avoidtemprpath= 641704007ebaSmrg 641804007ebaSmrg 641904007ebaSmrg # Read the .la file 642004007ebaSmrg func_source "$lib" 642104007ebaSmrg 642204007ebaSmrg # Convert "-framework foo" to "foo.ltframework" 642304007ebaSmrg if test -n "$inherited_linker_flags"; then 642404007ebaSmrg tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` 642504007ebaSmrg for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do 642604007ebaSmrg case " $new_inherited_linker_flags " in 642704007ebaSmrg *" $tmp_inherited_linker_flag "*) ;; 642804007ebaSmrg *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; 642904007ebaSmrg esac 643004007ebaSmrg done 643104007ebaSmrg fi 643204007ebaSmrg dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 643304007ebaSmrg if test "$linkmode,$pass" = "lib,link" || 643404007ebaSmrg test "$linkmode,$pass" = "prog,scan" || 643504007ebaSmrg { test "$linkmode" != prog && test "$linkmode" != lib; }; then 643604007ebaSmrg test -n "$dlopen" && func_append dlfiles " $dlopen" 643704007ebaSmrg test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" 643804007ebaSmrg fi 643904007ebaSmrg 644004007ebaSmrg if test "$pass" = conv; then 644104007ebaSmrg # Only check for convenience libraries 644204007ebaSmrg deplibs="$lib $deplibs" 644304007ebaSmrg if test -z "$libdir"; then 644404007ebaSmrg if test -z "$old_library"; then 644504007ebaSmrg func_fatal_error "cannot find name of link library for \`$lib'" 644604007ebaSmrg fi 644704007ebaSmrg # It is a libtool convenience library, so add in its objects. 644804007ebaSmrg func_append convenience " $ladir/$objdir/$old_library" 644904007ebaSmrg func_append old_convenience " $ladir/$objdir/$old_library" 645004007ebaSmrg tmp_libs= 645104007ebaSmrg for deplib in $dependency_libs; do 645204007ebaSmrg deplibs="$deplib $deplibs" 645304007ebaSmrg if $opt_preserve_dup_deps ; then 645404007ebaSmrg case "$tmp_libs " in 645504007ebaSmrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 645604007ebaSmrg esac 645704007ebaSmrg fi 645804007ebaSmrg func_append tmp_libs " $deplib" 645904007ebaSmrg done 646004007ebaSmrg elif test "$linkmode" != prog && test "$linkmode" != lib; then 646104007ebaSmrg func_fatal_error "\`$lib' is not a convenience library" 646204007ebaSmrg fi 646304007ebaSmrg continue 646404007ebaSmrg fi # $pass = conv 646504007ebaSmrg 646604007ebaSmrg 646704007ebaSmrg # Get the name of the library we link against. 646804007ebaSmrg linklib= 646904007ebaSmrg if test -n "$old_library" && 647004007ebaSmrg { test "$prefer_static_libs" = yes || 647104007ebaSmrg test "$prefer_static_libs,$installed" = "built,no"; }; then 647204007ebaSmrg linklib=$old_library 647304007ebaSmrg else 647404007ebaSmrg for l in $old_library $library_names; do 647504007ebaSmrg linklib="$l" 647604007ebaSmrg done 647704007ebaSmrg fi 647804007ebaSmrg if test -z "$linklib"; then 647904007ebaSmrg func_fatal_error "cannot find name of link library for \`$lib'" 648004007ebaSmrg fi 648104007ebaSmrg 648204007ebaSmrg # This library was specified with -dlopen. 648304007ebaSmrg if test "$pass" = dlopen; then 648404007ebaSmrg if test -z "$libdir"; then 648504007ebaSmrg func_fatal_error "cannot -dlopen a convenience library: \`$lib'" 648604007ebaSmrg fi 648704007ebaSmrg if test -z "$dlname" || 648804007ebaSmrg test "$dlopen_support" != yes || 648904007ebaSmrg test "$build_libtool_libs" = no; then 649004007ebaSmrg # If there is no dlname, no dlopen support or we're linking 649104007ebaSmrg # statically, we need to preload. We also need to preload any 649204007ebaSmrg # dependent libraries so libltdl's deplib preloader doesn't 649304007ebaSmrg # bomb out in the load deplibs phase. 649404007ebaSmrg func_append dlprefiles " $lib $dependency_libs" 649504007ebaSmrg else 649604007ebaSmrg func_append newdlfiles " $lib" 649704007ebaSmrg fi 649804007ebaSmrg continue 649904007ebaSmrg fi # $pass = dlopen 650004007ebaSmrg 650104007ebaSmrg # We need an absolute path. 650204007ebaSmrg case $ladir in 650304007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; 650404007ebaSmrg *) 650504007ebaSmrg abs_ladir=`cd "$ladir" && pwd` 650604007ebaSmrg if test -z "$abs_ladir"; then 650704007ebaSmrg func_warning "cannot determine absolute directory name of \`$ladir'" 650804007ebaSmrg func_warning "passing it literally to the linker, although it might fail" 650904007ebaSmrg abs_ladir="$ladir" 651004007ebaSmrg fi 651104007ebaSmrg ;; 651204007ebaSmrg esac 651304007ebaSmrg func_basename "$lib" 651404007ebaSmrg laname="$func_basename_result" 651504007ebaSmrg 651604007ebaSmrg # Find the relevant object directory and library name. 651704007ebaSmrg if test "X$installed" = Xyes; then 651804007ebaSmrg if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then 651904007ebaSmrg func_warning "library \`$lib' was moved." 652004007ebaSmrg dir="$ladir" 652104007ebaSmrg absdir="$abs_ladir" 652204007ebaSmrg libdir="$abs_ladir" 652304007ebaSmrg else 652404007ebaSmrg dir="$lt_sysroot$libdir" 652504007ebaSmrg absdir="$lt_sysroot$libdir" 652604007ebaSmrg fi 652704007ebaSmrg test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes 652804007ebaSmrg else 652904007ebaSmrg if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then 653004007ebaSmrg dir="$ladir" 653104007ebaSmrg absdir="$abs_ladir" 653204007ebaSmrg # Remove this search path later 653304007ebaSmrg func_append notinst_path " $abs_ladir" 653404007ebaSmrg else 653504007ebaSmrg dir="$ladir/$objdir" 653604007ebaSmrg absdir="$abs_ladir/$objdir" 653704007ebaSmrg # Remove this search path later 653804007ebaSmrg func_append notinst_path " $abs_ladir" 653904007ebaSmrg fi 654004007ebaSmrg fi # $installed = yes 654104007ebaSmrg func_stripname 'lib' '.la' "$laname" 654204007ebaSmrg name=$func_stripname_result 654304007ebaSmrg 654404007ebaSmrg # This library was specified with -dlpreopen. 654504007ebaSmrg if test "$pass" = dlpreopen; then 654604007ebaSmrg if test -z "$libdir" && test "$linkmode" = prog; then 654704007ebaSmrg func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" 654804007ebaSmrg fi 654904007ebaSmrg case "$host" in 655004007ebaSmrg # special handling for platforms with PE-DLLs. 655104007ebaSmrg *cygwin* | *mingw* | *cegcc* ) 655204007ebaSmrg # Linker will automatically link against shared library if both 655304007ebaSmrg # static and shared are present. Therefore, ensure we extract 655404007ebaSmrg # symbols from the import library if a shared library is present 655504007ebaSmrg # (otherwise, the dlopen module name will be incorrect). We do 655604007ebaSmrg # this by putting the import library name into $newdlprefiles. 655704007ebaSmrg # We recover the dlopen module name by 'saving' the la file 655804007ebaSmrg # name in a special purpose variable, and (later) extracting the 655904007ebaSmrg # dlname from the la file. 656004007ebaSmrg if test -n "$dlname"; then 656104007ebaSmrg func_tr_sh "$dir/$linklib" 656204007ebaSmrg eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" 656304007ebaSmrg func_append newdlprefiles " $dir/$linklib" 656404007ebaSmrg else 656504007ebaSmrg func_append newdlprefiles " $dir/$old_library" 656604007ebaSmrg # Keep a list of preopened convenience libraries to check 656704007ebaSmrg # that they are being used correctly in the link pass. 656804007ebaSmrg test -z "$libdir" && \ 656904007ebaSmrg func_append dlpreconveniencelibs " $dir/$old_library" 657004007ebaSmrg fi 657104007ebaSmrg ;; 657204007ebaSmrg * ) 657304007ebaSmrg # Prefer using a static library (so that no silly _DYNAMIC symbols 657404007ebaSmrg # are required to link). 657504007ebaSmrg if test -n "$old_library"; then 657604007ebaSmrg func_append newdlprefiles " $dir/$old_library" 657704007ebaSmrg # Keep a list of preopened convenience libraries to check 657804007ebaSmrg # that they are being used correctly in the link pass. 657904007ebaSmrg test -z "$libdir" && \ 658004007ebaSmrg func_append dlpreconveniencelibs " $dir/$old_library" 658104007ebaSmrg # Otherwise, use the dlname, so that lt_dlopen finds it. 658204007ebaSmrg elif test -n "$dlname"; then 658304007ebaSmrg func_append newdlprefiles " $dir/$dlname" 658404007ebaSmrg else 658504007ebaSmrg func_append newdlprefiles " $dir/$linklib" 658604007ebaSmrg fi 658704007ebaSmrg ;; 658804007ebaSmrg esac 658904007ebaSmrg fi # $pass = dlpreopen 659004007ebaSmrg 659104007ebaSmrg if test -z "$libdir"; then 659204007ebaSmrg # Link the convenience library 659304007ebaSmrg if test "$linkmode" = lib; then 659404007ebaSmrg deplibs="$dir/$old_library $deplibs" 659504007ebaSmrg elif test "$linkmode,$pass" = "prog,link"; then 659604007ebaSmrg compile_deplibs="$dir/$old_library $compile_deplibs" 659704007ebaSmrg finalize_deplibs="$dir/$old_library $finalize_deplibs" 659804007ebaSmrg else 659904007ebaSmrg deplibs="$lib $deplibs" # used for prog,scan pass 660004007ebaSmrg fi 660104007ebaSmrg continue 660204007ebaSmrg fi 660304007ebaSmrg 660404007ebaSmrg 660504007ebaSmrg if test "$linkmode" = prog && test "$pass" != link; then 660604007ebaSmrg func_append newlib_search_path " $ladir" 660704007ebaSmrg deplibs="$lib $deplibs" 660804007ebaSmrg 660904007ebaSmrg linkalldeplibs=no 661004007ebaSmrg if test "$link_all_deplibs" != no || test -z "$library_names" || 661104007ebaSmrg test "$build_libtool_libs" = no; then 661204007ebaSmrg linkalldeplibs=yes 661304007ebaSmrg fi 661404007ebaSmrg 661504007ebaSmrg tmp_libs= 661604007ebaSmrg for deplib in $dependency_libs; do 661704007ebaSmrg case $deplib in 661804007ebaSmrg -L*) func_stripname '-L' '' "$deplib" 661904007ebaSmrg func_resolve_sysroot "$func_stripname_result" 662004007ebaSmrg func_append newlib_search_path " $func_resolve_sysroot_result" 662104007ebaSmrg ;; 662204007ebaSmrg esac 662304007ebaSmrg # Need to link against all dependency_libs? 662404007ebaSmrg if test "$linkalldeplibs" = yes; then 662504007ebaSmrg deplibs="$deplib $deplibs" 662604007ebaSmrg else 662704007ebaSmrg # Need to hardcode shared library paths 662804007ebaSmrg # or/and link against static libraries 662904007ebaSmrg newdependency_libs="$deplib $newdependency_libs" 663004007ebaSmrg fi 663104007ebaSmrg if $opt_preserve_dup_deps ; then 663204007ebaSmrg case "$tmp_libs " in 663304007ebaSmrg *" $deplib "*) func_append specialdeplibs " $deplib" ;; 663404007ebaSmrg esac 663504007ebaSmrg fi 663604007ebaSmrg func_append tmp_libs " $deplib" 663704007ebaSmrg done # for deplib 663804007ebaSmrg continue 663904007ebaSmrg fi # $linkmode = prog... 664004007ebaSmrg 664104007ebaSmrg if test "$linkmode,$pass" = "prog,link"; then 664204007ebaSmrg if test -n "$library_names" && 664304007ebaSmrg { { test "$prefer_static_libs" = no || 664404007ebaSmrg test "$prefer_static_libs,$installed" = "built,yes"; } || 664504007ebaSmrg test -z "$old_library"; }; then 664604007ebaSmrg # We need to hardcode the library path 664704007ebaSmrg if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then 664804007ebaSmrg # Make sure the rpath contains only unique directories. 664904007ebaSmrg case "$temp_rpath:" in 665004007ebaSmrg *"$absdir:"*) ;; 665104007ebaSmrg *) func_append temp_rpath "$absdir:" ;; 665204007ebaSmrg esac 665304007ebaSmrg fi 665404007ebaSmrg 665504007ebaSmrg # Hardcode the library path. 665604007ebaSmrg # Skip directories that are in the system default run-time 665704007ebaSmrg # search path. 665804007ebaSmrg case " $sys_lib_dlsearch_path " in 665904007ebaSmrg *" $absdir "*) ;; 666004007ebaSmrg *) 666104007ebaSmrg case "$compile_rpath " in 666204007ebaSmrg *" $absdir "*) ;; 666304007ebaSmrg *) func_append compile_rpath " $absdir" ;; 666404007ebaSmrg esac 666504007ebaSmrg ;; 666604007ebaSmrg esac 666704007ebaSmrg case " $sys_lib_dlsearch_path " in 666804007ebaSmrg *" $libdir "*) ;; 666904007ebaSmrg *) 667004007ebaSmrg case "$finalize_rpath " in 667104007ebaSmrg *" $libdir "*) ;; 667204007ebaSmrg *) func_append finalize_rpath " $libdir" ;; 667304007ebaSmrg esac 667404007ebaSmrg ;; 667504007ebaSmrg esac 667604007ebaSmrg fi # $linkmode,$pass = prog,link... 667704007ebaSmrg 667804007ebaSmrg if test "$alldeplibs" = yes && 667904007ebaSmrg { test "$deplibs_check_method" = pass_all || 668004007ebaSmrg { test "$build_libtool_libs" = yes && 668104007ebaSmrg test -n "$library_names"; }; }; then 668204007ebaSmrg # We only need to search for static libraries 668304007ebaSmrg continue 668404007ebaSmrg fi 668504007ebaSmrg fi 668604007ebaSmrg 668704007ebaSmrg link_static=no # Whether the deplib will be linked statically 668804007ebaSmrg use_static_libs=$prefer_static_libs 668904007ebaSmrg if test "$use_static_libs" = built && test "$installed" = yes; then 669004007ebaSmrg use_static_libs=no 669104007ebaSmrg fi 669204007ebaSmrg if test -n "$library_names" && 669304007ebaSmrg { test "$use_static_libs" = no || test -z "$old_library"; }; then 669404007ebaSmrg case $host in 669504007ebaSmrg *cygwin* | *mingw* | *cegcc*) 669604007ebaSmrg # No point in relinking DLLs because paths are not encoded 669704007ebaSmrg func_append notinst_deplibs " $lib" 669804007ebaSmrg need_relink=no 669904007ebaSmrg ;; 670004007ebaSmrg *) 670104007ebaSmrg if test "$installed" = no; then 670204007ebaSmrg func_append notinst_deplibs " $lib" 670304007ebaSmrg need_relink=yes 670404007ebaSmrg fi 670504007ebaSmrg ;; 670604007ebaSmrg esac 670704007ebaSmrg # This is a shared library 670804007ebaSmrg 670904007ebaSmrg # Warn about portability, can't link against -module's on some 671004007ebaSmrg # systems (darwin). Don't bleat about dlopened modules though! 671104007ebaSmrg dlopenmodule="" 671204007ebaSmrg for dlpremoduletest in $dlprefiles; do 671304007ebaSmrg if test "X$dlpremoduletest" = "X$lib"; then 671404007ebaSmrg dlopenmodule="$dlpremoduletest" 671504007ebaSmrg break 671604007ebaSmrg fi 671704007ebaSmrg done 671804007ebaSmrg if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then 671904007ebaSmrg echo 672004007ebaSmrg if test "$linkmode" = prog; then 672104007ebaSmrg $ECHO "*** Warning: Linking the executable $output against the loadable module" 672204007ebaSmrg else 672304007ebaSmrg $ECHO "*** Warning: Linking the shared library $output against the loadable module" 672404007ebaSmrg fi 672504007ebaSmrg $ECHO "*** $linklib is not portable!" 672604007ebaSmrg fi 672704007ebaSmrg if test "$linkmode" = lib && 672804007ebaSmrg test "$hardcode_into_libs" = yes; then 672904007ebaSmrg # Hardcode the library path. 673004007ebaSmrg # Skip directories that are in the system default run-time 673104007ebaSmrg # search path. 673204007ebaSmrg case " $sys_lib_dlsearch_path " in 673304007ebaSmrg *" $absdir "*) ;; 673404007ebaSmrg *) 673504007ebaSmrg case "$compile_rpath " in 673604007ebaSmrg *" $absdir "*) ;; 673704007ebaSmrg *) func_append compile_rpath " $absdir" ;; 673804007ebaSmrg esac 673904007ebaSmrg ;; 674004007ebaSmrg esac 674104007ebaSmrg case " $sys_lib_dlsearch_path " in 674204007ebaSmrg *" $libdir "*) ;; 674304007ebaSmrg *) 674404007ebaSmrg case "$finalize_rpath " in 674504007ebaSmrg *" $libdir "*) ;; 674604007ebaSmrg *) func_append finalize_rpath " $libdir" ;; 674704007ebaSmrg esac 674804007ebaSmrg ;; 674904007ebaSmrg esac 675004007ebaSmrg fi 675104007ebaSmrg 675204007ebaSmrg if test -n "$old_archive_from_expsyms_cmds"; then 675304007ebaSmrg # figure out the soname 675404007ebaSmrg set dummy $library_names 675504007ebaSmrg shift 675604007ebaSmrg realname="$1" 675704007ebaSmrg shift 675804007ebaSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 675904007ebaSmrg # use dlname if we got it. it's perfectly good, no? 676004007ebaSmrg if test -n "$dlname"; then 676104007ebaSmrg soname="$dlname" 676204007ebaSmrg elif test -n "$soname_spec"; then 676304007ebaSmrg # bleh windows 676404007ebaSmrg case $host in 676504007ebaSmrg *cygwin* | mingw* | *cegcc*) 676604007ebaSmrg func_arith $current - $age 676704007ebaSmrg major=$func_arith_result 676804007ebaSmrg versuffix="-$major" 676904007ebaSmrg ;; 677004007ebaSmrg esac 677104007ebaSmrg eval soname=\"$soname_spec\" 677204007ebaSmrg else 677304007ebaSmrg soname="$realname" 677404007ebaSmrg fi 677504007ebaSmrg 677604007ebaSmrg # Make a new name for the extract_expsyms_cmds to use 677704007ebaSmrg soroot="$soname" 677804007ebaSmrg func_basename "$soroot" 677904007ebaSmrg soname="$func_basename_result" 678004007ebaSmrg func_stripname 'lib' '.dll' "$soname" 678104007ebaSmrg newlib=libimp-$func_stripname_result.a 678204007ebaSmrg 678304007ebaSmrg # If the library has no export list, then create one now 678404007ebaSmrg if test -f "$output_objdir/$soname-def"; then : 678504007ebaSmrg else 678604007ebaSmrg func_verbose "extracting exported symbol list from \`$soname'" 678704007ebaSmrg func_execute_cmds "$extract_expsyms_cmds" 'exit $?' 678804007ebaSmrg fi 678904007ebaSmrg 679004007ebaSmrg # Create $newlib 679104007ebaSmrg if test -f "$output_objdir/$newlib"; then :; else 679204007ebaSmrg func_verbose "generating import library for \`$soname'" 679304007ebaSmrg func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' 679404007ebaSmrg fi 679504007ebaSmrg # make sure the library variables are pointing to the new library 679604007ebaSmrg dir=$output_objdir 679704007ebaSmrg linklib=$newlib 679804007ebaSmrg fi # test -n "$old_archive_from_expsyms_cmds" 679904007ebaSmrg 680004007ebaSmrg if test "$linkmode" = prog || test "$opt_mode" != relink; then 680104007ebaSmrg add_shlibpath= 680204007ebaSmrg add_dir= 680304007ebaSmrg add= 680404007ebaSmrg lib_linked=yes 680504007ebaSmrg case $hardcode_action in 680604007ebaSmrg immediate | unsupported) 680704007ebaSmrg if test "$hardcode_direct" = no; then 680804007ebaSmrg add="$dir/$linklib" 680904007ebaSmrg case $host in 681004007ebaSmrg *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; 681104007ebaSmrg *-*-sysv4*uw2*) add_dir="-L$dir" ;; 681204007ebaSmrg *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ 681304007ebaSmrg *-*-unixware7*) add_dir="-L$dir" ;; 681404007ebaSmrg *-*-darwin* ) 681504007ebaSmrg # if the lib is a (non-dlopened) module then we can not 681604007ebaSmrg # link against it, someone is ignoring the earlier warnings 681704007ebaSmrg if /usr/bin/file -L $add 2> /dev/null | 681804007ebaSmrg $GREP ": [^:]* bundle" >/dev/null ; then 681904007ebaSmrg if test "X$dlopenmodule" != "X$lib"; then 682004007ebaSmrg $ECHO "*** Warning: lib $linklib is a module, not a shared library" 682104007ebaSmrg if test -z "$old_library" ; then 682204007ebaSmrg echo 682304007ebaSmrg echo "*** And there doesn't seem to be a static archive available" 682404007ebaSmrg echo "*** The link will probably fail, sorry" 682504007ebaSmrg else 682604007ebaSmrg add="$dir/$old_library" 682704007ebaSmrg fi 682804007ebaSmrg elif test -n "$old_library"; then 682904007ebaSmrg add="$dir/$old_library" 683004007ebaSmrg fi 683104007ebaSmrg fi 683204007ebaSmrg esac 683304007ebaSmrg elif test "$hardcode_minus_L" = no; then 683404007ebaSmrg case $host in 683504007ebaSmrg *-*-sunos*) add_shlibpath="$dir" ;; 683604007ebaSmrg esac 683704007ebaSmrg add_dir="-L$dir" 683804007ebaSmrg add="-l$name" 683904007ebaSmrg elif test "$hardcode_shlibpath_var" = no; then 684004007ebaSmrg add_shlibpath="$dir" 684104007ebaSmrg add="-l$name" 684204007ebaSmrg else 684304007ebaSmrg lib_linked=no 684404007ebaSmrg fi 684504007ebaSmrg ;; 684604007ebaSmrg relink) 684704007ebaSmrg if test "$hardcode_direct" = yes && 684804007ebaSmrg test "$hardcode_direct_absolute" = no; then 684904007ebaSmrg add="$dir/$linklib" 685004007ebaSmrg elif test "$hardcode_minus_L" = yes; then 685104007ebaSmrg add_dir="-L$absdir" 685204007ebaSmrg # Try looking first in the location we're being installed to. 685304007ebaSmrg if test -n "$inst_prefix_dir"; then 685404007ebaSmrg case $libdir in 685504007ebaSmrg [\\/]*) 685604007ebaSmrg func_append add_dir " -L$inst_prefix_dir$libdir" 685704007ebaSmrg ;; 685804007ebaSmrg esac 685904007ebaSmrg fi 686004007ebaSmrg add="-l$name" 686104007ebaSmrg elif test "$hardcode_shlibpath_var" = yes; then 686204007ebaSmrg add_shlibpath="$dir" 686304007ebaSmrg add="-l$name" 686404007ebaSmrg else 686504007ebaSmrg lib_linked=no 686604007ebaSmrg fi 686704007ebaSmrg ;; 686804007ebaSmrg *) lib_linked=no ;; 686904007ebaSmrg esac 687004007ebaSmrg 687104007ebaSmrg if test "$lib_linked" != yes; then 687204007ebaSmrg func_fatal_configuration "unsupported hardcode properties" 687304007ebaSmrg fi 687404007ebaSmrg 687504007ebaSmrg if test -n "$add_shlibpath"; then 687604007ebaSmrg case :$compile_shlibpath: in 687704007ebaSmrg *":$add_shlibpath:"*) ;; 687804007ebaSmrg *) func_append compile_shlibpath "$add_shlibpath:" ;; 687904007ebaSmrg esac 688004007ebaSmrg fi 688104007ebaSmrg if test "$linkmode" = prog; then 688204007ebaSmrg test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" 688304007ebaSmrg test -n "$add" && compile_deplibs="$add $compile_deplibs" 688404007ebaSmrg else 688504007ebaSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 688604007ebaSmrg test -n "$add" && deplibs="$add $deplibs" 688704007ebaSmrg if test "$hardcode_direct" != yes && 688804007ebaSmrg test "$hardcode_minus_L" != yes && 688904007ebaSmrg test "$hardcode_shlibpath_var" = yes; then 689004007ebaSmrg case :$finalize_shlibpath: in 689104007ebaSmrg *":$libdir:"*) ;; 689204007ebaSmrg *) func_append finalize_shlibpath "$libdir:" ;; 689304007ebaSmrg esac 689404007ebaSmrg fi 689504007ebaSmrg fi 689604007ebaSmrg fi 689704007ebaSmrg 689804007ebaSmrg if test "$linkmode" = prog || test "$opt_mode" = relink; then 689904007ebaSmrg add_shlibpath= 690004007ebaSmrg add_dir= 690104007ebaSmrg add= 690204007ebaSmrg # Finalize command for both is simple: just hardcode it. 690304007ebaSmrg if test "$hardcode_direct" = yes && 690404007ebaSmrg test "$hardcode_direct_absolute" = no; then 690504007ebaSmrg add="$libdir/$linklib" 690604007ebaSmrg elif test "$hardcode_minus_L" = yes; then 690704007ebaSmrg add_dir="-L$libdir" 690804007ebaSmrg add="-l$name" 690904007ebaSmrg elif test "$hardcode_shlibpath_var" = yes; then 691004007ebaSmrg case :$finalize_shlibpath: in 691104007ebaSmrg *":$libdir:"*) ;; 691204007ebaSmrg *) func_append finalize_shlibpath "$libdir:" ;; 691304007ebaSmrg esac 691404007ebaSmrg add="-l$name" 691504007ebaSmrg elif test "$hardcode_automatic" = yes; then 691604007ebaSmrg if test -n "$inst_prefix_dir" && 691704007ebaSmrg test -f "$inst_prefix_dir$libdir/$linklib" ; then 691804007ebaSmrg add="$inst_prefix_dir$libdir/$linklib" 691904007ebaSmrg else 692004007ebaSmrg add="$libdir/$linklib" 692104007ebaSmrg fi 692204007ebaSmrg else 692304007ebaSmrg # We cannot seem to hardcode it, guess we'll fake it. 692404007ebaSmrg add_dir="-L$libdir" 692504007ebaSmrg # Try looking first in the location we're being installed to. 692604007ebaSmrg if test -n "$inst_prefix_dir"; then 692704007ebaSmrg case $libdir in 692804007ebaSmrg [\\/]*) 692904007ebaSmrg func_append add_dir " -L$inst_prefix_dir$libdir" 693004007ebaSmrg ;; 693104007ebaSmrg esac 693204007ebaSmrg fi 693304007ebaSmrg add="-l$name" 693404007ebaSmrg fi 693504007ebaSmrg 693604007ebaSmrg if test "$linkmode" = prog; then 693704007ebaSmrg test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" 693804007ebaSmrg test -n "$add" && finalize_deplibs="$add $finalize_deplibs" 693904007ebaSmrg else 694004007ebaSmrg test -n "$add_dir" && deplibs="$add_dir $deplibs" 694104007ebaSmrg test -n "$add" && deplibs="$add $deplibs" 694204007ebaSmrg fi 694304007ebaSmrg fi 694404007ebaSmrg elif test "$linkmode" = prog; then 694504007ebaSmrg # Here we assume that one of hardcode_direct or hardcode_minus_L 694604007ebaSmrg # is not unsupported. This is valid on all known static and 694704007ebaSmrg # shared platforms. 694804007ebaSmrg if test "$hardcode_direct" != unsupported; then 694904007ebaSmrg test -n "$old_library" && linklib="$old_library" 695004007ebaSmrg compile_deplibs="$dir/$linklib $compile_deplibs" 695104007ebaSmrg finalize_deplibs="$dir/$linklib $finalize_deplibs" 695204007ebaSmrg else 695304007ebaSmrg compile_deplibs="-l$name -L$dir $compile_deplibs" 695404007ebaSmrg finalize_deplibs="-l$name -L$dir $finalize_deplibs" 695504007ebaSmrg fi 695604007ebaSmrg elif test "$build_libtool_libs" = yes; then 695704007ebaSmrg # Not a shared library 695804007ebaSmrg if test "$deplibs_check_method" != pass_all; then 695904007ebaSmrg # We're trying link a shared library against a static one 696004007ebaSmrg # but the system doesn't support it. 696104007ebaSmrg 696204007ebaSmrg # Just print a warning and add the library to dependency_libs so 696304007ebaSmrg # that the program can be linked against the static library. 696404007ebaSmrg echo 696504007ebaSmrg $ECHO "*** Warning: This system can not link to static lib archive $lib." 696604007ebaSmrg echo "*** I have the capability to make that library automatically link in when" 696704007ebaSmrg echo "*** you link to this library. But I can only do this if you have a" 696804007ebaSmrg echo "*** shared version of the library, which you do not appear to have." 696904007ebaSmrg if test "$module" = yes; then 697004007ebaSmrg echo "*** But as you try to build a module library, libtool will still create " 697104007ebaSmrg echo "*** a static module, that should work as long as the dlopening application" 697204007ebaSmrg echo "*** is linked with the -dlopen flag to resolve symbols at runtime." 697304007ebaSmrg if test -z "$global_symbol_pipe"; then 697404007ebaSmrg echo 697504007ebaSmrg echo "*** However, this would only work if libtool was able to extract symbol" 697604007ebaSmrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 697704007ebaSmrg echo "*** not find such a program. So, this module is probably useless." 697804007ebaSmrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 697904007ebaSmrg fi 698004007ebaSmrg if test "$build_old_libs" = no; then 698104007ebaSmrg build_libtool_libs=module 698204007ebaSmrg build_old_libs=yes 698304007ebaSmrg else 698404007ebaSmrg build_libtool_libs=no 698504007ebaSmrg fi 698604007ebaSmrg fi 698704007ebaSmrg else 698804007ebaSmrg deplibs="$dir/$old_library $deplibs" 698904007ebaSmrg link_static=yes 699004007ebaSmrg fi 699104007ebaSmrg fi # link shared/static library? 699204007ebaSmrg 699304007ebaSmrg if test "$linkmode" = lib; then 699404007ebaSmrg if test -n "$dependency_libs" && 699504007ebaSmrg { test "$hardcode_into_libs" != yes || 699604007ebaSmrg test "$build_old_libs" = yes || 699704007ebaSmrg test "$link_static" = yes; }; then 699804007ebaSmrg # Extract -R from dependency_libs 699904007ebaSmrg temp_deplibs= 700004007ebaSmrg for libdir in $dependency_libs; do 700104007ebaSmrg case $libdir in 700204007ebaSmrg -R*) func_stripname '-R' '' "$libdir" 700304007ebaSmrg temp_xrpath=$func_stripname_result 700404007ebaSmrg case " $xrpath " in 700504007ebaSmrg *" $temp_xrpath "*) ;; 700604007ebaSmrg *) func_append xrpath " $temp_xrpath";; 700704007ebaSmrg esac;; 700804007ebaSmrg *) func_append temp_deplibs " $libdir";; 700904007ebaSmrg esac 701004007ebaSmrg done 701104007ebaSmrg dependency_libs="$temp_deplibs" 701204007ebaSmrg fi 701304007ebaSmrg 701404007ebaSmrg func_append newlib_search_path " $absdir" 701504007ebaSmrg # Link against this library 701604007ebaSmrg test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" 701704007ebaSmrg # ... and its dependency_libs 701804007ebaSmrg tmp_libs= 701904007ebaSmrg for deplib in $dependency_libs; do 702004007ebaSmrg newdependency_libs="$deplib $newdependency_libs" 702104007ebaSmrg case $deplib in 702204007ebaSmrg -L*) func_stripname '-L' '' "$deplib" 702304007ebaSmrg func_resolve_sysroot "$func_stripname_result";; 702404007ebaSmrg *) func_resolve_sysroot "$deplib" ;; 702504007ebaSmrg esac 702604007ebaSmrg if $opt_preserve_dup_deps ; then 702704007ebaSmrg case "$tmp_libs " in 702804007ebaSmrg *" $func_resolve_sysroot_result "*) 702904007ebaSmrg func_append specialdeplibs " $func_resolve_sysroot_result" ;; 703004007ebaSmrg esac 703104007ebaSmrg fi 703204007ebaSmrg func_append tmp_libs " $func_resolve_sysroot_result" 703304007ebaSmrg done 703404007ebaSmrg 703504007ebaSmrg if test "$link_all_deplibs" != no; then 703604007ebaSmrg # Add the search paths of all dependency libraries 703704007ebaSmrg for deplib in $dependency_libs; do 703804007ebaSmrg path= 703904007ebaSmrg case $deplib in 704004007ebaSmrg -L*) path="$deplib" ;; 704104007ebaSmrg *.la) 704204007ebaSmrg func_resolve_sysroot "$deplib" 704304007ebaSmrg deplib=$func_resolve_sysroot_result 704404007ebaSmrg func_dirname "$deplib" "" "." 704504007ebaSmrg dir=$func_dirname_result 704604007ebaSmrg # We need an absolute path. 704704007ebaSmrg case $dir in 704804007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; 704904007ebaSmrg *) 705004007ebaSmrg absdir=`cd "$dir" && pwd` 705104007ebaSmrg if test -z "$absdir"; then 705204007ebaSmrg func_warning "cannot determine absolute directory name of \`$dir'" 705304007ebaSmrg absdir="$dir" 705404007ebaSmrg fi 705504007ebaSmrg ;; 705604007ebaSmrg esac 705704007ebaSmrg if $GREP "^installed=no" $deplib > /dev/null; then 705804007ebaSmrg case $host in 705904007ebaSmrg *-*-darwin*) 706004007ebaSmrg depdepl= 706104007ebaSmrg eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` 706204007ebaSmrg if test -n "$deplibrary_names" ; then 706304007ebaSmrg for tmp in $deplibrary_names ; do 706404007ebaSmrg depdepl=$tmp 706504007ebaSmrg done 706604007ebaSmrg if test -f "$absdir/$objdir/$depdepl" ; then 706704007ebaSmrg depdepl="$absdir/$objdir/$depdepl" 706804007ebaSmrg darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 706904007ebaSmrg if test -z "$darwin_install_name"; then 707004007ebaSmrg darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` 707104007ebaSmrg fi 707204007ebaSmrg func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" 707304007ebaSmrg func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" 707404007ebaSmrg path= 707504007ebaSmrg fi 707604007ebaSmrg fi 707704007ebaSmrg ;; 707804007ebaSmrg *) 707904007ebaSmrg path="-L$absdir/$objdir" 708004007ebaSmrg ;; 708104007ebaSmrg esac 708204007ebaSmrg else 708304007ebaSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` 708404007ebaSmrg test -z "$libdir" && \ 708504007ebaSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 708604007ebaSmrg test "$absdir" != "$libdir" && \ 708704007ebaSmrg func_warning "\`$deplib' seems to be moved" 708804007ebaSmrg 708904007ebaSmrg path="-L$absdir" 709004007ebaSmrg fi 709104007ebaSmrg ;; 709204007ebaSmrg esac 709304007ebaSmrg case " $deplibs " in 709404007ebaSmrg *" $path "*) ;; 709504007ebaSmrg *) deplibs="$path $deplibs" ;; 709604007ebaSmrg esac 709704007ebaSmrg done 709804007ebaSmrg fi # link_all_deplibs != no 709904007ebaSmrg fi # linkmode = lib 710004007ebaSmrg done # for deplib in $libs 710104007ebaSmrg if test "$pass" = link; then 710204007ebaSmrg if test "$linkmode" = "prog"; then 710304007ebaSmrg compile_deplibs="$new_inherited_linker_flags $compile_deplibs" 710404007ebaSmrg finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" 710504007ebaSmrg else 710604007ebaSmrg compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 710704007ebaSmrg fi 710804007ebaSmrg fi 710904007ebaSmrg dependency_libs="$newdependency_libs" 711004007ebaSmrg if test "$pass" = dlpreopen; then 711104007ebaSmrg # Link the dlpreopened libraries before other libraries 711204007ebaSmrg for deplib in $save_deplibs; do 711304007ebaSmrg deplibs="$deplib $deplibs" 711404007ebaSmrg done 711504007ebaSmrg fi 711604007ebaSmrg if test "$pass" != dlopen; then 711704007ebaSmrg if test "$pass" != conv; then 711804007ebaSmrg # Make sure lib_search_path contains only unique directories. 711904007ebaSmrg lib_search_path= 712004007ebaSmrg for dir in $newlib_search_path; do 712104007ebaSmrg case "$lib_search_path " in 712204007ebaSmrg *" $dir "*) ;; 712304007ebaSmrg *) func_append lib_search_path " $dir" ;; 712404007ebaSmrg esac 712504007ebaSmrg done 712604007ebaSmrg newlib_search_path= 712704007ebaSmrg fi 712804007ebaSmrg 712904007ebaSmrg if test "$linkmode,$pass" != "prog,link"; then 713004007ebaSmrg vars="deplibs" 713104007ebaSmrg else 713204007ebaSmrg vars="compile_deplibs finalize_deplibs" 713304007ebaSmrg fi 713404007ebaSmrg for var in $vars dependency_libs; do 713504007ebaSmrg # Add libraries to $var in reverse order 713604007ebaSmrg eval tmp_libs=\"\$$var\" 713704007ebaSmrg new_libs= 713804007ebaSmrg for deplib in $tmp_libs; do 713904007ebaSmrg # FIXME: Pedantically, this is the right thing to do, so 714004007ebaSmrg # that some nasty dependency loop isn't accidentally 714104007ebaSmrg # broken: 714204007ebaSmrg #new_libs="$deplib $new_libs" 714304007ebaSmrg # Pragmatically, this seems to cause very few problems in 714404007ebaSmrg # practice: 714504007ebaSmrg case $deplib in 714604007ebaSmrg -L*) new_libs="$deplib $new_libs" ;; 714704007ebaSmrg -R*) ;; 714804007ebaSmrg *) 714904007ebaSmrg # And here is the reason: when a library appears more 715004007ebaSmrg # than once as an explicit dependence of a library, or 715104007ebaSmrg # is implicitly linked in more than once by the 715204007ebaSmrg # compiler, it is considered special, and multiple 715304007ebaSmrg # occurrences thereof are not removed. Compare this 715404007ebaSmrg # with having the same library being listed as a 715504007ebaSmrg # dependency of multiple other libraries: in this case, 715604007ebaSmrg # we know (pedantically, we assume) the library does not 715704007ebaSmrg # need to be listed more than once, so we keep only the 715804007ebaSmrg # last copy. This is not always right, but it is rare 715904007ebaSmrg # enough that we require users that really mean to play 716004007ebaSmrg # such unportable linking tricks to link the library 716104007ebaSmrg # using -Wl,-lname, so that libtool does not consider it 716204007ebaSmrg # for duplicate removal. 716304007ebaSmrg case " $specialdeplibs " in 716404007ebaSmrg *" $deplib "*) new_libs="$deplib $new_libs" ;; 716504007ebaSmrg *) 716604007ebaSmrg case " $new_libs " in 716704007ebaSmrg *" $deplib "*) ;; 716804007ebaSmrg *) new_libs="$deplib $new_libs" ;; 716904007ebaSmrg esac 717004007ebaSmrg ;; 717104007ebaSmrg esac 717204007ebaSmrg ;; 717304007ebaSmrg esac 717404007ebaSmrg done 717504007ebaSmrg tmp_libs= 717604007ebaSmrg for deplib in $new_libs; do 717704007ebaSmrg case $deplib in 717804007ebaSmrg -L*) 717904007ebaSmrg case " $tmp_libs " in 718004007ebaSmrg *" $deplib "*) ;; 718104007ebaSmrg *) func_append tmp_libs " $deplib" ;; 718204007ebaSmrg esac 718304007ebaSmrg ;; 718404007ebaSmrg *) func_append tmp_libs " $deplib" ;; 718504007ebaSmrg esac 718604007ebaSmrg done 718704007ebaSmrg eval $var=\"$tmp_libs\" 718804007ebaSmrg done # for var 718904007ebaSmrg fi 719004007ebaSmrg # Last step: remove runtime libs from dependency_libs 719104007ebaSmrg # (they stay in deplibs) 719204007ebaSmrg tmp_libs= 719304007ebaSmrg for i in $dependency_libs ; do 719404007ebaSmrg case " $predeps $postdeps $compiler_lib_search_path " in 719504007ebaSmrg *" $i "*) 719604007ebaSmrg i="" 719704007ebaSmrg ;; 719804007ebaSmrg esac 719904007ebaSmrg if test -n "$i" ; then 720004007ebaSmrg func_append tmp_libs " $i" 720104007ebaSmrg fi 720204007ebaSmrg done 720304007ebaSmrg dependency_libs=$tmp_libs 720404007ebaSmrg done # for pass 720504007ebaSmrg if test "$linkmode" = prog; then 720604007ebaSmrg dlfiles="$newdlfiles" 720704007ebaSmrg fi 720804007ebaSmrg if test "$linkmode" = prog || test "$linkmode" = lib; then 720904007ebaSmrg dlprefiles="$newdlprefiles" 721004007ebaSmrg fi 721104007ebaSmrg 721204007ebaSmrg case $linkmode in 721304007ebaSmrg oldlib) 721404007ebaSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 721504007ebaSmrg func_warning "\`-dlopen' is ignored for archives" 721604007ebaSmrg fi 721704007ebaSmrg 721804007ebaSmrg case " $deplibs" in 721904007ebaSmrg *\ -l* | *\ -L*) 722004007ebaSmrg func_warning "\`-l' and \`-L' are ignored for archives" ;; 722104007ebaSmrg esac 722204007ebaSmrg 722304007ebaSmrg test -n "$rpath" && \ 722404007ebaSmrg func_warning "\`-rpath' is ignored for archives" 722504007ebaSmrg 722604007ebaSmrg test -n "$xrpath" && \ 722704007ebaSmrg func_warning "\`-R' is ignored for archives" 722804007ebaSmrg 722904007ebaSmrg test -n "$vinfo" && \ 723004007ebaSmrg func_warning "\`-version-info/-version-number' is ignored for archives" 723104007ebaSmrg 723204007ebaSmrg test -n "$release" && \ 723304007ebaSmrg func_warning "\`-release' is ignored for archives" 723404007ebaSmrg 723504007ebaSmrg test -n "$export_symbols$export_symbols_regex" && \ 723604007ebaSmrg func_warning "\`-export-symbols' is ignored for archives" 723704007ebaSmrg 723804007ebaSmrg # Now set the variables for building old libraries. 723904007ebaSmrg build_libtool_libs=no 724004007ebaSmrg oldlibs="$output" 724104007ebaSmrg func_append objs "$old_deplibs" 724204007ebaSmrg ;; 724304007ebaSmrg 724404007ebaSmrg lib) 724504007ebaSmrg # Make sure we only generate libraries of the form `libNAME.la'. 724604007ebaSmrg case $outputname in 724704007ebaSmrg lib*) 724804007ebaSmrg func_stripname 'lib' '.la' "$outputname" 724904007ebaSmrg name=$func_stripname_result 725004007ebaSmrg eval shared_ext=\"$shrext_cmds\" 725104007ebaSmrg eval libname=\"$libname_spec\" 725204007ebaSmrg ;; 725304007ebaSmrg *) 725404007ebaSmrg test "$module" = no && \ 725504007ebaSmrg func_fatal_help "libtool library \`$output' must begin with \`lib'" 725604007ebaSmrg 725704007ebaSmrg if test "$need_lib_prefix" != no; then 725804007ebaSmrg # Add the "lib" prefix for modules if required 725904007ebaSmrg func_stripname '' '.la' "$outputname" 726004007ebaSmrg name=$func_stripname_result 726104007ebaSmrg eval shared_ext=\"$shrext_cmds\" 726204007ebaSmrg eval libname=\"$libname_spec\" 726304007ebaSmrg else 726404007ebaSmrg func_stripname '' '.la' "$outputname" 726504007ebaSmrg libname=$func_stripname_result 726604007ebaSmrg fi 726704007ebaSmrg ;; 726804007ebaSmrg esac 726904007ebaSmrg 727004007ebaSmrg if test -n "$objs"; then 727104007ebaSmrg if test "$deplibs_check_method" != pass_all; then 727204007ebaSmrg func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 727304007ebaSmrg else 727404007ebaSmrg echo 727504007ebaSmrg $ECHO "*** Warning: Linking the shared library $output against the non-libtool" 727604007ebaSmrg $ECHO "*** objects $objs is not portable!" 727704007ebaSmrg func_append libobjs " $objs" 727804007ebaSmrg fi 727904007ebaSmrg fi 728004007ebaSmrg 728104007ebaSmrg test "$dlself" != no && \ 728204007ebaSmrg func_warning "\`-dlopen self' is ignored for libtool libraries" 728304007ebaSmrg 728404007ebaSmrg set dummy $rpath 728504007ebaSmrg shift 728604007ebaSmrg test "$#" -gt 1 && \ 728704007ebaSmrg func_warning "ignoring multiple \`-rpath's for a libtool library" 728804007ebaSmrg 728904007ebaSmrg install_libdir="$1" 729004007ebaSmrg 729104007ebaSmrg oldlibs= 729204007ebaSmrg if test -z "$rpath"; then 729304007ebaSmrg if test "$build_libtool_libs" = yes; then 729404007ebaSmrg # Building a libtool convenience library. 729504007ebaSmrg # Some compilers have problems with a `.al' extension so 729604007ebaSmrg # convenience libraries should have the same extension an 729704007ebaSmrg # archive normally would. 729804007ebaSmrg oldlibs="$output_objdir/$libname.$libext $oldlibs" 729904007ebaSmrg build_libtool_libs=convenience 730004007ebaSmrg build_old_libs=yes 730104007ebaSmrg fi 730204007ebaSmrg 730304007ebaSmrg test -n "$vinfo" && \ 730404007ebaSmrg func_warning "\`-version-info/-version-number' is ignored for convenience libraries" 730504007ebaSmrg 730604007ebaSmrg test -n "$release" && \ 730704007ebaSmrg func_warning "\`-release' is ignored for convenience libraries" 730804007ebaSmrg else 730904007ebaSmrg 731004007ebaSmrg # Parse the version information argument. 731104007ebaSmrg save_ifs="$IFS"; IFS=':' 731204007ebaSmrg set dummy $vinfo 0 0 0 731304007ebaSmrg shift 731404007ebaSmrg IFS="$save_ifs" 731504007ebaSmrg 731604007ebaSmrg test -n "$7" && \ 731704007ebaSmrg func_fatal_help "too many parameters to \`-version-info'" 731804007ebaSmrg 731904007ebaSmrg # convert absolute version numbers to libtool ages 732004007ebaSmrg # this retains compatibility with .la files and attempts 732104007ebaSmrg # to make the code below a bit more comprehensible 732204007ebaSmrg 732304007ebaSmrg case $vinfo_number in 732404007ebaSmrg yes) 732504007ebaSmrg number_major="$1" 732604007ebaSmrg number_minor="$2" 732704007ebaSmrg number_revision="$3" 732804007ebaSmrg # 732904007ebaSmrg # There are really only two kinds -- those that 733004007ebaSmrg # use the current revision as the major version 733104007ebaSmrg # and those that subtract age and use age as 733204007ebaSmrg # a minor version. But, then there is irix 733304007ebaSmrg # which has an extra 1 added just for fun 733404007ebaSmrg # 733504007ebaSmrg case $version_type in 733604007ebaSmrg # correct linux to gnu/linux during the next big refactor 733704007ebaSmrg darwin|linux|osf|windows|none) 733804007ebaSmrg func_arith $number_major + $number_minor 733904007ebaSmrg current=$func_arith_result 734004007ebaSmrg age="$number_minor" 734104007ebaSmrg revision="$number_revision" 734204007ebaSmrg ;; 734304007ebaSmrg freebsd-aout|freebsd-elf|qnx|sunos) 734404007ebaSmrg current="$number_major" 734504007ebaSmrg revision="$number_minor" 734604007ebaSmrg age="0" 734704007ebaSmrg ;; 734804007ebaSmrg irix|nonstopux) 734904007ebaSmrg func_arith $number_major + $number_minor 735004007ebaSmrg current=$func_arith_result 735104007ebaSmrg age="$number_minor" 735204007ebaSmrg revision="$number_minor" 735304007ebaSmrg lt_irix_increment=no 735404007ebaSmrg ;; 735504007ebaSmrg *) 735604007ebaSmrg func_fatal_configuration "$modename: unknown library version type \`$version_type'" 735704007ebaSmrg ;; 735804007ebaSmrg esac 735904007ebaSmrg ;; 736004007ebaSmrg no) 736104007ebaSmrg current="$1" 736204007ebaSmrg revision="$2" 736304007ebaSmrg age="$3" 736404007ebaSmrg ;; 736504007ebaSmrg esac 736604007ebaSmrg 736704007ebaSmrg # Check that each of the things are valid numbers. 736804007ebaSmrg case $current in 736904007ebaSmrg 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]) ;; 737004007ebaSmrg *) 737104007ebaSmrg func_error "CURRENT \`$current' must be a nonnegative integer" 737204007ebaSmrg func_fatal_error "\`$vinfo' is not valid version information" 737304007ebaSmrg ;; 737404007ebaSmrg esac 737504007ebaSmrg 737604007ebaSmrg case $revision in 737704007ebaSmrg 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]) ;; 737804007ebaSmrg *) 737904007ebaSmrg func_error "REVISION \`$revision' must be a nonnegative integer" 738004007ebaSmrg func_fatal_error "\`$vinfo' is not valid version information" 738104007ebaSmrg ;; 738204007ebaSmrg esac 738304007ebaSmrg 738404007ebaSmrg case $age in 738504007ebaSmrg 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]) ;; 738604007ebaSmrg *) 738704007ebaSmrg func_error "AGE \`$age' must be a nonnegative integer" 738804007ebaSmrg func_fatal_error "\`$vinfo' is not valid version information" 738904007ebaSmrg ;; 739004007ebaSmrg esac 739104007ebaSmrg 739204007ebaSmrg if test "$age" -gt "$current"; then 739304007ebaSmrg func_error "AGE \`$age' is greater than the current interface number \`$current'" 739404007ebaSmrg func_fatal_error "\`$vinfo' is not valid version information" 739504007ebaSmrg fi 739604007ebaSmrg 739704007ebaSmrg # Calculate the version variables. 739804007ebaSmrg major= 739904007ebaSmrg versuffix= 740004007ebaSmrg verstring= 740104007ebaSmrg case $version_type in 740204007ebaSmrg none) ;; 740304007ebaSmrg 740404007ebaSmrg darwin) 740504007ebaSmrg # Like Linux, but with the current version available in 740604007ebaSmrg # verstring for coding it into the library header 740704007ebaSmrg func_arith $current - $age 740804007ebaSmrg major=.$func_arith_result 740904007ebaSmrg versuffix="$major.$age.$revision" 741004007ebaSmrg # Darwin ld doesn't like 0 for these options... 741104007ebaSmrg func_arith $current + 1 741204007ebaSmrg minor_current=$func_arith_result 741304007ebaSmrg xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" 741404007ebaSmrg verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" 741504007ebaSmrg ;; 741604007ebaSmrg 741704007ebaSmrg freebsd-aout) 741804007ebaSmrg major=".$current" 741904007ebaSmrg versuffix=".$current.$revision"; 742004007ebaSmrg ;; 742104007ebaSmrg 742204007ebaSmrg freebsd-elf) 742304007ebaSmrg major=".$current" 742404007ebaSmrg versuffix=".$current" 742504007ebaSmrg ;; 742604007ebaSmrg 742704007ebaSmrg irix | nonstopux) 742804007ebaSmrg if test "X$lt_irix_increment" = "Xno"; then 742904007ebaSmrg func_arith $current - $age 743004007ebaSmrg else 743104007ebaSmrg func_arith $current - $age + 1 743204007ebaSmrg fi 743304007ebaSmrg major=$func_arith_result 743404007ebaSmrg 743504007ebaSmrg case $version_type in 743604007ebaSmrg nonstopux) verstring_prefix=nonstopux ;; 743704007ebaSmrg *) verstring_prefix=sgi ;; 743804007ebaSmrg esac 743904007ebaSmrg verstring="$verstring_prefix$major.$revision" 744004007ebaSmrg 744104007ebaSmrg # Add in all the interfaces that we are compatible with. 744204007ebaSmrg loop=$revision 744304007ebaSmrg while test "$loop" -ne 0; do 744404007ebaSmrg func_arith $revision - $loop 744504007ebaSmrg iface=$func_arith_result 744604007ebaSmrg func_arith $loop - 1 744704007ebaSmrg loop=$func_arith_result 744804007ebaSmrg verstring="$verstring_prefix$major.$iface:$verstring" 744904007ebaSmrg done 745004007ebaSmrg 745104007ebaSmrg # Before this point, $major must not contain `.'. 745204007ebaSmrg major=.$major 745304007ebaSmrg versuffix="$major.$revision" 745404007ebaSmrg ;; 745504007ebaSmrg 745604007ebaSmrg linux) # correct to gnu/linux during the next big refactor 745704007ebaSmrg func_arith $current - $age 745804007ebaSmrg major=.$func_arith_result 745904007ebaSmrg versuffix="$major.$age.$revision" 746004007ebaSmrg ;; 746104007ebaSmrg 746204007ebaSmrg osf) 746304007ebaSmrg func_arith $current - $age 746404007ebaSmrg major=.$func_arith_result 746504007ebaSmrg versuffix=".$current.$age.$revision" 746604007ebaSmrg verstring="$current.$age.$revision" 746704007ebaSmrg 746804007ebaSmrg # Add in all the interfaces that we are compatible with. 746904007ebaSmrg loop=$age 747004007ebaSmrg while test "$loop" -ne 0; do 747104007ebaSmrg func_arith $current - $loop 747204007ebaSmrg iface=$func_arith_result 747304007ebaSmrg func_arith $loop - 1 747404007ebaSmrg loop=$func_arith_result 747504007ebaSmrg verstring="$verstring:${iface}.0" 747604007ebaSmrg done 747704007ebaSmrg 747804007ebaSmrg # Make executables depend on our current version. 747904007ebaSmrg func_append verstring ":${current}.0" 748004007ebaSmrg ;; 748104007ebaSmrg 748204007ebaSmrg qnx) 748304007ebaSmrg major=".$current" 748404007ebaSmrg versuffix=".$current" 748504007ebaSmrg ;; 748604007ebaSmrg 748704007ebaSmrg sunos) 748804007ebaSmrg major=".$current" 748904007ebaSmrg versuffix=".$current.$revision" 749004007ebaSmrg ;; 749104007ebaSmrg 749204007ebaSmrg windows) 749304007ebaSmrg # Use '-' rather than '.', since we only want one 749404007ebaSmrg # extension on DOS 8.3 filesystems. 749504007ebaSmrg func_arith $current - $age 749604007ebaSmrg major=$func_arith_result 749704007ebaSmrg versuffix="-$major" 749804007ebaSmrg ;; 749904007ebaSmrg 750004007ebaSmrg *) 750104007ebaSmrg func_fatal_configuration "unknown library version type \`$version_type'" 750204007ebaSmrg ;; 750304007ebaSmrg esac 750404007ebaSmrg 750504007ebaSmrg # Clear the version info if we defaulted, and they specified a release. 750604007ebaSmrg if test -z "$vinfo" && test -n "$release"; then 750704007ebaSmrg major= 750804007ebaSmrg case $version_type in 750904007ebaSmrg darwin) 751004007ebaSmrg # we can't check for "0.0" in archive_cmds due to quoting 751104007ebaSmrg # problems, so we reset it completely 751204007ebaSmrg verstring= 751304007ebaSmrg ;; 751404007ebaSmrg *) 751504007ebaSmrg verstring="0.0" 751604007ebaSmrg ;; 751704007ebaSmrg esac 751804007ebaSmrg if test "$need_version" = no; then 751904007ebaSmrg versuffix= 752004007ebaSmrg else 752104007ebaSmrg versuffix=".0.0" 752204007ebaSmrg fi 752304007ebaSmrg fi 752404007ebaSmrg 752504007ebaSmrg # Remove version info from name if versioning should be avoided 752604007ebaSmrg if test "$avoid_version" = yes && test "$need_version" = no; then 752704007ebaSmrg major= 752804007ebaSmrg versuffix= 752904007ebaSmrg verstring="" 753004007ebaSmrg fi 753104007ebaSmrg 753204007ebaSmrg # Check to see if the archive will have undefined symbols. 753304007ebaSmrg if test "$allow_undefined" = yes; then 753404007ebaSmrg if test "$allow_undefined_flag" = unsupported; then 753504007ebaSmrg func_warning "undefined symbols not allowed in $host shared libraries" 753604007ebaSmrg build_libtool_libs=no 753704007ebaSmrg build_old_libs=yes 753804007ebaSmrg fi 753904007ebaSmrg else 754004007ebaSmrg # Don't allow undefined symbols. 754104007ebaSmrg allow_undefined_flag="$no_undefined_flag" 754204007ebaSmrg fi 754304007ebaSmrg 754404007ebaSmrg fi 754504007ebaSmrg 754604007ebaSmrg func_generate_dlsyms "$libname" "$libname" "yes" 754704007ebaSmrg func_append libobjs " $symfileobj" 754804007ebaSmrg test "X$libobjs" = "X " && libobjs= 754904007ebaSmrg 755004007ebaSmrg if test "$opt_mode" != relink; then 755104007ebaSmrg # Remove our outputs, but don't remove object files since they 755204007ebaSmrg # may have been created when compiling PIC objects. 755304007ebaSmrg removelist= 755404007ebaSmrg tempremovelist=`$ECHO "$output_objdir/*"` 755504007ebaSmrg for p in $tempremovelist; do 755604007ebaSmrg case $p in 755704007ebaSmrg *.$objext | *.gcno) 755804007ebaSmrg ;; 755904007ebaSmrg $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) 756004007ebaSmrg if test "X$precious_files_regex" != "X"; then 756104007ebaSmrg if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 756204007ebaSmrg then 756304007ebaSmrg continue 756404007ebaSmrg fi 756504007ebaSmrg fi 756604007ebaSmrg func_append removelist " $p" 756704007ebaSmrg ;; 756804007ebaSmrg *) ;; 756904007ebaSmrg esac 757004007ebaSmrg done 757104007ebaSmrg test -n "$removelist" && \ 757204007ebaSmrg func_show_eval "${RM}r \$removelist" 757304007ebaSmrg fi 757404007ebaSmrg 757504007ebaSmrg # Now set the variables for building old libraries. 757604007ebaSmrg if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then 757704007ebaSmrg func_append oldlibs " $output_objdir/$libname.$libext" 757804007ebaSmrg 757904007ebaSmrg # Transform .lo files to .o files. 758004007ebaSmrg oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` 758104007ebaSmrg fi 758204007ebaSmrg 758304007ebaSmrg # Eliminate all temporary directories. 758404007ebaSmrg #for path in $notinst_path; do 758504007ebaSmrg # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` 758604007ebaSmrg # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` 758704007ebaSmrg # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` 758804007ebaSmrg #done 758904007ebaSmrg 759004007ebaSmrg if test -n "$xrpath"; then 759104007ebaSmrg # If the user specified any rpath flags, then add them. 759204007ebaSmrg temp_xrpath= 759304007ebaSmrg for libdir in $xrpath; do 759404007ebaSmrg func_replace_sysroot "$libdir" 759504007ebaSmrg func_append temp_xrpath " -R$func_replace_sysroot_result" 759604007ebaSmrg case "$finalize_rpath " in 759704007ebaSmrg *" $libdir "*) ;; 759804007ebaSmrg *) func_append finalize_rpath " $libdir" ;; 759904007ebaSmrg esac 760004007ebaSmrg done 760104007ebaSmrg if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then 760204007ebaSmrg dependency_libs="$temp_xrpath $dependency_libs" 760304007ebaSmrg fi 760404007ebaSmrg fi 760504007ebaSmrg 760604007ebaSmrg # Make sure dlfiles contains only unique files that won't be dlpreopened 760704007ebaSmrg old_dlfiles="$dlfiles" 760804007ebaSmrg dlfiles= 760904007ebaSmrg for lib in $old_dlfiles; do 761004007ebaSmrg case " $dlprefiles $dlfiles " in 761104007ebaSmrg *" $lib "*) ;; 761204007ebaSmrg *) func_append dlfiles " $lib" ;; 761304007ebaSmrg esac 761404007ebaSmrg done 761504007ebaSmrg 761604007ebaSmrg # Make sure dlprefiles contains only unique files 761704007ebaSmrg old_dlprefiles="$dlprefiles" 761804007ebaSmrg dlprefiles= 761904007ebaSmrg for lib in $old_dlprefiles; do 762004007ebaSmrg case "$dlprefiles " in 762104007ebaSmrg *" $lib "*) ;; 762204007ebaSmrg *) func_append dlprefiles " $lib" ;; 762304007ebaSmrg esac 762404007ebaSmrg done 762504007ebaSmrg 762604007ebaSmrg if test "$build_libtool_libs" = yes; then 762704007ebaSmrg if test -n "$rpath"; then 762804007ebaSmrg case $host in 762904007ebaSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) 763004007ebaSmrg # these systems don't actually have a c library (as such)! 763104007ebaSmrg ;; 763204007ebaSmrg *-*-rhapsody* | *-*-darwin1.[012]) 763304007ebaSmrg # Rhapsody C library is in the System framework 763404007ebaSmrg func_append deplibs " System.ltframework" 763504007ebaSmrg ;; 763604007ebaSmrg *-*-netbsd*) 763704007ebaSmrg # Don't link with libc until the a.out ld.so is fixed. 763804007ebaSmrg ;; 763904007ebaSmrg *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) 764004007ebaSmrg # Do not include libc due to us having libc/libc_r. 764104007ebaSmrg ;; 764204007ebaSmrg *-*-sco3.2v5* | *-*-sco5v6*) 764304007ebaSmrg # Causes problems with __ctype 764404007ebaSmrg ;; 764504007ebaSmrg *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) 764604007ebaSmrg # Compiler inserts libc in the correct place for threads to work 764704007ebaSmrg ;; 764804007ebaSmrg *) 764904007ebaSmrg # Add libc to deplibs on all other systems if necessary. 765004007ebaSmrg if test "$build_libtool_need_lc" = "yes"; then 765104007ebaSmrg func_append deplibs " -lc" 765204007ebaSmrg fi 765304007ebaSmrg ;; 765404007ebaSmrg esac 765504007ebaSmrg fi 765604007ebaSmrg 765704007ebaSmrg # Transform deplibs into only deplibs that can be linked in shared. 765804007ebaSmrg name_save=$name 765904007ebaSmrg libname_save=$libname 766004007ebaSmrg release_save=$release 766104007ebaSmrg versuffix_save=$versuffix 766204007ebaSmrg major_save=$major 766304007ebaSmrg # I'm not sure if I'm treating the release correctly. I think 766404007ebaSmrg # release should show up in the -l (ie -lgmp5) so we don't want to 766504007ebaSmrg # add it in twice. Is that correct? 766604007ebaSmrg release="" 766704007ebaSmrg versuffix="" 766804007ebaSmrg major="" 766904007ebaSmrg newdeplibs= 767004007ebaSmrg droppeddeps=no 767104007ebaSmrg case $deplibs_check_method in 767204007ebaSmrg pass_all) 767304007ebaSmrg # Don't check for shared/static. Everything works. 767404007ebaSmrg # This might be a little naive. We might want to check 767504007ebaSmrg # whether the library exists or not. But this is on 767604007ebaSmrg # osf3 & osf4 and I'm not really sure... Just 767704007ebaSmrg # implementing what was already the behavior. 767804007ebaSmrg newdeplibs=$deplibs 767904007ebaSmrg ;; 768004007ebaSmrg test_compile) 768104007ebaSmrg # This code stresses the "libraries are programs" paradigm to its 768204007ebaSmrg # limits. Maybe even breaks it. We compile a program, linking it 768304007ebaSmrg # against the deplibs as a proxy for the library. Then we can check 768404007ebaSmrg # whether they linked in statically or dynamically with ldd. 768504007ebaSmrg $opt_dry_run || $RM conftest.c 768604007ebaSmrg cat > conftest.c <<EOF 768704007ebaSmrg int main() { return 0; } 768804007ebaSmrgEOF 768904007ebaSmrg $opt_dry_run || $RM conftest 769004007ebaSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then 769104007ebaSmrg ldd_output=`ldd conftest` 769204007ebaSmrg for i in $deplibs; do 769304007ebaSmrg case $i in 769404007ebaSmrg -l*) 769504007ebaSmrg func_stripname -l '' "$i" 769604007ebaSmrg name=$func_stripname_result 769704007ebaSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 769804007ebaSmrg case " $predeps $postdeps " in 769904007ebaSmrg *" $i "*) 770004007ebaSmrg func_append newdeplibs " $i" 770104007ebaSmrg i="" 770204007ebaSmrg ;; 770304007ebaSmrg esac 770404007ebaSmrg fi 770504007ebaSmrg if test -n "$i" ; then 770604007ebaSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 770704007ebaSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 770804007ebaSmrg set dummy $deplib_matches; shift 770904007ebaSmrg deplib_match=$1 771004007ebaSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 771104007ebaSmrg func_append newdeplibs " $i" 771204007ebaSmrg else 771304007ebaSmrg droppeddeps=yes 771404007ebaSmrg echo 771504007ebaSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 771604007ebaSmrg echo "*** I have the capability to make that library automatically link in when" 771704007ebaSmrg echo "*** you link to this library. But I can only do this if you have a" 771804007ebaSmrg echo "*** shared version of the library, which I believe you do not have" 771904007ebaSmrg echo "*** because a test_compile did reveal that the linker did not use it for" 772004007ebaSmrg echo "*** its dynamic dependency list that programs get resolved with at runtime." 772104007ebaSmrg fi 772204007ebaSmrg fi 772304007ebaSmrg ;; 772404007ebaSmrg *) 772504007ebaSmrg func_append newdeplibs " $i" 772604007ebaSmrg ;; 772704007ebaSmrg esac 772804007ebaSmrg done 772904007ebaSmrg else 773004007ebaSmrg # Error occurred in the first compile. Let's try to salvage 773104007ebaSmrg # the situation: Compile a separate program for each library. 773204007ebaSmrg for i in $deplibs; do 773304007ebaSmrg case $i in 773404007ebaSmrg -l*) 773504007ebaSmrg func_stripname -l '' "$i" 773604007ebaSmrg name=$func_stripname_result 773704007ebaSmrg $opt_dry_run || $RM conftest 773804007ebaSmrg if $LTCC $LTCFLAGS -o conftest conftest.c $i; then 773904007ebaSmrg ldd_output=`ldd conftest` 774004007ebaSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 774104007ebaSmrg case " $predeps $postdeps " in 774204007ebaSmrg *" $i "*) 774304007ebaSmrg func_append newdeplibs " $i" 774404007ebaSmrg i="" 774504007ebaSmrg ;; 774604007ebaSmrg esac 774704007ebaSmrg fi 774804007ebaSmrg if test -n "$i" ; then 774904007ebaSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 775004007ebaSmrg deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` 775104007ebaSmrg set dummy $deplib_matches; shift 775204007ebaSmrg deplib_match=$1 775304007ebaSmrg if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then 775404007ebaSmrg func_append newdeplibs " $i" 775504007ebaSmrg else 775604007ebaSmrg droppeddeps=yes 775704007ebaSmrg echo 775804007ebaSmrg $ECHO "*** Warning: dynamic linker does not accept needed library $i." 775904007ebaSmrg echo "*** I have the capability to make that library automatically link in when" 776004007ebaSmrg echo "*** you link to this library. But I can only do this if you have a" 776104007ebaSmrg echo "*** shared version of the library, which you do not appear to have" 776204007ebaSmrg echo "*** because a test_compile did reveal that the linker did not use this one" 776304007ebaSmrg echo "*** as a dynamic dependency that programs can get resolved with at runtime." 776404007ebaSmrg fi 776504007ebaSmrg fi 776604007ebaSmrg else 776704007ebaSmrg droppeddeps=yes 776804007ebaSmrg echo 776904007ebaSmrg $ECHO "*** Warning! Library $i is needed by this library but I was not able to" 777004007ebaSmrg echo "*** make it link in! You will probably need to install it or some" 777104007ebaSmrg echo "*** library that it depends on before this library will be fully" 777204007ebaSmrg echo "*** functional. Installing it before continuing would be even better." 777304007ebaSmrg fi 777404007ebaSmrg ;; 777504007ebaSmrg *) 777604007ebaSmrg func_append newdeplibs " $i" 777704007ebaSmrg ;; 777804007ebaSmrg esac 777904007ebaSmrg done 778004007ebaSmrg fi 778104007ebaSmrg ;; 778204007ebaSmrg file_magic*) 778304007ebaSmrg set dummy $deplibs_check_method; shift 778404007ebaSmrg file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 778504007ebaSmrg for a_deplib in $deplibs; do 778604007ebaSmrg case $a_deplib in 778704007ebaSmrg -l*) 778804007ebaSmrg func_stripname -l '' "$a_deplib" 778904007ebaSmrg name=$func_stripname_result 779004007ebaSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 779104007ebaSmrg case " $predeps $postdeps " in 779204007ebaSmrg *" $a_deplib "*) 779304007ebaSmrg func_append newdeplibs " $a_deplib" 779404007ebaSmrg a_deplib="" 779504007ebaSmrg ;; 779604007ebaSmrg esac 779704007ebaSmrg fi 779804007ebaSmrg if test -n "$a_deplib" ; then 779904007ebaSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 780004007ebaSmrg if test -n "$file_magic_glob"; then 780104007ebaSmrg libnameglob=`func_echo_all "$libname" | $SED -e $file_magic_glob` 780204007ebaSmrg else 780304007ebaSmrg libnameglob=$libname 780404007ebaSmrg fi 780504007ebaSmrg test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocaseglob` 780604007ebaSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 780704007ebaSmrg if test "$want_nocaseglob" = yes; then 780804007ebaSmrg shopt -s nocaseglob 780904007ebaSmrg potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 781004007ebaSmrg $nocaseglob 781104007ebaSmrg else 781204007ebaSmrg potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` 781304007ebaSmrg fi 781404007ebaSmrg for potent_lib in $potential_libs; do 781504007ebaSmrg # Follow soft links. 781604007ebaSmrg if ls -lLd "$potent_lib" 2>/dev/null | 781704007ebaSmrg $GREP " -> " >/dev/null; then 781804007ebaSmrg continue 781904007ebaSmrg fi 782004007ebaSmrg # The statement above tries to avoid entering an 782104007ebaSmrg # endless loop below, in case of cyclic links. 782204007ebaSmrg # We might still enter an endless loop, since a link 782304007ebaSmrg # loop can be closed while we follow links, 782404007ebaSmrg # but so what? 782504007ebaSmrg potlib="$potent_lib" 782604007ebaSmrg while test -h "$potlib" 2>/dev/null; do 782704007ebaSmrg potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` 782804007ebaSmrg case $potliblink in 782904007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; 783004007ebaSmrg *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; 783104007ebaSmrg esac 783204007ebaSmrg done 783304007ebaSmrg if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | 783404007ebaSmrg $SED -e 10q | 783504007ebaSmrg $EGREP "$file_magic_regex" > /dev/null; then 783604007ebaSmrg func_append newdeplibs " $a_deplib" 783704007ebaSmrg a_deplib="" 783804007ebaSmrg break 2 783904007ebaSmrg fi 784004007ebaSmrg done 784104007ebaSmrg done 784204007ebaSmrg fi 784304007ebaSmrg if test -n "$a_deplib" ; then 784404007ebaSmrg droppeddeps=yes 784504007ebaSmrg echo 784604007ebaSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 784704007ebaSmrg echo "*** I have the capability to make that library automatically link in when" 784804007ebaSmrg echo "*** you link to this library. But I can only do this if you have a" 784904007ebaSmrg echo "*** shared version of the library, which you do not appear to have" 785004007ebaSmrg echo "*** because I did check the linker path looking for a file starting" 785104007ebaSmrg if test -z "$potlib" ; then 785204007ebaSmrg $ECHO "*** with $libname but no candidates were found. (...for file magic test)" 785304007ebaSmrg else 785404007ebaSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 785504007ebaSmrg $ECHO "*** using a file magic. Last file checked: $potlib" 785604007ebaSmrg fi 785704007ebaSmrg fi 785804007ebaSmrg ;; 785904007ebaSmrg *) 786004007ebaSmrg # Add a -L argument. 786104007ebaSmrg func_append newdeplibs " $a_deplib" 786204007ebaSmrg ;; 786304007ebaSmrg esac 786404007ebaSmrg done # Gone through all deplibs. 786504007ebaSmrg ;; 786604007ebaSmrg match_pattern*) 786704007ebaSmrg set dummy $deplibs_check_method; shift 786804007ebaSmrg match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` 786904007ebaSmrg for a_deplib in $deplibs; do 787004007ebaSmrg case $a_deplib in 787104007ebaSmrg -l*) 787204007ebaSmrg func_stripname -l '' "$a_deplib" 787304007ebaSmrg name=$func_stripname_result 787404007ebaSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 787504007ebaSmrg case " $predeps $postdeps " in 787604007ebaSmrg *" $a_deplib "*) 787704007ebaSmrg func_append newdeplibs " $a_deplib" 787804007ebaSmrg a_deplib="" 787904007ebaSmrg ;; 788004007ebaSmrg esac 788104007ebaSmrg fi 788204007ebaSmrg if test -n "$a_deplib" ; then 788304007ebaSmrg libname=`eval "\\$ECHO \"$libname_spec\""` 788404007ebaSmrg for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do 788504007ebaSmrg potential_libs=`ls $i/$libname[.-]* 2>/dev/null` 788604007ebaSmrg for potent_lib in $potential_libs; do 788704007ebaSmrg potlib="$potent_lib" # see symlink-check above in file_magic test 788804007ebaSmrg if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ 788904007ebaSmrg $EGREP "$match_pattern_regex" > /dev/null; then 789004007ebaSmrg func_append newdeplibs " $a_deplib" 789104007ebaSmrg a_deplib="" 789204007ebaSmrg break 2 789304007ebaSmrg fi 789404007ebaSmrg done 789504007ebaSmrg done 789604007ebaSmrg fi 789704007ebaSmrg if test -n "$a_deplib" ; then 789804007ebaSmrg droppeddeps=yes 789904007ebaSmrg echo 790004007ebaSmrg $ECHO "*** Warning: linker path does not have real file for library $a_deplib." 790104007ebaSmrg echo "*** I have the capability to make that library automatically link in when" 790204007ebaSmrg echo "*** you link to this library. But I can only do this if you have a" 790304007ebaSmrg echo "*** shared version of the library, which you do not appear to have" 790404007ebaSmrg echo "*** because I did check the linker path looking for a file starting" 790504007ebaSmrg if test -z "$potlib" ; then 790604007ebaSmrg $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" 790704007ebaSmrg else 790804007ebaSmrg $ECHO "*** with $libname and none of the candidates passed a file format test" 790904007ebaSmrg $ECHO "*** using a regex pattern. Last file checked: $potlib" 791004007ebaSmrg fi 791104007ebaSmrg fi 791204007ebaSmrg ;; 791304007ebaSmrg *) 791404007ebaSmrg # Add a -L argument. 791504007ebaSmrg func_append newdeplibs " $a_deplib" 791604007ebaSmrg ;; 791704007ebaSmrg esac 791804007ebaSmrg done # Gone through all deplibs. 791904007ebaSmrg ;; 792004007ebaSmrg none | unknown | *) 792104007ebaSmrg newdeplibs="" 792204007ebaSmrg tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` 792304007ebaSmrg if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then 792404007ebaSmrg for i in $predeps $postdeps ; do 792504007ebaSmrg # can't use Xsed below, because $i might contain '/' 792604007ebaSmrg tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` 792704007ebaSmrg done 792804007ebaSmrg fi 792904007ebaSmrg case $tmp_deplibs in 793004007ebaSmrg *[!\ \ ]*) 793104007ebaSmrg echo 793204007ebaSmrg if test "X$deplibs_check_method" = "Xnone"; then 793304007ebaSmrg echo "*** Warning: inter-library dependencies are not supported in this platform." 793404007ebaSmrg else 793504007ebaSmrg echo "*** Warning: inter-library dependencies are not known to be supported." 793604007ebaSmrg fi 793704007ebaSmrg echo "*** All declared inter-library dependencies are being dropped." 793804007ebaSmrg droppeddeps=yes 793904007ebaSmrg ;; 794004007ebaSmrg esac 794104007ebaSmrg ;; 794204007ebaSmrg esac 794304007ebaSmrg versuffix=$versuffix_save 794404007ebaSmrg major=$major_save 794504007ebaSmrg release=$release_save 794604007ebaSmrg libname=$libname_save 794704007ebaSmrg name=$name_save 794804007ebaSmrg 794904007ebaSmrg case $host in 795004007ebaSmrg *-*-rhapsody* | *-*-darwin1.[012]) 795104007ebaSmrg # On Rhapsody replace the C library with the System framework 795204007ebaSmrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` 795304007ebaSmrg ;; 795404007ebaSmrg esac 795504007ebaSmrg 795604007ebaSmrg if test "$droppeddeps" = yes; then 795704007ebaSmrg if test "$module" = yes; then 795804007ebaSmrg echo 795904007ebaSmrg echo "*** Warning: libtool could not satisfy all declared inter-library" 796004007ebaSmrg $ECHO "*** dependencies of module $libname. Therefore, libtool will create" 796104007ebaSmrg echo "*** a static module, that should work as long as the dlopening" 796204007ebaSmrg echo "*** application is linked with the -dlopen flag." 796304007ebaSmrg if test -z "$global_symbol_pipe"; then 796404007ebaSmrg echo 796504007ebaSmrg echo "*** However, this would only work if libtool was able to extract symbol" 796604007ebaSmrg echo "*** lists from a program, using \`nm' or equivalent, but libtool could" 796704007ebaSmrg echo "*** not find such a program. So, this module is probably useless." 796804007ebaSmrg echo "*** \`nm' from GNU binutils and a full rebuild may help." 796904007ebaSmrg fi 797004007ebaSmrg if test "$build_old_libs" = no; then 797104007ebaSmrg oldlibs="$output_objdir/$libname.$libext" 797204007ebaSmrg build_libtool_libs=module 797304007ebaSmrg build_old_libs=yes 797404007ebaSmrg else 797504007ebaSmrg build_libtool_libs=no 797604007ebaSmrg fi 797704007ebaSmrg else 797804007ebaSmrg echo "*** The inter-library dependencies that have been dropped here will be" 797904007ebaSmrg echo "*** automatically added whenever a program is linked with this library" 798004007ebaSmrg echo "*** or is declared to -dlopen it." 798104007ebaSmrg 798204007ebaSmrg if test "$allow_undefined" = no; then 798304007ebaSmrg echo 798404007ebaSmrg echo "*** Since this library must not contain undefined symbols," 798504007ebaSmrg echo "*** because either the platform does not support them or" 798604007ebaSmrg echo "*** it was explicitly requested with -no-undefined," 798704007ebaSmrg echo "*** libtool will only create a static version of it." 798804007ebaSmrg if test "$build_old_libs" = no; then 798904007ebaSmrg oldlibs="$output_objdir/$libname.$libext" 799004007ebaSmrg build_libtool_libs=module 799104007ebaSmrg build_old_libs=yes 799204007ebaSmrg else 799304007ebaSmrg build_libtool_libs=no 799404007ebaSmrg fi 799504007ebaSmrg fi 799604007ebaSmrg fi 799704007ebaSmrg fi 799804007ebaSmrg # Done checking deplibs! 799904007ebaSmrg deplibs=$newdeplibs 800004007ebaSmrg fi 800104007ebaSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 800204007ebaSmrg case $host in 800304007ebaSmrg *-*-darwin*) 800404007ebaSmrg newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800504007ebaSmrg new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800604007ebaSmrg deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 800704007ebaSmrg ;; 800804007ebaSmrg esac 800904007ebaSmrg 801004007ebaSmrg # move library search paths that coincide with paths to not yet 801104007ebaSmrg # installed libraries to the beginning of the library search list 801204007ebaSmrg new_libs= 801304007ebaSmrg for path in $notinst_path; do 801404007ebaSmrg case " $new_libs " in 801504007ebaSmrg *" -L$path/$objdir "*) ;; 801604007ebaSmrg *) 801704007ebaSmrg case " $deplibs " in 801804007ebaSmrg *" -L$path/$objdir "*) 801904007ebaSmrg func_append new_libs " -L$path/$objdir" ;; 802004007ebaSmrg esac 802104007ebaSmrg ;; 802204007ebaSmrg esac 802304007ebaSmrg done 802404007ebaSmrg for deplib in $deplibs; do 802504007ebaSmrg case $deplib in 802604007ebaSmrg -L*) 802704007ebaSmrg case " $new_libs " in 802804007ebaSmrg *" $deplib "*) ;; 802904007ebaSmrg *) func_append new_libs " $deplib" ;; 803004007ebaSmrg esac 803104007ebaSmrg ;; 803204007ebaSmrg *) func_append new_libs " $deplib" ;; 803304007ebaSmrg esac 803404007ebaSmrg done 803504007ebaSmrg deplibs="$new_libs" 803604007ebaSmrg 803704007ebaSmrg # All the library-specific variables (install_libdir is set above). 803804007ebaSmrg library_names= 803904007ebaSmrg old_library= 804004007ebaSmrg dlname= 804104007ebaSmrg 804204007ebaSmrg # Test again, we may have decided not to build it any more 804304007ebaSmrg if test "$build_libtool_libs" = yes; then 804404007ebaSmrg # Remove ${wl} instances when linking with ld. 804504007ebaSmrg # FIXME: should test the right _cmds variable. 804604007ebaSmrg case $archive_cmds in 804704007ebaSmrg *\$LD\ *) wl= ;; 804804007ebaSmrg esac 804904007ebaSmrg if test "$hardcode_into_libs" = yes; then 805004007ebaSmrg # Hardcode the library paths 805104007ebaSmrg hardcode_libdirs= 805204007ebaSmrg dep_rpath= 805304007ebaSmrg rpath="$finalize_rpath" 805404007ebaSmrg test "$opt_mode" != relink && rpath="$compile_rpath$rpath" 805504007ebaSmrg for libdir in $rpath; do 805604007ebaSmrg if test -n "$hardcode_libdir_flag_spec"; then 805704007ebaSmrg if test -n "$hardcode_libdir_separator"; then 805804007ebaSmrg func_replace_sysroot "$libdir" 805904007ebaSmrg libdir=$func_replace_sysroot_result 806004007ebaSmrg if test -z "$hardcode_libdirs"; then 806104007ebaSmrg hardcode_libdirs="$libdir" 806204007ebaSmrg else 806304007ebaSmrg # Just accumulate the unique libdirs. 806404007ebaSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 806504007ebaSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 806604007ebaSmrg ;; 806704007ebaSmrg *) 806804007ebaSmrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 806904007ebaSmrg ;; 807004007ebaSmrg esac 807104007ebaSmrg fi 807204007ebaSmrg else 807304007ebaSmrg eval flag=\"$hardcode_libdir_flag_spec\" 807404007ebaSmrg func_append dep_rpath " $flag" 807504007ebaSmrg fi 807604007ebaSmrg elif test -n "$runpath_var"; then 807704007ebaSmrg case "$perm_rpath " in 807804007ebaSmrg *" $libdir "*) ;; 807904007ebaSmrg *) func_append perm_rpath " $libdir" ;; 808004007ebaSmrg esac 808104007ebaSmrg fi 808204007ebaSmrg done 808304007ebaSmrg # Substitute the hardcoded libdirs into the rpath. 808404007ebaSmrg if test -n "$hardcode_libdir_separator" && 808504007ebaSmrg test -n "$hardcode_libdirs"; then 808604007ebaSmrg libdir="$hardcode_libdirs" 808704007ebaSmrg eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" 808804007ebaSmrg fi 808904007ebaSmrg if test -n "$runpath_var" && test -n "$perm_rpath"; then 809004007ebaSmrg # We should set the runpath_var. 809104007ebaSmrg rpath= 809204007ebaSmrg for dir in $perm_rpath; do 809304007ebaSmrg func_append rpath "$dir:" 809404007ebaSmrg done 809504007ebaSmrg eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" 809604007ebaSmrg fi 809704007ebaSmrg test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" 809804007ebaSmrg fi 809904007ebaSmrg 810004007ebaSmrg shlibpath="$finalize_shlibpath" 810104007ebaSmrg test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" 810204007ebaSmrg if test -n "$shlibpath"; then 810304007ebaSmrg eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" 810404007ebaSmrg fi 810504007ebaSmrg 810604007ebaSmrg # Get the real and link names of the library. 810704007ebaSmrg eval shared_ext=\"$shrext_cmds\" 810804007ebaSmrg eval library_names=\"$library_names_spec\" 810904007ebaSmrg set dummy $library_names 811004007ebaSmrg shift 811104007ebaSmrg realname="$1" 811204007ebaSmrg shift 811304007ebaSmrg 811404007ebaSmrg if test -n "$soname_spec"; then 811504007ebaSmrg eval soname=\"$soname_spec\" 811604007ebaSmrg else 811704007ebaSmrg soname="$realname" 811804007ebaSmrg fi 811904007ebaSmrg if test -z "$dlname"; then 812004007ebaSmrg dlname=$soname 812104007ebaSmrg fi 812204007ebaSmrg 812304007ebaSmrg lib="$output_objdir/$realname" 812404007ebaSmrg linknames= 812504007ebaSmrg for link 812604007ebaSmrg do 812704007ebaSmrg func_append linknames " $link" 812804007ebaSmrg done 812904007ebaSmrg 813004007ebaSmrg # Use standard objects if they are pic 813104007ebaSmrg test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` 813204007ebaSmrg test "X$libobjs" = "X " && libobjs= 813304007ebaSmrg 813404007ebaSmrg delfiles= 813504007ebaSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 813604007ebaSmrg $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" 813704007ebaSmrg export_symbols="$output_objdir/$libname.uexp" 813804007ebaSmrg func_append delfiles " $export_symbols" 813904007ebaSmrg fi 814004007ebaSmrg 814104007ebaSmrg orig_export_symbols= 814204007ebaSmrg case $host_os in 814304007ebaSmrg cygwin* | mingw* | cegcc*) 814404007ebaSmrg if test -n "$export_symbols" && test -z "$export_symbols_regex"; then 814504007ebaSmrg # exporting using user supplied symfile 814604007ebaSmrg if test "x`$SED 1q $export_symbols`" != xEXPORTS; then 814704007ebaSmrg # and it's NOT already a .def file. Must figure out 814804007ebaSmrg # which of the given symbols are data symbols and tag 814904007ebaSmrg # them as such. So, trigger use of export_symbols_cmds. 815004007ebaSmrg # export_symbols gets reassigned inside the "prepare 815104007ebaSmrg # the list of exported symbols" if statement, so the 815204007ebaSmrg # include_expsyms logic still works. 815304007ebaSmrg orig_export_symbols="$export_symbols" 815404007ebaSmrg export_symbols= 815504007ebaSmrg always_export_symbols=yes 815604007ebaSmrg fi 815704007ebaSmrg fi 815804007ebaSmrg ;; 815904007ebaSmrg esac 816004007ebaSmrg 816104007ebaSmrg # Prepare the list of exported symbols 816204007ebaSmrg if test -z "$export_symbols"; then 816304007ebaSmrg if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then 816404007ebaSmrg func_verbose "generating symbol list for \`$libname.la'" 816504007ebaSmrg export_symbols="$output_objdir/$libname.exp" 816604007ebaSmrg $opt_dry_run || $RM $export_symbols 816704007ebaSmrg cmds=$export_symbols_cmds 816804007ebaSmrg save_ifs="$IFS"; IFS='~' 816904007ebaSmrg for cmd1 in $cmds; do 817004007ebaSmrg IFS="$save_ifs" 817104007ebaSmrg # Take the normal branch if the nm_file_list_spec branch 817204007ebaSmrg # doesn't work or if tool conversion is not needed. 817304007ebaSmrg case $nm_file_list_spec~$to_tool_file_cmd in 817404007ebaSmrg *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) 817504007ebaSmrg try_normal_branch=yes 817604007ebaSmrg eval cmd=\"$cmd1\" 817704007ebaSmrg func_len " $cmd" 817804007ebaSmrg len=$func_len_result 817904007ebaSmrg ;; 818004007ebaSmrg *) 818104007ebaSmrg try_normal_branch=no 818204007ebaSmrg ;; 818304007ebaSmrg esac 818404007ebaSmrg if test "$try_normal_branch" = yes \ 818504007ebaSmrg && { test "$len" -lt "$max_cmd_len" \ 818604007ebaSmrg || test "$max_cmd_len" -le -1; } 818704007ebaSmrg then 818804007ebaSmrg func_show_eval "$cmd" 'exit $?' 818904007ebaSmrg skipped_export=false 819004007ebaSmrg elif test -n "$nm_file_list_spec"; then 819104007ebaSmrg func_basename "$output" 819204007ebaSmrg output_la=$func_basename_result 819304007ebaSmrg save_libobjs=$libobjs 819404007ebaSmrg save_output=$output 819504007ebaSmrg output=${output_objdir}/${output_la}.nm 819604007ebaSmrg func_to_tool_file "$output" 819704007ebaSmrg libobjs=$nm_file_list_spec$func_to_tool_file_result 819804007ebaSmrg func_append delfiles " $output" 819904007ebaSmrg func_verbose "creating $NM input file list: $output" 820004007ebaSmrg for obj in $save_libobjs; do 820104007ebaSmrg func_to_tool_file "$obj" 820204007ebaSmrg $ECHO "$func_to_tool_file_result" 820304007ebaSmrg done > "$output" 820404007ebaSmrg eval cmd=\"$cmd1\" 820504007ebaSmrg func_show_eval "$cmd" 'exit $?' 820604007ebaSmrg output=$save_output 820704007ebaSmrg libobjs=$save_libobjs 820804007ebaSmrg skipped_export=false 820904007ebaSmrg else 821004007ebaSmrg # The command line is too long to execute in one step. 821104007ebaSmrg func_verbose "using reloadable object file for export list..." 821204007ebaSmrg skipped_export=: 821304007ebaSmrg # Break out early, otherwise skipped_export may be 821404007ebaSmrg # set to false by a later but shorter cmd. 821504007ebaSmrg break 821604007ebaSmrg fi 821704007ebaSmrg done 821804007ebaSmrg IFS="$save_ifs" 821904007ebaSmrg if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then 822004007ebaSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 822104007ebaSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 822204007ebaSmrg fi 822304007ebaSmrg fi 822404007ebaSmrg fi 822504007ebaSmrg 822604007ebaSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 822704007ebaSmrg tmp_export_symbols="$export_symbols" 822804007ebaSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 822904007ebaSmrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 823004007ebaSmrg fi 823104007ebaSmrg 823204007ebaSmrg if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then 823304007ebaSmrg # The given exports_symbols file has to be filtered, so filter it. 823404007ebaSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 823504007ebaSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 823604007ebaSmrg # 's' commands which not all seds can handle. GNU sed should be fine 823704007ebaSmrg # though. Also, the filter scales superlinearly with the number of 823804007ebaSmrg # global variables. join(1) would be nice here, but unfortunately 823904007ebaSmrg # isn't a blessed tool. 824004007ebaSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 824104007ebaSmrg func_append delfiles " $export_symbols $output_objdir/$libname.filter" 824204007ebaSmrg export_symbols=$output_objdir/$libname.def 824304007ebaSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 824404007ebaSmrg fi 824504007ebaSmrg 824604007ebaSmrg tmp_deplibs= 824704007ebaSmrg for test_deplib in $deplibs; do 824804007ebaSmrg case " $convenience " in 824904007ebaSmrg *" $test_deplib "*) ;; 825004007ebaSmrg *) 825104007ebaSmrg func_append tmp_deplibs " $test_deplib" 825204007ebaSmrg ;; 825304007ebaSmrg esac 825404007ebaSmrg done 825504007ebaSmrg deplibs="$tmp_deplibs" 825604007ebaSmrg 825704007ebaSmrg if test -n "$convenience"; then 825804007ebaSmrg if test -n "$whole_archive_flag_spec" && 825904007ebaSmrg test "$compiler_needs_object" = yes && 826004007ebaSmrg test -z "$libobjs"; then 826104007ebaSmrg # extract the archives, so we have objects to list. 826204007ebaSmrg # TODO: could optimize this to just extract one archive. 826304007ebaSmrg whole_archive_flag_spec= 826404007ebaSmrg fi 826504007ebaSmrg if test -n "$whole_archive_flag_spec"; then 826604007ebaSmrg save_libobjs=$libobjs 826704007ebaSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 826804007ebaSmrg test "X$libobjs" = "X " && libobjs= 826904007ebaSmrg else 827004007ebaSmrg gentop="$output_objdir/${outputname}x" 827104007ebaSmrg func_append generated " $gentop" 827204007ebaSmrg 827304007ebaSmrg func_extract_archives $gentop $convenience 827404007ebaSmrg func_append libobjs " $func_extract_archives_result" 827504007ebaSmrg test "X$libobjs" = "X " && libobjs= 827604007ebaSmrg fi 827704007ebaSmrg fi 827804007ebaSmrg 827904007ebaSmrg if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then 828004007ebaSmrg eval flag=\"$thread_safe_flag_spec\" 828104007ebaSmrg func_append linker_flags " $flag" 828204007ebaSmrg fi 828304007ebaSmrg 828404007ebaSmrg # Make a backup of the uninstalled library when relinking 828504007ebaSmrg if test "$opt_mode" = relink; then 828604007ebaSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? 828704007ebaSmrg fi 828804007ebaSmrg 828904007ebaSmrg # Do each of the archive commands. 829004007ebaSmrg if test "$module" = yes && test -n "$module_cmds" ; then 829104007ebaSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 829204007ebaSmrg eval test_cmds=\"$module_expsym_cmds\" 829304007ebaSmrg cmds=$module_expsym_cmds 829404007ebaSmrg else 829504007ebaSmrg eval test_cmds=\"$module_cmds\" 829604007ebaSmrg cmds=$module_cmds 829704007ebaSmrg fi 829804007ebaSmrg else 829904007ebaSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 830004007ebaSmrg eval test_cmds=\"$archive_expsym_cmds\" 830104007ebaSmrg cmds=$archive_expsym_cmds 830204007ebaSmrg else 830304007ebaSmrg eval test_cmds=\"$archive_cmds\" 830404007ebaSmrg cmds=$archive_cmds 830504007ebaSmrg fi 830604007ebaSmrg fi 830704007ebaSmrg 830804007ebaSmrg if test "X$skipped_export" != "X:" && 830904007ebaSmrg func_len " $test_cmds" && 831004007ebaSmrg len=$func_len_result && 831104007ebaSmrg test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 831204007ebaSmrg : 831304007ebaSmrg else 831404007ebaSmrg # The command line is too long to link in one step, link piecewise 831504007ebaSmrg # or, if using GNU ld and skipped_export is not :, use a linker 831604007ebaSmrg # script. 831704007ebaSmrg 831804007ebaSmrg # Save the value of $output and $libobjs because we want to 831904007ebaSmrg # use them later. If we have whole_archive_flag_spec, we 832004007ebaSmrg # want to use save_libobjs as it was before 832104007ebaSmrg # whole_archive_flag_spec was expanded, because we can't 832204007ebaSmrg # assume the linker understands whole_archive_flag_spec. 832304007ebaSmrg # This may have to be revisited, in case too many 832404007ebaSmrg # convenience libraries get linked in and end up exceeding 832504007ebaSmrg # the spec. 832604007ebaSmrg if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then 832704007ebaSmrg save_libobjs=$libobjs 832804007ebaSmrg fi 832904007ebaSmrg save_output=$output 833004007ebaSmrg func_basename "$output" 833104007ebaSmrg output_la=$func_basename_result 833204007ebaSmrg 833304007ebaSmrg # Clear the reloadable object creation command queue and 833404007ebaSmrg # initialize k to one. 833504007ebaSmrg test_cmds= 833604007ebaSmrg concat_cmds= 833704007ebaSmrg objlist= 833804007ebaSmrg last_robj= 833904007ebaSmrg k=1 834004007ebaSmrg 834104007ebaSmrg if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then 834204007ebaSmrg output=${output_objdir}/${output_la}.lnkscript 834304007ebaSmrg func_verbose "creating GNU ld script: $output" 834404007ebaSmrg echo 'INPUT (' > $output 834504007ebaSmrg for obj in $save_libobjs 834604007ebaSmrg do 834704007ebaSmrg func_to_tool_file "$obj" 834804007ebaSmrg $ECHO "$func_to_tool_file_result" >> $output 834904007ebaSmrg done 835004007ebaSmrg echo ')' >> $output 835104007ebaSmrg func_append delfiles " $output" 835204007ebaSmrg func_to_tool_file "$output" 835304007ebaSmrg output=$func_to_tool_file_result 835404007ebaSmrg elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then 835504007ebaSmrg output=${output_objdir}/${output_la}.lnk 835604007ebaSmrg func_verbose "creating linker input file list: $output" 835704007ebaSmrg : > $output 835804007ebaSmrg set x $save_libobjs 835904007ebaSmrg shift 836004007ebaSmrg firstobj= 836104007ebaSmrg if test "$compiler_needs_object" = yes; then 836204007ebaSmrg firstobj="$1 " 836304007ebaSmrg shift 836404007ebaSmrg fi 836504007ebaSmrg for obj 836604007ebaSmrg do 836704007ebaSmrg func_to_tool_file "$obj" 836804007ebaSmrg $ECHO "$func_to_tool_file_result" >> $output 836904007ebaSmrg done 837004007ebaSmrg func_append delfiles " $output" 837104007ebaSmrg func_to_tool_file "$output" 837204007ebaSmrg output=$firstobj\"$file_list_spec$func_to_tool_file_result\" 837304007ebaSmrg else 837404007ebaSmrg if test -n "$save_libobjs"; then 837504007ebaSmrg func_verbose "creating reloadable object files..." 837604007ebaSmrg output=$output_objdir/$output_la-${k}.$objext 837704007ebaSmrg eval test_cmds=\"$reload_cmds\" 837804007ebaSmrg func_len " $test_cmds" 837904007ebaSmrg len0=$func_len_result 838004007ebaSmrg len=$len0 838104007ebaSmrg 838204007ebaSmrg # Loop over the list of objects to be linked. 838304007ebaSmrg for obj in $save_libobjs 838404007ebaSmrg do 838504007ebaSmrg func_len " $obj" 838604007ebaSmrg func_arith $len + $func_len_result 838704007ebaSmrg len=$func_arith_result 838804007ebaSmrg if test "X$objlist" = X || 838904007ebaSmrg test "$len" -lt "$max_cmd_len"; then 839004007ebaSmrg func_append objlist " $obj" 839104007ebaSmrg else 839204007ebaSmrg # The command $test_cmds is almost too long, add a 839304007ebaSmrg # command to the queue. 839404007ebaSmrg if test "$k" -eq 1 ; then 839504007ebaSmrg # The first file doesn't have a previous command to add. 839604007ebaSmrg reload_objs=$objlist 839704007ebaSmrg eval concat_cmds=\"$reload_cmds\" 839804007ebaSmrg else 839904007ebaSmrg # All subsequent reloadable object files will link in 840004007ebaSmrg # the last one created. 840104007ebaSmrg reload_objs="$objlist $last_robj" 840204007ebaSmrg eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" 840304007ebaSmrg fi 840404007ebaSmrg last_robj=$output_objdir/$output_la-${k}.$objext 840504007ebaSmrg func_arith $k + 1 840604007ebaSmrg k=$func_arith_result 840704007ebaSmrg output=$output_objdir/$output_la-${k}.$objext 840804007ebaSmrg objlist=" $obj" 840904007ebaSmrg func_len " $last_robj" 841004007ebaSmrg func_arith $len0 + $func_len_result 841104007ebaSmrg len=$func_arith_result 841204007ebaSmrg fi 841304007ebaSmrg done 841404007ebaSmrg # Handle the remaining objects by creating one last 841504007ebaSmrg # reloadable object file. All subsequent reloadable object 841604007ebaSmrg # files will link in the last one created. 841704007ebaSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 841804007ebaSmrg reload_objs="$objlist $last_robj" 841904007ebaSmrg eval concat_cmds=\"\${concat_cmds}$reload_cmds\" 842004007ebaSmrg if test -n "$last_robj"; then 842104007ebaSmrg eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" 842204007ebaSmrg fi 842304007ebaSmrg func_append delfiles " $output" 842404007ebaSmrg 842504007ebaSmrg else 842604007ebaSmrg output= 842704007ebaSmrg fi 842804007ebaSmrg 842904007ebaSmrg if ${skipped_export-false}; then 843004007ebaSmrg func_verbose "generating symbol list for \`$libname.la'" 843104007ebaSmrg export_symbols="$output_objdir/$libname.exp" 843204007ebaSmrg $opt_dry_run || $RM $export_symbols 843304007ebaSmrg libobjs=$output 843404007ebaSmrg # Append the command to create the export file. 843504007ebaSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 843604007ebaSmrg eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" 843704007ebaSmrg if test -n "$last_robj"; then 843804007ebaSmrg eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" 843904007ebaSmrg fi 844004007ebaSmrg fi 844104007ebaSmrg 844204007ebaSmrg test -n "$save_libobjs" && 844304007ebaSmrg func_verbose "creating a temporary reloadable object file: $output" 844404007ebaSmrg 844504007ebaSmrg # Loop through the commands generated above and execute them. 844604007ebaSmrg save_ifs="$IFS"; IFS='~' 844704007ebaSmrg for cmd in $concat_cmds; do 844804007ebaSmrg IFS="$save_ifs" 844904007ebaSmrg $opt_silent || { 845004007ebaSmrg func_quote_for_expand "$cmd" 845104007ebaSmrg eval "func_echo $func_quote_for_expand_result" 845204007ebaSmrg } 845304007ebaSmrg $opt_dry_run || eval "$cmd" || { 845404007ebaSmrg lt_exit=$? 845504007ebaSmrg 845604007ebaSmrg # Restore the uninstalled library and exit 845704007ebaSmrg if test "$opt_mode" = relink; then 845804007ebaSmrg ( cd "$output_objdir" && \ 845904007ebaSmrg $RM "${realname}T" && \ 846004007ebaSmrg $MV "${realname}U" "$realname" ) 846104007ebaSmrg fi 846204007ebaSmrg 846304007ebaSmrg exit $lt_exit 846404007ebaSmrg } 846504007ebaSmrg done 846604007ebaSmrg IFS="$save_ifs" 846704007ebaSmrg 846804007ebaSmrg if test -n "$export_symbols_regex" && ${skipped_export-false}; then 846904007ebaSmrg func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' 847004007ebaSmrg func_show_eval '$MV "${export_symbols}T" "$export_symbols"' 847104007ebaSmrg fi 847204007ebaSmrg fi 847304007ebaSmrg 847404007ebaSmrg if ${skipped_export-false}; then 847504007ebaSmrg if test -n "$export_symbols" && test -n "$include_expsyms"; then 847604007ebaSmrg tmp_export_symbols="$export_symbols" 847704007ebaSmrg test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" 847804007ebaSmrg $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' 847904007ebaSmrg fi 848004007ebaSmrg 848104007ebaSmrg if test -n "$orig_export_symbols"; then 848204007ebaSmrg # The given exports_symbols file has to be filtered, so filter it. 848304007ebaSmrg func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" 848404007ebaSmrg # FIXME: $output_objdir/$libname.filter potentially contains lots of 848504007ebaSmrg # 's' commands which not all seds can handle. GNU sed should be fine 848604007ebaSmrg # though. Also, the filter scales superlinearly with the number of 848704007ebaSmrg # global variables. join(1) would be nice here, but unfortunately 848804007ebaSmrg # isn't a blessed tool. 848904007ebaSmrg $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter 849004007ebaSmrg func_append delfiles " $export_symbols $output_objdir/$libname.filter" 849104007ebaSmrg export_symbols=$output_objdir/$libname.def 849204007ebaSmrg $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols 849304007ebaSmrg fi 849404007ebaSmrg fi 849504007ebaSmrg 849604007ebaSmrg libobjs=$output 849704007ebaSmrg # Restore the value of output. 849804007ebaSmrg output=$save_output 849904007ebaSmrg 850004007ebaSmrg if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then 850104007ebaSmrg eval libobjs=\"\$libobjs $whole_archive_flag_spec\" 850204007ebaSmrg test "X$libobjs" = "X " && libobjs= 850304007ebaSmrg fi 850404007ebaSmrg # Expand the library linking commands again to reset the 850504007ebaSmrg # value of $libobjs for piecewise linking. 850604007ebaSmrg 850704007ebaSmrg # Do each of the archive commands. 850804007ebaSmrg if test "$module" = yes && test -n "$module_cmds" ; then 850904007ebaSmrg if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then 851004007ebaSmrg cmds=$module_expsym_cmds 851104007ebaSmrg else 851204007ebaSmrg cmds=$module_cmds 851304007ebaSmrg fi 851404007ebaSmrg else 851504007ebaSmrg if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then 851604007ebaSmrg cmds=$archive_expsym_cmds 851704007ebaSmrg else 851804007ebaSmrg cmds=$archive_cmds 851904007ebaSmrg fi 852004007ebaSmrg fi 852104007ebaSmrg fi 852204007ebaSmrg 852304007ebaSmrg if test -n "$delfiles"; then 852404007ebaSmrg # Append the command to remove temporary files to $cmds. 852504007ebaSmrg eval cmds=\"\$cmds~\$RM $delfiles\" 852604007ebaSmrg fi 852704007ebaSmrg 852804007ebaSmrg # Add any objects from preloaded convenience libraries 852904007ebaSmrg if test -n "$dlprefiles"; then 853004007ebaSmrg gentop="$output_objdir/${outputname}x" 853104007ebaSmrg func_append generated " $gentop" 853204007ebaSmrg 853304007ebaSmrg func_extract_archives $gentop $dlprefiles 853404007ebaSmrg func_append libobjs " $func_extract_archives_result" 853504007ebaSmrg test "X$libobjs" = "X " && libobjs= 853604007ebaSmrg fi 853704007ebaSmrg 853804007ebaSmrg save_ifs="$IFS"; IFS='~' 853904007ebaSmrg for cmd in $cmds; do 854004007ebaSmrg IFS="$save_ifs" 854104007ebaSmrg eval cmd=\"$cmd\" 854204007ebaSmrg $opt_silent || { 854304007ebaSmrg func_quote_for_expand "$cmd" 854404007ebaSmrg eval "func_echo $func_quote_for_expand_result" 854504007ebaSmrg } 854604007ebaSmrg $opt_dry_run || eval "$cmd" || { 854704007ebaSmrg lt_exit=$? 854804007ebaSmrg 854904007ebaSmrg # Restore the uninstalled library and exit 855004007ebaSmrg if test "$opt_mode" = relink; then 855104007ebaSmrg ( cd "$output_objdir" && \ 855204007ebaSmrg $RM "${realname}T" && \ 855304007ebaSmrg $MV "${realname}U" "$realname" ) 855404007ebaSmrg fi 855504007ebaSmrg 855604007ebaSmrg exit $lt_exit 855704007ebaSmrg } 855804007ebaSmrg done 855904007ebaSmrg IFS="$save_ifs" 856004007ebaSmrg 856104007ebaSmrg # Restore the uninstalled library and exit 856204007ebaSmrg if test "$opt_mode" = relink; then 856304007ebaSmrg $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? 856404007ebaSmrg 856504007ebaSmrg if test -n "$convenience"; then 856604007ebaSmrg if test -z "$whole_archive_flag_spec"; then 856704007ebaSmrg func_show_eval '${RM}r "$gentop"' 856804007ebaSmrg fi 856904007ebaSmrg fi 857004007ebaSmrg 857104007ebaSmrg exit $EXIT_SUCCESS 857204007ebaSmrg fi 857304007ebaSmrg 857404007ebaSmrg # Create links to the real library. 857504007ebaSmrg for linkname in $linknames; do 857604007ebaSmrg if test "$realname" != "$linkname"; then 857704007ebaSmrg func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' 857804007ebaSmrg fi 857904007ebaSmrg done 858004007ebaSmrg 858104007ebaSmrg # If -module or -export-dynamic was specified, set the dlname. 858204007ebaSmrg if test "$module" = yes || test "$export_dynamic" = yes; then 858304007ebaSmrg # On all known operating systems, these are identical. 858404007ebaSmrg dlname="$soname" 858504007ebaSmrg fi 858604007ebaSmrg fi 858704007ebaSmrg ;; 858804007ebaSmrg 858904007ebaSmrg obj) 859004007ebaSmrg if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then 859104007ebaSmrg func_warning "\`-dlopen' is ignored for objects" 859204007ebaSmrg fi 859304007ebaSmrg 859404007ebaSmrg case " $deplibs" in 859504007ebaSmrg *\ -l* | *\ -L*) 859604007ebaSmrg func_warning "\`-l' and \`-L' are ignored for objects" ;; 859704007ebaSmrg esac 859804007ebaSmrg 859904007ebaSmrg test -n "$rpath" && \ 860004007ebaSmrg func_warning "\`-rpath' is ignored for objects" 860104007ebaSmrg 860204007ebaSmrg test -n "$xrpath" && \ 860304007ebaSmrg func_warning "\`-R' is ignored for objects" 860404007ebaSmrg 860504007ebaSmrg test -n "$vinfo" && \ 860604007ebaSmrg func_warning "\`-version-info' is ignored for objects" 860704007ebaSmrg 860804007ebaSmrg test -n "$release" && \ 860904007ebaSmrg func_warning "\`-release' is ignored for objects" 861004007ebaSmrg 861104007ebaSmrg case $output in 861204007ebaSmrg *.lo) 861304007ebaSmrg test -n "$objs$old_deplibs" && \ 861404007ebaSmrg func_fatal_error "cannot build library object \`$output' from non-libtool objects" 861504007ebaSmrg 861604007ebaSmrg libobj=$output 861704007ebaSmrg func_lo2o "$libobj" 861804007ebaSmrg obj=$func_lo2o_result 861904007ebaSmrg ;; 862004007ebaSmrg *) 862104007ebaSmrg libobj= 862204007ebaSmrg obj="$output" 862304007ebaSmrg ;; 862404007ebaSmrg esac 862504007ebaSmrg 862604007ebaSmrg # Delete the old objects. 862704007ebaSmrg $opt_dry_run || $RM $obj $libobj 862804007ebaSmrg 862904007ebaSmrg # Objects from convenience libraries. This assumes 863004007ebaSmrg # single-version convenience libraries. Whenever we create 863104007ebaSmrg # different ones for PIC/non-PIC, this we'll have to duplicate 863204007ebaSmrg # the extraction. 863304007ebaSmrg reload_conv_objs= 863404007ebaSmrg gentop= 863504007ebaSmrg # reload_cmds runs $LD directly, so let us get rid of 863604007ebaSmrg # -Wl from whole_archive_flag_spec and hope we can get by with 863704007ebaSmrg # turning comma into space.. 863804007ebaSmrg wl= 863904007ebaSmrg 864004007ebaSmrg if test -n "$convenience"; then 864104007ebaSmrg if test -n "$whole_archive_flag_spec"; then 864204007ebaSmrg eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" 864304007ebaSmrg reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` 864404007ebaSmrg else 864504007ebaSmrg gentop="$output_objdir/${obj}x" 864604007ebaSmrg func_append generated " $gentop" 864704007ebaSmrg 864804007ebaSmrg func_extract_archives $gentop $convenience 864904007ebaSmrg reload_conv_objs="$reload_objs $func_extract_archives_result" 865004007ebaSmrg fi 865104007ebaSmrg fi 865204007ebaSmrg 865304007ebaSmrg # If we're not building shared, we need to use non_pic_objs 865404007ebaSmrg test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" 865504007ebaSmrg 865604007ebaSmrg # Create the old-style object. 865704007ebaSmrg reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 865804007ebaSmrg 865904007ebaSmrg output="$obj" 866004007ebaSmrg func_execute_cmds "$reload_cmds" 'exit $?' 866104007ebaSmrg 866204007ebaSmrg # Exit if we aren't doing a library object file. 866304007ebaSmrg if test -z "$libobj"; then 866404007ebaSmrg if test -n "$gentop"; then 866504007ebaSmrg func_show_eval '${RM}r "$gentop"' 866604007ebaSmrg fi 866704007ebaSmrg 866804007ebaSmrg exit $EXIT_SUCCESS 866904007ebaSmrg fi 867004007ebaSmrg 867104007ebaSmrg if test "$build_libtool_libs" != yes; then 867204007ebaSmrg if test -n "$gentop"; then 867304007ebaSmrg func_show_eval '${RM}r "$gentop"' 867404007ebaSmrg fi 867504007ebaSmrg 867604007ebaSmrg # Create an invalid libtool object if no PIC, so that we don't 867704007ebaSmrg # accidentally link it into a program. 867804007ebaSmrg # $show "echo timestamp > $libobj" 867904007ebaSmrg # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? 868004007ebaSmrg exit $EXIT_SUCCESS 868104007ebaSmrg fi 868204007ebaSmrg 868304007ebaSmrg if test -n "$pic_flag" || test "$pic_mode" != default; then 868404007ebaSmrg # Only do commands if we really have different PIC objects. 868504007ebaSmrg reload_objs="$libobjs $reload_conv_objs" 868604007ebaSmrg output="$libobj" 868704007ebaSmrg func_execute_cmds "$reload_cmds" 'exit $?' 868804007ebaSmrg fi 868904007ebaSmrg 869004007ebaSmrg if test -n "$gentop"; then 869104007ebaSmrg func_show_eval '${RM}r "$gentop"' 869204007ebaSmrg fi 869304007ebaSmrg 869404007ebaSmrg exit $EXIT_SUCCESS 869504007ebaSmrg ;; 869604007ebaSmrg 869704007ebaSmrg prog) 869804007ebaSmrg case $host in 869904007ebaSmrg *cygwin*) func_stripname '' '.exe' "$output" 870004007ebaSmrg output=$func_stripname_result.exe;; 870104007ebaSmrg esac 870204007ebaSmrg test -n "$vinfo" && \ 870304007ebaSmrg func_warning "\`-version-info' is ignored for programs" 870404007ebaSmrg 870504007ebaSmrg test -n "$release" && \ 870604007ebaSmrg func_warning "\`-release' is ignored for programs" 870704007ebaSmrg 870804007ebaSmrg test "$preload" = yes \ 870904007ebaSmrg && test "$dlopen_support" = unknown \ 871004007ebaSmrg && test "$dlopen_self" = unknown \ 871104007ebaSmrg && test "$dlopen_self_static" = unknown && \ 871204007ebaSmrg func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." 871304007ebaSmrg 871404007ebaSmrg case $host in 871504007ebaSmrg *-*-rhapsody* | *-*-darwin1.[012]) 871604007ebaSmrg # On Rhapsody replace the C library is the System framework 871704007ebaSmrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` 871804007ebaSmrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` 871904007ebaSmrg ;; 872004007ebaSmrg esac 872104007ebaSmrg 872204007ebaSmrg case $host in 872304007ebaSmrg *-*-darwin*) 872404007ebaSmrg # Don't allow lazy linking, it breaks C++ global constructors 872504007ebaSmrg # But is supposedly fixed on 10.4 or later (yay!). 872604007ebaSmrg if test "$tagname" = CXX ; then 872704007ebaSmrg case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 872804007ebaSmrg 10.[0123]) 872904007ebaSmrg func_append compile_command " ${wl}-bind_at_load" 873004007ebaSmrg func_append finalize_command " ${wl}-bind_at_load" 873104007ebaSmrg ;; 873204007ebaSmrg esac 873304007ebaSmrg fi 873404007ebaSmrg # Time to change all our "foo.ltframework" stuff back to "-framework foo" 873504007ebaSmrg compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873604007ebaSmrg finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` 873704007ebaSmrg ;; 873804007ebaSmrg esac 873904007ebaSmrg 874004007ebaSmrg 874104007ebaSmrg # move library search paths that coincide with paths to not yet 874204007ebaSmrg # installed libraries to the beginning of the library search list 874304007ebaSmrg new_libs= 874404007ebaSmrg for path in $notinst_path; do 874504007ebaSmrg case " $new_libs " in 874604007ebaSmrg *" -L$path/$objdir "*) ;; 874704007ebaSmrg *) 874804007ebaSmrg case " $compile_deplibs " in 874904007ebaSmrg *" -L$path/$objdir "*) 875004007ebaSmrg func_append new_libs " -L$path/$objdir" ;; 875104007ebaSmrg esac 875204007ebaSmrg ;; 875304007ebaSmrg esac 875404007ebaSmrg done 875504007ebaSmrg for deplib in $compile_deplibs; do 875604007ebaSmrg case $deplib in 875704007ebaSmrg -L*) 875804007ebaSmrg case " $new_libs " in 875904007ebaSmrg *" $deplib "*) ;; 876004007ebaSmrg *) func_append new_libs " $deplib" ;; 876104007ebaSmrg esac 876204007ebaSmrg ;; 876304007ebaSmrg *) func_append new_libs " $deplib" ;; 876404007ebaSmrg esac 876504007ebaSmrg done 876604007ebaSmrg compile_deplibs="$new_libs" 876704007ebaSmrg 876804007ebaSmrg 876904007ebaSmrg func_append compile_command " $compile_deplibs" 877004007ebaSmrg func_append finalize_command " $finalize_deplibs" 877104007ebaSmrg 877204007ebaSmrg if test -n "$rpath$xrpath"; then 877304007ebaSmrg # If the user specified any rpath flags, then add them. 877404007ebaSmrg for libdir in $rpath $xrpath; do 877504007ebaSmrg # This is the magic to use -rpath. 877604007ebaSmrg case "$finalize_rpath " in 877704007ebaSmrg *" $libdir "*) ;; 877804007ebaSmrg *) func_append finalize_rpath " $libdir" ;; 877904007ebaSmrg esac 878004007ebaSmrg done 878104007ebaSmrg fi 878204007ebaSmrg 878304007ebaSmrg # Now hardcode the library paths 878404007ebaSmrg rpath= 878504007ebaSmrg hardcode_libdirs= 878604007ebaSmrg for libdir in $compile_rpath $finalize_rpath; do 878704007ebaSmrg if test -n "$hardcode_libdir_flag_spec"; then 878804007ebaSmrg if test -n "$hardcode_libdir_separator"; then 878904007ebaSmrg if test -z "$hardcode_libdirs"; then 879004007ebaSmrg hardcode_libdirs="$libdir" 879104007ebaSmrg else 879204007ebaSmrg # Just accumulate the unique libdirs. 879304007ebaSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 879404007ebaSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 879504007ebaSmrg ;; 879604007ebaSmrg *) 879704007ebaSmrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 879804007ebaSmrg ;; 879904007ebaSmrg esac 880004007ebaSmrg fi 880104007ebaSmrg else 880204007ebaSmrg eval flag=\"$hardcode_libdir_flag_spec\" 880304007ebaSmrg func_append rpath " $flag" 880404007ebaSmrg fi 880504007ebaSmrg elif test -n "$runpath_var"; then 880604007ebaSmrg case "$perm_rpath " in 880704007ebaSmrg *" $libdir "*) ;; 880804007ebaSmrg *) func_append perm_rpath " $libdir" ;; 880904007ebaSmrg esac 881004007ebaSmrg fi 881104007ebaSmrg case $host in 881204007ebaSmrg *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) 881304007ebaSmrg testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` 881404007ebaSmrg case :$dllsearchpath: in 881504007ebaSmrg *":$libdir:"*) ;; 881604007ebaSmrg ::) dllsearchpath=$libdir;; 881704007ebaSmrg *) func_append dllsearchpath ":$libdir";; 881804007ebaSmrg esac 881904007ebaSmrg case :$dllsearchpath: in 882004007ebaSmrg *":$testbindir:"*) ;; 882104007ebaSmrg ::) dllsearchpath=$testbindir;; 882204007ebaSmrg *) func_append dllsearchpath ":$testbindir";; 882304007ebaSmrg esac 882404007ebaSmrg ;; 882504007ebaSmrg esac 882604007ebaSmrg done 882704007ebaSmrg # Substitute the hardcoded libdirs into the rpath. 882804007ebaSmrg if test -n "$hardcode_libdir_separator" && 882904007ebaSmrg test -n "$hardcode_libdirs"; then 883004007ebaSmrg libdir="$hardcode_libdirs" 883104007ebaSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 883204007ebaSmrg fi 883304007ebaSmrg compile_rpath="$rpath" 883404007ebaSmrg 883504007ebaSmrg rpath= 883604007ebaSmrg hardcode_libdirs= 883704007ebaSmrg for libdir in $finalize_rpath; do 883804007ebaSmrg if test -n "$hardcode_libdir_flag_spec"; then 883904007ebaSmrg if test -n "$hardcode_libdir_separator"; then 884004007ebaSmrg if test -z "$hardcode_libdirs"; then 884104007ebaSmrg hardcode_libdirs="$libdir" 884204007ebaSmrg else 884304007ebaSmrg # Just accumulate the unique libdirs. 884404007ebaSmrg case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in 884504007ebaSmrg *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) 884604007ebaSmrg ;; 884704007ebaSmrg *) 884804007ebaSmrg func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" 884904007ebaSmrg ;; 885004007ebaSmrg esac 885104007ebaSmrg fi 885204007ebaSmrg else 885304007ebaSmrg eval flag=\"$hardcode_libdir_flag_spec\" 885404007ebaSmrg func_append rpath " $flag" 885504007ebaSmrg fi 885604007ebaSmrg elif test -n "$runpath_var"; then 885704007ebaSmrg case "$finalize_perm_rpath " in 885804007ebaSmrg *" $libdir "*) ;; 885904007ebaSmrg *) func_append finalize_perm_rpath " $libdir" ;; 886004007ebaSmrg esac 886104007ebaSmrg fi 886204007ebaSmrg done 886304007ebaSmrg # Substitute the hardcoded libdirs into the rpath. 886404007ebaSmrg if test -n "$hardcode_libdir_separator" && 886504007ebaSmrg test -n "$hardcode_libdirs"; then 886604007ebaSmrg libdir="$hardcode_libdirs" 886704007ebaSmrg eval rpath=\" $hardcode_libdir_flag_spec\" 886804007ebaSmrg fi 886904007ebaSmrg finalize_rpath="$rpath" 887004007ebaSmrg 887104007ebaSmrg if test -n "$libobjs" && test "$build_old_libs" = yes; then 887204007ebaSmrg # Transform all the library objects into standard objects. 887304007ebaSmrg compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 887404007ebaSmrg finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` 887504007ebaSmrg fi 887604007ebaSmrg 887704007ebaSmrg func_generate_dlsyms "$outputname" "@PROGRAM@" "no" 887804007ebaSmrg 887904007ebaSmrg # template prelinking step 888004007ebaSmrg if test -n "$prelink_cmds"; then 888104007ebaSmrg func_execute_cmds "$prelink_cmds" 'exit $?' 888204007ebaSmrg fi 888304007ebaSmrg 888404007ebaSmrg wrappers_required=yes 888504007ebaSmrg case $host in 888604007ebaSmrg *cegcc* | *mingw32ce*) 888704007ebaSmrg # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. 888804007ebaSmrg wrappers_required=no 888904007ebaSmrg ;; 889004007ebaSmrg *cygwin* | *mingw* ) 889104007ebaSmrg if test "$build_libtool_libs" != yes; then 889204007ebaSmrg wrappers_required=no 889304007ebaSmrg fi 889404007ebaSmrg ;; 889504007ebaSmrg *) 889604007ebaSmrg if test "$need_relink" = no || test "$build_libtool_libs" != yes; then 889704007ebaSmrg wrappers_required=no 889804007ebaSmrg fi 889904007ebaSmrg ;; 890004007ebaSmrg esac 890104007ebaSmrg if test "$wrappers_required" = no; then 890204007ebaSmrg # Replace the output file specification. 890304007ebaSmrg compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 890404007ebaSmrg link_command="$compile_command$compile_rpath" 890504007ebaSmrg 890604007ebaSmrg # We have no uninstalled library dependencies, so finalize right now. 890704007ebaSmrg exit_status=0 890804007ebaSmrg func_show_eval "$link_command" 'exit_status=$?' 890904007ebaSmrg 891004007ebaSmrg if test -n "$postlink_cmds"; then 891104007ebaSmrg func_to_tool_file "$output" 891204007ebaSmrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 891304007ebaSmrg func_execute_cmds "$postlink_cmds" 'exit $?' 891404007ebaSmrg fi 891504007ebaSmrg 891604007ebaSmrg # Delete the generated files. 891704007ebaSmrg if test -f "$output_objdir/${outputname}S.${objext}"; then 891804007ebaSmrg func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' 891904007ebaSmrg fi 892004007ebaSmrg 892104007ebaSmrg exit $exit_status 892204007ebaSmrg fi 892304007ebaSmrg 892404007ebaSmrg if test -n "$compile_shlibpath$finalize_shlibpath"; then 892504007ebaSmrg compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" 892604007ebaSmrg fi 892704007ebaSmrg if test -n "$finalize_shlibpath"; then 892804007ebaSmrg finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" 892904007ebaSmrg fi 893004007ebaSmrg 893104007ebaSmrg compile_var= 893204007ebaSmrg finalize_var= 893304007ebaSmrg if test -n "$runpath_var"; then 893404007ebaSmrg if test -n "$perm_rpath"; then 893504007ebaSmrg # We should set the runpath_var. 893604007ebaSmrg rpath= 893704007ebaSmrg for dir in $perm_rpath; do 893804007ebaSmrg func_append rpath "$dir:" 893904007ebaSmrg done 894004007ebaSmrg compile_var="$runpath_var=\"$rpath\$$runpath_var\" " 894104007ebaSmrg fi 894204007ebaSmrg if test -n "$finalize_perm_rpath"; then 894304007ebaSmrg # We should set the runpath_var. 894404007ebaSmrg rpath= 894504007ebaSmrg for dir in $finalize_perm_rpath; do 894604007ebaSmrg func_append rpath "$dir:" 894704007ebaSmrg done 894804007ebaSmrg finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " 894904007ebaSmrg fi 895004007ebaSmrg fi 895104007ebaSmrg 895204007ebaSmrg if test "$no_install" = yes; then 895304007ebaSmrg # We don't need to create a wrapper script. 895404007ebaSmrg link_command="$compile_var$compile_command$compile_rpath" 895504007ebaSmrg # Replace the output file specification. 895604007ebaSmrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` 895704007ebaSmrg # Delete the old output file. 895804007ebaSmrg $opt_dry_run || $RM $output 895904007ebaSmrg # Link the executable and exit 896004007ebaSmrg func_show_eval "$link_command" 'exit $?' 896104007ebaSmrg 896204007ebaSmrg if test -n "$postlink_cmds"; then 896304007ebaSmrg func_to_tool_file "$output" 896404007ebaSmrg postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` 896504007ebaSmrg func_execute_cmds "$postlink_cmds" 'exit $?' 896604007ebaSmrg fi 896704007ebaSmrg 896804007ebaSmrg exit $EXIT_SUCCESS 896904007ebaSmrg fi 897004007ebaSmrg 897104007ebaSmrg if test "$hardcode_action" = relink; then 897204007ebaSmrg # Fast installation is not supported 897304007ebaSmrg link_command="$compile_var$compile_command$compile_rpath" 897404007ebaSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 897504007ebaSmrg 897604007ebaSmrg func_warning "this platform does not like uninstalled shared libraries" 897704007ebaSmrg func_warning "\`$output' will be relinked during installation" 897804007ebaSmrg else 897904007ebaSmrg if test "$fast_install" != no; then 898004007ebaSmrg link_command="$finalize_var$compile_command$finalize_rpath" 898104007ebaSmrg if test "$fast_install" = yes; then 898204007ebaSmrg relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` 898304007ebaSmrg else 898404007ebaSmrg # fast_install is set to needless 898504007ebaSmrg relink_command= 898604007ebaSmrg fi 898704007ebaSmrg else 898804007ebaSmrg link_command="$compile_var$compile_command$compile_rpath" 898904007ebaSmrg relink_command="$finalize_var$finalize_command$finalize_rpath" 899004007ebaSmrg fi 899104007ebaSmrg fi 899204007ebaSmrg 899304007ebaSmrg # Replace the output file specification. 899404007ebaSmrg link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` 899504007ebaSmrg 899604007ebaSmrg # Delete the old output files. 899704007ebaSmrg $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname 899804007ebaSmrg 899904007ebaSmrg func_show_eval "$link_command" 'exit $?' 900004007ebaSmrg 900104007ebaSmrg if test -n "$postlink_cmds"; then 900204007ebaSmrg func_to_tool_file "$output_objdir/$outputname" 900304007ebaSmrg 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'` 900404007ebaSmrg func_execute_cmds "$postlink_cmds" 'exit $?' 900504007ebaSmrg fi 900604007ebaSmrg 900704007ebaSmrg # Now create the wrapper script. 900804007ebaSmrg func_verbose "creating $output" 900904007ebaSmrg 901004007ebaSmrg # Quote the relink command for shipping. 901104007ebaSmrg if test -n "$relink_command"; then 901204007ebaSmrg # Preserve any variables that may affect compiler behavior 901304007ebaSmrg for var in $variables_saved_for_relink; do 901404007ebaSmrg if eval test -z \"\${$var+set}\"; then 901504007ebaSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 901604007ebaSmrg elif eval var_value=\$$var; test -z "$var_value"; then 901704007ebaSmrg relink_command="$var=; export $var; $relink_command" 901804007ebaSmrg else 901904007ebaSmrg func_quote_for_eval "$var_value" 902004007ebaSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 902104007ebaSmrg fi 902204007ebaSmrg done 902304007ebaSmrg relink_command="(cd `pwd`; $relink_command)" 902404007ebaSmrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 902504007ebaSmrg fi 902604007ebaSmrg 902704007ebaSmrg # Only actually do things if not in dry run mode. 902804007ebaSmrg $opt_dry_run || { 902904007ebaSmrg # win32 will think the script is a binary if it has 903004007ebaSmrg # a .exe suffix, so we strip it off here. 903104007ebaSmrg case $output in 903204007ebaSmrg *.exe) func_stripname '' '.exe' "$output" 903304007ebaSmrg output=$func_stripname_result ;; 903404007ebaSmrg esac 903504007ebaSmrg # test for cygwin because mv fails w/o .exe extensions 903604007ebaSmrg case $host in 903704007ebaSmrg *cygwin*) 903804007ebaSmrg exeext=.exe 903904007ebaSmrg func_stripname '' '.exe' "$outputname" 904004007ebaSmrg outputname=$func_stripname_result ;; 904104007ebaSmrg *) exeext= ;; 904204007ebaSmrg esac 904304007ebaSmrg case $host in 904404007ebaSmrg *cygwin* | *mingw* ) 904504007ebaSmrg func_dirname_and_basename "$output" "" "." 904604007ebaSmrg output_name=$func_basename_result 904704007ebaSmrg output_path=$func_dirname_result 904804007ebaSmrg cwrappersource="$output_path/$objdir/lt-$output_name.c" 904904007ebaSmrg cwrapper="$output_path/$output_name.exe" 905004007ebaSmrg $RM $cwrappersource $cwrapper 905104007ebaSmrg trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 905204007ebaSmrg 905304007ebaSmrg func_emit_cwrapperexe_src > $cwrappersource 905404007ebaSmrg 905504007ebaSmrg # The wrapper executable is built using the $host compiler, 905604007ebaSmrg # because it contains $host paths and files. If cross- 905704007ebaSmrg # compiling, it, like the target executable, must be 905804007ebaSmrg # executed on the $host or under an emulation environment. 905904007ebaSmrg $opt_dry_run || { 906004007ebaSmrg $LTCC $LTCFLAGS -o $cwrapper $cwrappersource 906104007ebaSmrg $STRIP $cwrapper 906204007ebaSmrg } 906304007ebaSmrg 906404007ebaSmrg # Now, create the wrapper script for func_source use: 906504007ebaSmrg func_ltwrapper_scriptname $cwrapper 906604007ebaSmrg $RM $func_ltwrapper_scriptname_result 906704007ebaSmrg trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 906804007ebaSmrg $opt_dry_run || { 906904007ebaSmrg # note: this script will not be executed, so do not chmod. 907004007ebaSmrg if test "x$build" = "x$host" ; then 907104007ebaSmrg $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result 907204007ebaSmrg else 907304007ebaSmrg func_emit_wrapper no > $func_ltwrapper_scriptname_result 907404007ebaSmrg fi 907504007ebaSmrg } 907604007ebaSmrg ;; 907704007ebaSmrg * ) 907804007ebaSmrg $RM $output 907904007ebaSmrg trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 908004007ebaSmrg 908104007ebaSmrg func_emit_wrapper no > $output 908204007ebaSmrg chmod +x $output 908304007ebaSmrg ;; 908404007ebaSmrg esac 908504007ebaSmrg } 908604007ebaSmrg exit $EXIT_SUCCESS 908704007ebaSmrg ;; 908804007ebaSmrg esac 908904007ebaSmrg 909004007ebaSmrg # See if we need to build an old-fashioned archive. 909104007ebaSmrg for oldlib in $oldlibs; do 909204007ebaSmrg 909304007ebaSmrg if test "$build_libtool_libs" = convenience; then 909404007ebaSmrg oldobjs="$libobjs_save $symfileobj" 909504007ebaSmrg addlibs="$convenience" 909604007ebaSmrg build_libtool_libs=no 909704007ebaSmrg else 909804007ebaSmrg if test "$build_libtool_libs" = module; then 909904007ebaSmrg oldobjs="$libobjs_save" 910004007ebaSmrg build_libtool_libs=no 910104007ebaSmrg else 910204007ebaSmrg oldobjs="$old_deplibs $non_pic_objects" 910304007ebaSmrg if test "$preload" = yes && test -f "$symfileobj"; then 910404007ebaSmrg func_append oldobjs " $symfileobj" 910504007ebaSmrg fi 910604007ebaSmrg fi 910704007ebaSmrg addlibs="$old_convenience" 910804007ebaSmrg fi 910904007ebaSmrg 911004007ebaSmrg if test -n "$addlibs"; then 911104007ebaSmrg gentop="$output_objdir/${outputname}x" 911204007ebaSmrg func_append generated " $gentop" 911304007ebaSmrg 911404007ebaSmrg func_extract_archives $gentop $addlibs 911504007ebaSmrg func_append oldobjs " $func_extract_archives_result" 911604007ebaSmrg fi 911704007ebaSmrg 911804007ebaSmrg # Do each command in the archive commands. 911904007ebaSmrg if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then 912004007ebaSmrg cmds=$old_archive_from_new_cmds 912104007ebaSmrg else 912204007ebaSmrg 912304007ebaSmrg # Add any objects from preloaded convenience libraries 912404007ebaSmrg if test -n "$dlprefiles"; then 912504007ebaSmrg gentop="$output_objdir/${outputname}x" 912604007ebaSmrg func_append generated " $gentop" 912704007ebaSmrg 912804007ebaSmrg func_extract_archives $gentop $dlprefiles 912904007ebaSmrg func_append oldobjs " $func_extract_archives_result" 913004007ebaSmrg fi 913104007ebaSmrg 913204007ebaSmrg # POSIX demands no paths to be encoded in archives. We have 913304007ebaSmrg # to avoid creating archives with duplicate basenames if we 913404007ebaSmrg # might have to extract them afterwards, e.g., when creating a 913504007ebaSmrg # static archive out of a convenience library, or when linking 913604007ebaSmrg # the entirety of a libtool archive into another (currently 913704007ebaSmrg # not supported by libtool). 913804007ebaSmrg if (for obj in $oldobjs 913904007ebaSmrg do 914004007ebaSmrg func_basename "$obj" 914104007ebaSmrg $ECHO "$func_basename_result" 914204007ebaSmrg done | sort | sort -uc >/dev/null 2>&1); then 914304007ebaSmrg : 914404007ebaSmrg else 914504007ebaSmrg echo "copying selected object files to avoid basename conflicts..." 914604007ebaSmrg gentop="$output_objdir/${outputname}x" 914704007ebaSmrg func_append generated " $gentop" 914804007ebaSmrg func_mkdir_p "$gentop" 914904007ebaSmrg save_oldobjs=$oldobjs 915004007ebaSmrg oldobjs= 915104007ebaSmrg counter=1 915204007ebaSmrg for obj in $save_oldobjs 915304007ebaSmrg do 915404007ebaSmrg func_basename "$obj" 915504007ebaSmrg objbase="$func_basename_result" 915604007ebaSmrg case " $oldobjs " in 915704007ebaSmrg " ") oldobjs=$obj ;; 915804007ebaSmrg *[\ /]"$objbase "*) 915904007ebaSmrg while :; do 916004007ebaSmrg # Make sure we don't pick an alternate name that also 916104007ebaSmrg # overlaps. 916204007ebaSmrg newobj=lt$counter-$objbase 916304007ebaSmrg func_arith $counter + 1 916404007ebaSmrg counter=$func_arith_result 916504007ebaSmrg case " $oldobjs " in 916604007ebaSmrg *[\ /]"$newobj "*) ;; 916704007ebaSmrg *) if test ! -f "$gentop/$newobj"; then break; fi ;; 916804007ebaSmrg esac 916904007ebaSmrg done 917004007ebaSmrg func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" 917104007ebaSmrg func_append oldobjs " $gentop/$newobj" 917204007ebaSmrg ;; 917304007ebaSmrg *) func_append oldobjs " $obj" ;; 917404007ebaSmrg esac 917504007ebaSmrg done 917604007ebaSmrg fi 917704007ebaSmrg func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 917804007ebaSmrg tool_oldlib=$func_to_tool_file_result 917904007ebaSmrg eval cmds=\"$old_archive_cmds\" 918004007ebaSmrg 918104007ebaSmrg func_len " $cmds" 918204007ebaSmrg len=$func_len_result 918304007ebaSmrg if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then 918404007ebaSmrg cmds=$old_archive_cmds 918504007ebaSmrg elif test -n "$archiver_list_spec"; then 918604007ebaSmrg func_verbose "using command file archive linking..." 918704007ebaSmrg for obj in $oldobjs 918804007ebaSmrg do 918904007ebaSmrg func_to_tool_file "$obj" 919004007ebaSmrg $ECHO "$func_to_tool_file_result" 919104007ebaSmrg done > $output_objdir/$libname.libcmd 919204007ebaSmrg func_to_tool_file "$output_objdir/$libname.libcmd" 919304007ebaSmrg oldobjs=" $archiver_list_spec$func_to_tool_file_result" 919404007ebaSmrg cmds=$old_archive_cmds 919504007ebaSmrg else 919604007ebaSmrg # the command line is too long to link in one step, link in parts 919704007ebaSmrg func_verbose "using piecewise archive linking..." 919804007ebaSmrg save_RANLIB=$RANLIB 919904007ebaSmrg RANLIB=: 920004007ebaSmrg objlist= 920104007ebaSmrg concat_cmds= 920204007ebaSmrg save_oldobjs=$oldobjs 920304007ebaSmrg oldobjs= 920404007ebaSmrg # Is there a better way of finding the last object in the list? 920504007ebaSmrg for obj in $save_oldobjs 920604007ebaSmrg do 920704007ebaSmrg last_oldobj=$obj 920804007ebaSmrg done 920904007ebaSmrg eval test_cmds=\"$old_archive_cmds\" 921004007ebaSmrg func_len " $test_cmds" 921104007ebaSmrg len0=$func_len_result 921204007ebaSmrg len=$len0 921304007ebaSmrg for obj in $save_oldobjs 921404007ebaSmrg do 921504007ebaSmrg func_len " $obj" 921604007ebaSmrg func_arith $len + $func_len_result 921704007ebaSmrg len=$func_arith_result 921804007ebaSmrg func_append objlist " $obj" 921904007ebaSmrg if test "$len" -lt "$max_cmd_len"; then 922004007ebaSmrg : 922104007ebaSmrg else 922204007ebaSmrg # the above command should be used before it gets too long 922304007ebaSmrg oldobjs=$objlist 922404007ebaSmrg if test "$obj" = "$last_oldobj" ; then 922504007ebaSmrg RANLIB=$save_RANLIB 922604007ebaSmrg fi 922704007ebaSmrg test -z "$concat_cmds" || concat_cmds=$concat_cmds~ 922804007ebaSmrg eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" 922904007ebaSmrg objlist= 923004007ebaSmrg len=$len0 923104007ebaSmrg fi 923204007ebaSmrg done 923304007ebaSmrg RANLIB=$save_RANLIB 923404007ebaSmrg oldobjs=$objlist 923504007ebaSmrg if test "X$oldobjs" = "X" ; then 923604007ebaSmrg eval cmds=\"\$concat_cmds\" 923704007ebaSmrg else 923804007ebaSmrg eval cmds=\"\$concat_cmds~\$old_archive_cmds\" 923904007ebaSmrg fi 924004007ebaSmrg fi 924104007ebaSmrg fi 924204007ebaSmrg func_execute_cmds "$cmds" 'exit $?' 924304007ebaSmrg done 924404007ebaSmrg 924504007ebaSmrg test -n "$generated" && \ 924604007ebaSmrg func_show_eval "${RM}r$generated" 924704007ebaSmrg 924804007ebaSmrg # Now create the libtool archive. 924904007ebaSmrg case $output in 925004007ebaSmrg *.la) 925104007ebaSmrg old_library= 925204007ebaSmrg test "$build_old_libs" = yes && old_library="$libname.$libext" 925304007ebaSmrg func_verbose "creating $output" 925404007ebaSmrg 925504007ebaSmrg # Preserve any variables that may affect compiler behavior 925604007ebaSmrg for var in $variables_saved_for_relink; do 925704007ebaSmrg if eval test -z \"\${$var+set}\"; then 925804007ebaSmrg relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" 925904007ebaSmrg elif eval var_value=\$$var; test -z "$var_value"; then 926004007ebaSmrg relink_command="$var=; export $var; $relink_command" 926104007ebaSmrg else 926204007ebaSmrg func_quote_for_eval "$var_value" 926304007ebaSmrg relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" 926404007ebaSmrg fi 926504007ebaSmrg done 926604007ebaSmrg # Quote the link command for shipping. 926704007ebaSmrg relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" 926804007ebaSmrg relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` 926904007ebaSmrg if test "$hardcode_automatic" = yes ; then 927004007ebaSmrg relink_command= 927104007ebaSmrg fi 927204007ebaSmrg 927304007ebaSmrg # Only create the output if not a dry run. 927404007ebaSmrg $opt_dry_run || { 927504007ebaSmrg for installed in no yes; do 927604007ebaSmrg if test "$installed" = yes; then 927704007ebaSmrg if test -z "$install_libdir"; then 927804007ebaSmrg break 927904007ebaSmrg fi 928004007ebaSmrg output="$output_objdir/$outputname"i 928104007ebaSmrg # Replace all uninstalled libtool libraries with the installed ones 928204007ebaSmrg newdependency_libs= 928304007ebaSmrg for deplib in $dependency_libs; do 928404007ebaSmrg case $deplib in 928504007ebaSmrg *.la) 928604007ebaSmrg func_basename "$deplib" 928704007ebaSmrg name="$func_basename_result" 928804007ebaSmrg func_resolve_sysroot "$deplib" 928904007ebaSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` 929004007ebaSmrg test -z "$libdir" && \ 929104007ebaSmrg func_fatal_error "\`$deplib' is not a valid libtool archive" 929204007ebaSmrg func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" 929304007ebaSmrg ;; 929404007ebaSmrg -L*) 929504007ebaSmrg func_stripname -L '' "$deplib" 929604007ebaSmrg func_replace_sysroot "$func_stripname_result" 929704007ebaSmrg func_append newdependency_libs " -L$func_replace_sysroot_result" 929804007ebaSmrg ;; 929904007ebaSmrg -R*) 930004007ebaSmrg func_stripname -R '' "$deplib" 930104007ebaSmrg func_replace_sysroot "$func_stripname_result" 930204007ebaSmrg func_append newdependency_libs " -R$func_replace_sysroot_result" 930304007ebaSmrg ;; 930404007ebaSmrg *) func_append newdependency_libs " $deplib" ;; 930504007ebaSmrg esac 930604007ebaSmrg done 930704007ebaSmrg dependency_libs="$newdependency_libs" 930804007ebaSmrg newdlfiles= 930904007ebaSmrg 931004007ebaSmrg for lib in $dlfiles; do 931104007ebaSmrg case $lib in 931204007ebaSmrg *.la) 931304007ebaSmrg func_basename "$lib" 931404007ebaSmrg name="$func_basename_result" 931504007ebaSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 931604007ebaSmrg test -z "$libdir" && \ 931704007ebaSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 931804007ebaSmrg func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" 931904007ebaSmrg ;; 932004007ebaSmrg *) func_append newdlfiles " $lib" ;; 932104007ebaSmrg esac 932204007ebaSmrg done 932304007ebaSmrg dlfiles="$newdlfiles" 932404007ebaSmrg newdlprefiles= 932504007ebaSmrg for lib in $dlprefiles; do 932604007ebaSmrg case $lib in 932704007ebaSmrg *.la) 932804007ebaSmrg # Only pass preopened files to the pseudo-archive (for 932904007ebaSmrg # eventual linking with the app. that links it) if we 933004007ebaSmrg # didn't already link the preopened objects directly into 933104007ebaSmrg # the library: 933204007ebaSmrg func_basename "$lib" 933304007ebaSmrg name="$func_basename_result" 933404007ebaSmrg eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` 933504007ebaSmrg test -z "$libdir" && \ 933604007ebaSmrg func_fatal_error "\`$lib' is not a valid libtool archive" 933704007ebaSmrg func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" 933804007ebaSmrg ;; 933904007ebaSmrg esac 934004007ebaSmrg done 934104007ebaSmrg dlprefiles="$newdlprefiles" 934204007ebaSmrg else 934304007ebaSmrg newdlfiles= 934404007ebaSmrg for lib in $dlfiles; do 934504007ebaSmrg case $lib in 934604007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 934704007ebaSmrg *) abs=`pwd`"/$lib" ;; 934804007ebaSmrg esac 934904007ebaSmrg func_append newdlfiles " $abs" 935004007ebaSmrg done 935104007ebaSmrg dlfiles="$newdlfiles" 935204007ebaSmrg newdlprefiles= 935304007ebaSmrg for lib in $dlprefiles; do 935404007ebaSmrg case $lib in 935504007ebaSmrg [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; 935604007ebaSmrg *) abs=`pwd`"/$lib" ;; 935704007ebaSmrg esac 935804007ebaSmrg func_append newdlprefiles " $abs" 935904007ebaSmrg done 936004007ebaSmrg dlprefiles="$newdlprefiles" 936104007ebaSmrg fi 936204007ebaSmrg $RM $output 936304007ebaSmrg # place dlname in correct position for cygwin 936404007ebaSmrg # In fact, it would be nice if we could use this code for all target 936504007ebaSmrg # systems that can't hard-code library paths into their executables 936604007ebaSmrg # and that have no shared library path variable independent of PATH, 936704007ebaSmrg # but it turns out we can't easily determine that from inspecting 936804007ebaSmrg # libtool variables, so we have to hard-code the OSs to which it 936904007ebaSmrg # applies here; at the moment, that means platforms that use the PE 937004007ebaSmrg # object format with DLL files. See the long comment at the top of 937104007ebaSmrg # tests/bindir.at for full details. 937204007ebaSmrg tdlname=$dlname 937304007ebaSmrg case $host,$output,$installed,$module,$dlname in 937404007ebaSmrg *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) 937504007ebaSmrg # If a -bindir argument was supplied, place the dll there. 937604007ebaSmrg if test "x$bindir" != x ; 937704007ebaSmrg then 937804007ebaSmrg func_relative_path "$install_libdir" "$bindir" 937904007ebaSmrg tdlname=$func_relative_path_result$dlname 938004007ebaSmrg else 938104007ebaSmrg # Otherwise fall back on heuristic. 938204007ebaSmrg tdlname=../bin/$dlname 938304007ebaSmrg fi 938404007ebaSmrg ;; 938504007ebaSmrg esac 938604007ebaSmrg $ECHO > $output "\ 938704007ebaSmrg# $outputname - a libtool library file 938804007ebaSmrg# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION 938904007ebaSmrg# 939004007ebaSmrg# Please DO NOT delete this file! 939104007ebaSmrg# It is necessary for linking the library. 939204007ebaSmrg 939304007ebaSmrg# The name that we can dlopen(3). 939404007ebaSmrgdlname='$tdlname' 939504007ebaSmrg 939604007ebaSmrg# Names of this library. 939704007ebaSmrglibrary_names='$library_names' 939804007ebaSmrg 939904007ebaSmrg# The name of the static archive. 940004007ebaSmrgold_library='$old_library' 940104007ebaSmrg 940204007ebaSmrg# Linker flags that can not go in dependency_libs. 940304007ebaSmrginherited_linker_flags='$new_inherited_linker_flags' 940404007ebaSmrg 940504007ebaSmrg# Libraries that this one depends upon. 940604007ebaSmrgdependency_libs='$dependency_libs' 940704007ebaSmrg 940804007ebaSmrg# Names of additional weak libraries provided by this library 940904007ebaSmrgweak_library_names='$weak_libs' 941004007ebaSmrg 941104007ebaSmrg# Version information for $libname. 941204007ebaSmrgcurrent=$current 941304007ebaSmrgage=$age 941404007ebaSmrgrevision=$revision 941504007ebaSmrg 941604007ebaSmrg# Is this an already installed library? 941704007ebaSmrginstalled=$installed 941804007ebaSmrg 941904007ebaSmrg# Should we warn about portability when linking against -modules? 942004007ebaSmrgshouldnotlink=$module 942104007ebaSmrg 942204007ebaSmrg# Files to dlopen/dlpreopen 942304007ebaSmrgdlopen='$dlfiles' 942404007ebaSmrgdlpreopen='$dlprefiles' 942504007ebaSmrg 942604007ebaSmrg# Directory that this library needs to be installed in: 942704007ebaSmrglibdir='$install_libdir'" 942804007ebaSmrg if test "$installed" = no && test "$need_relink" = yes; then 942904007ebaSmrg $ECHO >> $output "\ 943004007ebaSmrgrelink_command=\"$relink_command\"" 943104007ebaSmrg fi 943204007ebaSmrg done 943304007ebaSmrg } 943404007ebaSmrg 943504007ebaSmrg # Do a symbolic link so that the libtool archive can be found in 943604007ebaSmrg # LD_LIBRARY_PATH before the program is installed. 943704007ebaSmrg func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' 943804007ebaSmrg ;; 943904007ebaSmrg esac 944004007ebaSmrg exit $EXIT_SUCCESS 944104007ebaSmrg} 944204007ebaSmrg 944304007ebaSmrg{ test "$opt_mode" = link || test "$opt_mode" = relink; } && 944404007ebaSmrg func_mode_link ${1+"$@"} 944504007ebaSmrg 944604007ebaSmrg 944704007ebaSmrg# func_mode_uninstall arg... 944804007ebaSmrgfunc_mode_uninstall () 944904007ebaSmrg{ 945004007ebaSmrg $opt_debug 945104007ebaSmrg RM="$nonopt" 945204007ebaSmrg files= 945304007ebaSmrg rmforce= 945404007ebaSmrg exit_status=0 945504007ebaSmrg 945604007ebaSmrg # This variable tells wrapper scripts just to set variables rather 945704007ebaSmrg # than running their programs. 945804007ebaSmrg libtool_install_magic="$magic" 945904007ebaSmrg 946004007ebaSmrg for arg 946104007ebaSmrg do 946204007ebaSmrg case $arg in 946304007ebaSmrg -f) func_append RM " $arg"; rmforce=yes ;; 946404007ebaSmrg -*) func_append RM " $arg" ;; 946504007ebaSmrg *) func_append files " $arg" ;; 946604007ebaSmrg esac 946704007ebaSmrg done 946804007ebaSmrg 946904007ebaSmrg test -z "$RM" && \ 947004007ebaSmrg func_fatal_help "you must specify an RM program" 947104007ebaSmrg 947204007ebaSmrg rmdirs= 947304007ebaSmrg 947404007ebaSmrg for file in $files; do 947504007ebaSmrg func_dirname "$file" "" "." 947604007ebaSmrg dir="$func_dirname_result" 947704007ebaSmrg if test "X$dir" = X.; then 947804007ebaSmrg odir="$objdir" 947904007ebaSmrg else 948004007ebaSmrg odir="$dir/$objdir" 948104007ebaSmrg fi 948204007ebaSmrg func_basename "$file" 948304007ebaSmrg name="$func_basename_result" 948404007ebaSmrg test "$opt_mode" = uninstall && odir="$dir" 948504007ebaSmrg 948604007ebaSmrg # Remember odir for removal later, being careful to avoid duplicates 948704007ebaSmrg if test "$opt_mode" = clean; then 948804007ebaSmrg case " $rmdirs " in 948904007ebaSmrg *" $odir "*) ;; 949004007ebaSmrg *) func_append rmdirs " $odir" ;; 949104007ebaSmrg esac 949204007ebaSmrg fi 949304007ebaSmrg 949404007ebaSmrg # Don't error if the file doesn't exist and rm -f was used. 949504007ebaSmrg if { test -L "$file"; } >/dev/null 2>&1 || 949604007ebaSmrg { test -h "$file"; } >/dev/null 2>&1 || 949704007ebaSmrg test -f "$file"; then 949804007ebaSmrg : 949904007ebaSmrg elif test -d "$file"; then 950004007ebaSmrg exit_status=1 950104007ebaSmrg continue 950204007ebaSmrg elif test "$rmforce" = yes; then 950304007ebaSmrg continue 950404007ebaSmrg fi 950504007ebaSmrg 950604007ebaSmrg rmfiles="$file" 950704007ebaSmrg 950804007ebaSmrg case $name in 950904007ebaSmrg *.la) 951004007ebaSmrg # Possibly a libtool archive, so verify it. 951104007ebaSmrg if func_lalib_p "$file"; then 951204007ebaSmrg func_source $dir/$name 951304007ebaSmrg 951404007ebaSmrg # Delete the libtool libraries and symlinks. 951504007ebaSmrg for n in $library_names; do 951604007ebaSmrg func_append rmfiles " $odir/$n" 951704007ebaSmrg done 951804007ebaSmrg test -n "$old_library" && func_append rmfiles " $odir/$old_library" 951904007ebaSmrg 952004007ebaSmrg case "$opt_mode" in 952104007ebaSmrg clean) 952204007ebaSmrg case " $library_names " in 952304007ebaSmrg *" $dlname "*) ;; 952404007ebaSmrg *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; 952504007ebaSmrg esac 952604007ebaSmrg test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" 952704007ebaSmrg ;; 952804007ebaSmrg uninstall) 952904007ebaSmrg if test -n "$library_names"; then 953004007ebaSmrg # Do each command in the postuninstall commands. 953104007ebaSmrg func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 953204007ebaSmrg fi 953304007ebaSmrg 953404007ebaSmrg if test -n "$old_library"; then 953504007ebaSmrg # Do each command in the old_postuninstall commands. 953604007ebaSmrg func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' 953704007ebaSmrg fi 953804007ebaSmrg # FIXME: should reinstall the best remaining shared library. 953904007ebaSmrg ;; 954004007ebaSmrg esac 954104007ebaSmrg fi 954204007ebaSmrg ;; 954304007ebaSmrg 954404007ebaSmrg *.lo) 954504007ebaSmrg # Possibly a libtool object, so verify it. 954604007ebaSmrg if func_lalib_p "$file"; then 954704007ebaSmrg 954804007ebaSmrg # Read the .lo file 954904007ebaSmrg func_source $dir/$name 955004007ebaSmrg 955104007ebaSmrg # Add PIC object to the list of files to remove. 955204007ebaSmrg if test -n "$pic_object" && 955304007ebaSmrg test "$pic_object" != none; then 955404007ebaSmrg func_append rmfiles " $dir/$pic_object" 955504007ebaSmrg fi 955604007ebaSmrg 955704007ebaSmrg # Add non-PIC object to the list of files to remove. 955804007ebaSmrg if test -n "$non_pic_object" && 955904007ebaSmrg test "$non_pic_object" != none; then 956004007ebaSmrg func_append rmfiles " $dir/$non_pic_object" 956104007ebaSmrg fi 956204007ebaSmrg fi 956304007ebaSmrg ;; 956404007ebaSmrg 956504007ebaSmrg *) 956604007ebaSmrg if test "$opt_mode" = clean ; then 956704007ebaSmrg noexename=$name 956804007ebaSmrg case $file in 956904007ebaSmrg *.exe) 957004007ebaSmrg func_stripname '' '.exe' "$file" 957104007ebaSmrg file=$func_stripname_result 957204007ebaSmrg func_stripname '' '.exe' "$name" 957304007ebaSmrg noexename=$func_stripname_result 957404007ebaSmrg # $file with .exe has already been added to rmfiles, 957504007ebaSmrg # add $file without .exe 957604007ebaSmrg func_append rmfiles " $file" 957704007ebaSmrg ;; 957804007ebaSmrg esac 957904007ebaSmrg # Do a test to see if this is a libtool program. 958004007ebaSmrg if func_ltwrapper_p "$file"; then 958104007ebaSmrg if func_ltwrapper_executable_p "$file"; then 958204007ebaSmrg func_ltwrapper_scriptname "$file" 958304007ebaSmrg relink_command= 958404007ebaSmrg func_source $func_ltwrapper_scriptname_result 958504007ebaSmrg func_append rmfiles " $func_ltwrapper_scriptname_result" 958604007ebaSmrg else 958704007ebaSmrg relink_command= 958804007ebaSmrg func_source $dir/$noexename 958904007ebaSmrg fi 959004007ebaSmrg 959104007ebaSmrg # note $name still contains .exe if it was in $file originally 959204007ebaSmrg # as does the version of $file that was added into $rmfiles 959304007ebaSmrg func_append rmfiles " $odir/$name $odir/${name}S.${objext}" 959404007ebaSmrg if test "$fast_install" = yes && test -n "$relink_command"; then 959504007ebaSmrg func_append rmfiles " $odir/lt-$name" 959604007ebaSmrg fi 959704007ebaSmrg if test "X$noexename" != "X$name" ; then 959804007ebaSmrg func_append rmfiles " $odir/lt-${noexename}.c" 959904007ebaSmrg fi 960004007ebaSmrg fi 960104007ebaSmrg fi 960204007ebaSmrg ;; 960304007ebaSmrg esac 960404007ebaSmrg func_show_eval "$RM $rmfiles" 'exit_status=1' 960504007ebaSmrg done 960604007ebaSmrg 960704007ebaSmrg # Try to remove the ${objdir}s in the directories where we deleted files 960804007ebaSmrg for dir in $rmdirs; do 960904007ebaSmrg if test -d "$dir"; then 961004007ebaSmrg func_show_eval "rmdir $dir >/dev/null 2>&1" 961104007ebaSmrg fi 961204007ebaSmrg done 961304007ebaSmrg 961404007ebaSmrg exit $exit_status 961504007ebaSmrg} 961604007ebaSmrg 961704007ebaSmrg{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && 961804007ebaSmrg func_mode_uninstall ${1+"$@"} 961904007ebaSmrg 962004007ebaSmrgtest -z "$opt_mode" && { 962104007ebaSmrg help="$generic_help" 962204007ebaSmrg func_fatal_help "you must specify a MODE" 962304007ebaSmrg} 962404007ebaSmrg 962504007ebaSmrgtest -z "$exec_cmd" && \ 962604007ebaSmrg func_fatal_help "invalid operation mode \`$opt_mode'" 962704007ebaSmrg 962804007ebaSmrgif test -n "$exec_cmd"; then 962904007ebaSmrg eval exec "$exec_cmd" 963004007ebaSmrg exit $EXIT_FAILURE 963104007ebaSmrgfi 963204007ebaSmrg 963304007ebaSmrgexit $exit_status 963404007ebaSmrg 963504007ebaSmrg 963604007ebaSmrg# The TAGs below are defined such that we never get into a situation 963704007ebaSmrg# in which we disable both kinds of libraries. Given conflicting 963804007ebaSmrg# choices, we go for a static library, that is the most portable, 963904007ebaSmrg# since we can't tell whether shared libraries were disabled because 964004007ebaSmrg# the user asked for that or because the platform doesn't support 964104007ebaSmrg# them. This is particularly important on AIX, because we don't 964204007ebaSmrg# support having both static and shared libraries enabled at the same 964304007ebaSmrg# time on that platform, so we default to a shared-only configuration. 964404007ebaSmrg# If a disable-shared tag is given, we'll fallback to a static-only 964504007ebaSmrg# configuration. But we'll never go from static-only to shared-only. 964604007ebaSmrg 964704007ebaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-shared 964804007ebaSmrgbuild_libtool_libs=no 964904007ebaSmrgbuild_old_libs=yes 965004007ebaSmrg# ### END LIBTOOL TAG CONFIG: disable-shared 965104007ebaSmrg 965204007ebaSmrg# ### BEGIN LIBTOOL TAG CONFIG: disable-static 965304007ebaSmrgbuild_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` 965404007ebaSmrg# ### END LIBTOOL TAG CONFIG: disable-static 965504007ebaSmrg 965604007ebaSmrg# Local Variables: 965704007ebaSmrg# mode:shell-script 965804007ebaSmrg# sh-indentation:2 965904007ebaSmrg# End: 966004007ebaSmrg# vi:sw=2 966104007ebaSmrg 9662