ltmain.sh | ltmain.sh | |||
---|---|---|---|---|
# Generated from ltmain.m4sh. | ||||
# ltmain.sh (GNU libtool) 2.2.6b | # libtool (GNU libtool) 2.4 | |||
# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 | # Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 | |||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, | # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, | |||
2007 2008 Free Software Foundation, Inc. | # 2007, 2008, 2009, 2010 Free Software Foundation, Inc. | |||
# This is free software; see the source for copying conditions. There is N O | # This is free software; see the source for copying conditions. There is N O | |||
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS E. | # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOS E. | |||
# GNU Libtool is free software; you can redistribute it and/or modify | # GNU Libtool is free software; you can redistribute it and/or modify | |||
# it under the terms of the GNU General Public License as published by | # it under the terms of the GNU General Public License as published by | |||
# the Free Software Foundation; either version 2 of the License, or | # the Free Software Foundation; either version 2 of the License, or | |||
# (at your option) any later version. | # (at your option) any later version. | |||
# | # | |||
# As a special exception to the GNU General Public License, | # As a special exception to the GNU General Public License, | |||
# if you distribute this file as part of a program or library that | # if you distribute this file as part of a program or library that | |||
skipping to change at line 35 | skipping to change at line 35 | |||
# You should have received a copy of the GNU General Public License | # You should have received a copy of the GNU General Public License | |||
# along with GNU Libtool; see the file COPYING. If not, a copy | # along with GNU Libtool; see the file COPYING. If not, a copy | |||
# can be downloaded from http://www.gnu.org/licenses/gpl.html, | # can be downloaded from http://www.gnu.org/licenses/gpl.html, | |||
# or obtained by writing to the Free Software Foundation, Inc., | # or obtained by writing to the Free Software Foundation, Inc., | |||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||
# Usage: $progname [OPTION]... [MODE-ARG]... | # Usage: $progname [OPTION]... [MODE-ARG]... | |||
# | # | |||
# Provide generalized library-building support services. | # Provide generalized library-building support services. | |||
# | # | |||
# --config show all configuration variables | # --config show all configuration variables | |||
# --debug enable verbose shell tracing | # --debug enable verbose shell tracing | |||
# -n, --dry-run display commands without modifying any files | # -n, --dry-run display commands without modifying any files | |||
# --features display basic configuration information and exit | # --features display basic configuration information and ex | |||
# --mode=MODE use operation mode MODE | it | |||
# --preserve-dup-deps don't remove duplicate dependency libraries | # --mode=MODE use operation mode MODE | |||
# --quiet, --silent don't print informational messages | # --preserve-dup-deps don't remove duplicate dependency libraries | |||
# --tag=TAG use configuration variables from tag TAG | # --quiet, --silent don't print informational messages | |||
# -v, --verbose print informational messages (default) | # --no-quiet, --no-silent | |||
# --version print version information | # print informational messages (default) | |||
# -h, --help print short or long help message | # --tag=TAG use configuration variables from tag TAG | |||
# -v, --verbose print more informational messages than default | ||||
# --no-verbose don't print the extra informational messages | ||||
# --version print version information | ||||
# -h, --help, --help-all print short, long, or detailed help message | ||||
# | # | |||
# MODE must be one of the following: | # MODE must be one of the following: | |||
# | # | |||
# clean remove files from the build directory | # clean remove files from the build directory | |||
# compile compile a source file into a libtool object | # compile compile a source file into a libtool object | |||
# execute automatically set library path, then run a progr | # execute automatically set library path, then run a pro | |||
am | gram | |||
# finish complete the installation of libtool libraries | # finish complete the installation of libtool libraries | |||
# install install libraries or executables | # install install libraries or executables | |||
# link create a library or an executable | # link create a library or an executable | |||
# uninstall remove libraries from an installed directory | # uninstall remove libraries from an installed directory | |||
# | # | |||
# MODE-ARGS vary depending on the MODE. | # MODE-ARGS vary depending on the MODE. When passed as first option, | |||
# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of th | ||||
at. | ||||
# Try `$progname --help --mode=MODE' for a more detailed description of MOD E. | # Try `$progname --help --mode=MODE' for a more detailed description of MOD E. | |||
# | # | |||
# When reporting a bug, please describe a test case to reproduce it and | # When reporting a bug, please describe a test case to reproduce it and | |||
# include the following information: | # include the following information: | |||
# | # | |||
# host-triplet: $host | # host-triplet: $host | |||
# shell: $SHELL | # shell: $SHELL | |||
# compiler: $LTCC | # compiler: $LTCC | |||
# compiler flags: $LTCFLAGS | # compiler flags: $LTCFLAGS | |||
# linker: $LD (gnu? $with_gnu_ld) | # linker: $LD (gnu? $with_gnu_ld) | |||
# $progname: (GNU libtool) 2.2.6b | # $progname: (GNU libtool) 2.4 | |||
# automake: $automake_version | # automake: $automake_version | |||
# autoconf: $autoconf_version | # autoconf: $autoconf_version | |||
# | # | |||
# Report bugs to <bug-libtool@gnu.org>. | # Report bugs to <bug-libtool@gnu.org>. | |||
# GNU libtool home page: <http://www.gnu.org/software/libtool/>. | ||||
# General help using GNU software: <http://www.gnu.org/gethelp/>. | ||||
PROGRAM=ltmain.sh | PROGRAM=libtool | |||
PACKAGE=libtool | PACKAGE=libtool | |||
VERSION=2.2.6b | VERSION=2.4 | |||
TIMESTAMP="" | TIMESTAMP="" | |||
package_revision=1.3017 | package_revision=1.3293 | |||
# Be Bourne compatible | # Be Bourne compatible | |||
if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then | if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then | |||
emulate sh | emulate sh | |||
NULLCMD=: | NULLCMD=: | |||
# Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which | # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which | |||
# is contrary to our usage. Disable this feature. | # is contrary to our usage. Disable this feature. | |||
alias -g '${1+"$@"}'='"$@"' | alias -g '${1+"$@"}'='"$@"' | |||
setopt NO_GLOB_SUBST | setopt NO_GLOB_SUBST | |||
else | else | |||
case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac | case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac | |||
fi | fi | |||
BIN_SH=xpg4; export BIN_SH # for Tru64 | BIN_SH=xpg4; export BIN_SH # for Tru64 | |||
DUALCASE=1; export DUALCASE # for MKS sh | DUALCASE=1; export DUALCASE # for MKS sh | |||
# A function that is used when there is no print builtin or printf. | ||||
func_fallback_echo () | ||||
{ | ||||
eval 'cat <<_LTECHO_EOF | ||||
$1 | ||||
_LTECHO_EOF' | ||||
} | ||||
# NLS nuisances: We save the old values to restore during execute mode. | # NLS nuisances: We save the old values to restore during execute mode. | |||
# Only set LANG and LC_ALL to C if already set. | ||||
# These must not be set unconditionally because not all systems understand | ||||
# e.g. LANG=C (notably SCO). | ||||
lt_user_locale= | lt_user_locale= | |||
lt_safe_locale= | lt_safe_locale= | |||
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES | for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES | |||
do | do | |||
eval "if test \"\${$lt_var+set}\" = set; then | eval "if test \"\${$lt_var+set}\" = set; then | |||
save_$lt_var=\$$lt_var | save_$lt_var=\$$lt_var | |||
$lt_var=C | $lt_var=C | |||
export $lt_var | export $lt_var | |||
lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" | lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" | |||
lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" | lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" | |||
fi" | fi" | |||
done | done | |||
LC_ALL=C | ||||
LANGUAGE=C | ||||
export LANGUAGE LC_ALL | ||||
$lt_unset CDPATH | $lt_unset CDPATH | |||
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh | ||||
# is ksh but when the shell is invoked as "sh" and the current value of | ||||
# the _XPG environment variable is not equal to 1 (one), the special | ||||
# positional parameter $0, within a function call, is the name of the | ||||
# function. | ||||
progpath="$0" | ||||
: ${CP="cp -f"} | : ${CP="cp -f"} | |||
: ${ECHO="echo"} | test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} | |||
: ${EGREP="/bin/grep -E"} | : ${EGREP="grep -E"} | |||
: ${FGREP="/bin/grep -F"} | : ${FGREP="grep -F"} | |||
: ${GREP="/bin/grep"} | : ${GREP="grep"} | |||
: ${LN_S="ln -s"} | : ${LN_S="ln -s"} | |||
: ${MAKE="make"} | : ${MAKE="make"} | |||
: ${MKDIR="mkdir"} | : ${MKDIR="mkdir"} | |||
: ${MV="mv -f"} | : ${MV="mv -f"} | |||
: ${RM="rm -f"} | : ${RM="rm -f"} | |||
: ${SED="/bin/sed"} | : ${SED="sed"} | |||
: ${SHELL="${CONFIG_SHELL-/bin/sh}"} | : ${SHELL="${CONFIG_SHELL-/bin/sh}"} | |||
: ${Xsed="$SED -e 1s/^X//"} | : ${Xsed="$SED -e 1s/^X//"} | |||
# Global variables: | # Global variables: | |||
EXIT_SUCCESS=0 | EXIT_SUCCESS=0 | |||
EXIT_FAILURE=1 | EXIT_FAILURE=1 | |||
EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing . | EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing . | |||
EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. | EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. | |||
exit_status=$EXIT_SUCCESS | exit_status=$EXIT_SUCCESS | |||
# Make sure IFS has a sensible default | # Make sure IFS has a sensible default | |||
lt_nl=' | lt_nl=' | |||
' | ' | |||
IFS=" $lt_nl" | IFS=" $lt_nl" | |||
dirname="s,/[^/]*$,," | dirname="s,/[^/]*$,," | |||
basename="s,^.*/,," | basename="s,^.*/,," | |||
# func_dirname file append nondir_replacement | ||||
# Compute the dirname of FILE. If nonempty, add APPEND to the result, | ||||
# otherwise set result to NONDIR_REPLACEMENT. | ||||
func_dirname () | ||||
{ | ||||
func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` | ||||
if test "X$func_dirname_result" = "X${1}"; then | ||||
func_dirname_result="${3}" | ||||
else | ||||
func_dirname_result="$func_dirname_result${2}" | ||||
fi | ||||
} # func_dirname may be replaced by extended shell implementation | ||||
# func_basename file | ||||
func_basename () | ||||
{ | ||||
func_basename_result=`$ECHO "${1}" | $SED "$basename"` | ||||
} # func_basename may be replaced by extended shell implementation | ||||
# func_dirname_and_basename file append nondir_replacement | # func_dirname_and_basename file append nondir_replacement | |||
# perform func_basename and func_dirname in a single function | # perform func_basename and func_dirname in a single function | |||
# call: | # call: | |||
# dirname: Compute the dirname of FILE. If nonempty, | # dirname: Compute the dirname of FILE. If nonempty, | |||
# add APPEND to the result, otherwise set result | # add APPEND to the result, otherwise set result | |||
# to NONDIR_REPLACEMENT. | # to NONDIR_REPLACEMENT. | |||
# value returned in "$func_dirname_result" | # value returned in "$func_dirname_result" | |||
# basename: Compute filename of FILE. | # basename: Compute filename of FILE. | |||
# value retuned in "$func_basename_result" | # value retuned in "$func_basename_result" | |||
# Implementation must be kept synchronized with func_dirname | # Implementation must be kept synchronized with func_dirname | |||
# and func_basename. For efficiency, we do not delegate to | # and func_basename. For efficiency, we do not delegate to | |||
# those functions but instead duplicate the functionality here. | # those functions but instead duplicate the functionality here. | |||
func_dirname_and_basename () | func_dirname_and_basename () | |||
{ | { | |||
# Extract subdirectory from the argument. | # Extract subdirectory from the argument. | |||
func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` | func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` | |||
if test "X$func_dirname_result" = "X${1}"; then | if test "X$func_dirname_result" = "X${1}"; then | |||
func_dirname_result="${3}" | func_dirname_result="${3}" | |||
else | else | |||
func_dirname_result="$func_dirname_result${2}" | func_dirname_result="$func_dirname_result${2}" | |||
fi | fi | |||
func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` | func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` | |||
} # func_dirname_and_basename may be replaced by extended shell implementat | ||||
ion | ||||
# func_stripname prefix suffix name | ||||
# strip PREFIX and SUFFIX off of NAME. | ||||
# PREFIX and SUFFIX must not contain globbing or regex special | ||||
# characters, hashes, percent signs, but SUFFIX may contain a leading | ||||
# dot (in which case that matches only a dot). | ||||
# func_strip_suffix prefix name | ||||
func_stripname () | ||||
{ | ||||
case ${2} in | ||||
.*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2} | ||||
\$%%"`;; | ||||
*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%% | ||||
"`;; | ||||
esac | ||||
} # func_stripname may be replaced by extended shell implementation | ||||
# These SED scripts presuppose an absolute path with a trailing slash. | ||||
pathcar='s,^/\([^/]*\).*$,\1,' | ||||
pathcdr='s,^/[^/]*,,' | ||||
removedotparts=':dotsl | ||||
s@/\./@/@g | ||||
t dotsl | ||||
s,/\.$,/,' | ||||
collapseslashes='s@/\{1,\}@/@g' | ||||
finalslash='s,/*$,/,' | ||||
# func_normal_abspath PATH | ||||
# Remove doubled-up and trailing slashes, "." path components, | ||||
# and cancel out any ".." path components in PATH after making | ||||
# it an absolute path. | ||||
# value returned in "$func_normal_abspath_result" | ||||
func_normal_abspath () | ||||
{ | ||||
# Start from root dir and reassemble the path. | ||||
func_normal_abspath_result= | ||||
func_normal_abspath_tpath=$1 | ||||
func_normal_abspath_altnamespace= | ||||
case $func_normal_abspath_tpath in | ||||
"") | ||||
# Empty path, that just means $cwd. | ||||
func_stripname '' '/' "`pwd`" | ||||
func_normal_abspath_result=$func_stripname_result | ||||
return | ||||
;; | ||||
# The next three entries are used to spot a run of precisely | ||||
# two leading slashes without using negated character classes; | ||||
# we take advantage of case's first-match behaviour. | ||||
///*) | ||||
# Unusual form of absolute path, do nothing. | ||||
;; | ||||
//*) | ||||
# Not necessarily an ordinary path; POSIX reserves leading '//' | ||||
# and for example Cygwin uses it to access remote file shares | ||||
# over CIFS/SMB, so we conserve a leading double slash if found. | ||||
func_normal_abspath_altnamespace=/ | ||||
;; | ||||
/*) | ||||
# Absolute path, do nothing. | ||||
;; | ||||
*) | ||||
# Relative path, prepend $cwd. | ||||
func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath | ||||
;; | ||||
esac | ||||
# Cancel out all the simple stuff to save iterations. We also want | ||||
# the path to end with a slash for ease of parsing, so make sure | ||||
# there is one (and only one) here. | ||||
func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ | ||||
-e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` | ||||
while :; do | ||||
# Processed it all yet? | ||||
if test "$func_normal_abspath_tpath" = / ; then | ||||
# If we ascended to the root using ".." the result may be empty now. | ||||
if test -z "$func_normal_abspath_result" ; then | ||||
func_normal_abspath_result=/ | ||||
fi | ||||
break | ||||
fi | ||||
func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $S | ||||
ED \ | ||||
-e "$pathcar"` | ||||
func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ | ||||
-e "$pathcdr"` | ||||
# Figure out what to do with it | ||||
case $func_normal_abspath_tcomponent in | ||||
"") | ||||
# Trailing empty path component, ignore it. | ||||
;; | ||||
..) | ||||
# Parent dir; strip last assembled component from result. | ||||
func_dirname "$func_normal_abspath_result" | ||||
func_normal_abspath_result=$func_dirname_result | ||||
;; | ||||
*) | ||||
# Actual path component, append it. | ||||
func_normal_abspath_result=$func_normal_abspath_result/$func_normal | ||||
_abspath_tcomponent | ||||
;; | ||||
esac | ||||
done | ||||
# Restore leading double-slash if one was found on entry. | ||||
func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_ | ||||
abspath_result | ||||
} | } | |||
# Generated shell functions inserted here. | # func_relative_path SRCDIR DSTDIR | |||
# generates a relative path from SRCDIR to DSTDIR, with a trailing | ||||
# slash if non-empty, suitable for immediately appending a filename | ||||
# without needing to append a separator. | ||||
# value returned in "$func_relative_path_result" | ||||
func_relative_path () | ||||
{ | ||||
func_relative_path_result= | ||||
func_normal_abspath "$1" | ||||
func_relative_path_tlibdir=$func_normal_abspath_result | ||||
func_normal_abspath "$2" | ||||
func_relative_path_tbindir=$func_normal_abspath_result | ||||
# Ascend the tree starting from libdir | ||||
while :; do | ||||
# check if we have found a prefix of bindir | ||||
case $func_relative_path_tbindir in | ||||
$func_relative_path_tlibdir) | ||||
# found an exact match | ||||
func_relative_path_tcancelled= | ||||
break | ||||
;; | ||||
$func_relative_path_tlibdir*) | ||||
# found a matching prefix | ||||
func_stripname "$func_relative_path_tlibdir" '' "$func_relative_pat | ||||
h_tbindir" | ||||
func_relative_path_tcancelled=$func_stripname_result | ||||
if test -z "$func_relative_path_result"; then | ||||
func_relative_path_result=. | ||||
fi | ||||
break | ||||
;; | ||||
*) | ||||
func_dirname $func_relative_path_tlibdir | ||||
func_relative_path_tlibdir=${func_dirname_result} | ||||
if test "x$func_relative_path_tlibdir" = x ; then | ||||
# Have to descend all the way to the root! | ||||
func_relative_path_result=../$func_relative_path_result | ||||
func_relative_path_tcancelled=$func_relative_path_tbindir | ||||
break | ||||
fi | ||||
func_relative_path_result=../$func_relative_path_result | ||||
;; | ||||
esac | ||||
done | ||||
# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh | # Now calculate path; take care to avoid doubling-up slashes. | |||
# is ksh but when the shell is invoked as "sh" and the current value of | func_stripname '' '/' "$func_relative_path_result" | |||
# the _XPG environment variable is not equal to 1 (one), the special | func_relative_path_result=$func_stripname_result | |||
# positional parameter $0, within a function call, is the name of the | func_stripname '/' '/' "$func_relative_path_tcancelled" | |||
# function. | if test "x$func_stripname_result" != x ; then | |||
progpath="$0" | func_relative_path_result=${func_relative_path_result}/${func_stripname | |||
_result} | ||||
fi | ||||
# Normalisation. If bindir is libdir, return empty string, | ||||
# else relative path ending with a slash; either way, target | ||||
# file name can be directly appended. | ||||
if test ! -z "$func_relative_path_result"; then | ||||
func_stripname './' '' "$func_relative_path_result/" | ||||
func_relative_path_result=$func_stripname_result | ||||
fi | ||||
} | ||||
# The name of this program: | # The name of this program: | |||
# In the unlikely event $progname began with a '-', it would play havoc wit | ||||
h | ||||
# func_echo (imagine progname=-n), so we prepend ./ in that case: | ||||
func_dirname_and_basename "$progpath" | func_dirname_and_basename "$progpath" | |||
progname=$func_basename_result | progname=$func_basename_result | |||
case $progname in | ||||
-*) progname=./$progname ;; | ||||
esac | ||||
# Make sure we have an absolute path for reexecution: | # Make sure we have an absolute path for reexecution: | |||
case $progpath in | case $progpath in | |||
[\\/]*|[A-Za-z]:\\*) ;; | [\\/]*|[A-Za-z]:\\*) ;; | |||
*[\\/]*) | *[\\/]*) | |||
progdir=$func_dirname_result | progdir=$func_dirname_result | |||
progdir=`cd "$progdir" && pwd` | progdir=`cd "$progdir" && pwd` | |||
progpath="$progdir/$progname" | progpath="$progdir/$progname" | |||
;; | ;; | |||
*) | *) | |||
skipping to change at line 214 | skipping to change at line 402 | |||
esac | esac | |||
# Sed substitution that helps us do robust quoting. It backslashifies | # Sed substitution that helps us do robust quoting. It backslashifies | |||
# metacharacters that are still active within double-quoted strings. | # metacharacters that are still active within double-quoted strings. | |||
Xsed="${SED}"' -e 1s/^X//' | Xsed="${SED}"' -e 1s/^X//' | |||
sed_quote_subst='s/\([`"$\\]\)/\\\1/g' | sed_quote_subst='s/\([`"$\\]\)/\\\1/g' | |||
# Same as above, but do not quote variable references. | # Same as above, but do not quote variable references. | |||
double_quote_subst='s/\(["`\\]\)/\\\1/g' | double_quote_subst='s/\(["`\\]\)/\\\1/g' | |||
# Sed substitution that turns a string into a regex matching for the | ||||
# string literally. | ||||
sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' | ||||
# Sed substitution that converts a w32 file name or path | ||||
# which contains forward slashes, into one that contains | ||||
# (escaped) backslashes. A very naive implementation. | ||||
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' | ||||
# Re-`\' parameter expansions in output of double_quote_subst that were | # Re-`\' parameter expansions in output of double_quote_subst that were | |||
# `\'-ed in input to the same. If an odd number of `\' preceded a '$' | # `\'-ed in input to the same. If an odd number of `\' preceded a '$' | |||
# in input to double_quote_subst, that '$' was protected from expansion. | # in input to double_quote_subst, that '$' was protected from expansion. | |||
# Since each input `\' is now two `\'s, look for any number of runs of | # Since each input `\' is now two `\'s, look for any number of runs of | |||
# four `\'s followed by two `\'s and then a '$'. `\' that '$'. | # four `\'s followed by two `\'s and then a '$'. `\' that '$'. | |||
bs='\\' | bs='\\' | |||
bs2='\\\\' | bs2='\\\\' | |||
bs4='\\\\\\\\' | bs4='\\\\\\\\' | |||
dollar='\$' | dollar='\$' | |||
sed_double_backslash="\ | sed_double_backslash="\ | |||
skipping to change at line 242 | skipping to change at line 439 | |||
opt_help=false | opt_help=false | |||
opt_quiet=false | opt_quiet=false | |||
opt_verbose=false | opt_verbose=false | |||
opt_warning=: | opt_warning=: | |||
# func_echo arg... | # func_echo arg... | |||
# Echo program name prefixed message, along with the current mode | # Echo program name prefixed message, along with the current mode | |||
# name if it has been set yet. | # name if it has been set yet. | |||
func_echo () | func_echo () | |||
{ | { | |||
$ECHO "$progname${mode+: }$mode: $*" | $ECHO "$progname: ${opt_mode+$opt_mode: }$*" | |||
} | } | |||
# func_verbose arg... | # func_verbose arg... | |||
# Echo program name prefixed message in verbose mode only. | # Echo program name prefixed message in verbose mode only. | |||
func_verbose () | func_verbose () | |||
{ | { | |||
$opt_verbose && func_echo ${1+"$@"} | $opt_verbose && func_echo ${1+"$@"} | |||
# A bug in bash halts the script if the last line of a function | # A bug in bash halts the script if the last line of a function | |||
# fails when set -e is in force, so we need another command to | # fails when set -e is in force, so we need another command to | |||
# work around that: | # work around that: | |||
: | : | |||
} | } | |||
# func_echo_all arg... | ||||
# Invoke $ECHO with all args, space-separated. | ||||
func_echo_all () | ||||
{ | ||||
$ECHO "$*" | ||||
} | ||||
# func_error arg... | # func_error arg... | |||
# Echo program name prefixed message to standard error. | # Echo program name prefixed message to standard error. | |||
func_error () | func_error () | |||
{ | { | |||
$ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 | $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 | |||
} | } | |||
# func_warning arg... | # func_warning arg... | |||
# Echo program name prefixed warning message to standard error. | # Echo program name prefixed warning message to standard error. | |||
func_warning () | func_warning () | |||
{ | { | |||
$opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1> &2 | $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+ "$@"} 1>&2 | |||
# bash bug again: | # bash bug again: | |||
: | : | |||
} | } | |||
# func_fatal_error arg... | # func_fatal_error arg... | |||
# Echo program name prefixed message to standard error, and exit. | # Echo program name prefixed message to standard error, and exit. | |||
func_fatal_error () | func_fatal_error () | |||
{ | { | |||
func_error ${1+"$@"} | func_error ${1+"$@"} | |||
skipping to change at line 323 | skipping to change at line 527 | |||
# While some portion of DIR does not yet exist... | # While some portion of DIR does not yet exist... | |||
while test ! -d "$my_directory_path"; do | while test ! -d "$my_directory_path"; do | |||
# ...make a list in topmost first order. Use a colon delimited | # ...make a list in topmost first order. Use a colon delimited | |||
# list incase some portion of path contains whitespace. | # list incase some portion of path contains whitespace. | |||
my_dir_list="$my_directory_path:$my_dir_list" | my_dir_list="$my_directory_path:$my_dir_list" | |||
# If the last portion added has no slash in it, the list is done | # If the last portion added has no slash in it, the list is done | |||
case $my_directory_path in */*) ;; *) break ;; esac | case $my_directory_path in */*) ;; *) break ;; esac | |||
# ...otherwise throw away the child directory and loop | # ...otherwise throw away the child directory and loop | |||
my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname "` | my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` | |||
done | done | |||
my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` | my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` | |||
save_mkdir_p_IFS="$IFS"; IFS=':' | save_mkdir_p_IFS="$IFS"; IFS=':' | |||
for my_dir in $my_dir_list; do | for my_dir in $my_dir_list; do | |||
IFS="$save_mkdir_p_IFS" | IFS="$save_mkdir_p_IFS" | |||
# mkdir can fail with a `File exist' error if two processes | # mkdir can fail with a `File exist' error if two processes | |||
# try to create one of the directories concurrently. Don't | # try to create one of the directories concurrently. Don't | |||
# stop in that case! | # stop in that case! | |||
$MKDIR "$my_dir" 2>/dev/null || : | $MKDIR "$my_dir" 2>/dev/null || : | |||
done | done | |||
IFS="$save_mkdir_p_IFS" | IFS="$save_mkdir_p_IFS" | |||
skipping to change at line 374 | skipping to change at line 578 | |||
umask 0077 | umask 0077 | |||
$MKDIR "$my_tmpdir" | $MKDIR "$my_tmpdir" | |||
umask $save_mktempdir_umask | umask $save_mktempdir_umask | |||
fi | fi | |||
# If we're not in dry-run mode, bomb out on failure | # If we're not in dry-run mode, bomb out on failure | |||
test -d "$my_tmpdir" || \ | test -d "$my_tmpdir" || \ | |||
func_fatal_error "cannot create temporary directory \`$my_tmpdir'" | func_fatal_error "cannot create temporary directory \`$my_tmpdir'" | |||
fi | fi | |||
$ECHO "X$my_tmpdir" | $Xsed | $ECHO "$my_tmpdir" | |||
} | } | |||
# func_quote_for_eval arg | # func_quote_for_eval arg | |||
# Aesthetically quote ARG to be evaled later. | # Aesthetically quote ARG to be evaled later. | |||
# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT | # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT | |||
# is double-quoted, suitable for a subsequent eval, whereas | # is double-quoted, suitable for a subsequent eval, whereas | |||
# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters | # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters | |||
# which are still active within double quotes backslashified. | # which are still active within double quotes backslashified. | |||
func_quote_for_eval () | func_quote_for_eval () | |||
{ | { | |||
case $1 in | case $1 in | |||
*[\\\`\"\$]*) | *[\\\`\"\$]*) | |||
func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_qu ote_subst"` ;; | func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_s ubst"` ;; | |||
*) | *) | |||
func_quote_for_eval_unquoted_result="$1" ;; | func_quote_for_eval_unquoted_result="$1" ;; | |||
esac | esac | |||
case $func_quote_for_eval_unquoted_result in | case $func_quote_for_eval_unquoted_result in | |||
# Double-quote args containing shell metacharacters to delay | # Double-quote args containing shell metacharacters to delay | |||
# word splitting, command substitution and and variable | # word splitting, command substitution and and variable | |||
# expansion for a subsequent eval. | # expansion for a subsequent eval. | |||
# Many Bourne shells cannot handle close brackets correctly | # Many Bourne shells cannot handle close brackets correctly | |||
# in scan sets, so we specify it separately. | # in scan sets, so we specify it separately. | |||
skipping to change at line 413 | skipping to change at line 617 | |||
esac | esac | |||
} | } | |||
# func_quote_for_expand arg | # func_quote_for_expand arg | |||
# Aesthetically quote ARG to be evaled later; same as above, | # Aesthetically quote ARG to be evaled later; same as above, | |||
# but do not quote variable references. | # but do not quote variable references. | |||
func_quote_for_expand () | func_quote_for_expand () | |||
{ | { | |||
case $1 in | case $1 in | |||
*[\\\`\"]*) | *[\\\`\"]*) | |||
my_arg=`$ECHO "X$1" | $Xsed \ | my_arg=`$ECHO "$1" | $SED \ | |||
-e "$double_quote_subst" -e "$sed_double_backslash"` ;; | -e "$double_quote_subst" -e "$sed_double_backslash"` ;; | |||
*) | *) | |||
my_arg="$1" ;; | my_arg="$1" ;; | |||
esac | esac | |||
case $my_arg in | case $my_arg in | |||
# Double-quote args containing shell metacharacters to delay | # Double-quote args containing shell metacharacters to delay | |||
# word splitting and command substitution for a subsequent eval. | # word splitting and command substitution for a subsequent eval. | |||
# Many Bourne shells cannot handle close brackets correctly | # Many Bourne shells cannot handle close brackets correctly | |||
# in scan sets, so we specify it separately. | # in scan sets, so we specify it separately. | |||
skipping to change at line 480 | skipping to change at line 684 | |||
eval "$lt_user_locale | eval "$lt_user_locale | |||
$my_cmd" | $my_cmd" | |||
my_status=$? | my_status=$? | |||
eval "$lt_safe_locale" | eval "$lt_safe_locale" | |||
if test "$my_status" -eq 0; then :; else | if test "$my_status" -eq 0; then :; else | |||
eval "(exit $my_status); $my_fail_exp" | eval "(exit $my_status); $my_fail_exp" | |||
fi | fi | |||
fi | fi | |||
} | } | |||
# func_tr_sh | ||||
# Turn $1 into a string suitable for a shell variable name. | ||||
# Result is stored in $func_tr_sh_result. All characters | ||||
# not in the set a-zA-Z0-9_ are replaced with '_'. Further, | ||||
# if $1 begins with a digit, a '_' is prepended as well. | ||||
func_tr_sh () | ||||
{ | ||||
case $1 in | ||||
[0-9]* | *[!a-zA-Z0-9_]*) | ||||
func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_ | ||||
]/_/g'` | ||||
;; | ||||
* ) | ||||
func_tr_sh_result=$1 | ||||
;; | ||||
esac | ||||
} | ||||
# func_version | # func_version | |||
# Echo version message to standard output and exit. | # Echo version message to standard output and exit. | |||
func_version () | func_version () | |||
{ | { | |||
$SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { | $opt_debug | |||
$SED -n '/(C)/!b go | ||||
:more | ||||
/\./!{ | ||||
N | ||||
s/\n# / / | ||||
b more | ||||
} | ||||
:go | ||||
/^# '$PROGRAM' (GNU /,/# warranty; / { | ||||
s/^# // | s/^# // | |||
s/^# *$// | s/^# *$// | |||
s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ | s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ | |||
p | p | |||
}' < "$progpath" | }' < "$progpath" | |||
exit $? | exit $? | |||
} | } | |||
# func_usage | # func_usage | |||
# Echo short help message to standard output and exit. | # Echo short help message to standard output and exit. | |||
func_usage () | func_usage () | |||
{ | { | |||
$SED -n '/^# Usage:/,/# -h/ { | $opt_debug | |||
$SED -n '/^# Usage:/,/^# *.*--help/ { | ||||
s/^# // | s/^# // | |||
s/^# *$// | s/^# *$// | |||
s/\$progname/'$progname'/ | s/\$progname/'$progname'/ | |||
p | p | |||
}' < "$progpath" | }' < "$progpath" | |||
$ECHO | echo | |||
$ECHO "run \`$progname --help | more' for full usage" | $ECHO "run \`$progname --help | more' for full usage" | |||
exit $? | exit $? | |||
} | } | |||
# func_help | # func_help [NOEXIT] | |||
# Echo long help message to standard output and exit. | # Echo long help message to standard output and exit, | |||
# unless 'noexit' is passed as argument. | ||||
func_help () | func_help () | |||
{ | { | |||
$opt_debug | ||||
$SED -n '/^# Usage:/,/# Report bugs to/ { | $SED -n '/^# Usage:/,/# Report bugs to/ { | |||
s/^# // | s/^# // | |||
s/^# *$// | s/^# *$// | |||
s*\$progname*'$progname'* | s*\$progname*'$progname'* | |||
s*\$host*'"$host"'* | s*\$host*'"$host"'* | |||
s*\$SHELL*'"$SHELL"'* | s*\$SHELL*'"$SHELL"'* | |||
s*\$LTCC*'"$LTCC"'* | s*\$LTCC*'"$LTCC"'* | |||
s*\$LTCFLAGS*'"$LTCFLAGS"'* | s*\$LTCFLAGS*'"$LTCFLAGS"'* | |||
s*\$LD*'"$LD"'* | s*\$LD*'"$LD"'* | |||
s/\$with_gnu_ld/'"$with_gnu_ld"'/ | s/\$with_gnu_ld/'"$with_gnu_ld"'/ | |||
s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"' / | s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"' / | |||
s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"' / | s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"' / | |||
p | p | |||
}' < "$progpath" | d | |||
exit $? | } | |||
/^# .* home page:/b print | ||||
/^# General help using/b print | ||||
' < "$progpath" | ||||
ret=$? | ||||
if test -z "$1"; then | ||||
exit $ret | ||||
fi | ||||
} | } | |||
# func_missing_arg argname | # func_missing_arg argname | |||
# Echo program name prefixed message to standard error and set global | # Echo program name prefixed message to standard error and set global | |||
# exit_cmd. | # exit_cmd. | |||
func_missing_arg () | func_missing_arg () | |||
{ | { | |||
func_error "missing argument for $1" | $opt_debug | |||
func_error "missing argument for $1." | ||||
exit_cmd=exit | exit_cmd=exit | |||
} | } | |||
exit_cmd=: | # func_split_short_opt shortopt | |||
# Set func_split_short_opt_name and func_split_short_opt_arg shell | ||||
# variables after splitting SHORTOPT after the 2nd character. | ||||
func_split_short_opt () | ||||
{ | ||||
my_sed_short_opt='1s/^\(..\).*$/\1/;q' | ||||
my_sed_short_rest='1s/^..\(.*\)$/\1/;q' | ||||
func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` | ||||
func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` | ||||
} # func_split_short_opt may be replaced by extended shell implementation | ||||
# func_split_long_opt longopt | ||||
# Set func_split_long_opt_name and func_split_long_opt_arg shell | ||||
# variables after splitting LONGOPT at the `=' sign. | ||||
func_split_long_opt () | ||||
{ | ||||
my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' | ||||
my_sed_long_arg='1s/^--[^=]*=//' | ||||
func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` | ||||
func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` | ||||
} # func_split_long_opt may be replaced by extended shell implementation | ||||
# Check that we have a working $ECHO. | exit_cmd=: | |||
if test "X$1" = X--no-reexec; then | ||||
# Discard the --no-reexec flag, and continue. | ||||
shift | ||||
elif test "X$1" = X--fallback-echo; then | ||||
# Avoid inline document here, it may be left over | ||||
: | ||||
elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then | ||||
# Yippee, $ECHO works! | ||||
: | ||||
else | ||||
# Restart under the correct shell, and then maybe $ECHO will work. | ||||
exec $SHELL "$progpath" --no-reexec ${1+"$@"} | ||||
fi | ||||
if test "X$1" = X--fallback-echo; then | ||||
# used as fallback echo | ||||
shift | ||||
cat <<EOF | ||||
$* | ||||
EOF | ||||
exit $EXIT_SUCCESS | ||||
fi | ||||
magic="%%%MAGIC variable%%%" | magic="%%%MAGIC variable%%%" | |||
magic_exe="%%%MAGIC EXE variable%%%" | magic_exe="%%%MAGIC EXE variable%%%" | |||
# Global variables. | # Global variables. | |||
# $mode is unset | ||||
nonopt= | nonopt= | |||
execute_dlfiles= | ||||
preserve_args= | preserve_args= | |||
lo2o="s/\\.lo\$/.${objext}/" | lo2o="s/\\.lo\$/.${objext}/" | |||
o2lo="s/\\.${objext}\$/.lo/" | o2lo="s/\\.${objext}\$/.lo/" | |||
extracted_archives= | extracted_archives= | |||
extracted_serial=0 | extracted_serial=0 | |||
opt_dry_run=false | ||||
opt_duplicate_deps=false | ||||
opt_silent=false | ||||
opt_debug=: | ||||
# If this variable is set in any of the actions, the command in it | # If this variable is set in any of the actions, the command in it | |||
# will be execed at the end. This prevents here-documents from being | # will be execed at the end. This prevents here-documents from being | |||
# left over by shells. | # left over by shells. | |||
exec_cmd= | exec_cmd= | |||
# func_append var value | ||||
# Append VALUE to the end of shell variable VAR. | ||||
func_append () | ||||
{ | ||||
eval "${1}=\$${1}\${2}" | ||||
} # func_append may be replaced by extended shell implementation | ||||
# func_append_quoted var value | ||||
# Quote VALUE and append to the end of shell variable VAR, separated | ||||
# by a space. | ||||
func_append_quoted () | ||||
{ | ||||
func_quote_for_eval "${2}" | ||||
eval "${1}=\$${1}\\ \$func_quote_for_eval_result" | ||||
} # func_append_quoted may be replaced by extended shell implementation | ||||
# func_arith arithmetic-term... | ||||
func_arith () | ||||
{ | ||||
func_arith_result=`expr "${@}"` | ||||
} # func_arith may be replaced by extended shell implementation | ||||
# func_len string | ||||
# STRING may not start with a hyphen. | ||||
func_len () | ||||
{ | ||||
func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` | ||||
} # func_len may be replaced by extended shell implementation | ||||
# func_lo2o object | ||||
func_lo2o () | ||||
{ | ||||
func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` | ||||
} # func_lo2o may be replaced by extended shell implementation | ||||
# func_xform libobj-or-source | ||||
func_xform () | ||||
{ | ||||
func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` | ||||
} # func_xform may be replaced by extended shell implementation | ||||
# func_fatal_configuration arg... | # func_fatal_configuration arg... | |||
# Echo program name prefixed message to standard error, followed by | # Echo program name prefixed message to standard error, followed by | |||
# a configuration failure hint, and exit. | # a configuration failure hint, and exit. | |||
func_fatal_configuration () | func_fatal_configuration () | |||
{ | { | |||
func_error ${1+"$@"} | func_error ${1+"$@"} | |||
func_error "See the $PACKAGE documentation for more information." | func_error "See the $PACKAGE documentation for more information." | |||
func_fatal_error "Fatal configuration error." | func_fatal_error "Fatal configuration error." | |||
} | } | |||
skipping to change at line 619 | skipping to change at line 899 | |||
$SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" | $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" | |||
done | done | |||
exit $? | exit $? | |||
} | } | |||
# func_features | # func_features | |||
# Display the features supported by this script. | # Display the features supported by this script. | |||
func_features () | func_features () | |||
{ | { | |||
$ECHO "host: $host" | echo "host: $host" | |||
if test "$build_libtool_libs" = yes; then | if test "$build_libtool_libs" = yes; then | |||
$ECHO "enable shared libraries" | echo "enable shared libraries" | |||
else | else | |||
$ECHO "disable shared libraries" | echo "disable shared libraries" | |||
fi | fi | |||
if test "$build_old_libs" = yes; then | if test "$build_old_libs" = yes; then | |||
$ECHO "enable static libraries" | echo "enable static libraries" | |||
else | else | |||
$ECHO "disable static libraries" | echo "disable static libraries" | |||
fi | fi | |||
exit $? | exit $? | |||
} | } | |||
# func_enable_tag tagname | # func_enable_tag tagname | |||
# Verify that TAGNAME is valid, and either flag an error and exit, or | # Verify that TAGNAME is valid, and either flag an error and exit, or | |||
# enable the TAGNAME tag. We also add TAGNAME to the global $taglist | # enable the TAGNAME tag. We also add TAGNAME to the global $taglist | |||
# variable here. | # variable here. | |||
func_enable_tag () | func_enable_tag () | |||
skipping to change at line 675 | skipping to change at line 955 | |||
# quotes we have to do it in 2 steps: | # quotes we have to do it in 2 steps: | |||
extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` | extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` | |||
eval "$extractedcf" | eval "$extractedcf" | |||
else | else | |||
func_error "ignoring unknown tag $tagname" | func_error "ignoring unknown tag $tagname" | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
} | } | |||
# Parse options once, thoroughly. This comes as soon as possible in | # func_check_version_match | |||
# the script to make things like `libtool --version' happen quickly. | # Ensure that we are using m4 macros, and libtool script from the same | |||
# release of libtool. | ||||
func_check_version_match () | ||||
{ | { | |||
if test "$package_revision" != "$macro_revision"; then | ||||
if test "$VERSION" != "$macro_version"; then | ||||
if test -z "$macro_version"; then | ||||
cat >&2 <<_LT_EOF | ||||
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the | ||||
$progname: definition of this LT_INIT comes from an older release. | ||||
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSIO | ||||
N | ||||
$progname: and run autoconf again. | ||||
_LT_EOF | ||||
else | ||||
cat >&2 <<_LT_EOF | ||||
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the | ||||
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. | ||||
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSIO | ||||
N | ||||
$progname: and run autoconf again. | ||||
_LT_EOF | ||||
fi | ||||
else | ||||
cat >&2 <<_LT_EOF | ||||
$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $pa | ||||
ckage_revision, | ||||
$progname: but the definition of this LT_INIT comes from revision $macro_re | ||||
vision. | ||||
$progname: You should recreate aclocal.m4 with macros from revision $packag | ||||
e_revision | ||||
$progname: of $PACKAGE $VERSION and run autoconf again. | ||||
_LT_EOF | ||||
fi | ||||
# Shorthand for --mode=foo, only valid as the first argument | exit $EXIT_MISMATCH | |||
case $1 in | fi | |||
clean|clea|cle|cl) | } | |||
shift; set dummy --mode clean ${1+"$@"}; shift | ||||
;; | # Shorthand for --mode=foo, only valid as the first argument | |||
compile|compil|compi|comp|com|co|c) | case $1 in | |||
shift; set dummy --mode compile ${1+"$@"}; shift | clean|clea|cle|cl) | |||
;; | shift; set dummy --mode clean ${1+"$@"}; shift | |||
execute|execut|execu|exec|exe|ex|e) | ;; | |||
shift; set dummy --mode execute ${1+"$@"}; shift | compile|compil|compi|comp|com|co|c) | |||
;; | shift; set dummy --mode compile ${1+"$@"}; shift | |||
finish|finis|fini|fin|fi|f) | ;; | |||
shift; set dummy --mode finish ${1+"$@"}; shift | execute|execut|execu|exec|exe|ex|e) | |||
;; | shift; set dummy --mode execute ${1+"$@"}; shift | |||
install|instal|insta|inst|ins|in|i) | ;; | |||
shift; set dummy --mode install ${1+"$@"}; shift | finish|finis|fini|fin|fi|f) | |||
;; | shift; set dummy --mode finish ${1+"$@"}; shift | |||
link|lin|li|l) | ;; | |||
shift; set dummy --mode link ${1+"$@"}; shift | install|instal|insta|inst|ins|in|i) | |||
;; | shift; set dummy --mode install ${1+"$@"}; shift | |||
uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) | ;; | |||
shift; set dummy --mode uninstall ${1+"$@"}; shift | link|lin|li|l) | |||
;; | shift; set dummy --mode link ${1+"$@"}; shift | |||
esac | ;; | |||
uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) | ||||
shift; set dummy --mode uninstall ${1+"$@"}; shift | ||||
;; | ||||
esac | ||||
# Parse non-mode specific arguments: | # Option defaults: | |||
while test "$#" -gt 0; do | opt_debug=: | |||
opt_dry_run=false | ||||
opt_config=false | ||||
opt_preserve_dup_deps=false | ||||
opt_features=false | ||||
opt_finish=false | ||||
opt_help=false | ||||
opt_help_all=false | ||||
opt_silent=: | ||||
opt_verbose=: | ||||
opt_silent=false | ||||
opt_verbose=false | ||||
# Parse options once, thoroughly. This comes as soon as possible in the | ||||
# script to make things like `--version' happen as quickly as we can. | ||||
{ | ||||
# this just eases exit handling | ||||
while test $# -gt 0; do | ||||
opt="$1" | opt="$1" | |||
shift | shift | |||
case $opt in | case $opt in | |||
--config) func_config | --debug|-x) opt_debug='set -x' | |||
;; | ||||
--debug) preserve_args="$preserve_args $opt" | ||||
func_echo "enabling shell trace mode" | func_echo "enabling shell trace mode" | |||
opt_debug='set -x' | ||||
$opt_debug | $opt_debug | |||
;; | ;; | |||
--dry-run|--dryrun|-n) | ||||
-dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break | opt_dry_run=: | |||
execute_dlfiles="$execute_dlfiles $1" | ||||
shift | ||||
;; | ;; | |||
--config) | ||||
--dry-run | -n) opt_dry_run=: ;; | opt_config=: | |||
--features) func_features ;; | func_config | |||
--finish) mode="finish" | ;; | |||
;; | --dlopen|-dlopen) | |||
optarg="$1" | ||||
--mode) test "$#" -eq 0 && func_missing_arg "$opt" && break | opt_dlopen="${opt_dlopen+$opt_dlopen | |||
case $1 in | }$optarg" | |||
# Valid mode arguments: | ||||
clean) ;; | ||||
compile) ;; | ||||
execute) ;; | ||||
finish) ;; | ||||
install) ;; | ||||
link) ;; | ||||
relink) ;; | ||||
uninstall) ;; | ||||
# Catch anything else as an error | ||||
*) func_error "invalid argument for $opt" | ||||
exit_cmd=exit | ||||
break | ||||
;; | ||||
esac | ||||
mode="$1" | ||||
shift | shift | |||
;; | ;; | |||
--preserve-dup-deps) | --preserve-dup-deps) | |||
opt_duplicate_deps=: ;; | opt_preserve_dup_deps=: | |||
--quiet|--silent) preserve_args="$preserve_args $opt" | ||||
opt_silent=: | ||||
;; | ;; | |||
--features) | ||||
--verbose| -v) preserve_args="$preserve_args $opt" | opt_features=: | |||
func_features | ||||
;; | ||||
--finish) | ||||
opt_finish=: | ||||
set dummy --mode finish ${1+"$@"}; shift | ||||
;; | ||||
--help) | ||||
opt_help=: | ||||
;; | ||||
--help-all) | ||||
opt_help_all=: | ||||
opt_help=': help-all' | ||||
;; | ||||
--mode) | ||||
test $# = 0 && func_missing_arg $opt && break | ||||
optarg="$1" | ||||
opt_mode="$optarg" | ||||
case $optarg in | ||||
# Valid mode arguments: | ||||
clean|compile|execute|finish|install|link|relink|uninstall) ;; | ||||
# Catch anything else as an error | ||||
*) func_error "invalid argument for $opt" | ||||
exit_cmd=exit | ||||
break | ||||
;; | ||||
esac | ||||
shift | ||||
;; | ||||
--no-silent|--no-quiet) | ||||
opt_silent=false | opt_silent=false | |||
func_append preserve_args " $opt" | ||||
;; | ;; | |||
--no-verbose) | ||||
--tag) test "$#" -eq 0 && func_missing_arg "$opt" && break | opt_verbose=false | |||
preserve_args="$preserve_args $opt $1" | func_append preserve_args " $opt" | |||
func_enable_tag "$1" # tagname is set here | ;; | |||
--silent|--quiet) | ||||
opt_silent=: | ||||
func_append preserve_args " $opt" | ||||
opt_verbose=false | ||||
;; | ||||
--verbose|-v) | ||||
opt_verbose=: | ||||
func_append preserve_args " $opt" | ||||
opt_silent=false | ||||
;; | ||||
--tag) | ||||
test $# = 0 && func_missing_arg $opt && break | ||||
optarg="$1" | ||||
opt_tag="$optarg" | ||||
func_append preserve_args " $opt $optarg" | ||||
func_enable_tag "$optarg" | ||||
shift | shift | |||
;; | ;; | |||
-\?|-h) func_usage ;; | ||||
--help) func_help ;; | ||||
--version) func_version ;; | ||||
# Separate optargs to long options: | # Separate optargs to long options: | |||
-dlopen=*|--mode=*|--tag=*) | --*=*) | |||
func_opt_split "$opt" | func_split_long_opt "$opt" | |||
set dummy "$func_opt_split_opt" "$func_opt_split_arg | set dummy "$func_split_long_opt_name" "$func_split_l | |||
" ${1+"$@"} | ong_opt_arg" ${1+"$@"} | |||
shift | shift | |||
;; | ;; | |||
-\?|-h) func_usage ;; | # Separate non-argument short options: | |||
--help) opt_help=: ;; | -\?*|-h*|-n*|-v*) | |||
--version) func_version ;; | func_split_short_opt "$opt" | |||
set dummy "$func_split_short_opt_name" "-$func_split | ||||
-*) func_fatal_help "unrecognized option \`$opt'" ;; | _short_opt_arg" ${1+"$@"} | |||
shift | ||||
*) nonopt="$opt" | ||||
break | ||||
;; | ;; | |||
--) break ;; | ||||
-*) func_fatal_help "unrecognized option \`$opt'" ;; | ||||
*) set dummy "$opt" ${1+"$@"}; shift; break ;; | ||||
esac | esac | |||
done | done | |||
# Validate options: | ||||
# save first non-option argument | ||||
if test "$#" -gt 0; then | ||||
nonopt="$opt" | ||||
shift | ||||
fi | ||||
# preserve --debug | ||||
test "$opt_debug" = : || func_append preserve_args " --debug" | ||||
case $host in | case $host in | |||
*cygwin* | *mingw* | *pw32* | *cegcc*) | *cygwin* | *mingw* | *pw32* | *cegcc*) | |||
# don't eliminate duplications in $postdeps and $predeps | # don't eliminate duplications in $postdeps and $predeps | |||
opt_duplicate_compiler_generated_deps=: | opt_duplicate_compiler_generated_deps=: | |||
;; | ;; | |||
*) | *) | |||
opt_duplicate_compiler_generated_deps=$opt_duplicate_deps | opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps | |||
;; | ;; | |||
esac | esac | |||
# Having warned about all mis-specified options, bail out if | $opt_help || { | |||
# anything was wrong. | # Sanity checks first: | |||
$exit_cmd $EXIT_FAILURE | func_check_version_match | |||
} | ||||
# func_check_version_match | if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; | |||
# Ensure that we are using m4 macros, and libtool script from the same | then | |||
# release of libtool. | func_fatal_configuration "not configured to build any kind of library | |||
func_check_version_match () | " | |||
{ | ||||
if test "$package_revision" != "$macro_revision"; then | ||||
if test "$VERSION" != "$macro_version"; then | ||||
if test -z "$macro_version"; then | ||||
cat >&2 <<_LT_EOF | ||||
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the | ||||
$progname: definition of this LT_INIT comes from an older release. | ||||
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSIO | ||||
N | ||||
$progname: and run autoconf again. | ||||
_LT_EOF | ||||
else | ||||
cat >&2 <<_LT_EOF | ||||
$progname: Version mismatch error. This is $PACKAGE $VERSION, but the | ||||
$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. | ||||
$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSIO | ||||
N | ||||
$progname: and run autoconf again. | ||||
_LT_EOF | ||||
fi | ||||
else | ||||
cat >&2 <<_LT_EOF | ||||
$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $pa | ||||
ckage_revision, | ||||
$progname: but the definition of this LT_INIT comes from revision $macro_re | ||||
vision. | ||||
$progname: You should recreate aclocal.m4 with macros from revision $packag | ||||
e_revision | ||||
$progname: of $PACKAGE $VERSION and run autoconf again. | ||||
_LT_EOF | ||||
fi | fi | |||
exit $EXIT_MISMATCH | # Darwin sucks | |||
fi | eval std_shrext=\"$shrext_cmds\" | |||
# Only execute mode is allowed to have -dlopen flags. | ||||
if test -n "$opt_dlopen" && test "$opt_mode" != execute; then | ||||
func_error "unrecognized option \`-dlopen'" | ||||
$ECHO "$help" 1>&2 | ||||
exit $EXIT_FAILURE | ||||
fi | ||||
# Change the help message to a mode-specific one. | ||||
generic_help="$help" | ||||
help="Try \`$progname --help --mode=$opt_mode' for more information." | ||||
} | ||||
# Bail if the options were screwed | ||||
$exit_cmd $EXIT_FAILURE | ||||
} | } | |||
## ----------- ## | ## ----------- ## | |||
## Main. ## | ## Main. ## | |||
## ----------- ## | ## ----------- ## | |||
$opt_help || { | ||||
# Sanity checks first: | ||||
func_check_version_match | ||||
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; th | ||||
en | ||||
func_fatal_configuration "not configured to build any kind of library" | ||||
fi | ||||
test -z "$mode" && func_fatal_error "error: you must specify a MODE." | ||||
# Darwin sucks | ||||
eval std_shrext=\"$shrext_cmds\" | ||||
# Only execute mode is allowed to have -dlopen flags. | ||||
if test -n "$execute_dlfiles" && test "$mode" != execute; then | ||||
func_error "unrecognized option \`-dlopen'" | ||||
$ECHO "$help" 1>&2 | ||||
exit $EXIT_FAILURE | ||||
fi | ||||
# Change the help message to a mode-specific one. | ||||
generic_help="$help" | ||||
help="Try \`$progname --help --mode=$mode' for more information." | ||||
} | ||||
# func_lalib_p file | # func_lalib_p file | |||
# True iff FILE is a libtool `.la' library or `.lo' object file. | # True iff FILE is a libtool `.la' library or `.lo' object file. | |||
# This function is only a basic sanity check; it will hardly flush out | # This function is only a basic sanity check; it will hardly flush out | |||
# determined imposters. | # determined imposters. | |||
func_lalib_p () | func_lalib_p () | |||
{ | { | |||
test -f "$1" && | test -f "$1" && | |||
$SED -e 4q "$1" 2>/dev/null \ | $SED -e 4q "$1" 2>/dev/null \ | |||
| $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 | | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 | |||
} | } | |||
skipping to change at line 928 | skipping to change at line 1254 | |||
esac | esac | |||
$GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 | $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 | |||
} | } | |||
# func_ltwrapper_scriptname file | # func_ltwrapper_scriptname file | |||
# Assumes file is an ltwrapper_executable | # Assumes file is an ltwrapper_executable | |||
# uses $file to determine the appropriate filename for a | # uses $file to determine the appropriate filename for a | |||
# temporary ltwrapper_script. | # temporary ltwrapper_script. | |||
func_ltwrapper_scriptname () | func_ltwrapper_scriptname () | |||
{ | { | |||
func_ltwrapper_scriptname_result="" | func_dirname_and_basename "$1" "" "." | |||
if func_ltwrapper_executable_p "$1"; then | func_stripname '' '.exe' "$func_basename_result" | |||
func_dirname_and_basename "$1" "" "." | func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_s | |||
func_stripname '' '.exe' "$func_basename_result" | tripname_result}_ltshwrapper" | |||
func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${fun | ||||
c_stripname_result}_ltshwrapper" | ||||
fi | ||||
} | } | |||
# func_ltwrapper_p file | # func_ltwrapper_p file | |||
# True iff FILE is a libtool wrapper script or wrapper executable | # True iff FILE is a libtool wrapper script or wrapper executable | |||
# This function is only a basic sanity check; it will hardly flush out | # This function is only a basic sanity check; it will hardly flush out | |||
# determined imposters. | # determined imposters. | |||
func_ltwrapper_p () | func_ltwrapper_p () | |||
{ | { | |||
func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" | func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" | |||
} | } | |||
skipping to change at line 976 | skipping to change at line 1299 | |||
# `FILE.' does not work on cygwin managed mounts. | # `FILE.' does not work on cygwin managed mounts. | |||
func_source () | func_source () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
case $1 in | case $1 in | |||
*/* | *\\*) . "$1" ;; | */* | *\\*) . "$1" ;; | |||
*) . "./$1" ;; | *) . "./$1" ;; | |||
esac | esac | |||
} | } | |||
# func_resolve_sysroot PATH | ||||
# Replace a leading = in PATH with a sysroot. Store the result into | ||||
# func_resolve_sysroot_result | ||||
func_resolve_sysroot () | ||||
{ | ||||
func_resolve_sysroot_result=$1 | ||||
case $func_resolve_sysroot_result in | ||||
=*) | ||||
func_stripname '=' '' "$func_resolve_sysroot_result" | ||||
func_resolve_sysroot_result=$lt_sysroot$func_stripname_result | ||||
;; | ||||
esac | ||||
} | ||||
# func_replace_sysroot PATH | ||||
# If PATH begins with the sysroot, replace it with = and | ||||
# store the result into func_replace_sysroot_result. | ||||
func_replace_sysroot () | ||||
{ | ||||
case "$lt_sysroot:$1" in | ||||
?*:"$lt_sysroot"*) | ||||
func_stripname "$lt_sysroot" '' "$1" | ||||
func_replace_sysroot_result="=$func_stripname_result" | ||||
;; | ||||
*) | ||||
# Including no sysroot. | ||||
func_replace_sysroot_result=$1 | ||||
;; | ||||
esac | ||||
} | ||||
# func_infer_tag arg | # func_infer_tag arg | |||
# Infer tagged configuration to use if any are available and | # Infer tagged configuration to use if any are available and | |||
# if one wasn't chosen via the "--tag" command line option. | # if one wasn't chosen via the "--tag" command line option. | |||
# Only attempt this if the compiler in the base compile | # Only attempt this if the compiler in the base compile | |||
# command doesn't match the default compiler. | # command doesn't match the default compiler. | |||
# arg is usually of the form 'gcc ...' | # arg is usually of the form 'gcc ...' | |||
func_infer_tag () | func_infer_tag () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
if test -n "$available_tags" && test -z "$tagname"; then | if test -n "$available_tags" && test -z "$tagname"; then | |||
CC_quoted= | CC_quoted= | |||
for arg in $CC; do | for arg in $CC; do | |||
func_quote_for_eval "$arg" | func_append_quoted CC_quoted "$arg" | |||
CC_quoted="$CC_quoted $func_quote_for_eval_result" | ||||
done | done | |||
CC_expanded=`func_echo_all $CC` | ||||
CC_quoted_expanded=`func_echo_all $CC_quoted` | ||||
case $@ in | case $@ in | |||
# Blanks in the command may have been stripped by the calling shell, | # Blanks in the command may have been stripped by the calling shell, | |||
# but not from the CC environment variable when configure was run. | # but not from the CC environment variable when configure was run. | |||
" $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quote | " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ | |||
d"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; | " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quo | |||
ted_expanded "*) ;; | ||||
# Blanks at the start of $base_compile will cause this to fail | # Blanks at the start of $base_compile will cause this to fail | |||
# if we don't check for them as well. | # if we don't check for them as well. | |||
*) | *) | |||
for z in $available_tags; do | for z in $available_tags; do | |||
if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /d ev/null; then | if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /d ev/null; then | |||
# Evaluate the configuration. | # Evaluate the configuration. | |||
eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^ # ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" | eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^ # ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" | |||
CC_quoted= | CC_quoted= | |||
for arg in $CC; do | for arg in $CC; do | |||
# Double-quote args containing other shell metacharacters. | # Double-quote args containing other shell metacharacters. | |||
func_quote_for_eval "$arg" | func_append_quoted CC_quoted "$arg" | |||
CC_quoted="$CC_quoted $func_quote_for_eval_result" | ||||
done | done | |||
CC_expanded=`func_echo_all $CC` | ||||
CC_quoted_expanded=`func_echo_all $CC_quoted` | ||||
case "$@ " in | case "$@ " in | |||
" $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $C | " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ | |||
C_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` | " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$C | |||
"*) | C_quoted_expanded "*) | |||
# The compiler in the base compile command matches | # The compiler in the base compile command matches | |||
# the one in the tagged configuration. | # the one in the tagged configuration. | |||
# Assume this is the tagged configuration we want. | # Assume this is the tagged configuration we want. | |||
tagname=$z | tagname=$z | |||
break | break | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
done | done | |||
# If $tagname still isn't set, then no tagged configuration | # If $tagname still isn't set, then no tagged configuration | |||
skipping to change at line 1070 | skipping to change at line 1428 | |||
pic_object=$write_lobj | pic_object=$write_lobj | |||
# Name of the non-PIC object | # Name of the non-PIC object | |||
non_pic_object=$write_oldobj | non_pic_object=$write_oldobj | |||
EOF | EOF | |||
$MV "${write_libobj}T" "${write_libobj}" | $MV "${write_libobj}T" "${write_libobj}" | |||
} | } | |||
} | } | |||
################################################## | ||||
# FILE NAME AND PATH CONVERSION HELPER FUNCTIONS # | ||||
################################################## | ||||
# func_convert_core_file_wine_to_w32 ARG | ||||
# Helper function used by file name conversion functions when $build is *ni | ||||
x, | ||||
# and $host is mingw, cygwin, or some other w32 environment. Relies on a | ||||
# correctly configured wine environment available, with the winepath progra | ||||
m | ||||
# in $build's $PATH. | ||||
# | ||||
# ARG is the $build file name to be converted to w32 format. | ||||
# Result is available in $func_convert_core_file_wine_to_w32_result, and wi | ||||
ll | ||||
# be empty on error (or when ARG is empty) | ||||
func_convert_core_file_wine_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_convert_core_file_wine_to_w32_result="$1" | ||||
if test -n "$1"; then | ||||
# Unfortunately, winepath does not exit with a non-zero error code, so | ||||
we | ||||
# are forced to check the contents of stdout. On the other hand, if the | ||||
# command is not found, the shell will set an exit code of 127 and prin | ||||
t | ||||
# *an error message* to stdout. So we must check for both error code of | ||||
# zero AND non-empty stdout, which explains the odd construction: | ||||
func_convert_core_file_wine_to_w32_tmp=`winepath -w "$1" 2>/dev/null` | ||||
if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp | ||||
}"; then | ||||
func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_ | ||||
file_wine_to_w32_tmp" | | ||||
$SED -e "$lt_sed_naive_backslashify"` | ||||
else | ||||
func_convert_core_file_wine_to_w32_result= | ||||
fi | ||||
fi | ||||
} | ||||
# end: func_convert_core_file_wine_to_w32 | ||||
# func_convert_core_path_wine_to_w32 ARG | ||||
# Helper function used by path conversion functions when $build is *nix, an | ||||
d | ||||
# $host is mingw, cygwin, or some other w32 environment. Relies on a correc | ||||
tly | ||||
# configured wine environment available, with the winepath program in $buil | ||||
d's | ||||
# $PATH. Assumes ARG has no leading or trailing path separator characters. | ||||
# | ||||
# ARG is path to be converted from $build format to win32. | ||||
# Result is available in $func_convert_core_path_wine_to_w32_result. | ||||
# Unconvertible file (directory) names in ARG are skipped; if no directory | ||||
names | ||||
# are convertible, then the result may be empty. | ||||
func_convert_core_path_wine_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
# unfortunately, winepath doesn't convert paths, only file names | ||||
func_convert_core_path_wine_to_w32_result="" | ||||
if test -n "$1"; then | ||||
oldIFS=$IFS | ||||
IFS=: | ||||
for func_convert_core_path_wine_to_w32_f in $1; do | ||||
IFS=$oldIFS | ||||
func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w | ||||
32_f" | ||||
if test -n "$func_convert_core_file_wine_to_w32_result" ; then | ||||
if test -z "$func_convert_core_path_wine_to_w32_result"; then | ||||
func_convert_core_path_wine_to_w32_result="$func_convert_core_fil | ||||
e_wine_to_w32_result" | ||||
else | ||||
func_append func_convert_core_path_wine_to_w32_result ";$func_con | ||||
vert_core_file_wine_to_w32_result" | ||||
fi | ||||
fi | ||||
done | ||||
IFS=$oldIFS | ||||
fi | ||||
} | ||||
# end: func_convert_core_path_wine_to_w32 | ||||
# func_cygpath ARGS... | ||||
# Wrapper around calling the cygpath program via LT_CYGPATH. This is used w | ||||
hen | ||||
# when (1) $build is *nix and Cygwin is hosted via a wine environment; or ( | ||||
2) | ||||
# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) | ||||
or | ||||
# (2), returns the Cygwin file name or path in func_cygpath_result (input | ||||
# file name or path is assumed to be in w32 format, as previously converted | ||||
# from $build's *nix or MSYS format). In case (3), returns the w32 file nam | ||||
e | ||||
# or path in func_cygpath_result (input file name or path is assumed to be | ||||
in | ||||
# Cygwin format). Returns an empty string on error. | ||||
# | ||||
# ARGS are passed to cygpath, with the last one being the file name or path | ||||
to | ||||
# be converted. | ||||
# | ||||
# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH | ||||
# environment variable; do not put it in $PATH. | ||||
func_cygpath () | ||||
{ | ||||
$opt_debug | ||||
if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then | ||||
func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` | ||||
if test "$?" -ne 0; then | ||||
# on failure, ensure result is empty | ||||
func_cygpath_result= | ||||
fi | ||||
else | ||||
func_cygpath_result= | ||||
func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_C | ||||
YGPATH'" | ||||
fi | ||||
} | ||||
#end: func_cygpath | ||||
# func_convert_core_msys_to_w32 ARG | ||||
# Convert file name or path ARG from MSYS format to w32 format. Return | ||||
# result in func_convert_core_msys_to_w32_result. | ||||
func_convert_core_msys_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
# awkward: cmd appends spaces to result | ||||
func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | | ||||
$SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` | ||||
} | ||||
#end: func_convert_core_msys_to_w32 | ||||
# func_convert_file_check ARG1 ARG2 | ||||
# Verify that ARG1 (a file name in $build format) was converted to $host | ||||
# format in ARG2. Otherwise, emit an error message, but continue (resetting | ||||
# func_to_host_file_result to ARG1). | ||||
func_convert_file_check () | ||||
{ | ||||
$opt_debug | ||||
if test -z "$2" && test -n "$1" ; then | ||||
func_error "Could not determine host file name corresponding to" | ||||
func_error " \`$1'" | ||||
func_error "Continuing, but uninstalled executables may not work." | ||||
# Fallback: | ||||
func_to_host_file_result="$1" | ||||
fi | ||||
} | ||||
# end func_convert_file_check | ||||
# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH | ||||
# Verify that FROM_PATH (a path in $build format) was converted to $host | ||||
# format in TO_PATH. Otherwise, emit an error message, but continue, resett | ||||
ing | ||||
# func_to_host_file_result to a simplistic fallback value (see below). | ||||
func_convert_path_check () | ||||
{ | ||||
$opt_debug | ||||
if test -z "$4" && test -n "$3"; then | ||||
func_error "Could not determine the host path corresponding to" | ||||
func_error " \`$3'" | ||||
func_error "Continuing, but uninstalled executables may not work." | ||||
# Fallback. This is a deliberately simplistic "conversion" and | ||||
# should not be "improved". See libtool.info. | ||||
if test "x$1" != "x$2"; then | ||||
lt_replace_pathsep_chars="s|$1|$2|g" | ||||
func_to_host_path_result=`echo "$3" | | ||||
$SED -e "$lt_replace_pathsep_chars"` | ||||
else | ||||
func_to_host_path_result="$3" | ||||
fi | ||||
fi | ||||
} | ||||
# end func_convert_path_check | ||||
# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG | ||||
# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRON | ||||
TPAT | ||||
# and appending REPL if ORIG matches BACKPAT. | ||||
func_convert_path_front_back_pathsep () | ||||
{ | ||||
$opt_debug | ||||
case $4 in | ||||
$1 ) func_to_host_path_result="$3$func_to_host_path_result" | ||||
;; | ||||
esac | ||||
case $4 in | ||||
$2 ) func_append func_to_host_path_result "$3" | ||||
;; | ||||
esac | ||||
} | ||||
# end func_convert_path_front_back_pathsep | ||||
################################################## | ||||
# $build to $host FILE NAME CONVERSION FUNCTIONS # | ||||
################################################## | ||||
# invoked via `$to_host_file_cmd ARG' | ||||
# | ||||
# In each case, ARG is the path to be converted from $build to $host format | ||||
. | ||||
# Result will be available in $func_to_host_file_result. | ||||
# func_to_host_file ARG | ||||
# Converts the file name ARG from $build format to $host format. Return res | ||||
ult | ||||
# in func_to_host_file_result. | ||||
func_to_host_file () | ||||
{ | ||||
$opt_debug | ||||
$to_host_file_cmd "$1" | ||||
} | ||||
# end func_to_host_file | ||||
# func_to_tool_file ARG LAZY | ||||
# converts the file name ARG from $build format to toolchain format. Return | ||||
# result in func_to_tool_file_result. If the conversion in use is listed | ||||
# in (the comma separated) LAZY, no conversion takes place. | ||||
func_to_tool_file () | ||||
{ | ||||
$opt_debug | ||||
case ,$2, in | ||||
*,"$to_tool_file_cmd",*) | ||||
func_to_tool_file_result=$1 | ||||
;; | ||||
*) | ||||
$to_tool_file_cmd "$1" | ||||
func_to_tool_file_result=$func_to_host_file_result | ||||
;; | ||||
esac | ||||
} | ||||
# end func_to_tool_file | ||||
# func_convert_file_noop ARG | ||||
# Copy ARG to func_to_host_file_result. | ||||
func_convert_file_noop () | ||||
{ | ||||
func_to_host_file_result="$1" | ||||
} | ||||
# end func_convert_file_noop | ||||
# func_convert_file_msys_to_w32 ARG | ||||
# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic | ||||
# conversion to w32 is not available inside the cwrapper. Returns result i | ||||
n | ||||
# func_to_host_file_result. | ||||
func_convert_file_msys_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_file_result="$1" | ||||
if test -n "$1"; then | ||||
func_convert_core_msys_to_w32 "$1" | ||||
func_to_host_file_result="$func_convert_core_msys_to_w32_result" | ||||
fi | ||||
func_convert_file_check "$1" "$func_to_host_file_result" | ||||
} | ||||
# end func_convert_file_msys_to_w32 | ||||
# func_convert_file_cygwin_to_w32 ARG | ||||
# Convert file name ARG from Cygwin to w32 format. Returns result in | ||||
# func_to_host_file_result. | ||||
func_convert_file_cygwin_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_file_result="$1" | ||||
if test -n "$1"; then | ||||
# because $build is cygwin, we call "the" cygpath in $PATH; no need to | ||||
use | ||||
# LT_CYGPATH in this case. | ||||
func_to_host_file_result=`cygpath -m "$1"` | ||||
fi | ||||
func_convert_file_check "$1" "$func_to_host_file_result" | ||||
} | ||||
# end func_convert_file_cygwin_to_w32 | ||||
# func_convert_file_nix_to_w32 ARG | ||||
# Convert file name ARG from *nix to w32 format. Requires a wine environme | ||||
nt | ||||
# and a working winepath. Returns result in func_to_host_file_result. | ||||
func_convert_file_nix_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_file_result="$1" | ||||
if test -n "$1"; then | ||||
func_convert_core_file_wine_to_w32 "$1" | ||||
func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" | ||||
fi | ||||
func_convert_file_check "$1" "$func_to_host_file_result" | ||||
} | ||||
# end func_convert_file_nix_to_w32 | ||||
# func_convert_file_msys_to_cygwin ARG | ||||
# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH se | ||||
t. | ||||
# Returns result in func_to_host_file_result. | ||||
func_convert_file_msys_to_cygwin () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_file_result="$1" | ||||
if test -n "$1"; then | ||||
func_convert_core_msys_to_w32 "$1" | ||||
func_cygpath -u "$func_convert_core_msys_to_w32_result" | ||||
func_to_host_file_result="$func_cygpath_result" | ||||
fi | ||||
func_convert_file_check "$1" "$func_to_host_file_result" | ||||
} | ||||
# end func_convert_file_msys_to_cygwin | ||||
# func_convert_file_nix_to_cygwin ARG | ||||
# Convert file name ARG from *nix to Cygwin format. Requires Cygwin instal | ||||
led | ||||
# in a wine environment, working winepath, and LT_CYGPATH set. Returns res | ||||
ult | ||||
# in func_to_host_file_result. | ||||
func_convert_file_nix_to_cygwin () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_file_result="$1" | ||||
if test -n "$1"; then | ||||
# convert from *nix to w32, then use cygpath to convert from w32 to cyg | ||||
win. | ||||
func_convert_core_file_wine_to_w32 "$1" | ||||
func_cygpath -u "$func_convert_core_file_wine_to_w32_result" | ||||
func_to_host_file_result="$func_cygpath_result" | ||||
fi | ||||
func_convert_file_check "$1" "$func_to_host_file_result" | ||||
} | ||||
# end func_convert_file_nix_to_cygwin | ||||
############################################# | ||||
# $build to $host PATH CONVERSION FUNCTIONS # | ||||
############################################# | ||||
# invoked via `$to_host_path_cmd ARG' | ||||
# | ||||
# In each case, ARG is the path to be converted from $build to $host format | ||||
. | ||||
# The result will be available in $func_to_host_path_result. | ||||
# | ||||
# Path separators are also converted from $build format to $host format. I | ||||
f | ||||
# ARG begins or ends with a path separator character, it is preserved (but | ||||
# converted to $host format) on output. | ||||
# | ||||
# All path conversion functions are named using the following convention: | ||||
# file name conversion function : func_convert_file_X_to_Y () | ||||
# path conversion function : func_convert_path_X_to_Y () | ||||
# where, for any given $build/$host combination the 'X_to_Y' value is the | ||||
# same. If conversion functions are added for new $build/$host combination | ||||
s, | ||||
# the two new functions must follow this pattern, or func_init_to_host_path | ||||
_cmd | ||||
# will break. | ||||
# func_init_to_host_path_cmd | ||||
# Ensures that function "pointer" variable $to_host_path_cmd is set to the | ||||
# appropriate value, based on the value of $to_host_file_cmd. | ||||
to_host_path_cmd= | ||||
func_init_to_host_path_cmd () | ||||
{ | ||||
$opt_debug | ||||
if test -z "$to_host_path_cmd"; then | ||||
func_stripname 'func_convert_file_' '' "$to_host_file_cmd" | ||||
to_host_path_cmd="func_convert_path_${func_stripname_result}" | ||||
fi | ||||
} | ||||
# func_to_host_path ARG | ||||
# Converts the path ARG from $build format to $host format. Return result | ||||
# in func_to_host_path_result. | ||||
func_to_host_path () | ||||
{ | ||||
$opt_debug | ||||
func_init_to_host_path_cmd | ||||
$to_host_path_cmd "$1" | ||||
} | ||||
# end func_to_host_path | ||||
# func_convert_path_noop ARG | ||||
# Copy ARG to func_to_host_path_result. | ||||
func_convert_path_noop () | ||||
{ | ||||
func_to_host_path_result="$1" | ||||
} | ||||
# end func_convert_path_noop | ||||
# func_convert_path_msys_to_w32 ARG | ||||
# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic | ||||
# conversion to w32 is not available inside the cwrapper. Returns result i | ||||
n | ||||
# func_to_host_path_result. | ||||
func_convert_path_msys_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_path_result="$1" | ||||
if test -n "$1"; then | ||||
# Remove leading and trailing path separator characters from ARG. MSYS | ||||
# behavior is inconsistent here; cygpath turns them into '.;' and ';.'; | ||||
# and winepath ignores them completely. | ||||
func_stripname : : "$1" | ||||
func_to_host_path_tmp1=$func_stripname_result | ||||
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" | ||||
func_to_host_path_result="$func_convert_core_msys_to_w32_result" | ||||
func_convert_path_check : ";" \ | ||||
"$func_to_host_path_tmp1" "$func_to_host_path_result" | ||||
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" | ||||
fi | ||||
} | ||||
# end func_convert_path_msys_to_w32 | ||||
# func_convert_path_cygwin_to_w32 ARG | ||||
# Convert path ARG from Cygwin to w32 format. Returns result in | ||||
# func_to_host_file_result. | ||||
func_convert_path_cygwin_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_path_result="$1" | ||||
if test -n "$1"; then | ||||
# See func_convert_path_msys_to_w32: | ||||
func_stripname : : "$1" | ||||
func_to_host_path_tmp1=$func_stripname_result | ||||
func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` | ||||
func_convert_path_check : ";" \ | ||||
"$func_to_host_path_tmp1" "$func_to_host_path_result" | ||||
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" | ||||
fi | ||||
} | ||||
# end func_convert_path_cygwin_to_w32 | ||||
# func_convert_path_nix_to_w32 ARG | ||||
# Convert path ARG from *nix to w32 format. Requires a wine environment an | ||||
d | ||||
# a working winepath. Returns result in func_to_host_file_result. | ||||
func_convert_path_nix_to_w32 () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_path_result="$1" | ||||
if test -n "$1"; then | ||||
# See func_convert_path_msys_to_w32: | ||||
func_stripname : : "$1" | ||||
func_to_host_path_tmp1=$func_stripname_result | ||||
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" | ||||
func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" | ||||
func_convert_path_check : ";" \ | ||||
"$func_to_host_path_tmp1" "$func_to_host_path_result" | ||||
func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" | ||||
fi | ||||
} | ||||
# end func_convert_path_nix_to_w32 | ||||
# func_convert_path_msys_to_cygwin ARG | ||||
# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. | ||||
# Returns result in func_to_host_file_result. | ||||
func_convert_path_msys_to_cygwin () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_path_result="$1" | ||||
if test -n "$1"; then | ||||
# See func_convert_path_msys_to_w32: | ||||
func_stripname : : "$1" | ||||
func_to_host_path_tmp1=$func_stripname_result | ||||
func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" | ||||
func_cygpath -u -p "$func_convert_core_msys_to_w32_result" | ||||
func_to_host_path_result="$func_cygpath_result" | ||||
func_convert_path_check : : \ | ||||
"$func_to_host_path_tmp1" "$func_to_host_path_result" | ||||
func_convert_path_front_back_pathsep ":*" "*:" : "$1" | ||||
fi | ||||
} | ||||
# end func_convert_path_msys_to_cygwin | ||||
# func_convert_path_nix_to_cygwin ARG | ||||
# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed i | ||||
n a | ||||
# a wine environment, working winepath, and LT_CYGPATH set. Returns result | ||||
in | ||||
# func_to_host_file_result. | ||||
func_convert_path_nix_to_cygwin () | ||||
{ | ||||
$opt_debug | ||||
func_to_host_path_result="$1" | ||||
if test -n "$1"; then | ||||
# Remove leading and trailing path separator characters from | ||||
# ARG. msys behavior is inconsistent here, cygpath turns them | ||||
# into '.;' and ';.', and winepath ignores them completely. | ||||
func_stripname : : "$1" | ||||
func_to_host_path_tmp1=$func_stripname_result | ||||
func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" | ||||
func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" | ||||
func_to_host_path_result="$func_cygpath_result" | ||||
func_convert_path_check : : \ | ||||
"$func_to_host_path_tmp1" "$func_to_host_path_result" | ||||
func_convert_path_front_back_pathsep ":*" "*:" : "$1" | ||||
fi | ||||
} | ||||
# end func_convert_path_nix_to_cygwin | ||||
# func_mode_compile arg... | # func_mode_compile arg... | |||
func_mode_compile () | func_mode_compile () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
# Get the compilation command and the source file. | # Get the compilation command and the source file. | |||
base_compile= | base_compile= | |||
srcfile="$nonopt" # always keep a non-empty value in "srcfile" | srcfile="$nonopt" # always keep a non-empty value in "srcfile" | |||
suppress_opt=yes | suppress_opt=yes | |||
suppress_output= | suppress_output= | |||
arg_mode=normal | arg_mode=normal | |||
skipping to change at line 1110 | skipping to change at line 1922 | |||
# Accept any command-line options. | # Accept any command-line options. | |||
case $arg in | case $arg in | |||
-o) | -o) | |||
test -n "$libobj" && \ | test -n "$libobj" && \ | |||
func_fatal_error "you cannot specify \`-o' more than once" | func_fatal_error "you cannot specify \`-o' more than once" | |||
arg_mode=target | arg_mode=target | |||
continue | continue | |||
;; | ;; | |||
-pie | -fpie | -fPIE) | -pie | -fpie | -fPIE) | |||
pie_flag="$pie_flag $arg" | func_append pie_flag " $arg" | |||
continue | continue | |||
;; | ;; | |||
-shared | -static | -prefer-pic | -prefer-non-pic) | -shared | -static | -prefer-pic | -prefer-non-pic) | |||
later="$later $arg" | func_append later " $arg" | |||
continue | continue | |||
;; | ;; | |||
-no-suppress) | -no-suppress) | |||
suppress_opt=no | suppress_opt=no | |||
continue | continue | |||
;; | ;; | |||
-Xcompiler) | -Xcompiler) | |||
arg_mode=arg # the next one goes into the "base_compile" arg lis t | arg_mode=arg # the next one goes into the "base_compile" arg lis t | |||
continue # The current "srcfile" will either be retained or | continue # The current "srcfile" will either be retained or | |||
;; # replaced later. I would guess that would be a bu g. | ;; # replaced later. I would guess that would be a bu g. | |||
-Wc,*) | -Wc,*) | |||
func_stripname '-Wc,' '' "$arg" | func_stripname '-Wc,' '' "$arg" | |||
args=$func_stripname_result | args=$func_stripname_result | |||
lastarg= | lastarg= | |||
save_ifs="$IFS"; IFS=',' | save_ifs="$IFS"; IFS=',' | |||
for arg in $args; do | for arg in $args; do | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
func_quote_for_eval "$arg" | func_append_quoted lastarg "$arg" | |||
lastarg="$lastarg $func_quote_for_eval_result" | ||||
done | done | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
func_stripname ' ' '' "$lastarg" | func_stripname ' ' '' "$lastarg" | |||
lastarg=$func_stripname_result | lastarg=$func_stripname_result | |||
# Add the arguments to base_compile. | # Add the arguments to base_compile. | |||
base_compile="$base_compile $lastarg" | func_append base_compile " $lastarg" | |||
continue | continue | |||
;; | ;; | |||
*) | *) | |||
# Accept the current argument as the source file. | # Accept the current argument as the source file. | |||
# The previous "srcfile" becomes the current argument. | # The previous "srcfile" becomes the current argument. | |||
# | # | |||
lastarg="$srcfile" | lastarg="$srcfile" | |||
srcfile="$arg" | srcfile="$arg" | |||
;; | ;; | |||
esac # case $arg | esac # case $arg | |||
;; | ;; | |||
esac # case $arg_mode | esac # case $arg_mode | |||
# Aesthetically quote the previous argument. | # Aesthetically quote the previous argument. | |||
func_quote_for_eval "$lastarg" | func_append_quoted base_compile "$lastarg" | |||
base_compile="$base_compile $func_quote_for_eval_result" | ||||
done # for arg | done # for arg | |||
case $arg_mode in | case $arg_mode in | |||
arg) | arg) | |||
func_fatal_error "you must specify an argument for -Xcompile" | func_fatal_error "you must specify an argument for -Xcompile" | |||
;; | ;; | |||
target) | target) | |||
func_fatal_error "you must specify a target with \`-o'" | func_fatal_error "you must specify a target with \`-o'" | |||
;; | ;; | |||
*) | *) | |||
skipping to change at line 1186 | skipping to change at line 1996 | |||
} | } | |||
;; | ;; | |||
esac | esac | |||
# Recognize several different file suffixes. | # Recognize several different file suffixes. | |||
# If the user specifies -o file.o, it is replaced with file.lo | # If the user specifies -o file.o, it is replaced with file.lo | |||
case $libobj in | case $libobj in | |||
*.[cCFSifmso] | \ | *.[cCFSifmso] | \ | |||
*.ada | *.adb | *.ads | *.asm | \ | *.ada | *.adb | *.ads | *.asm | \ | |||
*.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ | *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ | |||
*.[fF][09]? | *.for | *.java | *.obj | *.sx) | *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) | |||
func_xform "$libobj" | func_xform "$libobj" | |||
libobj=$func_xform_result | libobj=$func_xform_result | |||
;; | ;; | |||
esac | esac | |||
case $libobj in | case $libobj in | |||
*.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; | *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; | |||
*) | *) | |||
func_fatal_error "cannot determine name of library object from \`$lib obj'" | func_fatal_error "cannot determine name of library object from \`$lib obj'" | |||
;; | ;; | |||
skipping to change at line 1261 | skipping to change at line 2071 | |||
;; | ;; | |||
esac | esac | |||
if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; t hen | if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; t hen | |||
# non-PIC code in shared libraries is not supported | # non-PIC code in shared libraries is not supported | |||
pic_mode=default | pic_mode=default | |||
fi | fi | |||
# Calculate the filename of the output object if compiler does | # Calculate the filename of the output object if compiler does | |||
# not support -o with -c | # not support -o with -c | |||
if test "$compiler_c_o" = no; then | if test "$compiler_c_o" = no; then | |||
output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%' `.${objext} | output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objex t} | |||
lockfile="$output_obj.lock" | lockfile="$output_obj.lock" | |||
else | else | |||
output_obj= | output_obj= | |||
need_locks=no | need_locks=no | |||
lockfile= | lockfile= | |||
fi | fi | |||
# Lock this critical section if it is needed | # Lock this critical section if it is needed | |||
# We use this script file to make the link, it avoids creating a new fi le | # We use this script file to make the link, it avoids creating a new fi le | |||
if test "$need_locks" = yes; then | if test "$need_locks" = yes; then | |||
skipping to change at line 1292 | skipping to change at line 2102 | |||
This indicates that another process is trying to use the same | This indicates that another process is trying to use the same | |||
temporary object file, and libtool could not work around it because | temporary object file, and libtool could not work around it because | |||
your compiler does not support \`-c' and \`-o' together. If you | your compiler does not support \`-c' and \`-o' together. If you | |||
repeat this compilation, it may succeed, by chance, but you had better | repeat this compilation, it may succeed, by chance, but you had better | |||
avoid parallel builds (make -j) in this platform, or get a better | avoid parallel builds (make -j) in this platform, or get a better | |||
compiler." | compiler." | |||
$opt_dry_run || $RM $removelist | $opt_dry_run || $RM $removelist | |||
exit $EXIT_FAILURE | exit $EXIT_FAILURE | |||
fi | fi | |||
removelist="$removelist $output_obj" | func_append removelist " $output_obj" | |||
$ECHO "$srcfile" > "$lockfile" | $ECHO "$srcfile" > "$lockfile" | |||
fi | fi | |||
$opt_dry_run || $RM $removelist | $opt_dry_run || $RM $removelist | |||
removelist="$removelist $lockfile" | func_append removelist " $lockfile" | |||
trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 | trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 | |||
if test -n "$fix_srcfile_path"; then | func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 | |||
eval srcfile=\"$fix_srcfile_path\" | srcfile=$func_to_tool_file_result | |||
fi | ||||
func_quote_for_eval "$srcfile" | func_quote_for_eval "$srcfile" | |||
qsrcfile=$func_quote_for_eval_result | qsrcfile=$func_quote_for_eval_result | |||
# Only build a PIC object if we are building libtool libraries. | # Only build a PIC object if we are building libtool libraries. | |||
if test "$build_libtool_libs" = yes; then | if test "$build_libtool_libs" = yes; then | |||
# Without this assignment, base_compile gets emptied. | # Without this assignment, base_compile gets emptied. | |||
fbsd_hideous_sh_bug=$base_compile | fbsd_hideous_sh_bug=$base_compile | |||
if test "$pic_mode" != no; then | if test "$pic_mode" != no; then | |||
command="$base_compile $qsrcfile $pic_flag" | command="$base_compile $qsrcfile $pic_flag" | |||
else | else | |||
# Don't build PIC code | # Don't build PIC code | |||
command="$base_compile $qsrcfile" | command="$base_compile $qsrcfile" | |||
fi | fi | |||
func_mkdir_p "$xdir$objdir" | func_mkdir_p "$xdir$objdir" | |||
if test -z "$output_obj"; then | if test -z "$output_obj"; then | |||
# Place PIC objects in $objdir | # Place PIC objects in $objdir | |||
command="$command -o $lobj" | func_append command " -o $lobj" | |||
fi | fi | |||
func_show_eval_locale "$command" \ | func_show_eval_locale "$command" \ | |||
'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' | 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' | |||
if test "$need_locks" = warn && | if test "$need_locks" = warn && | |||
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |||
$ECHO "\ | $ECHO "\ | |||
*** ERROR, $lockfile contains: | *** ERROR, $lockfile contains: | |||
`cat $lockfile 2>/dev/null` | `cat $lockfile 2>/dev/null` | |||
skipping to change at line 1369 | skipping to change at line 2178 | |||
# Only build a position-dependent object if we build old libraries. | # Only build a position-dependent object if we build old libraries. | |||
if test "$build_old_libs" = yes; then | if test "$build_old_libs" = yes; then | |||
if test "$pic_mode" != yes; then | if test "$pic_mode" != yes; then | |||
# Don't build PIC code | # Don't build PIC code | |||
command="$base_compile $qsrcfile$pie_flag" | command="$base_compile $qsrcfile$pie_flag" | |||
else | else | |||
command="$base_compile $qsrcfile $pic_flag" | command="$base_compile $qsrcfile $pic_flag" | |||
fi | fi | |||
if test "$compiler_c_o" = yes; then | if test "$compiler_c_o" = yes; then | |||
command="$command -o $obj" | func_append command " -o $obj" | |||
fi | fi | |||
# Suppress compiler output if we already did a PIC compilation. | # Suppress compiler output if we already did a PIC compilation. | |||
command="$command$suppress_output" | func_append command "$suppress_output" | |||
func_show_eval_locale "$command" \ | func_show_eval_locale "$command" \ | |||
'$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' | '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' | |||
if test "$need_locks" = warn && | if test "$need_locks" = warn && | |||
test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then | |||
$ECHO "\ | $ECHO "\ | |||
*** ERROR, $lockfile contains: | *** ERROR, $lockfile contains: | |||
`cat $lockfile 2>/dev/null` | `cat $lockfile 2>/dev/null` | |||
but it should contain: | but it should contain: | |||
skipping to change at line 1418 | skipping to change at line 2227 | |||
if test "$need_locks" != no; then | if test "$need_locks" != no; then | |||
removelist=$lockfile | removelist=$lockfile | |||
$RM "$lockfile" | $RM "$lockfile" | |||
fi | fi | |||
} | } | |||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
} | } | |||
$opt_help || { | $opt_help || { | |||
test "$mode" = compile && func_mode_compile ${1+"$@"} | test "$opt_mode" = compile && func_mode_compile ${1+"$@"} | |||
} | } | |||
func_mode_help () | func_mode_help () | |||
{ | { | |||
# We need to display help for each of the modes. | # We need to display help for each of the modes. | |||
case $mode in | case $opt_mode in | |||
"") | "") | |||
# Generic help is extracted from the usage comments | # Generic help is extracted from the usage comments | |||
# at the start of this file. | # at the start of this file. | |||
func_help | func_help | |||
;; | ;; | |||
clean) | clean) | |||
$ECHO \ | $ECHO \ | |||
"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... | "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... | |||
skipping to change at line 1455 | skipping to change at line 2264 | |||
compile) | compile) | |||
$ECHO \ | $ECHO \ | |||
"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE | "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE | |||
Compile a source file into a libtool library object. | Compile a source file into a libtool library object. | |||
This mode accepts the following additional options: | This mode accepts the following additional options: | |||
-o OUTPUT-FILE set the output file name to OUTPUT-FILE | -o OUTPUT-FILE set the output file name to OUTPUT-FILE | |||
-no-suppress do not suppress compiler output for multiple passes | -no-suppress do not suppress compiler output for multiple passes | |||
-prefer-pic try to building PIC objects only | -prefer-pic try to build PIC objects only | |||
-prefer-non-pic try to building non-PIC objects only | -prefer-non-pic try to build non-PIC objects only | |||
-shared do not build a \`.o' file suitable for static linking | -shared do not build a \`.o' file suitable for static linking | |||
-static only build a \`.o' file suitable for static linking | -static only build a \`.o' file suitable for static linking | |||
-Wc,FLAG pass FLAG directly to the compiler | ||||
COMPILE-COMMAND is a command to be used in creating a \`standard' object fi le | COMPILE-COMMAND is a command to be used in creating a \`standard' object fi le | |||
from the given SOURCEFILE. | from the given SOURCEFILE. | |||
The output file name is determined by removing the directory component from | The output file name is determined by removing the directory component from | |||
SOURCEFILE, then substituting the C source code suffix \`.c' with the | SOURCEFILE, then substituting the C source code suffix \`.c' with the | |||
library object suffix, \`.lo'." | library object suffix, \`.lo'." | |||
;; | ;; | |||
execute) | execute) | |||
skipping to change at line 1511 | skipping to change at line 2321 | |||
$ECHO \ | $ECHO \ | |||
"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... | "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... | |||
Install executables or libraries. | Install executables or libraries. | |||
INSTALL-COMMAND is the installation command. The first component should be | INSTALL-COMMAND is the installation command. The first component should be | |||
either the \`install' or \`cp' program. | either the \`install' or \`cp' program. | |||
The following components of INSTALL-COMMAND are treated specially: | The following components of INSTALL-COMMAND are treated specially: | |||
-inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installatio n | -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for install ation | |||
The rest of the components are interpreted as arguments to that command (on ly | The rest of the components are interpreted as arguments to that command (on ly | |||
BSD-compatible install options are recognized)." | BSD-compatible install options are recognized)." | |||
;; | ;; | |||
link) | link) | |||
$ECHO \ | $ECHO \ | |||
"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... | "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... | |||
Link object files or libraries together to form another library, or to | Link object files or libraries together to form another library, or to | |||
create an executable program. | create an executable program. | |||
LINK-COMMAND is a command using the C compiler that you would use to create | LINK-COMMAND is a command using the C compiler that you would use to create | |||
a program from several object files. | a program from several object files. | |||
The following components of LINK-COMMAND are treated specially: | The following components of LINK-COMMAND are treated specially: | |||
-all-static do not do any dynamic linking at all | -all-static do not do any dynamic linking at all | |||
-avoid-version do not add a version suffix if possible | -avoid-version do not add a version suffix if possible | |||
-bindir BINDIR specify path to binaries directory (for systems where | ||||
libraries must be found in the PATH setting at runtime) | ||||
-dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime | -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime | |||
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbol s | -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbol s | |||
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsy m(3) | -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsy m(3) | |||
-export-symbols SYMFILE | -export-symbols SYMFILE | |||
try to export only the symbols listed in SYMFILE | try to export only the symbols listed in SYMFILE | |||
-export-symbols-regex REGEX | -export-symbols-regex REGEX | |||
try to export only the symbols matching REGEX | try to export only the symbols matching REGEX | |||
-LLIBDIR search LIBDIR for required installed libraries | -LLIBDIR search LIBDIR for required installed libraries | |||
-lNAME OUTPUT-FILE requires the installed library libNAME | -lNAME OUTPUT-FILE requires the installed library libNAME | |||
-module build a library that can dlopened | -module build a library that can dlopened | |||
skipping to change at line 1559 | skipping to change at line 2371 | |||
-rpath LIBDIR the created library will eventually be installed in LIB DIR | -rpath LIBDIR the created library will eventually be installed in LIB DIR | |||
-R[ ]LIBDIR add LIBDIR to the runtime path of programs and librarie s | -R[ ]LIBDIR add LIBDIR to the runtime path of programs and librarie s | |||
-shared only do dynamic linking of libtool libraries | -shared only do dynamic linking of libtool libraries | |||
-shrext SUFFIX override the standard shared library file extension | -shrext SUFFIX override the standard shared library file extension | |||
-static do not do any dynamic linking of uninstalled libtool li braries | -static do not do any dynamic linking of uninstalled libtool li braries | |||
-static-libtool-libs | -static-libtool-libs | |||
do not do any dynamic linking of libtool libraries | do not do any dynamic linking of libtool libraries | |||
-version-info CURRENT[:REVISION[:AGE]] | -version-info CURRENT[:REVISION[:AGE]] | |||
specify library version info [each variable defaults to 0] | specify library version info [each variable defaults to 0] | |||
-weak LIBNAME declare that the target provides the LIBNAME interface | -weak LIBNAME declare that the target provides the LIBNAME interface | |||
-Wc,FLAG | ||||
-Xcompiler FLAG pass linker-specific FLAG directly to the compiler | ||||
-Wl,FLAG | ||||
-Xlinker FLAG pass linker-specific FLAG directly to the linker | ||||
-XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) | ||||
All other options (arguments beginning with \`-') are ignored. | All other options (arguments beginning with \`-') are ignored. | |||
Every other argument is treated as a filename. Files ending in \`.la' are | Every other argument is treated as a filename. Files ending in \`.la' are | |||
treated as uninstalled libtool libraries, other files are standard or libra ry | treated as uninstalled libtool libraries, other files are standard or libra ry | |||
object files. | object files. | |||
If the OUTPUT-FILE ends in \`.la', then a libtool library is created, | If the OUTPUT-FILE ends in \`.la', then a libtool library is created, | |||
only library objects (\`.lo' files) may be specified, and \`-rpath' is | only library objects (\`.lo' files) may be specified, and \`-rpath' is | |||
required, except when creating a convenience library. | required, except when creating a convenience library. | |||
skipping to change at line 1592 | skipping to change at line 2409 | |||
RM is the name of the program to use to delete files associated with each F ILE | RM is the name of the program to use to delete files associated with each F ILE | |||
(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passe d | (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passe d | |||
to RM. | to RM. | |||
If FILE is a libtool library, all the files associated with it are deleted. | If FILE is a libtool library, all the files associated with it are deleted. | |||
Otherwise, only FILE itself is deleted using RM." | Otherwise, only FILE itself is deleted using RM." | |||
;; | ;; | |||
*) | *) | |||
func_fatal_help "invalid operation mode \`$mode'" | func_fatal_help "invalid operation mode \`$opt_mode'" | |||
;; | ;; | |||
esac | esac | |||
$ECHO | echo | |||
$ECHO "Try \`$progname --help' for more information about other modes." | $ECHO "Try \`$progname --help' for more information about other modes." | |||
exit $? | ||||
} | } | |||
# Now that we've collected a possible --mode arg, show help if necessary | # Now that we've collected a possible --mode arg, show help if necessary | |||
$opt_help && func_mode_help | if $opt_help; then | |||
if test "$opt_help" = :; then | ||||
func_mode_help | ||||
else | ||||
{ | ||||
func_help noexit | ||||
for opt_mode in compile link execute install finish uninstall clean; | ||||
do | ||||
func_mode_help | ||||
done | ||||
} | sed -n '1p; 2,$s/^Usage:/ or: /p' | ||||
{ | ||||
func_help noexit | ||||
for opt_mode in compile link execute install finish uninstall clean; | ||||
do | ||||
echo | ||||
func_mode_help | ||||
done | ||||
} | | ||||
sed '1d | ||||
/^When reporting/,/^Report/{ | ||||
H | ||||
d | ||||
} | ||||
$x | ||||
/information about other modes/d | ||||
/more detailed .*MODE/d | ||||
s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' | ||||
fi | ||||
exit $? | ||||
fi | ||||
# func_mode_execute arg... | # func_mode_execute arg... | |||
func_mode_execute () | func_mode_execute () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
# The first argument is the command name. | # The first argument is the command name. | |||
cmd="$nonopt" | cmd="$nonopt" | |||
test -z "$cmd" && \ | test -z "$cmd" && \ | |||
func_fatal_help "you must specify a COMMAND" | func_fatal_help "you must specify a COMMAND" | |||
# Handle -dlopen flags immediately. | # Handle -dlopen flags immediately. | |||
for file in $execute_dlfiles; do | for file in $opt_dlopen; do | |||
test -f "$file" \ | test -f "$file" \ | |||
|| func_fatal_help "\`$file' is not a file" | || func_fatal_help "\`$file' is not a file" | |||
dir= | dir= | |||
case $file in | case $file in | |||
*.la) | *.la) | |||
func_resolve_sysroot "$file" | ||||
file=$func_resolve_sysroot_result | ||||
# Check to see that this really is a libtool archive. | # Check to see that this really is a libtool archive. | |||
func_lalib_unsafe_p "$file" \ | func_lalib_unsafe_p "$file" \ | |||
|| func_fatal_help "\`$lib' is not a valid libtool archive" | || func_fatal_help "\`$lib' is not a valid libtool archive" | |||
# Read the libtool library. | # Read the libtool library. | |||
dlname= | dlname= | |||
library_names= | library_names= | |||
func_source "$file" | func_source "$file" | |||
# Skip this library if it cannot be dlopened. | # Skip this library if it cannot be dlopened. | |||
skipping to change at line 1643 | skipping to change at line 2489 | |||
# Warn if it was a shared library. | # Warn if it was a shared library. | |||
test -n "$library_names" && \ | test -n "$library_names" && \ | |||
func_warning "\`$file' was not linked with \`-export-dynamic'" | func_warning "\`$file' was not linked with \`-export-dynamic'" | |||
continue | continue | |||
fi | fi | |||
func_dirname "$file" "" "." | func_dirname "$file" "" "." | |||
dir="$func_dirname_result" | dir="$func_dirname_result" | |||
if test -f "$dir/$objdir/$dlname"; then | if test -f "$dir/$objdir/$dlname"; then | |||
dir="$dir/$objdir" | func_append dir "/$objdir" | |||
else | else | |||
if test ! -f "$dir/$dlname"; then | if test ! -f "$dir/$dlname"; then | |||
func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$o bjdir'" | func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$o bjdir'" | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*.lo) | *.lo) | |||
# Just add the directory containing the .lo file. | # Just add the directory containing the .lo file. | |||
func_dirname "$file" "" "." | func_dirname "$file" "" "." | |||
skipping to change at line 1684 | skipping to change at line 2530 | |||
# This variable tells wrapper scripts just to set shlibpath_var | # This variable tells wrapper scripts just to set shlibpath_var | |||
# rather than running their programs. | # rather than running their programs. | |||
libtool_execute_magic="$magic" | libtool_execute_magic="$magic" | |||
# Check if any of the arguments is a wrapper script. | # Check if any of the arguments is a wrapper script. | |||
args= | args= | |||
for file | for file | |||
do | do | |||
case $file in | case $file in | |||
-*) ;; | -* | *.la | *.lo ) ;; | |||
*) | *) | |||
# Do a test to see if this is really a libtool program. | # Do a test to see if this is really a libtool program. | |||
if func_ltwrapper_script_p "$file"; then | if func_ltwrapper_script_p "$file"; then | |||
func_source "$file" | func_source "$file" | |||
# Transform arg to wrapped name. | # Transform arg to wrapped name. | |||
file="$progdir/$program" | file="$progdir/$program" | |||
elif func_ltwrapper_executable_p "$file"; then | elif func_ltwrapper_executable_p "$file"; then | |||
func_ltwrapper_scriptname "$file" | func_ltwrapper_scriptname "$file" | |||
func_source "$func_ltwrapper_scriptname_result" | func_source "$func_ltwrapper_scriptname_result" | |||
# Transform arg to wrapped name. | # Transform arg to wrapped name. | |||
file="$progdir/$program" | file="$progdir/$program" | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
# Quote arguments (to preserve shell metacharacters). | # Quote arguments (to preserve shell metacharacters). | |||
func_quote_for_eval "$file" | func_append_quoted args "$file" | |||
args="$args $func_quote_for_eval_result" | ||||
done | done | |||
if test "X$opt_dry_run" = Xfalse; then | if test "X$opt_dry_run" = Xfalse; then | |||
if test -n "$shlibpath_var"; then | if test -n "$shlibpath_var"; then | |||
# Export the shlibpath_var. | # Export the shlibpath_var. | |||
eval "export $shlibpath_var" | eval "export $shlibpath_var" | |||
fi | fi | |||
# Restore saved environment variables | # Restore saved environment variables | |||
for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES | for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES | |||
skipping to change at line 1726 | skipping to change at line 2571 | |||
$lt_unset $lt_var | $lt_unset $lt_var | |||
fi" | fi" | |||
done | done | |||
# Now prepare to actually exec the command. | # Now prepare to actually exec the command. | |||
exec_cmd="\$cmd$args" | exec_cmd="\$cmd$args" | |||
else | else | |||
# Display what would be done. | # Display what would be done. | |||
if test -n "$shlibpath_var"; then | if test -n "$shlibpath_var"; then | |||
eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" | eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" | |||
$ECHO "export $shlibpath_var" | echo "export $shlibpath_var" | |||
fi | fi | |||
$ECHO "$cmd$args" | $ECHO "$cmd$args" | |||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
fi | fi | |||
} | } | |||
test "$mode" = execute && func_mode_execute ${1+"$@"} | test "$opt_mode" = execute && func_mode_execute ${1+"$@"} | |||
# func_mode_finish arg... | ||||
func_mode_finish () | ||||
{ | ||||
$opt_debug | ||||
libs= | ||||
libdirs= | ||||
admincmds= | ||||
for opt in "$nonopt" ${1+"$@"} | ||||
do | ||||
if test -d "$opt"; then | ||||
func_append libdirs " $opt" | ||||
elif test -f "$opt"; then | ||||
if func_lalib_unsafe_p "$opt"; then | ||||
func_append libs " $opt" | ||||
else | ||||
func_warning "\`$opt' is not a valid libtool archive" | ||||
fi | ||||
else | ||||
func_fatal_error "invalid argument \`$opt'" | ||||
fi | ||||
done | ||||
# func_mode_finish arg... | if test -n "$libs"; then | |||
func_mode_finish () | if test -n "$lt_sysroot"; then | |||
{ | sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex" | |||
$opt_debug | ` | |||
libdirs="$nonopt" | sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" | |||
admincmds= | else | |||
sysroot_cmd= | ||||
fi | ||||
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then | # Remove sysroot references | |||
for dir | if $opt_dry_run; then | |||
do | for lib in $libs; do | |||
libdirs="$libdirs $dir" | echo "removing references to $lt_sysroot and \`=' prefixes from $ | |||
done | lib" | |||
done | ||||
else | ||||
tmpdir=`func_mktempdir` | ||||
for lib in $libs; do | ||||
sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $l | ||||
ib \ | ||||
> $tmpdir/tmp-la | ||||
mv -f $tmpdir/tmp-la $lib | ||||
done | ||||
${RM}r "$tmpdir" | ||||
fi | ||||
fi | ||||
if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then | ||||
for libdir in $libdirs; do | for libdir in $libdirs; do | |||
if test -n "$finish_cmds"; then | if test -n "$finish_cmds"; then | |||
# Do each command in the finish commands. | # Do each command in the finish commands. | |||
func_execute_cmds "$finish_cmds" 'admincmds="$admincmds | func_execute_cmds "$finish_cmds" 'admincmds="$admincmds | |||
'"$cmd"'"' | '"$cmd"'"' | |||
fi | fi | |||
if test -n "$finish_eval"; then | if test -n "$finish_eval"; then | |||
# Do the single finish_eval. | # Do the single finish_eval. | |||
eval cmds=\"$finish_eval\" | eval cmds=\"$finish_eval\" | |||
$opt_dry_run || eval "$cmds" || admincmds="$admincmds | $opt_dry_run || eval "$cmds" || func_append admincmds " | |||
$cmds" | $cmds" | |||
fi | fi | |||
done | done | |||
fi | fi | |||
# Exit here if they wanted silent mode. | # Exit here if they wanted silent mode. | |||
$opt_silent && exit $EXIT_SUCCESS | $opt_silent && exit $EXIT_SUCCESS | |||
$ECHO "X--------------------------------------------------------------- | if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then | |||
-------" | $Xsed | echo "--------------------------------------------------------------- | |||
$ECHO "Libraries have been installed in:" | -------" | |||
for libdir in $libdirs; do | echo "Libraries have been installed in:" | |||
$ECHO " $libdir" | for libdir in $libdirs; do | |||
done | $ECHO " $libdir" | |||
$ECHO | done | |||
$ECHO "If you ever happen to want to link against installed libraries" | echo | |||
$ECHO "in a given directory, LIBDIR, you must either use libtool, and" | echo "If you ever happen to want to link against installed libraries" | |||
$ECHO "specify the full pathname of the library, or use the \`-LLIBDIR' | echo "in a given directory, LIBDIR, you must either use libtool, and" | |||
" | echo "specify the full pathname of the library, or use the \`-LLIBDIR | |||
$ECHO "flag during linking and do at least one of the following:" | '" | |||
if test -n "$shlibpath_var"; then | echo "flag during linking and do at least one of the following:" | |||
$ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" | if test -n "$shlibpath_var"; then | |||
$ECHO " during execution" | echo " - add LIBDIR to the \`$shlibpath_var' environment variable" | |||
fi | echo " during execution" | |||
if test -n "$runpath_var"; then | fi | |||
$ECHO " - add LIBDIR to the \`$runpath_var' environment variable" | if test -n "$runpath_var"; then | |||
$ECHO " during linking" | echo " - add LIBDIR to the \`$runpath_var' environment variable" | |||
fi | echo " during linking" | |||
if test -n "$hardcode_libdir_flag_spec"; then | fi | |||
libdir=LIBDIR | if test -n "$hardcode_libdir_flag_spec"; then | |||
eval flag=\"$hardcode_libdir_flag_spec\" | libdir=LIBDIR | |||
eval flag=\"$hardcode_libdir_flag_spec\" | ||||
$ECHO " - use the \`$flag' linker flag" | $ECHO " - use the \`$flag' linker flag" | |||
fi | fi | |||
if test -n "$admincmds"; then | if test -n "$admincmds"; then | |||
$ECHO " - have your system administrator run these commands:$adminc | $ECHO " - have your system administrator run these commands:$admin | |||
mds" | cmds" | |||
fi | fi | |||
if test -f /etc/ld.so.conf; then | if test -f /etc/ld.so.conf; then | |||
$ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so | echo " - have your system administrator add LIBDIR to \`/etc/ld.so | |||
.conf'" | .conf'" | |||
fi | fi | |||
$ECHO | echo | |||
$ECHO "See any operating system documentation about shared libraries fo | echo "See any operating system documentation about shared libraries f | |||
r" | or" | |||
case $host in | case $host in | |||
solaris2.[6789]|solaris2.1[0-9]) | solaris2.[6789]|solaris2.1[0-9]) | |||
$ECHO "more information, such as the ld(1), crle(1) and ld.so(8) ma | echo "more information, such as the ld(1), crle(1) and ld.so(8) ma | |||
nual" | nual" | |||
$ECHO "pages." | echo "pages." | |||
;; | ;; | |||
*) | *) | |||
$ECHO "more information, such as the ld(1) and ld.so(8) manual page | echo "more information, such as the ld(1) and ld.so(8) manual page | |||
s." | s." | |||
;; | ;; | |||
esac | esac | |||
$ECHO "X--------------------------------------------------------------- | echo "--------------------------------------------------------------- | |||
-------" | $Xsed | -------" | |||
fi | ||||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
} | } | |||
test "$mode" = finish && func_mode_finish ${1+"$@"} | test "$opt_mode" = finish && func_mode_finish ${1+"$@"} | |||
# func_mode_install arg... | # func_mode_install arg... | |||
func_mode_install () | func_mode_install () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
# There may be an optional sh(1) argument at the beginning of | # There may be an optional sh(1) argument at the beginning of | |||
# install_prog (especially on Windows NT). | # install_prog (especially on Windows NT). | |||
if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || | if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || | |||
# Allow the use of GNU shtool's install command. | # Allow the use of GNU shtool's install command. | |||
$ECHO "X$nonopt" | $GREP shtool >/dev/null; then | case $nonopt in *shtool*) :;; *) false;; esac; then | |||
# Aesthetically quote it. | # Aesthetically quote it. | |||
func_quote_for_eval "$nonopt" | func_quote_for_eval "$nonopt" | |||
install_prog="$func_quote_for_eval_result " | install_prog="$func_quote_for_eval_result " | |||
arg=$1 | arg=$1 | |||
shift | shift | |||
else | else | |||
install_prog= | install_prog= | |||
arg=$nonopt | arg=$nonopt | |||
fi | fi | |||
# The real first argument should be the name of the installation progra m. | # The real first argument should be the name of the installation progra m. | |||
# Aesthetically quote it. | # Aesthetically quote it. | |||
func_quote_for_eval "$arg" | func_quote_for_eval "$arg" | |||
install_prog="$install_prog$func_quote_for_eval_result" | func_append install_prog "$func_quote_for_eval_result" | |||
install_shared_prog=$install_prog | ||||
case " $install_prog " in | ||||
*[\\\ /]cp\ *) install_cp=: ;; | ||||
*) install_cp=false ;; | ||||
esac | ||||
# We need to accept at least all the BSD install flags. | # We need to accept at least all the BSD install flags. | |||
dest= | dest= | |||
files= | files= | |||
opts= | opts= | |||
prev= | prev= | |||
install_type= | install_type= | |||
isdir=no | isdir=no | |||
stripme= | stripme= | |||
no_mode=: | ||||
for arg | for arg | |||
do | do | |||
arg2= | ||||
if test -n "$dest"; then | if test -n "$dest"; then | |||
files="$files $dest" | func_append files " $dest" | |||
dest=$arg | dest=$arg | |||
continue | continue | |||
fi | fi | |||
case $arg in | case $arg in | |||
-d) isdir=yes ;; | -d) isdir=yes ;; | |||
-f) | -f) | |||
case " $install_prog " in | if $install_cp; then :; else | |||
*[\\\ /]cp\ *) ;; | prev=$arg | |||
*) prev=$arg ;; | fi | |||
esac | ||||
;; | ;; | |||
-g | -m | -o) | -g | -m | -o) | |||
prev=$arg | prev=$arg | |||
;; | ;; | |||
-s) | -s) | |||
stripme=" -s" | stripme=" -s" | |||
continue | continue | |||
;; | ;; | |||
-*) | -*) | |||
;; | ;; | |||
*) | *) | |||
# If the previous option needed an argument, then skip it. | # If the previous option needed an argument, then skip it. | |||
if test -n "$prev"; then | if test -n "$prev"; then | |||
if test "x$prev" = x-m && test -n "$install_override_mode"; then | ||||
arg2=$install_override_mode | ||||
no_mode=false | ||||
fi | ||||
prev= | prev= | |||
else | else | |||
dest=$arg | dest=$arg | |||
continue | continue | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
# Aesthetically quote the argument. | # Aesthetically quote the argument. | |||
func_quote_for_eval "$arg" | func_quote_for_eval "$arg" | |||
install_prog="$install_prog $func_quote_for_eval_result" | func_append install_prog " $func_quote_for_eval_result" | |||
if test -n "$arg2"; then | ||||
func_quote_for_eval "$arg2" | ||||
fi | ||||
func_append install_shared_prog " $func_quote_for_eval_result" | ||||
done | done | |||
test -z "$install_prog" && \ | test -z "$install_prog" && \ | |||
func_fatal_help "you must specify an install program" | func_fatal_help "you must specify an install program" | |||
test -n "$prev" && \ | test -n "$prev" && \ | |||
func_fatal_help "the \`$prev' option requires an argument" | func_fatal_help "the \`$prev' option requires an argument" | |||
if test -n "$install_override_mode" && $no_mode; then | ||||
if $install_cp; then :; else | ||||
func_quote_for_eval "$install_override_mode" | ||||
func_append install_shared_prog " -m $func_quote_for_eval_result" | ||||
fi | ||||
fi | ||||
if test -z "$files"; then | if test -z "$files"; then | |||
if test -z "$dest"; then | if test -z "$dest"; then | |||
func_fatal_help "no file or destination specified" | func_fatal_help "no file or destination specified" | |||
else | else | |||
func_fatal_help "you must specify a destination" | func_fatal_help "you must specify a destination" | |||
fi | fi | |||
fi | fi | |||
# Strip any trailing slash from the destination. | # Strip any trailing slash from the destination. | |||
func_stripname '' '/' "$dest" | func_stripname '' '/' "$dest" | |||
skipping to change at line 1947 | skipping to change at line 2852 | |||
staticlibs= | staticlibs= | |||
future_libdirs= | future_libdirs= | |||
current_libdirs= | current_libdirs= | |||
for file in $files; do | for file in $files; do | |||
# Do each installation. | # Do each installation. | |||
case $file in | case $file in | |||
*.$libext) | *.$libext) | |||
# Do the static libraries later. | # Do the static libraries later. | |||
staticlibs="$staticlibs $file" | func_append staticlibs " $file" | |||
;; | ;; | |||
*.la) | *.la) | |||
func_resolve_sysroot "$file" | ||||
file=$func_resolve_sysroot_result | ||||
# Check to see that this really is a libtool archive. | # Check to see that this really is a libtool archive. | |||
func_lalib_unsafe_p "$file" \ | func_lalib_unsafe_p "$file" \ | |||
|| func_fatal_help "\`$file' is not a valid libtool archive" | || func_fatal_help "\`$file' is not a valid libtool archive" | |||
library_names= | library_names= | |||
old_library= | old_library= | |||
relink_command= | relink_command= | |||
func_source "$file" | func_source "$file" | |||
# Add the libdir to current_libdirs if it is the destination. | # Add the libdir to current_libdirs if it is the destination. | |||
if test "X$destdir" = "X$libdir"; then | if test "X$destdir" = "X$libdir"; then | |||
case "$current_libdirs " in | case "$current_libdirs " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) current_libdirs="$current_libdirs $libdir" ;; | *) func_append current_libdirs " $libdir" ;; | |||
esac | esac | |||
else | else | |||
# Note the libdir as a future libdir. | # Note the libdir as a future libdir. | |||
case "$future_libdirs " in | case "$future_libdirs " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) future_libdirs="$future_libdirs $libdir" ;; | *) func_append future_libdirs " $libdir" ;; | |||
esac | esac | |||
fi | fi | |||
func_dirname "$file" "/" "" | func_dirname "$file" "/" "" | |||
dir="$func_dirname_result" | dir="$func_dirname_result" | |||
dir="$dir$objdir" | func_append dir "$objdir" | |||
if test -n "$relink_command"; then | if test -n "$relink_command"; then | |||
# Determine the prefix the user has applied to our future dir. | # Determine the prefix the user has applied to our future dir. | |||
inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` | inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` | |||
# Don't allow the user to place us outside of our expected | # Don't allow the user to place us outside of our expected | |||
# location b/c this prevents finding dependent libraries that | # location b/c this prevents finding dependent libraries that | |||
# are installed to the same prefix. | # are installed to the same prefix. | |||
# At present, this check doesn't affect windows .dll's that | # At present, this check doesn't affect windows .dll's that | |||
# are installed into $libdir/../bin (currently, that works fine) | # are installed into $libdir/../bin (currently, that works fine) | |||
# but it's something to keep an eye on. | # but it's something to keep an eye on. | |||
test "$inst_prefix_dir" = "$destdir" && \ | test "$inst_prefix_dir" = "$destdir" && \ | |||
func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" | func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" | |||
if test -n "$inst_prefix_dir"; then | if test -n "$inst_prefix_dir"; then | |||
# Stick the inst_prefix_dir data into the link command. | # Stick the inst_prefix_dir data into the link command. | |||
relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_pre fix_dir@%-inst-prefix-dir $inst_prefix_dir%"` | relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_d ir@%-inst-prefix-dir $inst_prefix_dir%"` | |||
else | else | |||
relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_pre fix_dir@%%"` | relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_d ir@%%"` | |||
fi | fi | |||
func_warning "relinking \`$file'" | func_warning "relinking \`$file'" | |||
func_show_eval "$relink_command" \ | func_show_eval "$relink_command" \ | |||
'func_fatal_error "error: relink \`$file'\'' with the above comm and before installing it"' | 'func_fatal_error "error: relink \`$file'\'' with the above comm and before installing it"' | |||
fi | fi | |||
# See the names of the shared library. | # See the names of the shared library. | |||
set dummy $library_names; shift | set dummy $library_names; shift | |||
if test -n "$1"; then | if test -n "$1"; then | |||
realname="$1" | realname="$1" | |||
shift | shift | |||
srcname="$realname" | srcname="$realname" | |||
test -n "$relink_command" && srcname="$realname"T | test -n "$relink_command" && srcname="$realname"T | |||
# Install the shared library and build the symlinks. | # Install the shared library and build the symlinks. | |||
func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ | func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realn ame" \ | |||
'exit $?' | 'exit $?' | |||
tstripme="$stripme" | tstripme="$stripme" | |||
case $host_os in | case $host_os in | |||
cygwin* | mingw* | pw32* | cegcc*) | cygwin* | mingw* | pw32* | cegcc*) | |||
case $realname in | case $realname in | |||
*.dll.a) | *.dll.a) | |||
tstripme="" | tstripme="" | |||
;; | ;; | |||
esac | esac | |||
;; | ;; | |||
skipping to change at line 2053 | skipping to change at line 2961 | |||
func_execute_cmds "$postinstall_cmds" 'exit $?' | func_execute_cmds "$postinstall_cmds" 'exit $?' | |||
fi | fi | |||
# Install the pseudo-library for information purposes. | # Install the pseudo-library for information purposes. | |||
func_basename "$file" | func_basename "$file" | |||
name="$func_basename_result" | name="$func_basename_result" | |||
instname="$dir/$name"i | instname="$dir/$name"i | |||
func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' | func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' | |||
# Maybe install the static library, too. | # Maybe install the static library, too. | |||
test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" | test -n "$old_library" && func_append staticlibs " $dir/$old_library " | |||
;; | ;; | |||
*.lo) | *.lo) | |||
# Install (i.e. copy) a libtool object. | # Install (i.e. copy) a libtool object. | |||
# Figure out destination file name, if it wasn't already specified. | # Figure out destination file name, if it wasn't already specified. | |||
if test -n "$destname"; then | if test -n "$destname"; then | |||
destfile="$destdir/$destname" | destfile="$destdir/$destname" | |||
else | else | |||
func_basename "$file" | func_basename "$file" | |||
skipping to change at line 2153 | skipping to change at line 3061 | |||
test -z "$generated_by_libtool_version" && \ | test -z "$generated_by_libtool_version" && \ | |||
func_fatal_error "invalid libtool wrapper script \`$wrapper'" | func_fatal_error "invalid libtool wrapper script \`$wrapper'" | |||
finalize=yes | finalize=yes | |||
for lib in $notinst_deplibs; do | for lib in $notinst_deplibs; do | |||
# Check to see that each library is installed. | # Check to see that each library is installed. | |||
libdir= | libdir= | |||
if test -f "$lib"; then | if test -f "$lib"; then | |||
func_source "$lib" | func_source "$lib" | |||
fi | fi | |||
libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### tes tsuite: skip nested quoting test | libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuit e: skip nested quoting test | |||
if test -n "$libdir" && test ! -f "$libfile"; then | if test -n "$libdir" && test ! -f "$libfile"; then | |||
func_warning "\`$lib' has not been installed in \`$libdir'" | func_warning "\`$lib' has not been installed in \`$libdir'" | |||
finalize=no | finalize=no | |||
fi | fi | |||
done | done | |||
relink_command= | relink_command= | |||
func_source "$wrapper" | func_source "$wrapper" | |||
outputname= | outputname= | |||
if test "$fast_install" = no && test -n "$relink_command"; then | if test "$fast_install" = no && test -n "$relink_command"; then | |||
$opt_dry_run || { | $opt_dry_run || { | |||
if test "$finalize" = yes; then | if test "$finalize" = yes; then | |||
tmpdir=`func_mktempdir` | tmpdir=`func_mktempdir` | |||
func_basename "$file$stripped_ext" | func_basename "$file$stripped_ext" | |||
file="$func_basename_result" | file="$func_basename_result" | |||
outputname="$tmpdir/$file" | outputname="$tmpdir/$file" | |||
# Replace the output file specification. | # Replace the output file specification. | |||
relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTP UT@%'"$outputname"'%g'` | relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%' "$outputname"'%g'` | |||
$opt_silent || { | $opt_silent || { | |||
func_quote_for_expand "$relink_command" | func_quote_for_expand "$relink_command" | |||
eval "func_echo $func_quote_for_expand_result" | eval "func_echo $func_quote_for_expand_result" | |||
} | } | |||
if eval "$relink_command"; then : | if eval "$relink_command"; then : | |||
else | else | |||
func_error "error: relink \`$file' with the above command before installing it" | func_error "error: relink \`$file' with the above command before installing it" | |||
$opt_dry_run || ${RM}r "$tmpdir" | $opt_dry_run || ${RM}r "$tmpdir" | |||
continue | continue | |||
fi | fi | |||
file="$outputname" | file="$outputname" | |||
else | else | |||
func_warning "cannot relink \`$file'" | func_warning "cannot relink \`$file'" | |||
fi | fi | |||
} | } | |||
else | else | |||
# Install the binary that we compiled earlier. | # Install the binary that we compiled earlier. | |||
file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objd ir/\1%"` | file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1 %"` | |||
fi | fi | |||
fi | fi | |||
# remove .exe since cygwin /usr/bin/install will append another | # remove .exe since cygwin /usr/bin/install will append another | |||
# one anyway | # one anyway | |||
case $install_prog,$host in | case $install_prog,$host in | |||
*/usr/bin/install*,*cygwin*) | */usr/bin/install*,*cygwin*) | |||
case $file:$destfile in | case $file:$destfile in | |||
*.exe:*.exe) | *.exe:*.exe) | |||
# this is ok | # this is ok | |||
skipping to change at line 2250 | skipping to change at line 3158 | |||
if test -n "$current_libdirs"; then | if test -n "$current_libdirs"; then | |||
# Maybe just do a dry run. | # Maybe just do a dry run. | |||
$opt_dry_run && current_libdirs=" -n$current_libdirs" | $opt_dry_run && current_libdirs=" -n$current_libdirs" | |||
exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' | exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' | |||
else | else | |||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
fi | fi | |||
} | } | |||
test "$mode" = install && func_mode_install ${1+"$@"} | test "$opt_mode" = install && func_mode_install ${1+"$@"} | |||
# func_generate_dlsyms outputname originator pic_p | # func_generate_dlsyms outputname originator pic_p | |||
# Extract symbols from dlprefiles and create ${outputname}S.o with | # Extract symbols from dlprefiles and create ${outputname}S.o with | |||
# a dlpreopen symbol table. | # a dlpreopen symbol table. | |||
func_generate_dlsyms () | func_generate_dlsyms () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
my_outputname="$1" | my_outputname="$1" | |||
my_originator="$2" | my_originator="$2" | |||
my_pic_p="${3-no}" | my_pic_p="${3-no}" | |||
skipping to change at line 2292 | skipping to change at line 3200 | |||
func_verbose "creating $output_objdir/$my_dlsyms" | func_verbose "creating $output_objdir/$my_dlsyms" | |||
$opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ | $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ | |||
/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulati on. */ | /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulati on. */ | |||
/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ | /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
extern \"C\" { | extern \"C\" { | |||
#endif | #endif | |||
#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__ | ||||
GNUC__ > 4)) | ||||
#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" | ||||
#endif | ||||
/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and test | ||||
s. */ | ||||
#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) | ||||
/* DATA imports from DLLs on WIN32 con't be const, because runtime | ||||
relocations are performed -- see ld's documentation on pseudo-relocs. * | ||||
/ | ||||
# define LT_DLSYM_CONST | ||||
#elif defined(__osf__) | ||||
/* This system does not cope well with relocations in const data. */ | ||||
# define LT_DLSYM_CONST | ||||
#else | ||||
# define LT_DLSYM_CONST const | ||||
#endif | ||||
/* External symbol declarations for the compiler. */\ | /* External symbol declarations for the compiler. */\ | |||
" | " | |||
if test "$dlself" = yes; then | if test "$dlself" = yes; then | |||
func_verbose "generating symbol list for \`$output'" | func_verbose "generating symbol list for \`$output'" | |||
$opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" | $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" | |||
# Add our own program objects to the symbol list. | # Add our own program objects to the symbol list. | |||
progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` | progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL 2SP` | |||
for progfile in $progfiles; do | for progfile in $progfiles; do | |||
func_verbose "extracting global C symbols from \`$progfile'" | func_to_tool_file "$progfile" func_convert_file_msys_to_w32 | |||
$opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$n | func_verbose "extracting global C symbols from \`$func_to_tool_f | |||
list'" | ile_result'" | |||
$opt_dry_run || eval "$NM $func_to_tool_file_result | $global_sy | ||||
mbol_pipe >> '$nlist'" | ||||
done | done | |||
if test -n "$exclude_expsyms"; then | if test -n "$exclude_expsyms"; then | |||
$opt_dry_run || { | $opt_dry_run || { | |||
eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' | eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' | |||
eval '$MV "$nlist"T "$nlist"' | eval '$MV "$nlist"T "$nlist"' | |||
} | } | |||
fi | fi | |||
if test -n "$export_symbols_regex"; then | if test -n "$export_symbols_regex"; then | |||
skipping to change at line 2340 | skipping to change at line 3265 | |||
eval 'cat "$export_symbols" >> "$output_objdir/$outputname. def"' | eval 'cat "$export_symbols" >> "$output_objdir/$outputname. def"' | |||
;; | ;; | |||
esac | esac | |||
} | } | |||
else | else | |||
$opt_dry_run || { | $opt_dry_run || { | |||
eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/ $/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' | eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/ $/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' | |||
eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > " $nlist"T' | eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > " $nlist"T' | |||
eval '$MV "$nlist"T "$nlist"' | eval '$MV "$nlist"T "$nlist"' | |||
case $host in | case $host in | |||
*cygwin | *mingw* | *cegcc* ) | *cygwin* | *mingw* | *cegcc* ) | |||
eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' | eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' | |||
eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' | eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' | |||
;; | ;; | |||
esac | esac | |||
} | } | |||
fi | fi | |||
fi | fi | |||
for dlprefile in $dlprefiles; do | for dlprefile in $dlprefiles; do | |||
func_verbose "extracting global C symbols from \`$dlprefile'" | func_verbose "extracting global C symbols from \`$dlprefile'" | |||
func_basename "$dlprefile" | func_basename "$dlprefile" | |||
name="$func_basename_result" | name="$func_basename_result" | |||
$opt_dry_run || { | case $host in | |||
eval '$ECHO ": $name " >> "$nlist"' | *cygwin* | *mingw* | *cegcc* ) | |||
eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlis | # if an import library, we need to obtain dlname | |||
t'" | if func_win32_import_lib_p "$dlprefile"; then | |||
} | func_tr_sh "$dlprefile" | |||
eval "curr_lafile=\$libfile_$func_tr_sh_result" | ||||
dlprefile_dlbasename="" | ||||
if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; th | ||||
en | ||||
# Use subshell, to avoid clobbering current variable value | ||||
s | ||||
dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` | ||||
if test -n "$dlprefile_dlname" ; then | ||||
func_basename "$dlprefile_dlname" | ||||
dlprefile_dlbasename="$func_basename_result" | ||||
else | ||||
# no lafile. user explicitly requested -dlpreopen <impor | ||||
t library>. | ||||
$sharedlib_from_linklib_cmd "$dlprefile" | ||||
dlprefile_dlbasename=$sharedlib_from_linklib_result | ||||
fi | ||||
fi | ||||
$opt_dry_run || { | ||||
if test -n "$dlprefile_dlbasename" ; then | ||||
eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' | ||||
else | ||||
func_warning "Could not compute DLL name from $name" | ||||
eval '$ECHO ": $name " >> "$nlist"' | ||||
fi | ||||
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w | ||||
32 | ||||
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $glo | ||||
bal_symbol_pipe | | ||||
$SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$n | ||||
list'" | ||||
} | ||||
else # not an import lib | ||||
$opt_dry_run || { | ||||
eval '$ECHO ": $name " >> "$nlist"' | ||||
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w | ||||
32 | ||||
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $glo | ||||
bal_symbol_pipe >> '$nlist'" | ||||
} | ||||
fi | ||||
;; | ||||
*) | ||||
$opt_dry_run || { | ||||
eval '$ECHO ": $name " >> "$nlist"' | ||||
func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 | ||||
eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $globa | ||||
l_symbol_pipe >> '$nlist'" | ||||
} | ||||
;; | ||||
esac | ||||
done | done | |||
$opt_dry_run || { | $opt_dry_run || { | |||
# Make sure we have at least an empty file. | # Make sure we have at least an empty file. | |||
test -f "$nlist" || : > "$nlist" | test -f "$nlist" || : > "$nlist" | |||
if test -n "$exclude_expsyms"; then | if test -n "$exclude_expsyms"; then | |||
$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T | $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T | |||
$MV "$nlist"T "$nlist" | $MV "$nlist"T "$nlist" | |||
fi | fi | |||
skipping to change at line 2384 | skipping to change at line 3351 | |||
fi | | fi | | |||
uniq > "$nlist"S; then | uniq > "$nlist"S; then | |||
: | : | |||
else | else | |||
$GREP -v "^: " < "$nlist" > "$nlist"S | $GREP -v "^: " < "$nlist" > "$nlist"S | |||
fi | fi | |||
if test -f "$nlist"S; then | if test -f "$nlist"S; then | |||
eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$ my_dlsyms"' | eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$ my_dlsyms"' | |||
else | else | |||
$ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" | echo '/* NONE */' >> "$output_objdir/$my_dlsyms" | |||
fi | fi | |||
$ECHO >> "$output_objdir/$my_dlsyms" "\ | echo >> "$output_objdir/$my_dlsyms" "\ | |||
/* The mapping between symbol names and symbols. */ | /* The mapping between symbol names and symbols. */ | |||
typedef struct { | typedef struct { | |||
const char *name; | const char *name; | |||
void *address; | void *address; | |||
} lt_dlsymlist; | } lt_dlsymlist; | |||
" | extern LT_DLSYM_CONST lt_dlsymlist | |||
case $host in | ||||
*cygwin* | *mingw* | *cegcc* ) | ||||
$ECHO >> "$output_objdir/$my_dlsyms" "\ | ||||
/* DATA imports from DLLs on WIN32 con't be const, because | ||||
runtime relocations are performed -- see ld's documentation | ||||
on pseudo-relocs. */" | ||||
lt_dlsym_const= ;; | ||||
*osf5*) | ||||
echo >> "$output_objdir/$my_dlsyms" "\ | ||||
/* This system does not cope well with relocations in const data */" | ||||
lt_dlsym_const= ;; | ||||
*) | ||||
lt_dlsym_const=const ;; | ||||
esac | ||||
$ECHO >> "$output_objdir/$my_dlsyms" "\ | ||||
extern $lt_dlsym_const lt_dlsymlist | ||||
lt_${my_prefix}_LTX_preloaded_symbols[]; | lt_${my_prefix}_LTX_preloaded_symbols[]; | |||
$lt_dlsym_const lt_dlsymlist | LT_DLSYM_CONST lt_dlsymlist | |||
lt_${my_prefix}_LTX_preloaded_symbols[] = | lt_${my_prefix}_LTX_preloaded_symbols[] = | |||
{\ | {\ | |||
{ \"$my_originator\", (void *) 0 }," | { \"$my_originator\", (void *) 0 }," | |||
case $need_lib_prefix in | case $need_lib_prefix in | |||
no) | no) | |||
eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_o bjdir/$my_dlsyms" | eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_o bjdir/$my_dlsyms" | |||
;; | ;; | |||
*) | *) | |||
eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" | eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" | |||
;; | ;; | |||
esac | esac | |||
$ECHO >> "$output_objdir/$my_dlsyms" "\ | echo >> "$output_objdir/$my_dlsyms" "\ | |||
{0, (void *) 0} | {0, (void *) 0} | |||
}; | }; | |||
/* This works around a problem in FreeBSD linker */ | /* This works around a problem in FreeBSD linker */ | |||
#ifdef FREEBSD_WORKAROUND | #ifdef FREEBSD_WORKAROUND | |||
static const void *lt_preloaded_setup() { | static const void *lt_preloaded_setup() { | |||
return lt_${my_prefix}_LTX_preloaded_symbols; | return lt_${my_prefix}_LTX_preloaded_symbols; | |||
} | } | |||
#endif | #endif | |||
skipping to change at line 2469 | skipping to change at line 3419 | |||
pic_flag_for_symtable=" $pic_flag" | pic_flag_for_symtable=" $pic_flag" | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
symtab_cflags= | symtab_cflags= | |||
for arg in $LTCFLAGS; do | for arg in $LTCFLAGS; do | |||
case $arg in | case $arg in | |||
-pie | -fpie | -fPIE) ;; | -pie | -fpie | -fPIE) ;; | |||
*) symtab_cflags="$symtab_cflags $arg" ;; | *) func_append symtab_cflags " $arg" ;; | |||
esac | esac | |||
done | done | |||
# Now compile the dynamic symbol file. | # Now compile the dynamic symbol file. | |||
func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_buil tin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' | func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_buil tin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' | |||
# Clean up the generated files. | # Clean up the generated files. | |||
func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' | func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' | |||
# Transform the symbol file into the correct name. | # Transform the symbol file into the correct name. | |||
symfileobj="$output_objdir/${my_outputname}S.$objext" | symfileobj="$output_objdir/${my_outputname}S.$objext" | |||
case $host in | case $host in | |||
*cygwin* | *mingw* | *cegcc* ) | *cygwin* | *mingw* | *cegcc* ) | |||
if test -f "$output_objdir/$my_outputname.def"; then | if test -f "$output_objdir/$my_outputname.def"; then | |||
compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFIL | compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$o | |||
E@%$output_objdir/$my_outputname.def $symfileobj%"` | utput_objdir/$my_outputname.def $symfileobj%"` | |||
finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMF | finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@% | |||
ILE@%$output_objdir/$my_outputname.def $symfileobj%"` | $output_objdir/$my_outputname.def $symfileobj%"` | |||
else | else | |||
compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFIL | compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$s | |||
E@%$symfileobj%"` | ymfileobj%"` | |||
finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMF | finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@% | |||
ILE@%$symfileobj%"` | $symfileobj%"` | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@ | compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$sym | |||
%$symfileobj%"` | fileobj%"` | |||
finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFIL | finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$s | |||
E@%$symfileobj%"` | ymfileobj%"` | |||
;; | ;; | |||
esac | esac | |||
;; | ;; | |||
*) | *) | |||
func_fatal_error "unknown suffix for \`$my_dlsyms'" | func_fatal_error "unknown suffix for \`$my_dlsyms'" | |||
;; | ;; | |||
esac | esac | |||
else | else | |||
# We keep going just in case the user didn't refer to | # We keep going just in case the user didn't refer to | |||
# lt_preloaded_symbols. The linker will fail if global_symbol_pipe | # lt_preloaded_symbols. The linker will fail if global_symbol_pipe | |||
# really was required. | # really was required. | |||
# Nullify the symbol file. | # Nullify the symbol file. | |||
compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%% | compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` | |||
"` | finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` | |||
finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@ | ||||
%%"` | ||||
fi | fi | |||
} | } | |||
# func_win32_libid arg | # func_win32_libid arg | |||
# return the library type of file 'arg' | # return the library type of file 'arg' | |||
# | # | |||
# Need a lot of goo to handle *both* DLLs and import libs | # Need a lot of goo to handle *both* DLLs and import libs | |||
# Has to be a shell function in order to 'eat' the argument | # Has to be a shell function in order to 'eat' the argument | |||
# that is supplied when $file_magic_command is called. | # that is supplied when $file_magic_command is called. | |||
# Despite the name, also deal with 64 bit binaries. | ||||
func_win32_libid () | func_win32_libid () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
win32_libid_type="unknown" | win32_libid_type="unknown" | |||
win32_fileres=`file -L $1 2>/dev/null` | win32_fileres=`file -L $1 2>/dev/null` | |||
case $win32_fileres in | case $win32_fileres in | |||
*ar\ archive\ import\ library*) # definitely import | *ar\ archive\ import\ library*) # definitely import | |||
win32_libid_type="x86 archive import" | win32_libid_type="x86 archive import" | |||
;; | ;; | |||
*ar\ archive*) # could be an import, or static | *ar\ archive*) # could be an import, or static | |||
# Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD . | ||||
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | | if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | | |||
$EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; the | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|p | |||
n | e-x86-64)' >/dev/null; then | |||
win32_nmres=`eval $NM -f posix -A $1 | | func_to_tool_file "$1" func_convert_file_msys_to_w32 | |||
win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | | ||||
$SED -n -e ' | $SED -n -e ' | |||
1,100{ | 1,100{ | |||
/ I /{ | / I /{ | |||
s,.*,import, | s,.*,import, | |||
p | p | |||
q | q | |||
} | } | |||
}'` | }'` | |||
case $win32_nmres in | case $win32_nmres in | |||
import*) win32_libid_type="x86 archive import";; | import*) win32_libid_type="x86 archive import";; | |||
skipping to change at line 2559 | skipping to change at line 3512 | |||
case $win32_fileres in | case $win32_fileres in | |||
*MS\ Windows\ PE\ Intel*) | *MS\ Windows\ PE\ Intel*) | |||
win32_libid_type="x86 DLL" | win32_libid_type="x86 DLL" | |||
;; | ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
$ECHO "$win32_libid_type" | $ECHO "$win32_libid_type" | |||
} | } | |||
# func_cygming_dll_for_implib ARG | ||||
# | ||||
# Platform-specific function to extract the | ||||
# name of the DLL associated with the specified | ||||
# import library ARG. | ||||
# Invoked by eval'ing the libtool variable | ||||
# $sharedlib_from_linklib_cmd | ||||
# Result is available in the variable | ||||
# $sharedlib_from_linklib_result | ||||
func_cygming_dll_for_implib () | ||||
{ | ||||
$opt_debug | ||||
sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1" | ||||
` | ||||
} | ||||
# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs | ||||
# | ||||
# The is the core of a fallback implementation of a | ||||
# platform-specific function to extract the name of the | ||||
# DLL associated with the specified import library LIBNAME. | ||||
# | ||||
# SECTION_NAME is either .idata$6 or .idata$7, depending | ||||
# on the platform and compiler that created the implib. | ||||
# | ||||
# Echos the name of the DLL associated with the | ||||
# specified import library. | ||||
func_cygming_dll_for_implib_fallback_core () | ||||
{ | ||||
$opt_debug | ||||
match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` | ||||
$OBJDUMP -s --section "$1" "$2" 2>/dev/null | | ||||
$SED '/^Contents of section '"$match_literal"':/{ | ||||
# Place marker at beginning of archive member dllname section | ||||
s/.*/====MARK====/ | ||||
p | ||||
d | ||||
} | ||||
# These lines can sometimes be longer than 43 characters, but | ||||
# are always uninteresting | ||||
/:[ ]*file format pe[i]\{,1\}-/d | ||||
/^In archive [^:]*:/d | ||||
# Ensure marker is printed | ||||
/^====MARK====/p | ||||
# Remove all lines with less than 43 characters | ||||
/^.\{43\}/!d | ||||
# From remaining lines, remove first 43 characters | ||||
s/^.\{43\}//' | | ||||
$SED -n ' | ||||
# Join marker and all lines until next marker into a single line | ||||
/^====MARK====/ b para | ||||
H | ||||
$ b para | ||||
b | ||||
:para | ||||
x | ||||
s/\n//g | ||||
# Remove the marker | ||||
s/^====MARK====// | ||||
# Remove trailing dots and whitespace | ||||
s/[\. \t]*$// | ||||
/./p' | | ||||
# we now have a list, one entry per line, of the stringified | ||||
# contents of the appropriate section of all members of the | ||||
# archive which possess that section. Heuristic: eliminate | ||||
# all those which have a first or second character that is | ||||
# a '.' (that is, objdump's representation of an unprintable | ||||
# character.) This should work for all archives with less than | ||||
# 0x302f exports -- but will fail for DLLs whose name actually | ||||
# begins with a literal '.' or a single character followed by | ||||
# a '.'. | ||||
# | ||||
# Of those that remain, print the first one. | ||||
$SED -e '/^\./d;/^.\./d;q' | ||||
} | ||||
# func_cygming_gnu_implib_p ARG | ||||
# This predicate returns with zero status (TRUE) if | ||||
# ARG is a GNU/binutils-style import library. Returns | ||||
# with nonzero status (FALSE) otherwise. | ||||
func_cygming_gnu_implib_p () | ||||
{ | ||||
$opt_debug | ||||
func_to_tool_file "$1" func_convert_file_msys_to_w32 | ||||
func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$glo | ||||
bal_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l | ||||
*_iname)$'` | ||||
test -n "$func_cygming_gnu_implib_tmp" | ||||
} | ||||
# func_cygming_ms_implib_p ARG | ||||
# This predicate returns with zero status (TRUE) if | ||||
# ARG is an MS-style import library. Returns | ||||
# with nonzero status (FALSE) otherwise. | ||||
func_cygming_ms_implib_p () | ||||
{ | ||||
$opt_debug | ||||
func_to_tool_file "$1" func_convert_file_msys_to_w32 | ||||
func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$glob | ||||
al_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` | ||||
test -n "$func_cygming_ms_implib_tmp" | ||||
} | ||||
# func_cygming_dll_for_implib_fallback ARG | ||||
# Platform-specific function to extract the | ||||
# name of the DLL associated with the specified | ||||
# import library ARG. | ||||
# | ||||
# This fallback implementation is for use when $DLLTOOL | ||||
# does not support the --identify-strict option. | ||||
# Invoked by eval'ing the libtool variable | ||||
# $sharedlib_from_linklib_cmd | ||||
# Result is available in the variable | ||||
# $sharedlib_from_linklib_result | ||||
func_cygming_dll_for_implib_fallback () | ||||
{ | ||||
$opt_debug | ||||
if func_cygming_gnu_implib_p "$1" ; then | ||||
# binutils import library | ||||
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_cor | ||||
e '.idata$7' "$1"` | ||||
elif func_cygming_ms_implib_p "$1" ; then | ||||
# ms-generated import library | ||||
sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_cor | ||||
e '.idata$6' "$1"` | ||||
else | ||||
# unknown | ||||
sharedlib_from_linklib_result="" | ||||
fi | ||||
} | ||||
# func_extract_an_archive dir oldlib | # func_extract_an_archive dir oldlib | |||
func_extract_an_archive () | func_extract_an_archive () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
f_ex_an_ar_dir="$1"; shift | f_ex_an_ar_dir="$1"; shift | |||
f_ex_an_ar_oldlib="$1" | f_ex_an_ar_oldlib="$1" | |||
func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" | if test "$lock_old_archive_extraction" = yes; then | |||
'exit $?' | lockfile=$f_ex_an_ar_oldlib.lock | |||
until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do | ||||
func_echo "Waiting for $lockfile to be removed" | ||||
sleep 2 | ||||
done | ||||
fi | ||||
func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" | ||||
\ | ||||
'stat=$?; rm -f "$lockfile"; exit $stat' | ||||
if test "$lock_old_archive_extraction" = yes; then | ||||
$opt_dry_run || rm -f "$lockfile" | ||||
fi | ||||
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then | if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then | |||
: | : | |||
else | else | |||
func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$ f_ex_an_ar_oldlib" | func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$ f_ex_an_ar_oldlib" | |||
fi | fi | |||
} | } | |||
# func_extract_archives gentop oldlib ... | # func_extract_archives gentop oldlib ... | |||
func_extract_archives () | func_extract_archives () | |||
{ | { | |||
skipping to change at line 2635 | skipping to change at line 3725 | |||
cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" | cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" | |||
func_extract_an_archive "`pwd`" "${darwin_base_archive}" | func_extract_an_archive "`pwd`" "${darwin_base_archive}" | |||
cd "$darwin_curdir" | cd "$darwin_curdir" | |||
$RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_b ase_archive}" | $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_b ase_archive}" | |||
done # $darwin_arches | done # $darwin_arches | |||
## Okay now we've a bunch of thin objects, gotta fatten them up :) | ## Okay now we've a bunch of thin objects, gotta fatten them up :) | |||
darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -nam e \*.lo -print | $SED -e "$basename" | sort -u` | darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -nam e \*.lo -print | $SED -e "$basename" | sort -u` | |||
darwin_file= | darwin_file= | |||
darwin_files= | darwin_files= | |||
for darwin_file in $darwin_filelist; do | for darwin_file in $darwin_filelist; do | |||
darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP ` | darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` | |||
$LIPO -create -output "$darwin_file" $darwin_files | $LIPO -create -output "$darwin_file" $darwin_files | |||
done # $darwin_filelist | done # $darwin_filelist | |||
$RM -rf unfat-$$ | $RM -rf unfat-$$ | |||
cd "$darwin_orig_dir" | cd "$darwin_orig_dir" | |||
else | else | |||
cd $darwin_orig_dir | cd $darwin_orig_dir | |||
func_extract_an_archive "$my_xdir" "$my_xabs" | func_extract_an_archive "$my_xdir" "$my_xabs" | |||
fi # $darwin_arches | fi # $darwin_arches | |||
} # !$opt_dry_run | } # !$opt_dry_run | |||
;; | ;; | |||
*) | *) | |||
func_extract_an_archive "$my_xdir" "$my_xabs" | func_extract_an_archive "$my_xdir" "$my_xabs" | |||
;; | ;; | |||
esac | esac | |||
my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -n ame \*.lo -print | $NL2SP` | my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -n ame \*.lo -print | sort | $NL2SP` | |||
done | done | |||
func_extract_archives_result="$my_oldobjs" | func_extract_archives_result="$my_oldobjs" | |||
} | } | |||
# func_emit_wrapper_part1 [arg=no] | # func_emit_wrapper [arg=no] | |||
# | # | |||
# Emit the first part of a libtool wrapper script on stdout. | # Emit a libtool wrapper script on stdout. | |||
# For more information, see the description associated with | # Don't directly open a file because we may want to | |||
# func_emit_wrapper(), below. | # incorporate the script contents within a cygwin/mingw | |||
func_emit_wrapper_part1 () | # wrapper executable. Must ONLY be called from within | |||
{ | # func_mode_link because it depends on a number of variables | |||
func_emit_wrapper_part1_arg1=no | # set therein. | |||
if test -n "$1" ; then | # | |||
func_emit_wrapper_part1_arg1=$1 | # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR | |||
fi | # variable will take. If 'yes', then the emitted script | |||
# will assume that the directory in which it is stored is | ||||
# the $objdir directory. This is a cygwin/mingw-specific | ||||
# behavior. | ||||
func_emit_wrapper () | ||||
{ | ||||
func_emit_wrapper_arg1=${1-no} | ||||
$ECHO "\ | $ECHO "\ | |||
#! $SHELL | #! $SHELL | |||
# $output - temporary wrapper script for $objdir/$outputname | # $output - temporary wrapper script for $objdir/$outputname | |||
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | |||
# | # | |||
# The $output program cannot be directly executed until all the libtool | # The $output program cannot be directly executed until all the libtool | |||
# libraries that it depends on are installed. | # libraries that it depends on are installed. | |||
# | # | |||
# This wrapper script should never be moved out of the build directory. | # This wrapper script should never be moved out of the build directory. | |||
# If it is, it will not operate correctly. | # If it is, it will not operate correctly. | |||
# Sed substitution that helps us do robust quoting. It backslashifies | # Sed substitution that helps us do robust quoting. It backslashifies | |||
# metacharacters that are still active within double-quoted strings. | # metacharacters that are still active within double-quoted strings. | |||
Xsed='${SED} -e 1s/^X//' | ||||
sed_quote_subst='$sed_quote_subst' | sed_quote_subst='$sed_quote_subst' | |||
# Be Bourne compatible | # Be Bourne compatible | |||
if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then | if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then | |||
emulate sh | emulate sh | |||
NULLCMD=: | NULLCMD=: | |||
# Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which | # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which | |||
# is contrary to our usage. Disable this feature. | # is contrary to our usage. Disable this feature. | |||
alias -g '\${1+\"\$@\"}'='\"\$@\"' | alias -g '\${1+\"\$@\"}'='\"\$@\"' | |||
setopt NO_GLOB_SUBST | setopt NO_GLOB_SUBST | |||
skipping to change at line 2713 | skipping to change at line 3808 | |||
relink_command=\"$relink_command\" | relink_command=\"$relink_command\" | |||
# This environment variable determines our operation mode. | # This environment variable determines our operation mode. | |||
if test \"\$libtool_install_magic\" = \"$magic\"; then | if test \"\$libtool_install_magic\" = \"$magic\"; then | |||
# install mode needs the following variables: | # install mode needs the following variables: | |||
generated_by_libtool_version='$macro_version' | generated_by_libtool_version='$macro_version' | |||
notinst_deplibs='$notinst_deplibs' | notinst_deplibs='$notinst_deplibs' | |||
else | else | |||
# When we are sourced in execute mode, \$file and \$ECHO are already set. | # When we are sourced in execute mode, \$file and \$ECHO are already set. | |||
if test \"\$libtool_execute_magic\" != \"$magic\"; then | if test \"\$libtool_execute_magic\" != \"$magic\"; then | |||
ECHO=\"$qecho\" | file=\"\$0\"" | |||
file=\"\$0\" | ||||
# Make sure echo works. | qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` | |||
if test \"X\$1\" = X--no-reexec; then | $ECHO "\ | |||
# Discard the --no-reexec flag, and continue. | ||||
shift | # A function that is used when there is no print builtin or printf. | |||
elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then | func_fallback_echo () | |||
# Yippee, \$ECHO works! | { | |||
: | eval 'cat <<_LTECHO_EOF | |||
else | \$1 | |||
# Restart under the correct shell, and then maybe \$ECHO will work. | _LTECHO_EOF' | |||
exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} | } | |||
fi | ECHO=\"$qECHO\" | |||
fi\ | fi | |||
# Very basic option parsing. These options are (a) specific to | ||||
# the libtool wrapper, (b) are identical between the wrapper | ||||
# /script/ and the wrapper /executable/ which is used only on | ||||
# windows platforms, and (c) all begin with the string "--lt-" | ||||
# (application programs are unlikely to have options which match | ||||
# this pattern). | ||||
# | ||||
# There are only two supported options: --lt-debug and | ||||
# --lt-dump-script. There is, deliberately, no --lt-help. | ||||
# | ||||
# The first argument to this parsing function should be the | ||||
# script's $0 value, followed by "$@". | ||||
lt_option_debug= | ||||
func_parse_lt_options () | ||||
{ | ||||
lt_script_arg0=\$0 | ||||
shift | ||||
for lt_opt | ||||
do | ||||
case \"\$lt_opt\" in | ||||
--lt-debug) lt_option_debug=1 ;; | ||||
--lt-dump-script) | ||||
lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/ | ||||
[^/]*$%%'\` | ||||
test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. | ||||
lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^ | ||||
.*/%%'\` | ||||
cat \"\$lt_dump_D/\$lt_dump_F\" | ||||
exit 0 | ||||
;; | ||||
--lt-*) | ||||
\$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 | ||||
exit 1 | ||||
;; | ||||
esac | ||||
done | ||||
# Print the debug banner immediately: | ||||
if test -n \"\$lt_option_debug\"; then | ||||
echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAG | ||||
E$TIMESTAMP) $VERSION\" 1>&2 | ||||
fi | ||||
} | ||||
# Used when --lt-debug. Prints its arguments to stdout | ||||
# (redirection is the responsibility of the caller) | ||||
func_lt_dump_args () | ||||
{ | ||||
lt_dump_args_N=1; | ||||
for lt_arg | ||||
do | ||||
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: | ||||
\$lt_arg\" | ||||
lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` | ||||
done | ||||
} | ||||
# Core function for launching the target application | ||||
func_exec_program_core () | ||||
{ | ||||
" | " | |||
$ECHO "\ | case $host in | |||
# Backslashes separate directories on plain windows | ||||
*-*-mingw | *-*-os2* | *-cegcc*) | ||||
$ECHO "\ | ||||
if test -n \"\$lt_option_debug\"; then | ||||
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\ | ||||
\\\\$program\" 1>&2 | ||||
func_lt_dump_args \${1+\"\$@\"} 1>&2 | ||||
fi | ||||
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} | ||||
" | ||||
;; | ||||
*) | ||||
$ECHO "\ | ||||
if test -n \"\$lt_option_debug\"; then | ||||
\$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/ | ||||
\$program\" 1>&2 | ||||
func_lt_dump_args \${1+\"\$@\"} 1>&2 | ||||
fi | ||||
exec \"\$progdir/\$program\" \${1+\"\$@\"} | ||||
" | ||||
;; | ||||
esac | ||||
$ECHO "\ | ||||
\$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 | ||||
exit 1 | ||||
} | ||||
# A function to encapsulate launching the target application | ||||
# Strips options in the --lt-* namespace from \$@ and | ||||
# launches target application with the remaining arguments. | ||||
func_exec_program () | ||||
{ | ||||
for lt_wr_arg | ||||
do | ||||
case \$lt_wr_arg in | ||||
--lt-*) ;; | ||||
*) set x \"\$@\" \"\$lt_wr_arg\"; shift;; | ||||
esac | ||||
shift | ||||
done | ||||
func_exec_program_core \${1+\"\$@\"} | ||||
} | ||||
# Parse options | ||||
func_parse_lt_options \"\$0\" \${1+\"\$@\"} | ||||
# Find the directory that this script lives in. | # Find the directory that this script lives in. | |||
thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` | thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` | |||
test \"x\$thisdir\" = \"x\$file\" && thisdir=. | test \"x\$thisdir\" = \"x\$file\" && thisdir=. | |||
# Follow symbolic links until we get to the real thisdir. | # Follow symbolic links until we get to the real thisdir. | |||
file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` | file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` | |||
while test -n \"\$file\"; do | while test -n \"\$file\"; do | |||
destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` | destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` | |||
# If there was a directory component, then change thisdir. | # If there was a directory component, then change thisdir. | |||
if test \"x\$destdir\" != \"x\$file\"; then | if test \"x\$destdir\" != \"x\$file\"; then | |||
case \"\$destdir\" in | case \"\$destdir\" in | |||
[\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; | [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; | |||
*) thisdir=\"\$thisdir/\$destdir\" ;; | *) thisdir=\"\$thisdir/\$destdir\" ;; | |||
esac | esac | |||
fi | fi | |||
file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` | file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` | |||
file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` | file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` | |||
done | done | |||
" | ||||
} | ||||
# end: func_emit_wrapper_part1 | ||||
# func_emit_wrapper_part2 [arg=no] | ||||
# | ||||
# Emit the second part of a libtool wrapper script on stdout. | ||||
# For more information, see the description associated with | ||||
# func_emit_wrapper(), below. | ||||
func_emit_wrapper_part2 () | ||||
{ | ||||
func_emit_wrapper_part2_arg1=no | ||||
if test -n "$1" ; then | ||||
func_emit_wrapper_part2_arg1=$1 | ||||
fi | ||||
$ECHO "\ | ||||
# Usually 'no', except on cygwin/mingw when embedded into | # Usually 'no', except on cygwin/mingw when embedded into | |||
# the cwrapper. | # the cwrapper. | |||
WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 | WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 | |||
if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then | if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then | |||
# special case for '.' | # special case for '.' | |||
if test \"\$thisdir\" = \".\"; then | if test \"\$thisdir\" = \".\"; then | |||
thisdir=\`pwd\` | thisdir=\`pwd\` | |||
fi | fi | |||
# remove .libs from thisdir | # remove .libs from thisdir | |||
case \"\$thisdir\" in | case \"\$thisdir\" in | |||
*[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/ ][^\\\\/]*$%%'\` ;; | *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\ \/]*$%%'\` ;; | |||
$objdir ) thisdir=. ;; | $objdir ) thisdir=. ;; | |||
esac | esac | |||
fi | fi | |||
# Try to get the absolute directory name. | # Try to get the absolute directory name. | |||
absdir=\`cd \"\$thisdir\" && pwd\` | absdir=\`cd \"\$thisdir\" && pwd\` | |||
test -n \"\$absdir\" && thisdir=\"\$absdir\" | test -n \"\$absdir\" && thisdir=\"\$absdir\" | |||
" | " | |||
if test "$fast_install" = yes; then | if test "$fast_install" = yes; then | |||
skipping to change at line 2833 | skipping to change at line 4012 | |||
$ECHO "\ | $ECHO "\ | |||
program='$outputname' | program='$outputname' | |||
progdir=\"\$thisdir/$objdir\" | progdir=\"\$thisdir/$objdir\" | |||
" | " | |||
fi | fi | |||
$ECHO "\ | $ECHO "\ | |||
if test -f \"\$progdir/\$program\"; then" | if test -f \"\$progdir/\$program\"; then" | |||
# fixup the dll searchpath if we need to. | ||||
# | ||||
# Fix the DLL searchpath if we need to. Do this before prepending | ||||
# to shlibpath, because on Windows, both are PATH and uninstalled | ||||
# libraries must come first. | ||||
if test -n "$dllsearchpath"; then | ||||
$ECHO "\ | ||||
# Add the dll search path components to the executable PATH | ||||
PATH=$dllsearchpath:\$PATH | ||||
" | ||||
fi | ||||
# Export our shlibpath_var if we have one. | # Export our shlibpath_var if we have one. | |||
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_ var" && test -n "$temp_rpath"; then | if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_ var" && test -n "$temp_rpath"; then | |||
$ECHO "\ | $ECHO "\ | |||
# Add our own library path to $shlibpath_var | # Add our own library path to $shlibpath_var | |||
$shlibpath_var=\"$temp_rpath\$$shlibpath_var\" | $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" | |||
# Some systems cannot cope with colon-terminated $shlibpath_var | # Some systems cannot cope with colon-terminated $shlibpath_var | |||
# The second colon is a workaround for a bug in BeOS R4 sed | # The second colon is a workaround for a bug in BeOS R4 sed | |||
$shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` | $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` | |||
export $shlibpath_var | export $shlibpath_var | |||
" | " | |||
fi | fi | |||
# fixup the dll searchpath if we need to. | ||||
if test -n "$dllsearchpath"; then | ||||
$ECHO "\ | ||||
# Add the dll search path components to the executable PATH | ||||
PATH=$dllsearchpath:\$PATH | ||||
" | ||||
fi | ||||
$ECHO "\ | $ECHO "\ | |||
if test \"\$libtool_execute_magic\" != \"$magic\"; then | if test \"\$libtool_execute_magic\" != \"$magic\"; then | |||
# Run the actual program with our arguments. | # Run the actual program with our arguments. | |||
" | func_exec_program \${1+\"\$@\"} | |||
case $host in | ||||
# Backslashes separate directories on plain windows | ||||
*-*-mingw | *-*-os2* | *-cegcc*) | ||||
$ECHO "\ | ||||
exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} | ||||
" | ||||
;; | ||||
*) | ||||
$ECHO "\ | ||||
exec \"\$progdir/\$program\" \${1+\"\$@\"} | ||||
" | ||||
;; | ||||
esac | ||||
$ECHO "\ | ||||
\$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 | ||||
exit 1 | ||||
fi | fi | |||
else | else | |||
# The program doesn't exist. | # The program doesn't exist. | |||
\$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 | \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 | |||
\$ECHO \"This script is just a wrapper for \$program.\" 1>&2 | \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 | |||
$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 | \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 | |||
exit 1 | exit 1 | |||
fi | ||||
fi\ | ||||
" | ||||
} | ||||
# end: func_emit_wrapper_part2 | ||||
# func_emit_wrapper [arg=no] | ||||
# | ||||
# Emit a libtool wrapper script on stdout. | ||||
# Don't directly open a file because we may want to | ||||
# incorporate the script contents within a cygwin/mingw | ||||
# wrapper executable. Must ONLY be called from within | ||||
# func_mode_link because it depends on a number of variables | ||||
# set therein. | ||||
# | ||||
# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR | ||||
# variable will take. If 'yes', then the emitted script | ||||
# will assume that the directory in which it is stored is | ||||
# the $objdir directory. This is a cygwin/mingw-specific | ||||
# behavior. | ||||
func_emit_wrapper () | ||||
{ | ||||
func_emit_wrapper_arg1=no | ||||
if test -n "$1" ; then | ||||
func_emit_wrapper_arg1=$1 | ||||
fi | ||||
# split this up so that func_emit_cwrapperexe_src | ||||
# can call each part independently. | ||||
func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" | ||||
func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" | ||||
} | ||||
# func_to_host_path arg | ||||
# | ||||
# Convert paths to host format when used with build tools. | ||||
# Intended for use with "native" mingw (where libtool itself | ||||
# is running under the msys shell), or in the following cross- | ||||
# build environments: | ||||
# $build $host | ||||
# mingw (msys) mingw [e.g. native] | ||||
# cygwin mingw | ||||
# *nix + wine mingw | ||||
# where wine is equipped with the `winepath' executable. | ||||
# In the native mingw case, the (msys) shell automatically | ||||
# converts paths for any non-msys applications it launches, | ||||
# but that facility isn't available from inside the cwrapper. | ||||
# Similar accommodations are necessary for $host mingw and | ||||
# $build cygwin. Calling this function does no harm for other | ||||
# $host/$build combinations not listed above. | ||||
# | ||||
# ARG is the path (on $build) that should be converted to | ||||
# the proper representation for $host. The result is stored | ||||
# in $func_to_host_path_result. | ||||
func_to_host_path () | ||||
{ | ||||
func_to_host_path_result="$1" | ||||
if test -n "$1" ; then | ||||
case $host in | ||||
*mingw* ) | ||||
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' | ||||
case $build in | ||||
*mingw* ) # actually, msys | ||||
# awkward: cmd appends spaces to result | ||||
lt_sed_strip_trailing_spaces="s/[ ]*\$//" | ||||
func_to_host_path_tmp1=`( cmd //c echo "$1" |\ | ||||
$SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo | ||||
""` | ||||
func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ | ||||
$SED -e "$lt_sed_naive_backslashify"` | ||||
;; | ||||
*cygwin* ) | ||||
func_to_host_path_tmp1=`cygpath -w "$1"` | ||||
func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ | ||||
$SED -e "$lt_sed_naive_backslashify"` | ||||
;; | ||||
* ) | ||||
# Unfortunately, winepath does not exit with a non-zero | ||||
# error code, so we are forced to check the contents of | ||||
# stdout. On the other hand, if the command is not | ||||
# found, the shell will set an exit code of 127 and print | ||||
# *an error message* to stdout. So we must check for both | ||||
# error code of zero AND non-empty stdout, which explains | ||||
# the odd construction: | ||||
func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` | ||||
if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then | ||||
func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ | ||||
$SED -e "$lt_sed_naive_backslashify"` | ||||
else | ||||
# Allow warning below. | ||||
func_to_host_path_result="" | ||||
fi | ||||
;; | ||||
esac | ||||
if test -z "$func_to_host_path_result" ; then | ||||
func_error "Could not determine host path corresponding to" | ||||
func_error " '$1'" | ||||
func_error "Continuing, but uninstalled executables may not work. | ||||
" | ||||
# Fallback: | ||||
func_to_host_path_result="$1" | ||||
fi | ||||
;; | ||||
esac | ||||
fi | ||||
} | ||||
# end: func_to_host_path | ||||
# func_to_host_pathlist arg | ||||
# | ||||
# Convert pathlists to host format when used with build tools. | ||||
# See func_to_host_path(), above. This function supports the | ||||
# following $build/$host combinations (but does no harm for | ||||
# combinations not listed here): | ||||
# $build $host | ||||
# mingw (msys) mingw [e.g. native] | ||||
# cygwin mingw | ||||
# *nix + wine mingw | ||||
# | ||||
# Path separators are also converted from $build format to | ||||
# $host format. If ARG begins or ends with a path separator | ||||
# character, it is preserved (but converted to $host format) | ||||
# on output. | ||||
# | ||||
# ARG is a pathlist (on $build) that should be converted to | ||||
# the proper representation on $host. The result is stored | ||||
# in $func_to_host_pathlist_result. | ||||
func_to_host_pathlist () | ||||
{ | ||||
func_to_host_pathlist_result="$1" | ||||
if test -n "$1" ; then | ||||
case $host in | ||||
*mingw* ) | ||||
lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' | ||||
# Remove leading and trailing path separator characters from | ||||
# ARG. msys behavior is inconsistent here, cygpath turns them | ||||
# into '.;' and ';.', and winepath ignores them completely. | ||||
func_to_host_pathlist_tmp2="$1" | ||||
# Once set for this call, this variable should not be | ||||
# reassigned. It is used in tha fallback case. | ||||
func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ | ||||
$SED -e 's|^:*||' -e 's|:*$||'` | ||||
case $build in | ||||
*mingw* ) # Actually, msys. | ||||
# Awkward: cmd appends spaces to result. | ||||
lt_sed_strip_trailing_spaces="s/[ ]*\$//" | ||||
func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathl | ||||
ist_tmp1" |\ | ||||
$SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo | ||||
""` | ||||
func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2 | ||||
" |\ | ||||
$SED -e "$lt_sed_naive_backslashify"` | ||||
;; | ||||
*cygwin* ) | ||||
func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathli | ||||
st_tmp1"` | ||||
func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2 | ||||
" |\ | ||||
$SED -e "$lt_sed_naive_backslashify"` | ||||
;; | ||||
* ) | ||||
# unfortunately, winepath doesn't convert pathlists | ||||
func_to_host_pathlist_result="" | ||||
func_to_host_pathlist_oldIFS=$IFS | ||||
IFS=: | ||||
for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do | ||||
IFS=$func_to_host_pathlist_oldIFS | ||||
if test -n "$func_to_host_pathlist_f" ; then | ||||
func_to_host_path "$func_to_host_pathlist_f" | ||||
if test -n "$func_to_host_path_result" ; then | ||||
if test -z "$func_to_host_pathlist_result" ; then | ||||
func_to_host_pathlist_result="$func_to_host_path_result | ||||
" | ||||
else | ||||
func_to_host_pathlist_result="$func_to_host_pathlist_re | ||||
sult;$func_to_host_path_result" | ||||
fi | ||||
fi | ||||
fi | ||||
IFS=: | ||||
done | ||||
IFS=$func_to_host_pathlist_oldIFS | ||||
;; | ||||
esac | ||||
if test -z "$func_to_host_pathlist_result" ; then | ||||
func_error "Could not determine the host path(s) corresponding to | ||||
" | ||||
func_error " '$1'" | ||||
func_error "Continuing, but uninstalled executables may not work. | ||||
" | ||||
# Fallback. This may break if $1 contains DOS-style drive | ||||
# specifications. The fix is not to complicate the expression | ||||
# below, but for the user to provide a working wine installation | ||||
# with winepath so that path translation in the cross-to-mingw | ||||
# case works properly. | ||||
lt_replace_pathsep_nix_to_dos="s|:|;|g" | ||||
func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" | ||||
|\ | ||||
$SED -e "$lt_replace_pathsep_nix_to_dos"` | ||||
fi | ||||
# Now, add the leading and trailing path separators back | ||||
case "$1" in | ||||
:* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result | ||||
" | ||||
;; | ||||
esac | ||||
case "$1" in | ||||
*: ) func_to_host_pathlist_result="$func_to_host_pathlist_result; | ||||
" | ||||
;; | ||||
esac | ||||
;; | ||||
esac | ||||
fi | fi | |||
fi\ | ||||
" | ||||
} | } | |||
# end: func_to_host_pathlist | ||||
# func_emit_cwrapperexe_src | # func_emit_cwrapperexe_src | |||
# emit the source code for a wrapper executable on stdout | # emit the source code for a wrapper executable on stdout | |||
# Must ONLY be called from within func_mode_link because | # Must ONLY be called from within func_mode_link because | |||
# it depends on a number of variable set therein. | # it depends on a number of variable set therein. | |||
func_emit_cwrapperexe_src () | func_emit_cwrapperexe_src () | |||
{ | { | |||
cat <<EOF | cat <<EOF | |||
/* $cwrappersource - temporary wrapper executable for $objdir/$outputname | /* $cwrappersource - temporary wrapper executable for $objdir/$outputname | |||
Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | |||
The $output program cannot be directly executed until all the libtool | The $output program cannot be directly executed until all the libtool | |||
libraries that it depends on are installed. | libraries that it depends on are installed. | |||
This wrapper executable should never be moved out of the build directory . | This wrapper executable should never be moved out of the build directory . | |||
If it is, it will not operate correctly. | If it is, it will not operate correctly. | |||
Currently, it simply execs the wrapper *script* "$SHELL $output", | ||||
but could eventually absorb all of the scripts functionality and | ||||
exec $objdir/$outputname directly. | ||||
*/ | */ | |||
EOF | EOF | |||
cat <<"EOF" | cat <<"EOF" | |||
#ifdef _MSC_VER | ||||
# define _CRT_SECURE_NO_DEPRECATE 1 | ||||
#endif | ||||
#include <stdio.h> | #include <stdio.h> | |||
#include <stdlib.h> | #include <stdlib.h> | |||
#ifdef _MSC_VER | #ifdef _MSC_VER | |||
# include <direct.h> | # include <direct.h> | |||
# include <process.h> | # include <process.h> | |||
# include <io.h> | # include <io.h> | |||
# define setmode _setmode | ||||
#else | #else | |||
# include <unistd.h> | # include <unistd.h> | |||
# include <stdint.h> | # include <stdint.h> | |||
# ifdef __CYGWIN__ | # ifdef __CYGWIN__ | |||
# include <io.h> | # include <io.h> | |||
# define HAVE_SETENV | ||||
# ifdef __STRICT_ANSI__ | ||||
char *realpath (const char *, char *); | ||||
int putenv (char *); | ||||
int setenv (const char *, const char *, int); | ||||
# endif | ||||
# endif | # endif | |||
#endif | #endif | |||
#include <malloc.h> | #include <malloc.h> | |||
#include <stdarg.h> | #include <stdarg.h> | |||
#include <assert.h> | #include <assert.h> | |||
#include <string.h> | #include <string.h> | |||
#include <ctype.h> | #include <ctype.h> | |||
#include <errno.h> | #include <errno.h> | |||
#include <fcntl.h> | #include <fcntl.h> | |||
#include <sys/stat.h> | #include <sys/stat.h> | |||
/* declarations of non-ANSI functions */ | ||||
#if defined(__MINGW32__) | ||||
# ifdef __STRICT_ANSI__ | ||||
int _putenv (const char *); | ||||
# endif | ||||
#elif defined(__CYGWIN__) | ||||
# ifdef __STRICT_ANSI__ | ||||
char *realpath (const char *, char *); | ||||
int putenv (char *); | ||||
int setenv (const char *, const char *, int); | ||||
# endif | ||||
/* #elif defined (other platforms) ... */ | ||||
#endif | ||||
/* portability defines, excluding path handling macros */ | ||||
#if defined(_MSC_VER) | ||||
# define setmode _setmode | ||||
# define stat _stat | ||||
# define chmod _chmod | ||||
# define getcwd _getcwd | ||||
# define putenv _putenv | ||||
# define S_IXUSR _S_IEXEC | ||||
# ifndef _INTPTR_T_DEFINED | ||||
# define _INTPTR_T_DEFINED | ||||
# define intptr_t int | ||||
# endif | ||||
#elif defined(__MINGW32__) | ||||
# define setmode _setmode | ||||
# define stat _stat | ||||
# define chmod _chmod | ||||
# define getcwd _getcwd | ||||
# define putenv _putenv | ||||
#elif defined(__CYGWIN__) | ||||
# define HAVE_SETENV | ||||
# define FOPEN_WB "wb" | ||||
/* #elif defined (other platforms) ... */ | ||||
#endif | ||||
#if defined(PATH_MAX) | #if defined(PATH_MAX) | |||
# define LT_PATHMAX PATH_MAX | # define LT_PATHMAX PATH_MAX | |||
#elif defined(MAXPATHLEN) | #elif defined(MAXPATHLEN) | |||
# define LT_PATHMAX MAXPATHLEN | # define LT_PATHMAX MAXPATHLEN | |||
#else | #else | |||
# define LT_PATHMAX 1024 | # define LT_PATHMAX 1024 | |||
#endif | #endif | |||
#ifndef S_IXOTH | #ifndef S_IXOTH | |||
# define S_IXOTH 0 | # define S_IXOTH 0 | |||
#endif | #endif | |||
#ifndef S_IXGRP | #ifndef S_IXGRP | |||
# define S_IXGRP 0 | # define S_IXGRP 0 | |||
#endif | #endif | |||
#ifdef _MSC_VER | /* path handling portability macros */ | |||
# define S_IXUSR _S_IEXEC | ||||
# define stat _stat | ||||
# ifndef _INTPTR_T_DEFINED | ||||
# define intptr_t int | ||||
# endif | ||||
#endif | ||||
#ifndef DIR_SEPARATOR | #ifndef DIR_SEPARATOR | |||
# define DIR_SEPARATOR '/' | # define DIR_SEPARATOR '/' | |||
# define PATH_SEPARATOR ':' | # define PATH_SEPARATOR ':' | |||
#endif | #endif | |||
#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ | #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ | |||
defined (__OS2__) | defined (__OS2__) | |||
# define HAVE_DOS_BASED_FILE_SYSTEM | # define HAVE_DOS_BASED_FILE_SYSTEM | |||
# define FOPEN_WB "wb" | # define FOPEN_WB "wb" | |||
# ifndef DIR_SEPARATOR_2 | # ifndef DIR_SEPARATOR_2 | |||
skipping to change at line 3192 | skipping to change at line 4182 | |||
# define IS_DIR_SEPARATOR(ch) \ | # define IS_DIR_SEPARATOR(ch) \ | |||
(((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) | (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) | |||
#endif /* DIR_SEPARATOR_2 */ | #endif /* DIR_SEPARATOR_2 */ | |||
#ifndef PATH_SEPARATOR_2 | #ifndef PATH_SEPARATOR_2 | |||
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) | # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) | |||
#else /* PATH_SEPARATOR_2 */ | #else /* PATH_SEPARATOR_2 */ | |||
# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) | # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) | |||
#endif /* PATH_SEPARATOR_2 */ | #endif /* PATH_SEPARATOR_2 */ | |||
#ifdef __CYGWIN__ | ||||
# define FOPEN_WB "wb" | ||||
#endif | ||||
#ifndef FOPEN_WB | #ifndef FOPEN_WB | |||
# define FOPEN_WB "w" | # define FOPEN_WB "w" | |||
#endif | #endif | |||
#ifndef _O_BINARY | #ifndef _O_BINARY | |||
# define _O_BINARY 0 | # define _O_BINARY 0 | |||
#endif | #endif | |||
#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) | #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) | |||
#define XFREE(stale) do { \ | #define XFREE(stale) do { \ | |||
if (stale) { free ((void *) stale); stale = 0; } \ | if (stale) { free ((void *) stale); stale = 0; } \ | |||
} while (0) | } while (0) | |||
#undef LTWRAPPER_DEBUGPRINTF | #if defined(LT_DEBUGWRAPPER) | |||
#if defined DEBUGWRAPPER | static int lt_debug = 1; | |||
# define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args | ||||
static void | ||||
ltwrapper_debugprintf (const char *fmt, ...) | ||||
{ | ||||
va_list args; | ||||
va_start (args, fmt); | ||||
(void) vfprintf (stderr, fmt, args); | ||||
va_end (args); | ||||
} | ||||
#else | #else | |||
# define LTWRAPPER_DEBUGPRINTF(args) | static int lt_debug = 0; | |||
#endif | #endif | |||
const char *program_name = NULL; | const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ | |||
void *xmalloc (size_t num); | void *xmalloc (size_t num); | |||
char *xstrdup (const char *string); | char *xstrdup (const char *string); | |||
const char *base_name (const char *name); | const char *base_name (const char *name); | |||
char *find_executable (const char *wrapper); | char *find_executable (const char *wrapper); | |||
char *chase_symlinks (const char *pathspec); | char *chase_symlinks (const char *pathspec); | |||
int make_executable (const char *path); | int make_executable (const char *path); | |||
int check_executable (const char *path); | int check_executable (const char *path); | |||
char *strendzap (char *str, const char *pat); | char *strendzap (char *str, const char *pat); | |||
void lt_fatal (const char *message, ...); | void lt_debugprintf (const char *file, int line, const char *fmt, ...); | |||
void lt_fatal (const char *file, int line, const char *message, ...); | ||||
static const char *nonnull (const char *s); | ||||
static const char *nonempty (const char *s); | ||||
void lt_setenv (const char *name, const char *value); | void lt_setenv (const char *name, const char *value); | |||
char *lt_extend_str (const char *orig_value, const char *add, int to_end); | char *lt_extend_str (const char *orig_value, const char *add, int to_end); | |||
void lt_opt_process_env_set (const char *arg); | ||||
void lt_opt_process_env_prepend (const char *arg); | ||||
void lt_opt_process_env_append (const char *arg); | ||||
int lt_split_name_value (const char *arg, char** name, char** value); | ||||
void lt_update_exe_path (const char *name, const char *value); | void lt_update_exe_path (const char *name, const char *value); | |||
void lt_update_lib_path (const char *name, const char *value); | void lt_update_lib_path (const char *name, const char *value); | |||
char **prepare_spawn (char **argv); | ||||
static const char *script_text_part1 = | void lt_dump_script (FILE *f); | |||
EOF | EOF | |||
func_emit_wrapper_part1 yes | | ||||
$SED -e 's/\([\\"]\)/\\\1/g' \ | ||||
-e 's/^/ "/' -e 's/$/\\n"/' | ||||
echo ";" | ||||
cat <<EOF | cat <<EOF | |||
volatile const char * MAGIC_EXE = "$magic_exe"; | ||||
static const char *script_text_part2 = | ||||
EOF | ||||
func_emit_wrapper_part2 yes | | ||||
$SED -e 's/\([\\"]\)/\\\1/g' \ | ||||
-e 's/^/ "/' -e 's/$/\\n"/' | ||||
echo ";" | ||||
cat <<EOF | ||||
const char * MAGIC_EXE = "$magic_exe"; | ||||
const char * LIB_PATH_VARNAME = "$shlibpath_var"; | const char * LIB_PATH_VARNAME = "$shlibpath_var"; | |||
EOF | EOF | |||
if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibp ath_var" && test -n "$temp_rpath"; then | if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibp ath_var" && test -n "$temp_rpath"; then | |||
func_to_host_pathlist "$temp_rpath" | func_to_host_path "$temp_rpath" | |||
cat <<EOF | cat <<EOF | |||
const char * LIB_PATH_VALUE = "$func_to_host_pathlist_result"; | const char * LIB_PATH_VALUE = "$func_to_host_path_result"; | |||
EOF | EOF | |||
else | else | |||
cat <<"EOF" | cat <<"EOF" | |||
const char * LIB_PATH_VALUE = ""; | const char * LIB_PATH_VALUE = ""; | |||
EOF | EOF | |||
fi | fi | |||
if test -n "$dllsearchpath"; then | if test -n "$dllsearchpath"; then | |||
func_to_host_pathlist "$dllsearchpath:" | func_to_host_path "$dllsearchpath:" | |||
cat <<EOF | cat <<EOF | |||
const char * EXE_PATH_VARNAME = "PATH"; | const char * EXE_PATH_VARNAME = "PATH"; | |||
const char * EXE_PATH_VALUE = "$func_to_host_pathlist_result"; | const char * EXE_PATH_VALUE = "$func_to_host_path_result"; | |||
EOF | EOF | |||
else | else | |||
cat <<"EOF" | cat <<"EOF" | |||
const char * EXE_PATH_VARNAME = ""; | const char * EXE_PATH_VARNAME = ""; | |||
const char * EXE_PATH_VALUE = ""; | const char * EXE_PATH_VALUE = ""; | |||
EOF | EOF | |||
fi | fi | |||
if test "$fast_install" = yes; then | if test "$fast_install" = yes; then | |||
cat <<EOF | cat <<EOF | |||
skipping to change at line 3301 | skipping to change at line 4264 | |||
EOF | EOF | |||
else | else | |||
cat <<EOF | cat <<EOF | |||
const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ | const char * TARGET_PROGRAM_NAME = "$outputname"; /* hopefully, no .exe */ | |||
EOF | EOF | |||
fi | fi | |||
cat <<"EOF" | cat <<"EOF" | |||
#define LTWRAPPER_OPTION_PREFIX "--lt-" | #define LTWRAPPER_OPTION_PREFIX "--lt-" | |||
#define LTWRAPPER_OPTION_PREFIX_LENGTH 5 | ||||
static const size_t opt_prefix_len = LTWRAPPER_OPTION_PREFIX_LENGTH ; | ||||
static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; | static const char *ltwrapper_option_prefix = LTWRAPPER_OPTION_PREFIX; | |||
static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-scr ipt"; | static const char *dumpscript_opt = LTWRAPPER_OPTION_PREFIX "dump-scr ipt"; | |||
static const char *debug_opt = LTWRAPPER_OPTION_PREFIX "debug"; | ||||
static const size_t env_set_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + | ||||
7; | ||||
static const char *env_set_opt = LTWRAPPER_OPTION_PREFIX "env-set" | ||||
; | ||||
/* argument is putenv-style "foo=bar", value of foo is set to bar */ | ||||
static const size_t env_prepend_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + | ||||
11; | ||||
static const char *env_prepend_opt = LTWRAPPER_OPTION_PREFIX "env-prep | ||||
end"; | ||||
/* argument is putenv-style "foo=bar", new value of foo is bar${foo} */ | ||||
static const size_t env_append_opt_len = LTWRAPPER_OPTION_PREFIX_LENGTH + | ||||
10; | ||||
static const char *env_append_opt = LTWRAPPER_OPTION_PREFIX "env-appe | ||||
nd"; | ||||
/* argument is putenv-style "foo=bar", new value of foo is ${foo}bar */ | ||||
int | int | |||
main (int argc, char *argv[]) | main (int argc, char *argv[]) | |||
{ | { | |||
char **newargz; | char **newargz; | |||
int newargc; | int newargc; | |||
char *tmp_pathspec; | char *tmp_pathspec; | |||
char *actual_cwrapper_path; | char *actual_cwrapper_path; | |||
char *actual_cwrapper_name; | char *actual_cwrapper_name; | |||
char *target_name; | char *target_name; | |||
char *lt_argv_zero; | char *lt_argv_zero; | |||
intptr_t rval = 127; | intptr_t rval = 127; | |||
int i; | int i; | |||
program_name = (char *) xstrdup (base_name (argv[0])); | program_name = (char *) xstrdup (base_name (argv[0])); | |||
LTWRAPPER_DEBUGPRINTF (("(main) argv[0] : %s\n", argv[0])); | newargz = XMALLOC (char *, argc + 1); | |||
LTWRAPPER_DEBUGPRINTF (("(main) program_name : %s\n", program_name)); | ||||
/* very simple arg parsing; don't want to rely on getopt */ | /* very simple arg parsing; don't want to rely on getopt | |||
* also, copy all non cwrapper options to newargz, except | ||||
* argz[0], which is handled differently | ||||
*/ | ||||
newargc=0; | ||||
for (i = 1; i < argc; i++) | for (i = 1; i < argc; i++) | |||
{ | { | |||
if (strcmp (argv[i], dumpscript_opt) == 0) | if (strcmp (argv[i], dumpscript_opt) == 0) | |||
{ | { | |||
EOF | EOF | |||
case "$host" in | case "$host" in | |||
*mingw* | *cygwin* ) | *mingw* | *cygwin* ) | |||
# make stdout use "unix" line endings | # make stdout use "unix" line endings | |||
echo " setmode(1,_O_BINARY);" | echo " setmode(1,_O_BINARY);" | |||
;; | ;; | |||
esac | esac | |||
cat <<"EOF" | cat <<"EOF" | |||
printf ("%s", script_text_part1); | lt_dump_script (stdout); | |||
printf ("%s", script_text_part2); | ||||
return 0; | return 0; | |||
} | } | |||
if (strcmp (argv[i], debug_opt) == 0) | ||||
{ | ||||
lt_debug = 1; | ||||
continue; | ||||
} | ||||
if (strcmp (argv[i], ltwrapper_option_prefix) == 0) | ||||
{ | ||||
/* however, if there is an option in the LTWRAPPER_OPTION_PREFIX | ||||
namespace, but it is not one of the ones we know about and | ||||
have already dealt with, above (inluding dump-script), then | ||||
report an error. Otherwise, targets might begin to believe | ||||
they are allowed to use options in the LTWRAPPER_OPTION_PREFIX | ||||
namespace. The first time any user complains about this, we'll | ||||
need to make LTWRAPPER_OPTION_PREFIX a configure-time option | ||||
or a configure.ac-settable value. | ||||
*/ | ||||
lt_fatal (__FILE__, __LINE__, | ||||
"unrecognized %s option: '%s'", | ||||
ltwrapper_option_prefix, argv[i]); | ||||
} | ||||
/* otherwise ... */ | ||||
newargz[++newargc] = xstrdup (argv[i]); | ||||
} | } | |||
newargz[++newargc] = NULL; | ||||
EOF | ||||
cat <<EOF | ||||
/* The GNU banner must be the first non-error debug message */ | ||||
lt_debugprintf (__FILE__, __LINE__, "libtool wrapper (GNU $PACKAGE$TIMEST | ||||
AMP) $VERSION\n"); | ||||
EOF | ||||
cat <<"EOF" | ||||
lt_debugprintf (__FILE__, __LINE__, "(main) argv[0]: %s\n", argv[0]); | ||||
lt_debugprintf (__FILE__, __LINE__, "(main) program_name: %s\n", program_ | ||||
name); | ||||
newargz = XMALLOC (char *, argc + 1); | ||||
tmp_pathspec = find_executable (argv[0]); | tmp_pathspec = find_executable (argv[0]); | |||
if (tmp_pathspec == NULL) | if (tmp_pathspec == NULL) | |||
lt_fatal ("Couldn't find %s", argv[0]); | lt_fatal (__FILE__, __LINE__, "couldn't find %s", argv[0]); | |||
LTWRAPPER_DEBUGPRINTF (("(main) found exe (before symlink chase) at : %s\ | lt_debugprintf (__FILE__, __LINE__, | |||
n", | "(main) found exe (before symlink chase) at: %s\n", | |||
tmp_pathspec)); | tmp_pathspec); | |||
actual_cwrapper_path = chase_symlinks (tmp_pathspec); | actual_cwrapper_path = chase_symlinks (tmp_pathspec); | |||
LTWRAPPER_DEBUGPRINTF (("(main) found exe (after symlink chase) at : %s\n | lt_debugprintf (__FILE__, __LINE__, | |||
", | "(main) found exe (after symlink chase) at: %s\n", | |||
actual_cwrapper_path)); | actual_cwrapper_path); | |||
XFREE (tmp_pathspec); | XFREE (tmp_pathspec); | |||
actual_cwrapper_name = xstrdup( base_name (actual_cwrapper_path)); | actual_cwrapper_name = xstrdup (base_name (actual_cwrapper_path)); | |||
strendzap (actual_cwrapper_path, actual_cwrapper_name); | strendzap (actual_cwrapper_path, actual_cwrapper_name); | |||
/* wrapper name transforms */ | /* wrapper name transforms */ | |||
strendzap (actual_cwrapper_name, ".exe"); | strendzap (actual_cwrapper_name, ".exe"); | |||
tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); | tmp_pathspec = lt_extend_str (actual_cwrapper_name, ".exe", 1); | |||
XFREE (actual_cwrapper_name); | XFREE (actual_cwrapper_name); | |||
actual_cwrapper_name = tmp_pathspec; | actual_cwrapper_name = tmp_pathspec; | |||
tmp_pathspec = 0; | tmp_pathspec = 0; | |||
/* target_name transforms -- use actual target program name; might have l t- prefix */ | /* target_name transforms -- use actual target program name; might have l t- prefix */ | |||
target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); | target_name = xstrdup (base_name (TARGET_PROGRAM_NAME)); | |||
strendzap (target_name, ".exe"); | strendzap (target_name, ".exe"); | |||
tmp_pathspec = lt_extend_str (target_name, ".exe", 1); | tmp_pathspec = lt_extend_str (target_name, ".exe", 1); | |||
XFREE (target_name); | XFREE (target_name); | |||
target_name = tmp_pathspec; | target_name = tmp_pathspec; | |||
tmp_pathspec = 0; | tmp_pathspec = 0; | |||
LTWRAPPER_DEBUGPRINTF (("(main) libtool target name: %s\n", | lt_debugprintf (__FILE__, __LINE__, | |||
target_name)); | "(main) libtool target name: %s\n", | |||
target_name); | ||||
EOF | EOF | |||
cat <<EOF | cat <<EOF | |||
newargz[0] = | newargz[0] = | |||
XMALLOC (char, (strlen (actual_cwrapper_path) + | XMALLOC (char, (strlen (actual_cwrapper_path) + | |||
strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); | strlen ("$objdir") + 1 + strlen (actual_cwrapper_name) + 1)); | |||
strcpy (newargz[0], actual_cwrapper_path); | strcpy (newargz[0], actual_cwrapper_path); | |||
strcat (newargz[0], "$objdir"); | strcat (newargz[0], "$objdir"); | |||
strcat (newargz[0], "/"); | strcat (newargz[0], "/"); | |||
EOF | EOF | |||
skipping to change at line 3439 | skipping to change at line 4424 | |||
;; | ;; | |||
esac | esac | |||
cat <<"EOF" | cat <<"EOF" | |||
XFREE (target_name); | XFREE (target_name); | |||
XFREE (actual_cwrapper_path); | XFREE (actual_cwrapper_path); | |||
XFREE (actual_cwrapper_name); | XFREE (actual_cwrapper_name); | |||
lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ | lt_setenv ("BIN_SH", "xpg4"); /* for Tru64 */ | |||
lt_setenv ("DUALCASE", "1"); /* for MSK sh */ | lt_setenv ("DUALCASE", "1"); /* for MSK sh */ | |||
lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); | /* Update the DLL searchpath. EXE_PATH_VALUE ($dllsearchpath) must | |||
be prepended before (that is, appear after) LIB_PATH_VALUE ($temp_rpat | ||||
h) | ||||
because on Windows, both *_VARNAMEs are PATH but uninstalled | ||||
libraries must come first. */ | ||||
lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); | lt_update_exe_path (EXE_PATH_VARNAME, EXE_PATH_VALUE); | |||
lt_update_lib_path (LIB_PATH_VARNAME, LIB_PATH_VALUE); | ||||
newargc=0; | lt_debugprintf (__FILE__, __LINE__, "(main) lt_argv_zero: %s\n", | |||
for (i = 1; i < argc; i++) | nonnull (lt_argv_zero)); | |||
{ | ||||
if (strncmp (argv[i], env_set_opt, env_set_opt_len) == 0) | ||||
{ | ||||
if (argv[i][env_set_opt_len] == '=') | ||||
{ | ||||
const char *p = argv[i] + env_set_opt_len + 1; | ||||
lt_opt_process_env_set (p); | ||||
} | ||||
else if (argv[i][env_set_opt_len] == '\0' && i + 1 < argc) | ||||
{ | ||||
lt_opt_process_env_set (argv[++i]); /* don't copy */ | ||||
} | ||||
else | ||||
lt_fatal ("%s missing required argument", env_set_opt); | ||||
continue; | ||||
} | ||||
if (strncmp (argv[i], env_prepend_opt, env_prepend_opt_len) == 0) | ||||
{ | ||||
if (argv[i][env_prepend_opt_len] == '=') | ||||
{ | ||||
const char *p = argv[i] + env_prepend_opt_len + 1; | ||||
lt_opt_process_env_prepend (p); | ||||
} | ||||
else if (argv[i][env_prepend_opt_len] == '\0' && i + 1 < argc) | ||||
{ | ||||
lt_opt_process_env_prepend (argv[++i]); /* don't copy */ | ||||
} | ||||
else | ||||
lt_fatal ("%s missing required argument", env_prepend_opt); | ||||
continue; | ||||
} | ||||
if (strncmp (argv[i], env_append_opt, env_append_opt_len) == 0) | ||||
{ | ||||
if (argv[i][env_append_opt_len] == '=') | ||||
{ | ||||
const char *p = argv[i] + env_append_opt_len + 1; | ||||
lt_opt_process_env_append (p); | ||||
} | ||||
else if (argv[i][env_append_opt_len] == '\0' && i + 1 < argc) | ||||
{ | ||||
lt_opt_process_env_append (argv[++i]); /* don't copy */ | ||||
} | ||||
else | ||||
lt_fatal ("%s missing required argument", env_append_opt); | ||||
continue; | ||||
} | ||||
if (strncmp (argv[i], ltwrapper_option_prefix, opt_prefix_len) == 0) | ||||
{ | ||||
/* however, if there is an option in the LTWRAPPER_OPTION_PREFIX | ||||
namespace, but it is not one of the ones we know about and | ||||
have already dealt with, above (inluding dump-script), then | ||||
report an error. Otherwise, targets might begin to believe | ||||
they are allowed to use options in the LTWRAPPER_OPTION_PREFIX | ||||
namespace. The first time any user complains about this, we'll | ||||
need to make LTWRAPPER_OPTION_PREFIX a configure-time option | ||||
or a configure.ac-settable value. | ||||
*/ | ||||
lt_fatal ("Unrecognized option in %s namespace: '%s'", | ||||
ltwrapper_option_prefix, argv[i]); | ||||
} | ||||
/* otherwise ... */ | ||||
newargz[++newargc] = xstrdup (argv[i]); | ||||
} | ||||
newargz[++newargc] = NULL; | ||||
LTWRAPPER_DEBUGPRINTF (("(main) lt_argv_zero : %s\n", (lt_argv_zero ? | ||||
lt_argv_zero : "<NULL>"))); | ||||
for (i = 0; i < newargc; i++) | for (i = 0; i < newargc; i++) | |||
{ | { | |||
LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] | lt_debugprintf (__FILE__, __LINE__, "(main) newargz[%d]: %s\n", | |||
? newargz[i] : "<NULL>"))); | i, nonnull (newargz[i])); | |||
} | } | |||
EOF | EOF | |||
case $host_os in | case $host_os in | |||
mingw*) | mingw*) | |||
cat <<"EOF" | cat <<"EOF" | |||
/* execv doesn't actually work on mingw as expected on unix */ | /* execv doesn't actually work on mingw as expected on unix */ | |||
newargz = prepare_spawn (newargz); | ||||
rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); | rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); | |||
if (rval == -1) | if (rval == -1) | |||
{ | { | |||
/* failed to start process */ | /* failed to start process */ | |||
LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno | lt_debugprintf (__FILE__, __LINE__, | |||
= %d\n", lt_argv_zero, errno)); | "(main) failed to launch target \"%s\": %s\n", | |||
lt_argv_zero, nonnull (strerror (errno))); | ||||
return 127; | return 127; | |||
} | } | |||
return rval; | return rval; | |||
EOF | EOF | |||
;; | ;; | |||
*) | *) | |||
cat <<"EOF" | cat <<"EOF" | |||
execv (lt_argv_zero, newargz); | execv (lt_argv_zero, newargz); | |||
return rval; /* =127, but avoids unused variable warning */ | return rval; /* =127, but avoids unused variable warning */ | |||
EOF | EOF | |||
skipping to change at line 3547 | skipping to change at line 4474 | |||
esac | esac | |||
cat <<"EOF" | cat <<"EOF" | |||
} | } | |||
void * | void * | |||
xmalloc (size_t num) | xmalloc (size_t num) | |||
{ | { | |||
void *p = (void *) malloc (num); | void *p = (void *) malloc (num); | |||
if (!p) | if (!p) | |||
lt_fatal ("Memory exhausted"); | lt_fatal (__FILE__, __LINE__, "memory exhausted"); | |||
return p; | return p; | |||
} | } | |||
char * | char * | |||
xstrdup (const char *string) | xstrdup (const char *string) | |||
{ | { | |||
return string ? strcpy ((char *) xmalloc (strlen (string) + 1), | return string ? strcpy ((char *) xmalloc (strlen (string) + 1), | |||
string) : NULL; | string) : NULL; | |||
} | } | |||
skipping to change at line 3581 | skipping to change at line 4508 | |||
if (IS_DIR_SEPARATOR (*name)) | if (IS_DIR_SEPARATOR (*name)) | |||
base = name + 1; | base = name + 1; | |||
return base; | return base; | |||
} | } | |||
int | int | |||
check_executable (const char *path) | check_executable (const char *path) | |||
{ | { | |||
struct stat st; | struct stat st; | |||
LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", | lt_debugprintf (__FILE__, __LINE__, "(check_executable): %s\n", | |||
path ? (*path ? path : "EMPTY!") : "NULL!")); | nonempty (path)); | |||
if ((!path) || (!*path)) | if ((!path) || (!*path)) | |||
return 0; | return 0; | |||
if ((stat (path, &st) >= 0) | if ((stat (path, &st) >= 0) | |||
&& (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) | && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) | |||
return 1; | return 1; | |||
else | else | |||
return 0; | return 0; | |||
} | } | |||
int | int | |||
make_executable (const char *path) | make_executable (const char *path) | |||
{ | { | |||
int rval = 0; | int rval = 0; | |||
struct stat st; | struct stat st; | |||
LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", | lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", | |||
path ? (*path ? path : "EMPTY!") : "NULL!")); | nonempty (path)); | |||
if ((!path) || (!*path)) | if ((!path) || (!*path)) | |||
return 0; | return 0; | |||
if (stat (path, &st) >= 0) | if (stat (path, &st) >= 0) | |||
{ | { | |||
rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); | rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); | |||
} | } | |||
return rval; | return rval; | |||
} | } | |||
skipping to change at line 3626 | skipping to change at line 4553 | |||
find_executable (const char *wrapper) | find_executable (const char *wrapper) | |||
{ | { | |||
int has_slash = 0; | int has_slash = 0; | |||
const char *p; | const char *p; | |||
const char *p_next; | const char *p_next; | |||
/* static buffer for getcwd */ | /* static buffer for getcwd */ | |||
char tmp[LT_PATHMAX + 1]; | char tmp[LT_PATHMAX + 1]; | |||
int tmp_len; | int tmp_len; | |||
char *concat_name; | char *concat_name; | |||
LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", | lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", | |||
wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL! | nonempty (wrapper)); | |||
")); | ||||
if ((wrapper == NULL) || (*wrapper == '\0')) | if ((wrapper == NULL) || (*wrapper == '\0')) | |||
return NULL; | return NULL; | |||
/* Absolute path? */ | /* Absolute path? */ | |||
#if defined (HAVE_DOS_BASED_FILE_SYSTEM) | #if defined (HAVE_DOS_BASED_FILE_SYSTEM) | |||
if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') | if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') | |||
{ | { | |||
concat_name = xstrdup (wrapper); | concat_name = xstrdup (wrapper); | |||
if (check_executable (concat_name)) | if (check_executable (concat_name)) | |||
skipping to change at line 3680 | skipping to change at line 4607 | |||
size_t p_len; | size_t p_len; | |||
for (q = p; *q; q++) | for (q = p; *q; q++) | |||
if (IS_PATH_SEPARATOR (*q)) | if (IS_PATH_SEPARATOR (*q)) | |||
break; | break; | |||
p_len = q - p; | p_len = q - p; | |||
p_next = (*q == '\0' ? q : q + 1); | p_next = (*q == '\0' ? q : q + 1); | |||
if (p_len == 0) | if (p_len == 0) | |||
{ | { | |||
/* empty path: current directory */ | /* empty path: current directory */ | |||
if (getcwd (tmp, LT_PATHMAX) == NULL) | if (getcwd (tmp, LT_PATHMAX) == NULL) | |||
lt_fatal ("getcwd failed"); | lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", | |||
nonnull (strerror (errno))); | ||||
tmp_len = strlen (tmp); | tmp_len = strlen (tmp); | |||
concat_name = | concat_name = | |||
XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); | XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); | |||
memcpy (concat_name, tmp, tmp_len); | memcpy (concat_name, tmp, tmp_len); | |||
concat_name[tmp_len] = '/'; | concat_name[tmp_len] = '/'; | |||
strcpy (concat_name + tmp_len + 1, wrapper); | strcpy (concat_name + tmp_len + 1, wrapper); | |||
} | } | |||
else | else | |||
{ | { | |||
concat_name = | concat_name = | |||
skipping to change at line 3705 | skipping to change at line 4633 | |||
} | } | |||
if (check_executable (concat_name)) | if (check_executable (concat_name)) | |||
return concat_name; | return concat_name; | |||
XFREE (concat_name); | XFREE (concat_name); | |||
} | } | |||
} | } | |||
/* not found in PATH; assume curdir */ | /* not found in PATH; assume curdir */ | |||
} | } | |||
/* Relative path | not found in path: prepend cwd */ | /* Relative path | not found in path: prepend cwd */ | |||
if (getcwd (tmp, LT_PATHMAX) == NULL) | if (getcwd (tmp, LT_PATHMAX) == NULL) | |||
lt_fatal ("getcwd failed"); | lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", | |||
nonnull (strerror (errno))); | ||||
tmp_len = strlen (tmp); | tmp_len = strlen (tmp); | |||
concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); | concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); | |||
memcpy (concat_name, tmp, tmp_len); | memcpy (concat_name, tmp, tmp_len); | |||
concat_name[tmp_len] = '/'; | concat_name[tmp_len] = '/'; | |||
strcpy (concat_name + tmp_len + 1, wrapper); | strcpy (concat_name + tmp_len + 1, wrapper); | |||
if (check_executable (concat_name)) | if (check_executable (concat_name)) | |||
return concat_name; | return concat_name; | |||
XFREE (concat_name); | XFREE (concat_name); | |||
return NULL; | return NULL; | |||
skipping to change at line 3731 | skipping to change at line 4660 | |||
#ifndef S_ISLNK | #ifndef S_ISLNK | |||
return xstrdup (pathspec); | return xstrdup (pathspec); | |||
#else | #else | |||
char buf[LT_PATHMAX]; | char buf[LT_PATHMAX]; | |||
struct stat s; | struct stat s; | |||
char *tmp_pathspec = xstrdup (pathspec); | char *tmp_pathspec = xstrdup (pathspec); | |||
char *p; | char *p; | |||
int has_symlinks = 0; | int has_symlinks = 0; | |||
while (strlen (tmp_pathspec) && !has_symlinks) | while (strlen (tmp_pathspec) && !has_symlinks) | |||
{ | { | |||
LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", | lt_debugprintf (__FILE__, __LINE__, | |||
tmp_pathspec)); | "checking path component for symlinks: %s\n", | |||
tmp_pathspec); | ||||
if (lstat (tmp_pathspec, &s) == 0) | if (lstat (tmp_pathspec, &s) == 0) | |||
{ | { | |||
if (S_ISLNK (s.st_mode) != 0) | if (S_ISLNK (s.st_mode) != 0) | |||
{ | { | |||
has_symlinks = 1; | has_symlinks = 1; | |||
break; | break; | |||
} | } | |||
/* search backwards for last DIR_SEPARATOR */ | /* search backwards for last DIR_SEPARATOR */ | |||
p = tmp_pathspec + strlen (tmp_pathspec) - 1; | p = tmp_pathspec + strlen (tmp_pathspec) - 1; | |||
skipping to change at line 3754 | skipping to change at line 4684 | |||
p--; | p--; | |||
if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) | if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) | |||
{ | { | |||
/* no more DIR_SEPARATORS left */ | /* no more DIR_SEPARATORS left */ | |||
break; | break; | |||
} | } | |||
*p = '\0'; | *p = '\0'; | |||
} | } | |||
else | else | |||
{ | { | |||
char *errstr = strerror (errno); | lt_fatal (__FILE__, __LINE__, | |||
lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); | "error accessing file \"%s\": %s", | |||
tmp_pathspec, nonnull (strerror (errno))); | ||||
} | } | |||
} | } | |||
XFREE (tmp_pathspec); | XFREE (tmp_pathspec); | |||
if (!has_symlinks) | if (!has_symlinks) | |||
{ | { | |||
return xstrdup (pathspec); | return xstrdup (pathspec); | |||
} | } | |||
tmp_pathspec = realpath (pathspec, buf); | tmp_pathspec = realpath (pathspec, buf); | |||
if (tmp_pathspec == 0) | if (tmp_pathspec == 0) | |||
{ | { | |||
lt_fatal ("Could not follow symlinks for %s", pathspec); | lt_fatal (__FILE__, __LINE__, | |||
"could not follow symlinks for %s", pathspec); | ||||
} | } | |||
return xstrdup (tmp_pathspec); | return xstrdup (tmp_pathspec); | |||
#endif | #endif | |||
} | } | |||
char * | char * | |||
strendzap (char *str, const char *pat) | strendzap (char *str, const char *pat) | |||
{ | { | |||
size_t len, patlen; | size_t len, patlen; | |||
skipping to change at line 3794 | skipping to change at line 4726 | |||
if (patlen <= len) | if (patlen <= len) | |||
{ | { | |||
str += len - patlen; | str += len - patlen; | |||
if (strcmp (str, pat) == 0) | if (strcmp (str, pat) == 0) | |||
*str = '\0'; | *str = '\0'; | |||
} | } | |||
return str; | return str; | |||
} | } | |||
void | ||||
lt_debugprintf (const char *file, int line, const char *fmt, ...) | ||||
{ | ||||
va_list args; | ||||
if (lt_debug) | ||||
{ | ||||
(void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); | ||||
va_start (args, fmt); | ||||
(void) vfprintf (stderr, fmt, args); | ||||
va_end (args); | ||||
} | ||||
} | ||||
static void | static void | |||
lt_error_core (int exit_status, const char *mode, | lt_error_core (int exit_status, const char *file, | |||
int line, const char *mode, | ||||
const char *message, va_list ap) | const char *message, va_list ap) | |||
{ | { | |||
fprintf (stderr, "%s: %s: ", program_name, mode); | fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); | |||
vfprintf (stderr, message, ap); | vfprintf (stderr, message, ap); | |||
fprintf (stderr, ".\n"); | fprintf (stderr, ".\n"); | |||
if (exit_status >= 0) | if (exit_status >= 0) | |||
exit (exit_status); | exit (exit_status); | |||
} | } | |||
void | void | |||
lt_fatal (const char *message, ...) | lt_fatal (const char *file, int line, const char *message, ...) | |||
{ | { | |||
va_list ap; | va_list ap; | |||
va_start (ap, message); | va_start (ap, message); | |||
lt_error_core (EXIT_FAILURE, "FATAL", message, ap); | lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); | |||
va_end (ap); | va_end (ap); | |||
} | } | |||
static const char * | ||||
nonnull (const char *s) | ||||
{ | ||||
return s ? s : "(null)"; | ||||
} | ||||
static const char * | ||||
nonempty (const char *s) | ||||
{ | ||||
return (s && !*s) ? "(empty)" : nonnull (s); | ||||
} | ||||
void | void | |||
lt_setenv (const char *name, const char *value) | lt_setenv (const char *name, const char *value) | |||
{ | { | |||
LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", | lt_debugprintf (__FILE__, __LINE__, | |||
(name ? name : "<NULL>"), | "(lt_setenv) setting '%s' to '%s'\n", | |||
(value ? value : "<NULL>"))); | nonnull (name), nonnull (value)); | |||
{ | { | |||
#ifdef HAVE_SETENV | #ifdef HAVE_SETENV | |||
/* always make a copy, for consistency with !HAVE_SETENV */ | /* always make a copy, for consistency with !HAVE_SETENV */ | |||
char *str = xstrdup (value); | char *str = xstrdup (value); | |||
setenv (name, str, 1); | setenv (name, str, 1); | |||
#else | #else | |||
int len = strlen (name) + 1 + strlen (value) + 1; | int len = strlen (name) + 1 + strlen (value) + 1; | |||
char *str = XMALLOC (char, len); | char *str = XMALLOC (char, len); | |||
sprintf (str, "%s=%s", name, value); | sprintf (str, "%s=%s", name, value); | |||
if (putenv (str) != EXIT_SUCCESS) | if (putenv (str) != EXIT_SUCCESS) | |||
skipping to change at line 3865 | skipping to change at line 4823 | |||
strcpy (new_value + add_len, orig_value); | strcpy (new_value + add_len, orig_value); | |||
} | } | |||
} | } | |||
else | else | |||
{ | { | |||
new_value = xstrdup (add); | new_value = xstrdup (add); | |||
} | } | |||
return new_value; | return new_value; | |||
} | } | |||
int | ||||
lt_split_name_value (const char *arg, char** name, char** value) | ||||
{ | ||||
const char *p; | ||||
int len; | ||||
if (!arg || !*arg) | ||||
return 1; | ||||
p = strchr (arg, (int)'='); | ||||
if (!p) | ||||
return 1; | ||||
*value = xstrdup (++p); | ||||
len = strlen (arg) - strlen (*value); | ||||
*name = XMALLOC (char, len); | ||||
strncpy (*name, arg, len-1); | ||||
(*name)[len - 1] = '\0'; | ||||
return 0; | ||||
} | ||||
void | ||||
lt_opt_process_env_set (const char *arg) | ||||
{ | ||||
char *name = NULL; | ||||
char *value = NULL; | ||||
if (lt_split_name_value (arg, &name, &value) != 0) | ||||
{ | ||||
XFREE (name); | ||||
XFREE (value); | ||||
lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); | ||||
} | ||||
lt_setenv (name, value); | ||||
XFREE (name); | ||||
XFREE (value); | ||||
} | ||||
void | ||||
lt_opt_process_env_prepend (const char *arg) | ||||
{ | ||||
char *name = NULL; | ||||
char *value = NULL; | ||||
char *new_value = NULL; | ||||
if (lt_split_name_value (arg, &name, &value) != 0) | ||||
{ | ||||
XFREE (name); | ||||
XFREE (value); | ||||
lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); | ||||
} | ||||
new_value = lt_extend_str (getenv (name), value, 0); | ||||
lt_setenv (name, new_value); | ||||
XFREE (new_value); | ||||
XFREE (name); | ||||
XFREE (value); | ||||
} | ||||
void | ||||
lt_opt_process_env_append (const char *arg) | ||||
{ | ||||
char *name = NULL; | ||||
char *value = NULL; | ||||
char *new_value = NULL; | ||||
if (lt_split_name_value (arg, &name, &value) != 0) | ||||
{ | ||||
XFREE (name); | ||||
XFREE (value); | ||||
lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); | ||||
} | ||||
new_value = lt_extend_str (getenv (name), value, 1); | ||||
lt_setenv (name, new_value); | ||||
XFREE (new_value); | ||||
XFREE (name); | ||||
XFREE (value); | ||||
} | ||||
void | void | |||
lt_update_exe_path (const char *name, const char *value) | lt_update_exe_path (const char *name, const char *value) | |||
{ | { | |||
LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prependin | lt_debugprintf (__FILE__, __LINE__, | |||
g '%s'\n", | "(lt_update_exe_path) modifying '%s' by prepending '%s'\n" | |||
(name ? name : "<NULL>"), | , | |||
(value ? value : "<NULL>"))); | nonnull (name), nonnull (value)); | |||
if (name && *name && value && *value) | if (name && *name && value && *value) | |||
{ | { | |||
char *new_value = lt_extend_str (getenv (name), value, 0); | char *new_value = lt_extend_str (getenv (name), value, 0); | |||
/* some systems can't cope with a ':'-terminated path #' */ | /* some systems can't cope with a ':'-terminated path #' */ | |||
int len = strlen (new_value); | int len = strlen (new_value); | |||
while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_val ue[len-1])) | while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_val ue[len-1])) | |||
{ | { | |||
new_value[len-1] = '\0'; | new_value[len-1] = '\0'; | |||
} | } | |||
lt_setenv (name, new_value); | lt_setenv (name, new_value); | |||
XFREE (new_value); | XFREE (new_value); | |||
} | } | |||
} | } | |||
void | void | |||
lt_update_lib_path (const char *name, const char *value) | lt_update_lib_path (const char *name, const char *value) | |||
{ | { | |||
LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prependin | lt_debugprintf (__FILE__, __LINE__, | |||
g '%s'\n", | "(lt_update_lib_path) modifying '%s' by prepending '%s'\n" | |||
(name ? name : "<NULL>"), | , | |||
(value ? value : "<NULL>"))); | nonnull (name), nonnull (value)); | |||
if (name && *name && value && *value) | if (name && *name && value && *value) | |||
{ | { | |||
char *new_value = lt_extend_str (getenv (name), value, 0); | char *new_value = lt_extend_str (getenv (name), value, 0); | |||
lt_setenv (name, new_value); | lt_setenv (name, new_value); | |||
XFREE (new_value); | XFREE (new_value); | |||
} | } | |||
} | } | |||
EOF | EOF | |||
case $host_os in | ||||
mingw*) | ||||
cat <<"EOF" | ||||
/* Prepares an argument vector before calling spawn(). | ||||
Note that spawn() does not by itself call the command interpreter | ||||
(getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : | ||||
({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); | ||||
GetVersionEx(&v); | ||||
v.dwPlatformId == VER_PLATFORM_WIN32_NT; | ||||
}) ? "cmd.exe" : "command.com"). | ||||
Instead it simply concatenates the arguments, separated by ' ', and call | ||||
s | ||||
CreateProcess(). We must quote the arguments since Win32 CreateProcess( | ||||
) | ||||
interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in | ||||
a | ||||
special way: | ||||
- Space and tab are interpreted as delimiters. They are not treated as | ||||
delimiters if they are surrounded by double quotes: "...". | ||||
- Unescaped double quotes are removed from the input. Their only effect | ||||
is | ||||
that within double quotes, space and tab are treated like normal | ||||
characters. | ||||
- Backslashes not followed by double quotes are not special. | ||||
- But 2*n+1 backslashes followed by a double quote become | ||||
n backslashes followed by a double quote (n >= 0): | ||||
\" -> " | ||||
\\\" -> \" | ||||
\\\\\" -> \\" | ||||
*/ | ||||
#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" | ||||
#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\01 | ||||
4\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\0 | ||||
37" | ||||
char ** | ||||
prepare_spawn (char **argv) | ||||
{ | ||||
size_t argc; | ||||
char **new_argv; | ||||
size_t i; | ||||
/* Count number of arguments. */ | ||||
for (argc = 0; argv[argc] != NULL; argc++) | ||||
; | ||||
/* Allocate new argument vector. */ | ||||
new_argv = XMALLOC (char *, argc + 1); | ||||
/* Put quoted arguments into the new argument vector. */ | ||||
for (i = 0; i < argc; i++) | ||||
{ | ||||
const char *string = argv[i]; | ||||
if (string[0] == '\0') | ||||
new_argv[i] = xstrdup ("\"\""); | ||||
else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) | ||||
{ | ||||
int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); | ||||
size_t length; | ||||
unsigned int backslashes; | ||||
const char *s; | ||||
char *quoted_string; | ||||
char *p; | ||||
length = 0; | ||||
backslashes = 0; | ||||
if (quote_around) | ||||
length++; | ||||
for (s = string; *s != '\0'; s++) | ||||
{ | ||||
char c = *s; | ||||
if (c == '"') | ||||
length += backslashes + 1; | ||||
length++; | ||||
if (c == '\\') | ||||
backslashes++; | ||||
else | ||||
backslashes = 0; | ||||
} | ||||
if (quote_around) | ||||
length += backslashes + 1; | ||||
quoted_string = XMALLOC (char, length + 1); | ||||
p = quoted_string; | ||||
backslashes = 0; | ||||
if (quote_around) | ||||
*p++ = '"'; | ||||
for (s = string; *s != '\0'; s++) | ||||
{ | ||||
char c = *s; | ||||
if (c == '"') | ||||
{ | ||||
unsigned int j; | ||||
for (j = backslashes + 1; j > 0; j--) | ||||
*p++ = '\\'; | ||||
} | ||||
*p++ = c; | ||||
if (c == '\\') | ||||
backslashes++; | ||||
else | ||||
backslashes = 0; | ||||
} | ||||
if (quote_around) | ||||
{ | ||||
unsigned int j; | ||||
for (j = backslashes; j > 0; j--) | ||||
*p++ = '\\'; | ||||
*p++ = '"'; | ||||
} | ||||
*p = '\0'; | ||||
new_argv[i] = quoted_string; | ||||
} | ||||
else | ||||
new_argv[i] = (char *) string; | ||||
} | ||||
new_argv[argc] = NULL; | ||||
return new_argv; | ||||
} | ||||
EOF | ||||
;; | ||||
esac | ||||
cat <<"EOF" | ||||
void lt_dump_script (FILE* f) | ||||
{ | ||||
EOF | ||||
func_emit_wrapper yes | | ||||
$SED -e 's/\([\\"]\)/\\\1/g' \ | ||||
-e 's/^/ fputs ("/' -e 's/$/\\n", f);/' | ||||
cat <<"EOF" | ||||
} | ||||
EOF | ||||
} | } | |||
# end: func_emit_cwrapperexe_src | # end: func_emit_cwrapperexe_src | |||
# func_win32_import_lib_p ARG | ||||
# True if ARG is an import lib, as indicated by $file_magic_cmd | ||||
func_win32_import_lib_p () | ||||
{ | ||||
$opt_debug | ||||
case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in | ||||
*import*) : ;; | ||||
*) false ;; | ||||
esac | ||||
} | ||||
# func_mode_link arg... | # func_mode_link arg... | |||
func_mode_link () | func_mode_link () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
case $host in | case $host in | |||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | |||
# It is impossible to link a dll without this setting, and | # It is impossible to link a dll without this setting, and | |||
# we shouldn't force the makefile maintainer to figure out | # we shouldn't force the makefile maintainer to figure out | |||
# which system we are compiling for in order to pass an extra | # which system we are compiling for in order to pass an extra | |||
# flag for every libtool invocation. | # flag for every libtool invocation. | |||
skipping to change at line 4032 | skipping to change at line 5049 | |||
deplibs= | deplibs= | |||
old_deplibs= | old_deplibs= | |||
compiler_flags= | compiler_flags= | |||
linker_flags= | linker_flags= | |||
dllsearchpath= | dllsearchpath= | |||
lib_search_path=`pwd` | lib_search_path=`pwd` | |||
inst_prefix_dir= | inst_prefix_dir= | |||
new_inherited_linker_flags= | new_inherited_linker_flags= | |||
avoid_version=no | avoid_version=no | |||
bindir= | ||||
dlfiles= | dlfiles= | |||
dlprefiles= | dlprefiles= | |||
dlself=no | dlself=no | |||
export_dynamic=no | export_dynamic=no | |||
export_symbols= | export_symbols= | |||
export_symbols_regex= | export_symbols_regex= | |||
generated= | generated= | |||
libobjs= | libobjs= | |||
ltlibs= | ltlibs= | |||
module=no | module=no | |||
skipping to change at line 4124 | skipping to change at line 5142 | |||
# If the previous option needs an argument, assign it. | # If the previous option needs an argument, assign it. | |||
if test -n "$prev"; then | if test -n "$prev"; then | |||
case $prev in | case $prev in | |||
output) | output) | |||
func_append compile_command " @OUTPUT@" | func_append compile_command " @OUTPUT@" | |||
func_append finalize_command " @OUTPUT@" | func_append finalize_command " @OUTPUT@" | |||
;; | ;; | |||
esac | esac | |||
case $prev in | case $prev in | |||
bindir) | ||||
bindir="$arg" | ||||
prev= | ||||
continue | ||||
;; | ||||
dlfiles|dlprefiles) | dlfiles|dlprefiles) | |||
if test "$preload" = no; then | if test "$preload" = no; then | |||
# Add the symbol object into the linking commands. | # Add the symbol object into the linking commands. | |||
func_append compile_command " @SYMFILE@" | func_append compile_command " @SYMFILE@" | |||
func_append finalize_command " @SYMFILE@" | func_append finalize_command " @SYMFILE@" | |||
preload=yes | preload=yes | |||
fi | fi | |||
case $arg in | case $arg in | |||
*.la | *.lo) ;; # We handle these cases below. | *.la | *.lo) ;; # We handle these cases below. | |||
force) | force) | |||
skipping to change at line 4155 | skipping to change at line 5178 | |||
dlself=yes | dlself=yes | |||
else | else | |||
dlself=needless | dlself=needless | |||
export_dynamic=yes | export_dynamic=yes | |||
fi | fi | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
*) | *) | |||
if test "$prev" = dlfiles; then | if test "$prev" = dlfiles; then | |||
dlfiles="$dlfiles $arg" | func_append dlfiles " $arg" | |||
else | else | |||
dlprefiles="$dlprefiles $arg" | func_append dlprefiles " $arg" | |||
fi | fi | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
esac | esac | |||
;; | ;; | |||
expsyms) | expsyms) | |||
export_symbols="$arg" | export_symbols="$arg" | |||
test -f "$arg" \ | test -f "$arg" \ | |||
|| func_fatal_error "symbol file \`$arg' does not exist" | || func_fatal_error "symbol file \`$arg' does not exist" | |||
skipping to change at line 4181 | skipping to change at line 5204 | |||
expsyms_regex) | expsyms_regex) | |||
export_symbols_regex="$arg" | export_symbols_regex="$arg" | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
framework) | framework) | |||
case $host in | case $host in | |||
*-*-darwin*) | *-*-darwin*) | |||
case "$deplibs " in | case "$deplibs " in | |||
*" $qarg.ltframework "*) ;; | *" $qarg.ltframework "*) ;; | |||
*) deplibs="$deplibs $qarg.ltframework" # this is fixed late r | *) func_append deplibs " $qarg.ltframework" # this is fixed later | |||
;; | ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
inst_prefix) | inst_prefix) | |||
inst_prefix_dir="$arg" | inst_prefix_dir="$arg" | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
objectlist) | objectlist) | |||
if test -f "$arg"; then | if test -f "$arg"; then | |||
save_arg=$arg | save_arg=$arg | |||
moreargs= | moreargs= | |||
for fil in `cat "$save_arg"` | for fil in `cat "$save_arg"` | |||
do | do | |||
# moreargs="$moreargs $fil" | # func_append moreargs " $fil" | |||
arg=$fil | arg=$fil | |||
# A libtool-controlled object. | # A libtool-controlled object. | |||
# Check to see that this really is a libtool object. | # Check to see that this really is a libtool object. | |||
if func_lalib_unsafe_p "$arg"; then | if func_lalib_unsafe_p "$arg"; then | |||
pic_object= | pic_object= | |||
non_pic_object= | non_pic_object= | |||
# Read the .lo file | # Read the .lo file | |||
func_source "$arg" | func_source "$arg" | |||
skipping to change at line 4229 | skipping to change at line 5252 | |||
# Extract subdirectory from the argument. | # Extract subdirectory from the argument. | |||
func_dirname "$arg" "/" "" | func_dirname "$arg" "/" "" | |||
xdir="$func_dirname_result" | xdir="$func_dirname_result" | |||
if test "$pic_object" != none; then | if test "$pic_object" != none; then | |||
# Prepend the subdirectory the object is found in. | # Prepend the subdirectory the object is found in. | |||
pic_object="$xdir$pic_object" | pic_object="$xdir$pic_object" | |||
if test "$prev" = dlfiles; then | if test "$prev" = dlfiles; then | |||
if test "$build_libtool_libs" = yes && test "$dlopen_sup port" = yes; then | if test "$build_libtool_libs" = yes && test "$dlopen_sup port" = yes; then | |||
dlfiles="$dlfiles $pic_object" | func_append dlfiles " $pic_object" | |||
prev= | prev= | |||
continue | continue | |||
else | else | |||
# If libtool objects are unsupported, then we need to preload. | # If libtool objects are unsupported, then we need to preload. | |||
prev=dlprefiles | prev=dlprefiles | |||
fi | fi | |||
fi | fi | |||
# CHECK ME: I think I busted this. -Ossama | # CHECK ME: I think I busted this. -Ossama | |||
if test "$prev" = dlprefiles; then | if test "$prev" = dlprefiles; then | |||
# Preload the old-style object. | # Preload the old-style object. | |||
dlprefiles="$dlprefiles $pic_object" | func_append dlprefiles " $pic_object" | |||
prev= | prev= | |||
fi | fi | |||
# A PIC object. | # A PIC object. | |||
func_append libobjs " $pic_object" | func_append libobjs " $pic_object" | |||
arg="$pic_object" | arg="$pic_object" | |||
fi | fi | |||
# Non-PIC object. | # Non-PIC object. | |||
if test "$non_pic_object" != none; then | if test "$non_pic_object" != none; then | |||
skipping to change at line 4311 | skipping to change at line 5334 | |||
# We need an absolute path. | # We need an absolute path. | |||
case $arg in | case $arg in | |||
[\\/]* | [A-Za-z]:[\\/]*) ;; | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
*) | *) | |||
func_fatal_error "only absolute run-paths are allowed" | func_fatal_error "only absolute run-paths are allowed" | |||
;; | ;; | |||
esac | esac | |||
if test "$prev" = rpath; then | if test "$prev" = rpath; then | |||
case "$rpath " in | case "$rpath " in | |||
*" $arg "*) ;; | *" $arg "*) ;; | |||
*) rpath="$rpath $arg" ;; | *) func_append rpath " $arg" ;; | |||
esac | esac | |||
else | else | |||
case "$xrpath " in | case "$xrpath " in | |||
*" $arg "*) ;; | *" $arg "*) ;; | |||
*) xrpath="$xrpath $arg" ;; | *) func_append xrpath " $arg" ;; | |||
esac | esac | |||
fi | fi | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
shrext) | shrext) | |||
shrext_cmds="$arg" | shrext_cmds="$arg" | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
weak) | weak) | |||
weak_libs="$weak_libs $arg" | func_append weak_libs " $arg" | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
xcclinker) | xcclinker) | |||
linker_flags="$linker_flags $qarg" | func_append linker_flags " $qarg" | |||
compiler_flags="$compiler_flags $qarg" | func_append compiler_flags " $qarg" | |||
prev= | prev= | |||
func_append compile_command " $qarg" | func_append compile_command " $qarg" | |||
func_append finalize_command " $qarg" | func_append finalize_command " $qarg" | |||
continue | continue | |||
;; | ;; | |||
xcompiler) | xcompiler) | |||
compiler_flags="$compiler_flags $qarg" | func_append compiler_flags " $qarg" | |||
prev= | prev= | |||
func_append compile_command " $qarg" | func_append compile_command " $qarg" | |||
func_append finalize_command " $qarg" | func_append finalize_command " $qarg" | |||
continue | continue | |||
;; | ;; | |||
xlinker) | xlinker) | |||
linker_flags="$linker_flags $qarg" | func_append linker_flags " $qarg" | |||
compiler_flags="$compiler_flags $wl$qarg" | func_append compiler_flags " $wl$qarg" | |||
prev= | prev= | |||
func_append compile_command " $wl$qarg" | func_append compile_command " $wl$qarg" | |||
func_append finalize_command " $wl$qarg" | func_append finalize_command " $wl$qarg" | |||
continue | continue | |||
;; | ;; | |||
*) | *) | |||
eval "$prev=\"\$arg\"" | eval "$prev=\"\$arg\"" | |||
prev= | prev= | |||
continue | continue | |||
;; | ;; | |||
skipping to change at line 4385 | skipping to change at line 5408 | |||
-allow-undefined) | -allow-undefined) | |||
# FIXME: remove this flag sometime in the future. | # FIXME: remove this flag sometime in the future. | |||
func_fatal_error "\`-allow-undefined' must not be used because it is the default" | func_fatal_error "\`-allow-undefined' must not be used because it is the default" | |||
;; | ;; | |||
-avoid-version) | -avoid-version) | |||
avoid_version=yes | avoid_version=yes | |||
continue | continue | |||
;; | ;; | |||
-bindir) | ||||
prev=bindir | ||||
continue | ||||
;; | ||||
-dlopen) | -dlopen) | |||
prev=dlfiles | prev=dlfiles | |||
continue | continue | |||
;; | ;; | |||
-dlpreopen) | -dlpreopen) | |||
prev=dlprefiles | prev=dlprefiles | |||
continue | continue | |||
;; | ;; | |||
skipping to change at line 4435 | skipping to change at line 5463 | |||
case $with_gcc/$host in | case $with_gcc/$host in | |||
no/*-*-irix* | /*-*-irix*) | no/*-*-irix* | /*-*-irix*) | |||
func_append compile_command " $arg" | func_append compile_command " $arg" | |||
func_append finalize_command " $arg" | func_append finalize_command " $arg" | |||
;; | ;; | |||
esac | esac | |||
continue | continue | |||
;; | ;; | |||
-L*) | -L*) | |||
func_stripname '-L' '' "$arg" | func_stripname "-L" '' "$arg" | |||
dir=$func_stripname_result | if test -z "$func_stripname_result"; then | |||
if test -z "$dir"; then | ||||
if test "$#" -gt 0; then | if test "$#" -gt 0; then | |||
func_fatal_error "require no space between \`-L' and \`$1'" | func_fatal_error "require no space between \`-L' and \`$1'" | |||
else | else | |||
func_fatal_error "need path for \`-L' option" | func_fatal_error "need path for \`-L' option" | |||
fi | fi | |||
fi | fi | |||
func_resolve_sysroot "$func_stripname_result" | ||||
dir=$func_resolve_sysroot_result | ||||
# We need an absolute path. | # We need an absolute path. | |||
case $dir in | case $dir in | |||
[\\/]* | [A-Za-z]:[\\/]*) ;; | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
*) | *) | |||
absdir=`cd "$dir" && pwd` | absdir=`cd "$dir" && pwd` | |||
test -z "$absdir" && \ | test -z "$absdir" && \ | |||
func_fatal_error "cannot determine absolute directory name of \` $dir'" | func_fatal_error "cannot determine absolute directory name of \` $dir'" | |||
dir="$absdir" | dir="$absdir" | |||
;; | ;; | |||
esac | esac | |||
case "$deplibs " in | case "$deplibs " in | |||
*" -L$dir "*) ;; | *" -L$dir "* | *" $arg "*) | |||
# Will only happen for absolute or sysroot arguments | ||||
;; | ||||
*) | *) | |||
deplibs="$deplibs -L$dir" | # Preserve sysroot, but never include relative directories | |||
lib_search_path="$lib_search_path $dir" | case $dir in | |||
[\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; | ||||
*) func_append deplibs " -L$dir" ;; | ||||
esac | ||||
func_append lib_search_path " $dir" | ||||
;; | ;; | |||
esac | esac | |||
case $host in | case $host in | |||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | |||
testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` | testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` | |||
case :$dllsearchpath: in | case :$dllsearchpath: in | |||
*":$dir:"*) ;; | *":$dir:"*) ;; | |||
::) dllsearchpath=$dir;; | ::) dllsearchpath=$dir;; | |||
*) dllsearchpath="$dllsearchpath:$dir";; | *) func_append dllsearchpath ":$dir";; | |||
esac | esac | |||
case :$dllsearchpath: in | case :$dllsearchpath: in | |||
*":$testbindir:"*) ;; | *":$testbindir:"*) ;; | |||
::) dllsearchpath=$testbindir;; | ::) dllsearchpath=$testbindir;; | |||
*) dllsearchpath="$dllsearchpath:$testbindir";; | *) func_append dllsearchpath ":$testbindir";; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
continue | continue | |||
;; | ;; | |||
-l*) | -l*) | |||
if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then | if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then | |||
case $host in | case $host in | |||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*- haiku*) | |||
# These systems don't actually have a C or math library (as such ) | # These systems don't actually have a C or math library (as such ) | |||
continue | continue | |||
;; | ;; | |||
*-*-os2*) | *-*-os2*) | |||
# These systems don't actually have a C library (as such) | # These systems don't actually have a C library (as such) | |||
test "X$arg" = "X-lc" && continue | test "X$arg" = "X-lc" && continue | |||
;; | ;; | |||
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |||
# Do not include libc due to us having libc/libc_r. | # Do not include libc due to us having libc/libc_r. | |||
test "X$arg" = "X-lc" && continue | test "X$arg" = "X-lc" && continue | |||
;; | ;; | |||
*-*-rhapsody* | *-*-darwin1.[012]) | *-*-rhapsody* | *-*-darwin1.[012]) | |||
# Rhapsody C and math libraries are in the System framework | # Rhapsody C and math libraries are in the System framework | |||
deplibs="$deplibs System.ltframework" | func_append deplibs " System.ltframework" | |||
continue | continue | |||
;; | ;; | |||
*-*-sco3.2v5* | *-*-sco5v6*) | *-*-sco3.2v5* | *-*-sco5v6*) | |||
# Causes problems with __ctype | # Causes problems with __ctype | |||
test "X$arg" = "X-lc" && continue | test "X$arg" = "X-lc" && continue | |||
;; | ;; | |||
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) | *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) | |||
# Compiler inserts libc in the correct place for threads to work | # Compiler inserts libc in the correct place for threads to work | |||
test "X$arg" = "X-lc" && continue | test "X$arg" = "X-lc" && continue | |||
;; | ;; | |||
esac | esac | |||
elif test "X$arg" = "X-lc_r"; then | elif test "X$arg" = "X-lc_r"; then | |||
case $host in | case $host in | |||
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |||
# Do not include libc_r directly, use -pthread flag. | # Do not include libc_r directly, use -pthread flag. | |||
continue | continue | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
deplibs="$deplibs $arg" | func_append deplibs " $arg" | |||
continue | continue | |||
;; | ;; | |||
-module) | -module) | |||
module=yes | module=yes | |||
continue | continue | |||
;; | ;; | |||
# Tru64 UNIX uses -model [arg] to determine the layout of C++ | # Tru64 UNIX uses -model [arg] to determine the layout of C++ | |||
# classes, name mangling, and exception handling. | # classes, name mangling, and exception handling. | |||
# Darwin uses the -arch flag to determine output architecture. | # Darwin uses the -arch flag to determine output architecture. | |||
-model|-arch|-isysroot) | -model|-arch|-isysroot|--sysroot) | |||
compiler_flags="$compiler_flags $arg" | func_append compiler_flags " $arg" | |||
func_append compile_command " $arg" | func_append compile_command " $arg" | |||
func_append finalize_command " $arg" | func_append finalize_command " $arg" | |||
prev=xcompiler | prev=xcompiler | |||
continue | continue | |||
;; | ;; | |||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-thr eads) | -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-thr eads) | |||
compiler_flags="$compiler_flags $arg" | func_append compiler_flags " $arg" | |||
func_append compile_command " $arg" | func_append compile_command " $arg" | |||
func_append finalize_command " $arg" | func_append finalize_command " $arg" | |||
case "$new_inherited_linker_flags " in | case "$new_inherited_linker_flags " in | |||
*" $arg "*) ;; | *" $arg "*) ;; | |||
* ) new_inherited_linker_flags="$new_inherited_linker_flags $arg " ;; | * ) func_append new_inherited_linker_flags " $arg" ;; | |||
esac | esac | |||
continue | continue | |||
;; | ;; | |||
-multi_module) | -multi_module) | |||
single_module="${wl}-multi_module" | single_module="${wl}-multi_module" | |||
continue | continue | |||
;; | ;; | |||
-no-fast-install) | -no-fast-install) | |||
skipping to change at line 4609 | skipping to change at line 5644 | |||
prev=xrpath | prev=xrpath | |||
continue | continue | |||
;; | ;; | |||
-R*) | -R*) | |||
func_stripname '-R' '' "$arg" | func_stripname '-R' '' "$arg" | |||
dir=$func_stripname_result | dir=$func_stripname_result | |||
# We need an absolute path. | # We need an absolute path. | |||
case $dir in | case $dir in | |||
[\\/]* | [A-Za-z]:[\\/]*) ;; | [\\/]* | [A-Za-z]:[\\/]*) ;; | |||
=*) | ||||
func_stripname '=' '' "$dir" | ||||
dir=$lt_sysroot$func_stripname_result | ||||
;; | ||||
*) | *) | |||
func_fatal_error "only absolute run-paths are allowed" | func_fatal_error "only absolute run-paths are allowed" | |||
;; | ;; | |||
esac | esac | |||
case "$xrpath " in | case "$xrpath " in | |||
*" $dir "*) ;; | *" $dir "*) ;; | |||
*) xrpath="$xrpath $dir" ;; | *) func_append xrpath " $dir" ;; | |||
esac | esac | |||
continue | continue | |||
;; | ;; | |||
-shared) | -shared) | |||
# The effects of -shared are defined in a previous loop. | # The effects of -shared are defined in a previous loop. | |||
continue | continue | |||
;; | ;; | |||
-shrext) | -shrext) | |||
skipping to change at line 4668 | skipping to change at line 5707 | |||
;; | ;; | |||
-Wc,*) | -Wc,*) | |||
func_stripname '-Wc,' '' "$arg" | func_stripname '-Wc,' '' "$arg" | |||
args=$func_stripname_result | args=$func_stripname_result | |||
arg= | arg= | |||
save_ifs="$IFS"; IFS=',' | save_ifs="$IFS"; IFS=',' | |||
for flag in $args; do | for flag in $args; do | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
func_quote_for_eval "$flag" | func_quote_for_eval "$flag" | |||
arg="$arg $wl$func_quote_for_eval_result" | func_append arg " $func_quote_for_eval_result" | |||
compiler_flags="$compiler_flags $func_quote_for_eval_result" | func_append compiler_flags " $func_quote_for_eval_result" | |||
done | done | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
func_stripname ' ' '' "$arg" | func_stripname ' ' '' "$arg" | |||
arg=$func_stripname_result | arg=$func_stripname_result | |||
;; | ;; | |||
-Wl,*) | -Wl,*) | |||
func_stripname '-Wl,' '' "$arg" | func_stripname '-Wl,' '' "$arg" | |||
args=$func_stripname_result | args=$func_stripname_result | |||
arg= | arg= | |||
save_ifs="$IFS"; IFS=',' | save_ifs="$IFS"; IFS=',' | |||
for flag in $args; do | for flag in $args; do | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
func_quote_for_eval "$flag" | func_quote_for_eval "$flag" | |||
arg="$arg $wl$func_quote_for_eval_result" | func_append arg " $wl$func_quote_for_eval_result" | |||
compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" | func_append compiler_flags " $wl$func_quote_for_eval_result" | |||
linker_flags="$linker_flags $func_quote_for_eval_result" | func_append linker_flags " $func_quote_for_eval_result" | |||
done | done | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
func_stripname ' ' '' "$arg" | func_stripname ' ' '' "$arg" | |||
arg=$func_stripname_result | arg=$func_stripname_result | |||
;; | ;; | |||
-Xcompiler) | -Xcompiler) | |||
prev=xcompiler | prev=xcompiler | |||
continue | continue | |||
;; | ;; | |||
skipping to change at line 4714 | skipping to change at line 5753 | |||
prev=xcclinker | prev=xcclinker | |||
continue | continue | |||
;; | ;; | |||
# -msg_* for osf cc | # -msg_* for osf cc | |||
-msg_*) | -msg_*) | |||
func_quote_for_eval "$arg" | func_quote_for_eval "$arg" | |||
arg="$func_quote_for_eval_result" | arg="$func_quote_for_eval_result" | |||
;; | ;; | |||
# -64, -mips[0-9] enable 64-bit mode on the SGI compiler | # Flags to be passed through unchanged, with rationale: | |||
# -r[0-9][0-9]* specifies the processor on the SGI compiler | # -64, -mips[0-9] enable 64-bit mode for the SGI compiler | |||
# -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler | # -r[0-9][0-9]* specify processor for the SGI compiler | |||
# +DA*, +DD* enable 64-bit mode on the HP compiler | # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler | |||
# -q* pass through compiler args for the IBM compiler | # +DA*, +DD* enable 64-bit mode for the HP compiler | |||
# -m*, -t[45]*, -txscale* pass through architecture-specific | # -q* compiler args for the IBM compiler | |||
# compiler args for GCC | # -m*, -t[45]*, -txscale* architecture-specific flags for GCC | |||
# -F/path gives path to uninstalled frameworks, gcc on darwin | # -F/path path to uninstalled frameworks, gcc on darwin | |||
# -p, -pg, --coverage, -fprofile-* pass through profiling flag for GC | # -p, -pg, --coverage, -fprofile-* profiling flags for GCC | |||
C | # @file GCC response files | |||
# @file GCC response files | # -tp=* Portland pgcc target processor selection | |||
# --sysroot=* for sysroot support | ||||
# -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimizati | ||||
on | ||||
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ | -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ | |||
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) | -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroo | |||
t=*| \ | ||||
-O*|-flto*|-fwhopr*|-fuse-linker-plugin) | ||||
func_quote_for_eval "$arg" | func_quote_for_eval "$arg" | |||
arg="$func_quote_for_eval_result" | arg="$func_quote_for_eval_result" | |||
func_append compile_command " $arg" | func_append compile_command " $arg" | |||
func_append finalize_command " $arg" | func_append finalize_command " $arg" | |||
compiler_flags="$compiler_flags $arg" | func_append compiler_flags " $arg" | |||
continue | continue | |||
;; | ;; | |||
# Some other compiler flag. | # Some other compiler flag. | |||
-* | +*) | -* | +*) | |||
func_quote_for_eval "$arg" | func_quote_for_eval "$arg" | |||
arg="$func_quote_for_eval_result" | arg="$func_quote_for_eval_result" | |||
;; | ;; | |||
*.$objext) | *.$objext) | |||
# A standard object. | # A standard object. | |||
objs="$objs $arg" | func_append objs " $arg" | |||
;; | ;; | |||
*.lo) | *.lo) | |||
# A libtool-controlled object. | # A libtool-controlled object. | |||
# Check to see that this really is a libtool object. | # Check to see that this really is a libtool object. | |||
if func_lalib_unsafe_p "$arg"; then | if func_lalib_unsafe_p "$arg"; then | |||
pic_object= | pic_object= | |||
non_pic_object= | non_pic_object= | |||
skipping to change at line 4773 | skipping to change at line 5816 | |||
# Extract subdirectory from the argument. | # Extract subdirectory from the argument. | |||
func_dirname "$arg" "/" "" | func_dirname "$arg" "/" "" | |||
xdir="$func_dirname_result" | xdir="$func_dirname_result" | |||
if test "$pic_object" != none; then | if test "$pic_object" != none; then | |||
# Prepend the subdirectory the object is found in. | # Prepend the subdirectory the object is found in. | |||
pic_object="$xdir$pic_object" | pic_object="$xdir$pic_object" | |||
if test "$prev" = dlfiles; then | if test "$prev" = dlfiles; then | |||
if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then | if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then | |||
dlfiles="$dlfiles $pic_object" | func_append dlfiles " $pic_object" | |||
prev= | prev= | |||
continue | continue | |||
else | else | |||
# If libtool objects are unsupported, then we need to preloa d. | # If libtool objects are unsupported, then we need to preloa d. | |||
prev=dlprefiles | prev=dlprefiles | |||
fi | fi | |||
fi | fi | |||
# CHECK ME: I think I busted this. -Ossama | # CHECK ME: I think I busted this. -Ossama | |||
if test "$prev" = dlprefiles; then | if test "$prev" = dlprefiles; then | |||
# Preload the old-style object. | # Preload the old-style object. | |||
dlprefiles="$dlprefiles $pic_object" | func_append dlprefiles " $pic_object" | |||
prev= | prev= | |||
fi | fi | |||
# A PIC object. | # A PIC object. | |||
func_append libobjs " $pic_object" | func_append libobjs " $pic_object" | |||
arg="$pic_object" | arg="$pic_object" | |||
fi | fi | |||
# Non-PIC object. | # Non-PIC object. | |||
if test "$non_pic_object" != none; then | if test "$non_pic_object" != none; then | |||
skipping to change at line 4830 | skipping to change at line 5873 | |||
func_append libobjs " $pic_object" | func_append libobjs " $pic_object" | |||
func_append non_pic_objects " $non_pic_object" | func_append non_pic_objects " $non_pic_object" | |||
else | else | |||
func_fatal_error "\`$arg' is not a valid libtool object" | func_fatal_error "\`$arg' is not a valid libtool object" | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*.$libext) | *.$libext) | |||
# An archive. | # An archive. | |||
deplibs="$deplibs $arg" | func_append deplibs " $arg" | |||
old_deplibs="$old_deplibs $arg" | func_append old_deplibs " $arg" | |||
continue | continue | |||
;; | ;; | |||
*.la) | *.la) | |||
# A libtool-controlled library. | # A libtool-controlled library. | |||
func_resolve_sysroot "$arg" | ||||
if test "$prev" = dlfiles; then | if test "$prev" = dlfiles; then | |||
# This library was specified with -dlopen. | # This library was specified with -dlopen. | |||
dlfiles="$dlfiles $arg" | func_append dlfiles " $func_resolve_sysroot_result" | |||
prev= | prev= | |||
elif test "$prev" = dlprefiles; then | elif test "$prev" = dlprefiles; then | |||
# The library was specified with -dlpreopen. | # The library was specified with -dlpreopen. | |||
dlprefiles="$dlprefiles $arg" | func_append dlprefiles " $func_resolve_sysroot_result" | |||
prev= | prev= | |||
else | else | |||
deplibs="$deplibs $arg" | func_append deplibs " $func_resolve_sysroot_result" | |||
fi | fi | |||
continue | continue | |||
;; | ;; | |||
# Some other compiler argument. | # Some other compiler argument. | |||
*) | *) | |||
# Unknown arguments in both finalize_command and compile_command nee d | # Unknown arguments in both finalize_command and compile_command nee d | |||
# to be aesthetically quoted because they are evaled later. | # to be aesthetically quoted because they are evaled later. | |||
func_quote_for_eval "$arg" | func_quote_for_eval "$arg" | |||
arg="$func_quote_for_eval_result" | arg="$func_quote_for_eval_result" | |||
skipping to change at line 4885 | skipping to change at line 5929 | |||
fi | fi | |||
oldlibs= | oldlibs= | |||
# calculate the name of the file, without its directory | # calculate the name of the file, without its directory | |||
func_basename "$output" | func_basename "$output" | |||
outputname="$func_basename_result" | outputname="$func_basename_result" | |||
libobjs_save="$libobjs" | libobjs_save="$libobjs" | |||
if test -n "$shlibpath_var"; then | if test -n "$shlibpath_var"; then | |||
# get the directories listed in $shlibpath_var | # get the directories listed in $shlibpath_var | |||
eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` | eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/: / /g\'\` | |||
else | else | |||
shlib_search_path= | shlib_search_path= | |||
fi | fi | |||
eval sys_lib_search_path=\"$sys_lib_search_path_spec\" | eval sys_lib_search_path=\"$sys_lib_search_path_spec\" | |||
eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" | eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" | |||
func_dirname "$output" "/" "" | func_dirname "$output" "/" "" | |||
output_objdir="$func_dirname_result$objdir" | output_objdir="$func_dirname_result$objdir" | |||
func_to_tool_file "$output_objdir/" | ||||
tool_output_objdir=$func_to_tool_file_result | ||||
# Create the object directory. | # Create the object directory. | |||
func_mkdir_p "$output_objdir" | func_mkdir_p "$output_objdir" | |||
# Determine the type of output | # Determine the type of output | |||
case $output in | case $output in | |||
"") | "") | |||
func_fatal_help "you must specify an output file" | func_fatal_help "you must specify an output file" | |||
;; | ;; | |||
*.$libext) linkmode=oldlib ;; | *.$libext) linkmode=oldlib ;; | |||
*.lo | *.$objext) linkmode=obj ;; | *.lo | *.$objext) linkmode=obj ;; | |||
*.la) linkmode=lib ;; | *.la) linkmode=lib ;; | |||
*) linkmode=prog ;; # Anything else should be a program. | *) linkmode=prog ;; # Anything else should be a program. | |||
esac | esac | |||
specialdeplibs= | specialdeplibs= | |||
libs= | libs= | |||
# Find all interdependent deplibs by searching for libraries | # Find all interdependent deplibs by searching for libraries | |||
# that are linked more than once (e.g. -la -lb -la) | # that are linked more than once (e.g. -la -lb -la) | |||
for deplib in $deplibs; do | for deplib in $deplibs; do | |||
if $opt_duplicate_deps ; then | if $opt_preserve_dup_deps ; then | |||
case "$libs " in | case "$libs " in | |||
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | *" $deplib "*) func_append specialdeplibs " $deplib" ;; | |||
esac | esac | |||
fi | fi | |||
libs="$libs $deplib" | func_append libs " $deplib" | |||
done | done | |||
if test "$linkmode" = lib; then | if test "$linkmode" = lib; then | |||
libs="$predeps $libs $compiler_lib_search_path $postdeps" | libs="$predeps $libs $compiler_lib_search_path $postdeps" | |||
# Compute libraries that are listed more than once in $predeps | # Compute libraries that are listed more than once in $predeps | |||
# $postdeps and mark them as special (i.e., whose duplicates are | # $postdeps and mark them as special (i.e., whose duplicates are | |||
# not to be eliminated). | # not to be eliminated). | |||
pre_post_deps= | pre_post_deps= | |||
if $opt_duplicate_compiler_generated_deps; then | if $opt_duplicate_compiler_generated_deps; then | |||
for pre_post_dep in $predeps $postdeps; do | for pre_post_dep in $predeps $postdeps; do | |||
case "$pre_post_deps " in | case "$pre_post_deps " in | |||
*" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_dep s" ;; | *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; | |||
esac | esac | |||
pre_post_deps="$pre_post_deps $pre_post_dep" | func_append pre_post_deps " $pre_post_dep" | |||
done | done | |||
fi | fi | |||
pre_post_deps= | pre_post_deps= | |||
fi | fi | |||
deplibs= | deplibs= | |||
newdependency_libs= | newdependency_libs= | |||
newlib_search_path= | newlib_search_path= | |||
need_relink=no # whether we're linking any uninstalled libtool librarie s | need_relink=no # whether we're linking any uninstalled libtool librarie s | |||
notinst_deplibs= # not-installed libtool libraries | notinst_deplibs= # not-installed libtool libraries | |||
skipping to change at line 5001 | skipping to change at line 6047 | |||
dlopen) libs="$dlfiles" ;; | dlopen) libs="$dlfiles" ;; | |||
dlpreopen) libs="$dlprefiles" ;; | dlpreopen) libs="$dlprefiles" ;; | |||
link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; | link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; | |||
esac | esac | |||
fi | fi | |||
if test "$linkmode,$pass" = "lib,dlpreopen"; then | if test "$linkmode,$pass" = "lib,dlpreopen"; then | |||
# Collect and forward deplibs of preopened libtool libs | # Collect and forward deplibs of preopened libtool libs | |||
for lib in $dlprefiles; do | for lib in $dlprefiles; do | |||
# Ignore non-libtool-libs | # Ignore non-libtool-libs | |||
dependency_libs= | dependency_libs= | |||
func_resolve_sysroot "$lib" | ||||
case $lib in | case $lib in | |||
*.la) func_source "$lib" ;; | *.la) func_source "$func_resolve_sysroot_result" ;; | |||
esac | esac | |||
# Collect preopened libtool deplibs, except any this library | # Collect preopened libtool deplibs, except any this library | |||
# has declared as weak libs | # has declared as weak libs | |||
for deplib in $dependency_libs; do | for deplib in $dependency_libs; do | |||
deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` | func_basename "$deplib" | |||
deplib_base=$func_basename_result | ||||
case " $weak_libs " in | case " $weak_libs " in | |||
*" $deplib_base "*) ;; | *" $deplib_base "*) ;; | |||
*) deplibs="$deplibs $deplib" ;; | *) func_append deplibs " $deplib" ;; | |||
esac | esac | |||
done | done | |||
done | done | |||
libs="$dlprefiles" | libs="$dlprefiles" | |||
fi | fi | |||
if test "$pass" = dlopen; then | if test "$pass" = dlopen; then | |||
# Collect dlpreopened libraries | # Collect dlpreopened libraries | |||
save_deplibs="$deplibs" | save_deplibs="$deplibs" | |||
deplibs= | deplibs= | |||
fi | fi | |||
for deplib in $libs; do | for deplib in $libs; do | |||
lib= | lib= | |||
found=no | found=no | |||
case $deplib in | case $deplib in | |||
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-th reads) | -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-th reads) | |||
if test "$linkmode,$pass" = "prog,link"; then | if test "$linkmode,$pass" = "prog,link"; then | |||
compile_deplibs="$deplib $compile_deplibs" | compile_deplibs="$deplib $compile_deplibs" | |||
finalize_deplibs="$deplib $finalize_deplibs" | finalize_deplibs="$deplib $finalize_deplibs" | |||
else | else | |||
compiler_flags="$compiler_flags $deplib" | func_append compiler_flags " $deplib" | |||
if test "$linkmode" = lib ; then | if test "$linkmode" = lib ; then | |||
case "$new_inherited_linker_flags " in | case "$new_inherited_linker_flags " in | |||
*" $deplib "*) ;; | *" $deplib "*) ;; | |||
* ) new_inherited_linker_flags="$new_inherited_linker_fl ags $deplib" ;; | * ) func_append new_inherited_linker_flags " $deplib" ;; | |||
esac | esac | |||
fi | fi | |||
fi | fi | |||
continue | continue | |||
;; | ;; | |||
-l*) | -l*) | |||
if test "$linkmode" != lib && test "$linkmode" != prog; then | if test "$linkmode" != lib && test "$linkmode" != prog; then | |||
func_warning "\`-l' is ignored for archives/objects" | func_warning "\`-l' is ignored for archives/objects" | |||
continue | continue | |||
fi | fi | |||
skipping to change at line 5121 | skipping to change at line 6169 | |||
;; # -l | ;; # -l | |||
*.ltframework) | *.ltframework) | |||
if test "$linkmode,$pass" = "prog,link"; then | if test "$linkmode,$pass" = "prog,link"; then | |||
compile_deplibs="$deplib $compile_deplibs" | compile_deplibs="$deplib $compile_deplibs" | |||
finalize_deplibs="$deplib $finalize_deplibs" | finalize_deplibs="$deplib $finalize_deplibs" | |||
else | else | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
if test "$linkmode" = lib ; then | if test "$linkmode" = lib ; then | |||
case "$new_inherited_linker_flags " in | case "$new_inherited_linker_flags " in | |||
*" $deplib "*) ;; | *" $deplib "*) ;; | |||
* ) new_inherited_linker_flags="$new_inherited_linker_fl ags $deplib" ;; | * ) func_append new_inherited_linker_flags " $deplib" ;; | |||
esac | esac | |||
fi | fi | |||
fi | fi | |||
continue | continue | |||
;; | ;; | |||
-L*) | -L*) | |||
case $linkmode in | case $linkmode in | |||
lib) | lib) | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
test "$pass" = conv && continue | test "$pass" = conv && continue | |||
newdependency_libs="$deplib $newdependency_libs" | newdependency_libs="$deplib $newdependency_libs" | |||
func_stripname '-L' '' "$deplib" | func_stripname '-L' '' "$deplib" | |||
newlib_search_path="$newlib_search_path $func_stripname_result" | func_resolve_sysroot "$func_stripname_result" | |||
func_append newlib_search_path " $func_resolve_sysroot_result" | ||||
;; | ;; | |||
prog) | prog) | |||
if test "$pass" = conv; then | if test "$pass" = conv; then | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
continue | continue | |||
fi | fi | |||
if test "$pass" = scan; then | if test "$pass" = scan; then | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
else | else | |||
compile_deplibs="$deplib $compile_deplibs" | compile_deplibs="$deplib $compile_deplibs" | |||
finalize_deplibs="$deplib $finalize_deplibs" | finalize_deplibs="$deplib $finalize_deplibs" | |||
fi | fi | |||
func_stripname '-L' '' "$deplib" | func_stripname '-L' '' "$deplib" | |||
newlib_search_path="$newlib_search_path $func_stripname_result" | func_resolve_sysroot "$func_stripname_result" | |||
func_append newlib_search_path " $func_resolve_sysroot_result" | ||||
;; | ;; | |||
*) | *) | |||
func_warning "\`-L' is ignored for archives/objects" | func_warning "\`-L' is ignored for archives/objects" | |||
;; | ;; | |||
esac # linkmode | esac # linkmode | |||
continue | continue | |||
;; # -L | ;; # -L | |||
-R*) | -R*) | |||
if test "$pass" = link; then | if test "$pass" = link; then | |||
func_stripname '-R' '' "$deplib" | func_stripname '-R' '' "$deplib" | |||
dir=$func_stripname_result | func_resolve_sysroot "$func_stripname_result" | |||
dir=$func_resolve_sysroot_result | ||||
# Make sure the xrpath contains only unique directories. | # Make sure the xrpath contains only unique directories. | |||
case "$xrpath " in | case "$xrpath " in | |||
*" $dir "*) ;; | *" $dir "*) ;; | |||
*) xrpath="$xrpath $dir" ;; | *) func_append xrpath " $dir" ;; | |||
esac | esac | |||
fi | fi | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
continue | continue | |||
;; | ;; | |||
*.la) lib="$deplib" ;; | *.la) | |||
func_resolve_sysroot "$deplib" | ||||
lib=$func_resolve_sysroot_result | ||||
;; | ||||
*.$libext) | *.$libext) | |||
if test "$pass" = conv; then | if test "$pass" = conv; then | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
continue | continue | |||
fi | fi | |||
case $linkmode in | case $linkmode in | |||
lib) | lib) | |||
# Linking convenience modules into shared libraries is allowed, | # Linking convenience modules into shared libraries is allowed, | |||
# but linking other static libraries is non-portable. | # but linking other static libraries is non-portable. | |||
case " $dlpreconveniencelibs " in | case " $dlpreconveniencelibs " in | |||
*" $deplib "*) ;; | *" $deplib "*) ;; | |||
*) | *) | |||
valid_a_lib=no | valid_a_lib=no | |||
case $deplibs_check_method in | case $deplibs_check_method in | |||
match_pattern*) | match_pattern*) | |||
set dummy $deplibs_check_method; shift | set dummy $deplibs_check_method; shift | |||
match_pattern_regex=`expr "$deplibs_check_method" : "$1 \( .*\)"` | match_pattern_regex=`expr "$deplibs_check_method" : "$1 \( .*\)"` | |||
if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | |||
| $EGREP "$match_pattern_regex" > /dev/null; then | | $EGREP "$match_pattern_regex" > /dev/null; then | |||
valid_a_lib=yes | valid_a_lib=yes | |||
fi | fi | |||
;; | ;; | |||
pass_all) | pass_all) | |||
valid_a_lib=yes | valid_a_lib=yes | |||
;; | ;; | |||
esac | esac | |||
if test "$valid_a_lib" != yes; then | if test "$valid_a_lib" != yes; then | |||
$ECHO | echo | |||
$ECHO "*** Warning: Trying to link with static lib archive $ deplib." | $ECHO "*** Warning: Trying to link with static lib archive $ deplib." | |||
$ECHO "*** I have the capability to make that library automa | echo "*** I have the capability to make that library automat | |||
tically link in when" | ically link in when" | |||
$ECHO "*** you link to this library. But I can only do this | echo "*** you link to this library. But I can only do this | |||
if you have a" | if you have a" | |||
$ECHO "*** shared version of the library, which you do not a | echo "*** shared version of the library, which you do not ap | |||
ppear to have" | pear to have" | |||
$ECHO "*** because the file extensions .$libext of this argu | echo "*** because the file extensions .$libext of this argum | |||
ment makes me believe" | ent makes me believe" | |||
$ECHO "*** that it is just a static archive that I should no | echo "*** that it is just a static archive that I should not | |||
t use here." | use here." | |||
else | else | |||
$ECHO | echo | |||
$ECHO "*** Warning: Linking the shared library $output again st the" | $ECHO "*** Warning: Linking the shared library $output again st the" | |||
$ECHO "*** static library $deplib is not portable!" | $ECHO "*** static library $deplib is not portable!" | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
continue | continue | |||
;; | ;; | |||
prog) | prog) | |||
if test "$pass" != link; then | if test "$pass" != link; then | |||
skipping to change at line 5232 | skipping to change at line 6286 | |||
;; | ;; | |||
esac # linkmode | esac # linkmode | |||
;; # *.$libext | ;; # *.$libext | |||
*.lo | *.$objext) | *.lo | *.$objext) | |||
if test "$pass" = conv; then | if test "$pass" = conv; then | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
elif test "$linkmode" = prog; then | elif test "$linkmode" = prog; then | |||
if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then | if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then | |||
# If there is no dlopen support or we're linking statically, | # If there is no dlopen support or we're linking statically, | |||
# we need to preload. | # we need to preload. | |||
newdlprefiles="$newdlprefiles $deplib" | func_append newdlprefiles " $deplib" | |||
compile_deplibs="$deplib $compile_deplibs" | compile_deplibs="$deplib $compile_deplibs" | |||
finalize_deplibs="$deplib $finalize_deplibs" | finalize_deplibs="$deplib $finalize_deplibs" | |||
else | else | |||
newdlfiles="$newdlfiles $deplib" | func_append newdlfiles " $deplib" | |||
fi | fi | |||
fi | fi | |||
continue | continue | |||
;; | ;; | |||
%DEPLIBS%) | %DEPLIBS%) | |||
alldeplibs=yes | alldeplibs=yes | |||
continue | continue | |||
;; | ;; | |||
esac # case $deplib | esac # case $deplib | |||
skipping to change at line 5277 | skipping to change at line 6331 | |||
# it will not redefine variables installed, or shouldnotlink | # it will not redefine variables installed, or shouldnotlink | |||
installed=yes | installed=yes | |||
shouldnotlink=no | shouldnotlink=no | |||
avoidtemprpath= | avoidtemprpath= | |||
# Read the .la file | # Read the .la file | |||
func_source "$lib" | func_source "$lib" | |||
# Convert "-framework foo" to "foo.ltframework" | # Convert "-framework foo" to "foo.ltframework" | |||
if test -n "$inherited_linker_flags"; then | if test -n "$inherited_linker_flags"; then | |||
tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xs ed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` | tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` | |||
for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do | for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do | |||
case " $new_inherited_linker_flags " in | case " $new_inherited_linker_flags " in | |||
*" $tmp_inherited_linker_flag "*) ;; | *" $tmp_inherited_linker_flag "*) ;; | |||
*) new_inherited_linker_flags="$new_inherited_linker_flags $tm p_inherited_linker_flag";; | *) func_append new_inherited_linker_flags " $tmp_inherited_lin ker_flag";; | |||
esac | esac | |||
done | done | |||
fi | fi | |||
dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\ ).ltframework% -framework \1%g'` | dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltf ramework% -framework \1%g'` | |||
if test "$linkmode,$pass" = "lib,link" || | if test "$linkmode,$pass" = "lib,link" || | |||
test "$linkmode,$pass" = "prog,scan" || | test "$linkmode,$pass" = "prog,scan" || | |||
{ test "$linkmode" != prog && test "$linkmode" != lib; }; then | { test "$linkmode" != prog && test "$linkmode" != lib; }; then | |||
test -n "$dlopen" && dlfiles="$dlfiles $dlopen" | test -n "$dlopen" && func_append dlfiles " $dlopen" | |||
test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" | test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" | |||
fi | fi | |||
if test "$pass" = conv; then | if test "$pass" = conv; then | |||
# Only check for convenience libraries | # Only check for convenience libraries | |||
deplibs="$lib $deplibs" | deplibs="$lib $deplibs" | |||
if test -z "$libdir"; then | if test -z "$libdir"; then | |||
if test -z "$old_library"; then | if test -z "$old_library"; then | |||
func_fatal_error "cannot find name of link library for \`$lib' " | func_fatal_error "cannot find name of link library for \`$lib' " | |||
fi | fi | |||
# It is a libtool convenience library, so add in its objects. | # It is a libtool convenience library, so add in its objects. | |||
convenience="$convenience $ladir/$objdir/$old_library" | func_append convenience " $ladir/$objdir/$old_library" | |||
old_convenience="$old_convenience $ladir/$objdir/$old_library" | func_append old_convenience " $ladir/$objdir/$old_library" | |||
elif test "$linkmode" != prog && test "$linkmode" != lib; then | elif test "$linkmode" != prog && test "$linkmode" != lib; then | |||
func_fatal_error "\`$lib' is not a convenience library" | func_fatal_error "\`$lib' is not a convenience library" | |||
fi | fi | |||
tmp_libs= | tmp_libs= | |||
for deplib in $dependency_libs; do | for deplib in $dependency_libs; do | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
if $opt_duplicate_deps ; then | if $opt_preserve_dup_deps ; then | |||
case "$tmp_libs " in | case "$tmp_libs " in | |||
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | *" $deplib "*) func_append specialdeplibs " $deplib" ;; | |||
esac | esac | |||
fi | fi | |||
tmp_libs="$tmp_libs $deplib" | func_append tmp_libs " $deplib" | |||
done | done | |||
continue | continue | |||
fi # $pass = conv | fi # $pass = conv | |||
# Get the name of the library we link against. | # Get the name of the library we link against. | |||
linklib= | linklib= | |||
for l in $old_library $library_names; do | if test -n "$old_library" && | |||
linklib="$l" | { test "$prefer_static_libs" = yes || | |||
done | test "$prefer_static_libs,$installed" = "built,no"; }; then | |||
linklib=$old_library | ||||
else | ||||
for l in $old_library $library_names; do | ||||
linklib="$l" | ||||
done | ||||
fi | ||||
if test -z "$linklib"; then | if test -z "$linklib"; then | |||
func_fatal_error "cannot find name of link library for \`$lib'" | func_fatal_error "cannot find name of link library for \`$lib'" | |||
fi | fi | |||
# This library was specified with -dlopen. | # This library was specified with -dlopen. | |||
if test "$pass" = dlopen; then | if test "$pass" = dlopen; then | |||
if test -z "$libdir"; then | if test -z "$libdir"; then | |||
func_fatal_error "cannot -dlopen a convenience library: \`$lib'" | func_fatal_error "cannot -dlopen a convenience library: \`$lib'" | |||
fi | fi | |||
if test -z "$dlname" || | if test -z "$dlname" || | |||
test "$dlopen_support" != yes || | test "$dlopen_support" != yes || | |||
test "$build_libtool_libs" = no; then | test "$build_libtool_libs" = no; then | |||
# If there is no dlname, no dlopen support or we're linking | # If there is no dlname, no dlopen support or we're linking | |||
# statically, we need to preload. We also need to preload any | # statically, we need to preload. We also need to preload any | |||
# dependent libraries so libltdl's deplib preloader doesn't | # dependent libraries so libltdl's deplib preloader doesn't | |||
# bomb out in the load deplibs phase. | # bomb out in the load deplibs phase. | |||
dlprefiles="$dlprefiles $lib $dependency_libs" | func_append dlprefiles " $lib $dependency_libs" | |||
else | else | |||
newdlfiles="$newdlfiles $lib" | func_append newdlfiles " $lib" | |||
fi | fi | |||
continue | continue | |||
fi # $pass = dlopen | fi # $pass = dlopen | |||
# We need an absolute path. | # We need an absolute path. | |||
case $ladir in | case $ladir in | |||
[\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; | [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; | |||
*) | *) | |||
abs_ladir=`cd "$ladir" && pwd` | abs_ladir=`cd "$ladir" && pwd` | |||
if test -z "$abs_ladir"; then | if test -z "$abs_ladir"; then | |||
skipping to change at line 5364 | skipping to change at line 6424 | |||
func_warning "passing it literally to the linker, although it mi ght fail" | func_warning "passing it literally to the linker, although it mi ght fail" | |||
abs_ladir="$ladir" | abs_ladir="$ladir" | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
func_basename "$lib" | func_basename "$lib" | |||
laname="$func_basename_result" | laname="$func_basename_result" | |||
# Find the relevant object directory and library name. | # Find the relevant object directory and library name. | |||
if test "X$installed" = Xyes; then | if test "X$installed" = Xyes; then | |||
if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then | if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/ $linklib"; then | |||
func_warning "library \`$lib' was moved." | func_warning "library \`$lib' was moved." | |||
dir="$ladir" | dir="$ladir" | |||
absdir="$abs_ladir" | absdir="$abs_ladir" | |||
libdir="$abs_ladir" | libdir="$abs_ladir" | |||
else | else | |||
dir="$libdir" | dir="$lt_sysroot$libdir" | |||
absdir="$libdir" | absdir="$lt_sysroot$libdir" | |||
fi | fi | |||
test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes | test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes | |||
else | else | |||
if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$lin klib"; then | if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$lin klib"; then | |||
dir="$ladir" | dir="$ladir" | |||
absdir="$abs_ladir" | absdir="$abs_ladir" | |||
# Remove this search path later | # Remove this search path later | |||
notinst_path="$notinst_path $abs_ladir" | func_append notinst_path " $abs_ladir" | |||
else | else | |||
dir="$ladir/$objdir" | dir="$ladir/$objdir" | |||
absdir="$abs_ladir/$objdir" | absdir="$abs_ladir/$objdir" | |||
# Remove this search path later | # Remove this search path later | |||
notinst_path="$notinst_path $abs_ladir" | func_append notinst_path " $abs_ladir" | |||
fi | fi | |||
fi # $installed = yes | fi # $installed = yes | |||
func_stripname 'lib' '.la' "$laname" | func_stripname 'lib' '.la' "$laname" | |||
name=$func_stripname_result | name=$func_stripname_result | |||
# This library was specified with -dlpreopen. | # This library was specified with -dlpreopen. | |||
if test "$pass" = dlpreopen; then | if test "$pass" = dlpreopen; then | |||
if test -z "$libdir" && test "$linkmode" = prog; then | if test -z "$libdir" && test "$linkmode" = prog; then | |||
func_fatal_error "only libraries may -dlpreopen a convenience li brary: \`$lib'" | func_fatal_error "only libraries may -dlpreopen a convenience li brary: \`$lib'" | |||
fi | fi | |||
# Prefer using a static library (so that no silly _DYNAMIC symbols | case "$host" in | |||
# are required to link). | # special handling for platforms with PE-DLLs. | |||
if test -n "$old_library"; then | *cygwin* | *mingw* | *cegcc* ) | |||
newdlprefiles="$newdlprefiles $dir/$old_library" | # Linker will automatically link against shared library if bot | |||
# Keep a list of preopened convenience libraries to check | h | |||
# that they are being used correctly in the link pass. | # static and shared are present. Therefore, ensure we extract | |||
test -z "$libdir" && \ | # symbols from the import library if a shared library is prese | |||
dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_librar | nt | |||
y" | # (otherwise, the dlopen module name will be incorrect). We d | |||
# Otherwise, use the dlname, so that lt_dlopen finds it. | o | |||
elif test -n "$dlname"; then | # this by putting the import library name into $newdlprefiles. | |||
newdlprefiles="$newdlprefiles $dir/$dlname" | # We recover the dlopen module name by 'saving' the la file | |||
else | # name in a special purpose variable, and (later) extracting t | |||
newdlprefiles="$newdlprefiles $dir/$linklib" | he | |||
fi | # dlname from the la file. | |||
if test -n "$dlname"; then | ||||
func_tr_sh "$dir/$linklib" | ||||
eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" | ||||
func_append newdlprefiles " $dir/$linklib" | ||||
else | ||||
func_append newdlprefiles " $dir/$old_library" | ||||
# Keep a list of preopened convenience libraries to check | ||||
# that they are being used correctly in the link pass. | ||||
test -z "$libdir" && \ | ||||
func_append dlpreconveniencelibs " $dir/$old_library" | ||||
fi | ||||
;; | ||||
* ) | ||||
# Prefer using a static library (so that no silly _DYNAMIC sym | ||||
bols | ||||
# are required to link). | ||||
if test -n "$old_library"; then | ||||
func_append newdlprefiles " $dir/$old_library" | ||||
# Keep a list of preopened convenience libraries to check | ||||
# that they are being used correctly in the link pass. | ||||
test -z "$libdir" && \ | ||||
func_append dlpreconveniencelibs " $dir/$old_library" | ||||
# Otherwise, use the dlname, so that lt_dlopen finds it. | ||||
elif test -n "$dlname"; then | ||||
func_append newdlprefiles " $dir/$dlname" | ||||
else | ||||
func_append newdlprefiles " $dir/$linklib" | ||||
fi | ||||
;; | ||||
esac | ||||
fi # $pass = dlpreopen | fi # $pass = dlpreopen | |||
if test -z "$libdir"; then | if test -z "$libdir"; then | |||
# Link the convenience library | # Link the convenience library | |||
if test "$linkmode" = lib; then | if test "$linkmode" = lib; then | |||
deplibs="$dir/$old_library $deplibs" | deplibs="$dir/$old_library $deplibs" | |||
elif test "$linkmode,$pass" = "prog,link"; then | elif test "$linkmode,$pass" = "prog,link"; then | |||
compile_deplibs="$dir/$old_library $compile_deplibs" | compile_deplibs="$dir/$old_library $compile_deplibs" | |||
finalize_deplibs="$dir/$old_library $finalize_deplibs" | finalize_deplibs="$dir/$old_library $finalize_deplibs" | |||
else | else | |||
deplibs="$lib $deplibs" # used for prog,scan pass | deplibs="$lib $deplibs" # used for prog,scan pass | |||
fi | fi | |||
continue | continue | |||
fi | fi | |||
if test "$linkmode" = prog && test "$pass" != link; then | if test "$linkmode" = prog && test "$pass" != link; then | |||
newlib_search_path="$newlib_search_path $ladir" | func_append newlib_search_path " $ladir" | |||
deplibs="$lib $deplibs" | deplibs="$lib $deplibs" | |||
linkalldeplibs=no | linkalldeplibs=no | |||
if test "$link_all_deplibs" != no || test -z "$library_names" || | if test "$link_all_deplibs" != no || test -z "$library_names" || | |||
test "$build_libtool_libs" = no; then | test "$build_libtool_libs" = no; then | |||
linkalldeplibs=yes | linkalldeplibs=yes | |||
fi | fi | |||
tmp_libs= | tmp_libs= | |||
for deplib in $dependency_libs; do | for deplib in $dependency_libs; do | |||
case $deplib in | case $deplib in | |||
-L*) func_stripname '-L' '' "$deplib" | -L*) func_stripname '-L' '' "$deplib" | |||
newlib_search_path="$newlib_search_path $func_stripname_res | func_resolve_sysroot "$func_stripname_result" | |||
ult" | func_append newlib_search_path " $func_resolve_sysroot_resu | |||
lt" | ||||
;; | ;; | |||
esac | esac | |||
# Need to link against all dependency_libs? | # Need to link against all dependency_libs? | |||
if test "$linkalldeplibs" = yes; then | if test "$linkalldeplibs" = yes; then | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
else | else | |||
# Need to hardcode shared library paths | # Need to hardcode shared library paths | |||
# or/and link against static libraries | # or/and link against static libraries | |||
newdependency_libs="$deplib $newdependency_libs" | newdependency_libs="$deplib $newdependency_libs" | |||
fi | fi | |||
if $opt_duplicate_deps ; then | if $opt_preserve_dup_deps ; then | |||
case "$tmp_libs " in | case "$tmp_libs " in | |||
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | *" $deplib "*) func_append specialdeplibs " $deplib" ;; | |||
esac | esac | |||
fi | fi | |||
tmp_libs="$tmp_libs $deplib" | func_append tmp_libs " $deplib" | |||
done # for deplib | done # for deplib | |||
continue | continue | |||
fi # $linkmode = prog... | fi # $linkmode = prog... | |||
if test "$linkmode,$pass" = "prog,link"; then | if test "$linkmode,$pass" = "prog,link"; then | |||
if test -n "$library_names" && | if test -n "$library_names" && | |||
{ { test "$prefer_static_libs" = no || | { { test "$prefer_static_libs" = no || | |||
test "$prefer_static_libs,$installed" = "built,yes"; } || | test "$prefer_static_libs,$installed" = "built,yes"; } || | |||
test -z "$old_library"; }; then | test -z "$old_library"; }; then | |||
# We need to hardcode the library path | # We need to hardcode the library path | |||
if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then | if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then | |||
# Make sure the rpath contains only unique directories. | # Make sure the rpath contains only unique directories. | |||
case "$temp_rpath:" in | case "$temp_rpath:" in | |||
*"$absdir:"*) ;; | *"$absdir:"*) ;; | |||
*) temp_rpath="$temp_rpath$absdir:" ;; | *) func_append temp_rpath "$absdir:" ;; | |||
esac | esac | |||
fi | fi | |||
# Hardcode the library path. | # Hardcode the library path. | |||
# Skip directories that are in the system default run-time | # Skip directories that are in the system default run-time | |||
# search path. | # search path. | |||
case " $sys_lib_dlsearch_path " in | case " $sys_lib_dlsearch_path " in | |||
*" $absdir "*) ;; | *" $absdir "*) ;; | |||
*) | *) | |||
case "$compile_rpath " in | case "$compile_rpath " in | |||
*" $absdir "*) ;; | *" $absdir "*) ;; | |||
*) compile_rpath="$compile_rpath $absdir" | *) func_append compile_rpath " $absdir" ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
case " $sys_lib_dlsearch_path " in | case " $sys_lib_dlsearch_path " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) | *) | |||
case "$finalize_rpath " in | case "$finalize_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) finalize_rpath="$finalize_rpath $libdir" | *) func_append finalize_rpath " $libdir" ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
fi # $linkmode,$pass = prog,link... | fi # $linkmode,$pass = prog,link... | |||
if test "$alldeplibs" = yes && | if test "$alldeplibs" = yes && | |||
{ test "$deplibs_check_method" = pass_all || | { test "$deplibs_check_method" = pass_all || | |||
{ test "$build_libtool_libs" = yes && | { test "$build_libtool_libs" = yes && | |||
test -n "$library_names"; }; }; then | test -n "$library_names"; }; }; then | |||
# We only need to search for static libraries | # We only need to search for static libraries | |||
skipping to change at line 5515 | skipping to change at line 6602 | |||
link_static=no # Whether the deplib will be linked statically | link_static=no # Whether the deplib will be linked statically | |||
use_static_libs=$prefer_static_libs | use_static_libs=$prefer_static_libs | |||
if test "$use_static_libs" = built && test "$installed" = yes; then | if test "$use_static_libs" = built && test "$installed" = yes; then | |||
use_static_libs=no | use_static_libs=no | |||
fi | fi | |||
if test -n "$library_names" && | if test -n "$library_names" && | |||
{ test "$use_static_libs" = no || test -z "$old_library"; }; then | { test "$use_static_libs" = no || test -z "$old_library"; }; then | |||
case $host in | case $host in | |||
*cygwin* | *mingw* | *cegcc*) | *cygwin* | *mingw* | *cegcc*) | |||
# No point in relinking DLLs because paths are not encoded | # No point in relinking DLLs because paths are not encoded | |||
notinst_deplibs="$notinst_deplibs $lib" | func_append notinst_deplibs " $lib" | |||
need_relink=no | need_relink=no | |||
;; | ;; | |||
*) | *) | |||
if test "$installed" = no; then | if test "$installed" = no; then | |||
notinst_deplibs="$notinst_deplibs $lib" | func_append notinst_deplibs " $lib" | |||
need_relink=yes | need_relink=yes | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
# This is a shared library | # This is a shared library | |||
# Warn about portability, can't link against -module's on some | # Warn about portability, can't link against -module's on some | |||
# systems (darwin). Don't bleat about dlopened modules though! | # systems (darwin). Don't bleat about dlopened modules though! | |||
dlopenmodule="" | dlopenmodule="" | |||
for dlpremoduletest in $dlprefiles; do | for dlpremoduletest in $dlprefiles; do | |||
if test "X$dlpremoduletest" = "X$lib"; then | if test "X$dlpremoduletest" = "X$lib"; then | |||
dlopenmodule="$dlpremoduletest" | dlopenmodule="$dlpremoduletest" | |||
break | break | |||
fi | fi | |||
done | done | |||
if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then | if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then | |||
$ECHO | echo | |||
if test "$linkmode" = prog; then | if test "$linkmode" = prog; then | |||
$ECHO "*** Warning: Linking the executable $output against the loadable module" | $ECHO "*** Warning: Linking the executable $output against the loadable module" | |||
else | else | |||
$ECHO "*** Warning: Linking the shared library $output against the loadable module" | $ECHO "*** Warning: Linking the shared library $output against the loadable module" | |||
fi | fi | |||
$ECHO "*** $linklib is not portable!" | $ECHO "*** $linklib is not portable!" | |||
fi | fi | |||
if test "$linkmode" = lib && | if test "$linkmode" = lib && | |||
test "$hardcode_into_libs" = yes; then | test "$hardcode_into_libs" = yes; then | |||
# Hardcode the library path. | # Hardcode the library path. | |||
# Skip directories that are in the system default run-time | # Skip directories that are in the system default run-time | |||
# search path. | # search path. | |||
case " $sys_lib_dlsearch_path " in | case " $sys_lib_dlsearch_path " in | |||
*" $absdir "*) ;; | *" $absdir "*) ;; | |||
*) | *) | |||
case "$compile_rpath " in | case "$compile_rpath " in | |||
*" $absdir "*) ;; | *" $absdir "*) ;; | |||
*) compile_rpath="$compile_rpath $absdir" | *) func_append compile_rpath " $absdir" ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
case " $sys_lib_dlsearch_path " in | case " $sys_lib_dlsearch_path " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) | *) | |||
case "$finalize_rpath " in | case "$finalize_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) finalize_rpath="$finalize_rpath $libdir" | *) func_append finalize_rpath " $libdir" ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
if test -n "$old_archive_from_expsyms_cmds"; then | if test -n "$old_archive_from_expsyms_cmds"; then | |||
# figure out the soname | # figure out the soname | |||
set dummy $library_names | set dummy $library_names | |||
shift | shift | |||
realname="$1" | realname="$1" | |||
skipping to change at line 5618 | skipping to change at line 6705 | |||
# Create $newlib | # Create $newlib | |||
if test -f "$output_objdir/$newlib"; then :; else | if test -f "$output_objdir/$newlib"; then :; else | |||
func_verbose "generating import library for \`$soname'" | func_verbose "generating import library for \`$soname'" | |||
func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' | func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' | |||
fi | fi | |||
# make sure the library variables are pointing to the new librar y | # make sure the library variables are pointing to the new librar y | |||
dir=$output_objdir | dir=$output_objdir | |||
linklib=$newlib | linklib=$newlib | |||
fi # test -n "$old_archive_from_expsyms_cmds" | fi # test -n "$old_archive_from_expsyms_cmds" | |||
if test "$linkmode" = prog || test "$mode" != relink; then | if test "$linkmode" = prog || test "$opt_mode" != relink; then | |||
add_shlibpath= | add_shlibpath= | |||
add_dir= | add_dir= | |||
add= | add= | |||
lib_linked=yes | lib_linked=yes | |||
case $hardcode_action in | case $hardcode_action in | |||
immediate | unsupported) | immediate | unsupported) | |||
if test "$hardcode_direct" = no; then | if test "$hardcode_direct" = no; then | |||
add="$dir/$linklib" | add="$dir/$linklib" | |||
case $host in | case $host in | |||
*-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; | *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; | |||
skipping to change at line 5640 | skipping to change at line 6727 | |||
*-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ | *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ | |||
*-*-unixware7*) add_dir="-L$dir" ;; | *-*-unixware7*) add_dir="-L$dir" ;; | |||
*-*-darwin* ) | *-*-darwin* ) | |||
# if the lib is a (non-dlopened) module then we can not | # if the lib is a (non-dlopened) module then we can not | |||
# link against it, someone is ignoring the earlier warni ngs | # link against it, someone is ignoring the earlier warni ngs | |||
if /usr/bin/file -L $add 2> /dev/null | | if /usr/bin/file -L $add 2> /dev/null | | |||
$GREP ": [^:]* bundle" >/dev/null ; then | $GREP ": [^:]* bundle" >/dev/null ; then | |||
if test "X$dlopenmodule" != "X$lib"; then | if test "X$dlopenmodule" != "X$lib"; then | |||
$ECHO "*** Warning: lib $linklib is a module, not a shared library" | $ECHO "*** Warning: lib $linklib is a module, not a shared library" | |||
if test -z "$old_library" ; then | if test -z "$old_library" ; then | |||
$ECHO | echo | |||
$ECHO "*** And there doesn't seem to be a static a | echo "*** And there doesn't seem to be a static ar | |||
rchive available" | chive available" | |||
$ECHO "*** The link will probably fail, sorry" | echo "*** The link will probably fail, sorry" | |||
else | else | |||
add="$dir/$old_library" | add="$dir/$old_library" | |||
fi | fi | |||
elif test -n "$old_library"; then | elif test -n "$old_library"; then | |||
add="$dir/$old_library" | add="$dir/$old_library" | |||
fi | fi | |||
fi | fi | |||
esac | esac | |||
elif test "$hardcode_minus_L" = no; then | elif test "$hardcode_minus_L" = no; then | |||
case $host in | case $host in | |||
skipping to change at line 5674 | skipping to change at line 6761 | |||
relink) | relink) | |||
if test "$hardcode_direct" = yes && | if test "$hardcode_direct" = yes && | |||
test "$hardcode_direct_absolute" = no; then | test "$hardcode_direct_absolute" = no; then | |||
add="$dir/$linklib" | add="$dir/$linklib" | |||
elif test "$hardcode_minus_L" = yes; then | elif test "$hardcode_minus_L" = yes; then | |||
add_dir="-L$dir" | add_dir="-L$dir" | |||
# Try looking first in the location we're being installed to . | # Try looking first in the location we're being installed to . | |||
if test -n "$inst_prefix_dir"; then | if test -n "$inst_prefix_dir"; then | |||
case $libdir in | case $libdir in | |||
[\\/]*) | [\\/]*) | |||
add_dir="$add_dir -L$inst_prefix_dir$libdir" | func_append add_dir " -L$inst_prefix_dir$libdir" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
add="-l$name" | add="-l$name" | |||
elif test "$hardcode_shlibpath_var" = yes; then | elif test "$hardcode_shlibpath_var" = yes; then | |||
add_shlibpath="$dir" | add_shlibpath="$dir" | |||
add="-l$name" | add="-l$name" | |||
else | else | |||
lib_linked=no | lib_linked=no | |||
fi | fi | |||
skipping to change at line 5696 | skipping to change at line 6783 | |||
*) lib_linked=no ;; | *) lib_linked=no ;; | |||
esac | esac | |||
if test "$lib_linked" != yes; then | if test "$lib_linked" != yes; then | |||
func_fatal_configuration "unsupported hardcode properties" | func_fatal_configuration "unsupported hardcode properties" | |||
fi | fi | |||
if test -n "$add_shlibpath"; then | if test -n "$add_shlibpath"; then | |||
case :$compile_shlibpath: in | case :$compile_shlibpath: in | |||
*":$add_shlibpath:"*) ;; | *":$add_shlibpath:"*) ;; | |||
*) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; | *) func_append compile_shlibpath "$add_shlibpath:" ;; | |||
esac | esac | |||
fi | fi | |||
if test "$linkmode" = prog; then | if test "$linkmode" = prog; then | |||
test -n "$add_dir" && compile_deplibs="$add_dir $compile_depli bs" | test -n "$add_dir" && compile_deplibs="$add_dir $compile_depli bs" | |||
test -n "$add" && compile_deplibs="$add $compile_deplibs" | test -n "$add" && compile_deplibs="$add $compile_deplibs" | |||
else | else | |||
test -n "$add_dir" && deplibs="$add_dir $deplibs" | test -n "$add_dir" && deplibs="$add_dir $deplibs" | |||
test -n "$add" && deplibs="$add $deplibs" | test -n "$add" && deplibs="$add $deplibs" | |||
if test "$hardcode_direct" != yes && | if test "$hardcode_direct" != yes && | |||
test "$hardcode_minus_L" != yes && | test "$hardcode_minus_L" != yes && | |||
test "$hardcode_shlibpath_var" = yes; then | test "$hardcode_shlibpath_var" = yes; then | |||
case :$finalize_shlibpath: in | case :$finalize_shlibpath: in | |||
*":$libdir:"*) ;; | *":$libdir:"*) ;; | |||
*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; | *) func_append finalize_shlibpath "$libdir:" ;; | |||
esac | esac | |||
fi | fi | |||
fi | fi | |||
fi | fi | |||
if test "$linkmode" = prog || test "$mode" = relink; then | if test "$linkmode" = prog || test "$opt_mode" = relink; then | |||
add_shlibpath= | add_shlibpath= | |||
add_dir= | add_dir= | |||
add= | add= | |||
# Finalize command for both is simple: just hardcode it. | # Finalize command for both is simple: just hardcode it. | |||
if test "$hardcode_direct" = yes && | if test "$hardcode_direct" = yes && | |||
test "$hardcode_direct_absolute" = no; then | test "$hardcode_direct_absolute" = no; then | |||
add="$libdir/$linklib" | add="$libdir/$linklib" | |||
elif test "$hardcode_minus_L" = yes; then | elif test "$hardcode_minus_L" = yes; then | |||
add_dir="-L$libdir" | add_dir="-L$libdir" | |||
add="-l$name" | add="-l$name" | |||
elif test "$hardcode_shlibpath_var" = yes; then | elif test "$hardcode_shlibpath_var" = yes; then | |||
case :$finalize_shlibpath: in | case :$finalize_shlibpath: in | |||
*":$libdir:"*) ;; | *":$libdir:"*) ;; | |||
*) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; | *) func_append finalize_shlibpath "$libdir:" ;; | |||
esac | esac | |||
add="-l$name" | add="-l$name" | |||
elif test "$hardcode_automatic" = yes; then | elif test "$hardcode_automatic" = yes; then | |||
if test -n "$inst_prefix_dir" && | if test -n "$inst_prefix_dir" && | |||
test -f "$inst_prefix_dir$libdir/$linklib" ; then | test -f "$inst_prefix_dir$libdir/$linklib" ; then | |||
add="$inst_prefix_dir$libdir/$linklib" | add="$inst_prefix_dir$libdir/$linklib" | |||
else | else | |||
add="$libdir/$linklib" | add="$libdir/$linklib" | |||
fi | fi | |||
else | else | |||
# We cannot seem to hardcode it, guess we'll fake it. | # We cannot seem to hardcode it, guess we'll fake it. | |||
add_dir="-L$libdir" | add_dir="-L$libdir" | |||
# Try looking first in the location we're being installed to. | # Try looking first in the location we're being installed to. | |||
if test -n "$inst_prefix_dir"; then | if test -n "$inst_prefix_dir"; then | |||
case $libdir in | case $libdir in | |||
[\\/]*) | [\\/]*) | |||
add_dir="$add_dir -L$inst_prefix_dir$libdir" | func_append add_dir " -L$inst_prefix_dir$libdir" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
add="-l$name" | add="-l$name" | |||
fi | fi | |||
if test "$linkmode" = prog; then | if test "$linkmode" = prog; then | |||
test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_dep libs" | test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_dep libs" | |||
test -n "$add" && finalize_deplibs="$add $finalize_deplibs" | test -n "$add" && finalize_deplibs="$add $finalize_deplibs" | |||
else | else | |||
skipping to change at line 5782 | skipping to change at line 6869 | |||
finalize_deplibs="-l$name -L$dir $finalize_deplibs" | finalize_deplibs="-l$name -L$dir $finalize_deplibs" | |||
fi | fi | |||
elif test "$build_libtool_libs" = yes; then | elif test "$build_libtool_libs" = yes; then | |||
# Not a shared library | # Not a shared library | |||
if test "$deplibs_check_method" != pass_all; then | if test "$deplibs_check_method" != pass_all; then | |||
# We're trying link a shared library against a static one | # We're trying link a shared library against a static one | |||
# but the system doesn't support it. | # but the system doesn't support it. | |||
# Just print a warning and add the library to dependency_libs so | # Just print a warning and add the library to dependency_libs so | |||
# that the program can be linked against the static library. | # that the program can be linked against the static library. | |||
$ECHO | echo | |||
$ECHO "*** Warning: This system can not link to static lib archi ve $lib." | $ECHO "*** Warning: This system can not link to static lib archi ve $lib." | |||
$ECHO "*** I have the capability to make that library automatica | echo "*** I have the capability to make that library automatical | |||
lly link in when" | ly link in when" | |||
$ECHO "*** you link to this library. But I can only do this if | echo "*** you link to this library. But I can only do this if y | |||
you have a" | ou have a" | |||
$ECHO "*** shared version of the library, which you do not appea | echo "*** shared version of the library, which you do not appear | |||
r to have." | to have." | |||
if test "$module" = yes; then | if test "$module" = yes; then | |||
$ECHO "*** But as you try to build a module library, libtool w | echo "*** But as you try to build a module library, libtool wi | |||
ill still create " | ll still create " | |||
$ECHO "*** a static module, that should work as long as the dl | echo "*** a static module, that should work as long as the dlo | |||
opening application" | pening application" | |||
$ECHO "*** is linked with the -dlopen flag to resolve symbols | echo "*** is linked with the -dlopen flag to resolve symbols a | |||
at runtime." | t runtime." | |||
if test -z "$global_symbol_pipe"; then | if test -z "$global_symbol_pipe"; then | |||
$ECHO | echo | |||
$ECHO "*** However, this would only work if libtool was able | echo "*** However, this would only work if libtool was able | |||
to extract symbol" | to extract symbol" | |||
$ECHO "*** lists from a program, using \`nm' or equivalent, | echo "*** lists from a program, using \`nm' or equivalent, b | |||
but libtool could" | ut libtool could" | |||
$ECHO "*** not find such a program. So, this module is prob | echo "*** not find such a program. So, this module is proba | |||
ably useless." | bly useless." | |||
$ECHO "*** \`nm' from GNU binutils and a full rebuild may he | echo "*** \`nm' from GNU binutils and a full rebuild may hel | |||
lp." | p." | |||
fi | fi | |||
if test "$build_old_libs" = no; then | if test "$build_old_libs" = no; then | |||
build_libtool_libs=module | build_libtool_libs=module | |||
build_old_libs=yes | build_old_libs=yes | |||
else | else | |||
build_libtool_libs=no | build_libtool_libs=no | |||
fi | fi | |||
fi | fi | |||
else | else | |||
deplibs="$dir/$old_library $deplibs" | deplibs="$dir/$old_library $deplibs" | |||
skipping to change at line 5824 | skipping to change at line 6911 | |||
test "$build_old_libs" = yes || | test "$build_old_libs" = yes || | |||
test "$link_static" = yes; }; then | test "$link_static" = yes; }; then | |||
# Extract -R from dependency_libs | # Extract -R from dependency_libs | |||
temp_deplibs= | temp_deplibs= | |||
for libdir in $dependency_libs; do | for libdir in $dependency_libs; do | |||
case $libdir in | case $libdir in | |||
-R*) func_stripname '-R' '' "$libdir" | -R*) func_stripname '-R' '' "$libdir" | |||
temp_xrpath=$func_stripname_result | temp_xrpath=$func_stripname_result | |||
case " $xrpath " in | case " $xrpath " in | |||
*" $temp_xrpath "*) ;; | *" $temp_xrpath "*) ;; | |||
*) xrpath="$xrpath $temp_xrpath";; | *) func_append xrpath " $temp_xrpath";; | |||
esac;; | esac;; | |||
*) temp_deplibs="$temp_deplibs $libdir";; | *) func_append temp_deplibs " $libdir";; | |||
esac | esac | |||
done | done | |||
dependency_libs="$temp_deplibs" | dependency_libs="$temp_deplibs" | |||
fi | fi | |||
newlib_search_path="$newlib_search_path $absdir" | func_append newlib_search_path " $absdir" | |||
# Link against this library | # Link against this library | |||
test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" | test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" | |||
# ... and its dependency_libs | # ... and its dependency_libs | |||
tmp_libs= | tmp_libs= | |||
for deplib in $dependency_libs; do | for deplib in $dependency_libs; do | |||
newdependency_libs="$deplib $newdependency_libs" | newdependency_libs="$deplib $newdependency_libs" | |||
if $opt_duplicate_deps ; then | case $deplib in | |||
-L*) func_stripname '-L' '' "$deplib" | ||||
func_resolve_sysroot "$func_stripname_result";; | ||||
*) func_resolve_sysroot "$deplib" ;; | ||||
esac | ||||
if $opt_preserve_dup_deps ; then | ||||
case "$tmp_libs " in | case "$tmp_libs " in | |||
*" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; | *" $func_resolve_sysroot_result "*) | |||
func_append specialdeplibs " $func_resolve_sysroot_result" | ||||
;; | ||||
esac | esac | |||
fi | fi | |||
tmp_libs="$tmp_libs $deplib" | func_append tmp_libs " $func_resolve_sysroot_result" | |||
done | done | |||
if test "$link_all_deplibs" != no; then | if test "$link_all_deplibs" != no; then | |||
# Add the search paths of all dependency libraries | # Add the search paths of all dependency libraries | |||
for deplib in $dependency_libs; do | for deplib in $dependency_libs; do | |||
path= | ||||
case $deplib in | case $deplib in | |||
-L*) path="$deplib" ;; | -L*) path="$deplib" ;; | |||
*.la) | *.la) | |||
func_resolve_sysroot "$deplib" | ||||
deplib=$func_resolve_sysroot_result | ||||
func_dirname "$deplib" "" "." | func_dirname "$deplib" "" "." | |||
dir="$func_dirname_result" | dir=$func_dirname_result | |||
# We need an absolute path. | # We need an absolute path. | |||
case $dir in | case $dir in | |||
[\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; | [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; | |||
*) | *) | |||
absdir=`cd "$dir" && pwd` | absdir=`cd "$dir" && pwd` | |||
if test -z "$absdir"; then | if test -z "$absdir"; then | |||
func_warning "cannot determine absolute directory name o f \`$dir'" | func_warning "cannot determine absolute directory name o f \`$dir'" | |||
absdir="$dir" | absdir="$dir" | |||
fi | fi | |||
;; | ;; | |||
skipping to change at line 5881 | skipping to change at line 6977 | |||
if test -n "$deplibrary_names" ; then | if test -n "$deplibrary_names" ; then | |||
for tmp in $deplibrary_names ; do | for tmp in $deplibrary_names ; do | |||
depdepl=$tmp | depdepl=$tmp | |||
done | done | |||
if test -f "$absdir/$objdir/$depdepl" ; then | if test -f "$absdir/$objdir/$depdepl" ; then | |||
depdepl="$absdir/$objdir/$depdepl" | depdepl="$absdir/$objdir/$depdepl" | |||
darwin_install_name=`${OTOOL} -L $depdepl | awk '{if ( NR == 2) {print $1;exit}}'` | darwin_install_name=`${OTOOL} -L $depdepl | awk '{if ( NR == 2) {print $1;exit}}'` | |||
if test -z "$darwin_install_name"; then | if test -z "$darwin_install_name"; then | |||
darwin_install_name=`${OTOOL64} -L $depdepl | aw k '{if (NR == 2) {print $1;exit}}'` | darwin_install_name=`${OTOOL64} -L $depdepl | aw k '{if (NR == 2) {print $1;exit}}'` | |||
fi | fi | |||
compiler_flags="$compiler_flags ${wl}-dylib_file ${wl} | func_append compiler_flags " ${wl}-dylib_file ${wl}${d | |||
${darwin_install_name}:${depdepl}" | arwin_install_name}:${depdepl}" | |||
linker_flags="$linker_flags -dylib_file ${darwin_insta | func_append linker_flags " -dylib_file ${darwin_instal | |||
ll_name}:${depdepl}" | l_name}:${depdepl}" | |||
path= | path= | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
path="-L$absdir/$objdir" | path="-L$absdir/$objdir" | |||
;; | ;; | |||
esac | esac | |||
else | else | |||
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib ` | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib ` | |||
skipping to change at line 5915 | skipping to change at line 7011 | |||
esac | esac | |||
done | done | |||
fi # link_all_deplibs != no | fi # link_all_deplibs != no | |||
fi # linkmode = lib | fi # linkmode = lib | |||
done # for deplib in $libs | done # for deplib in $libs | |||
if test "$pass" = link; then | if test "$pass" = link; then | |||
if test "$linkmode" = "prog"; then | if test "$linkmode" = "prog"; then | |||
compile_deplibs="$new_inherited_linker_flags $compile_deplibs" | compile_deplibs="$new_inherited_linker_flags $compile_deplibs" | |||
finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" | finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" | |||
else | else | |||
compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_f lags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` | compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_fl ags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` | |||
fi | fi | |||
fi | fi | |||
dependency_libs="$newdependency_libs" | dependency_libs="$newdependency_libs" | |||
if test "$pass" = dlpreopen; then | if test "$pass" = dlpreopen; then | |||
# Link the dlpreopened libraries before other libraries | # Link the dlpreopened libraries before other libraries | |||
for deplib in $save_deplibs; do | for deplib in $save_deplibs; do | |||
deplibs="$deplib $deplibs" | deplibs="$deplib $deplibs" | |||
done | done | |||
fi | fi | |||
if test "$pass" != dlopen; then | if test "$pass" != dlopen; then | |||
if test "$pass" != conv; then | if test "$pass" != conv; then | |||
# Make sure lib_search_path contains only unique directories. | # Make sure lib_search_path contains only unique directories. | |||
lib_search_path= | lib_search_path= | |||
for dir in $newlib_search_path; do | for dir in $newlib_search_path; do | |||
case "$lib_search_path " in | case "$lib_search_path " in | |||
*" $dir "*) ;; | *" $dir "*) ;; | |||
*) lib_search_path="$lib_search_path $dir" ;; | *) func_append lib_search_path " $dir" ;; | |||
esac | esac | |||
done | done | |||
newlib_search_path= | newlib_search_path= | |||
fi | fi | |||
if test "$linkmode,$pass" != "prog,link"; then | if test "$linkmode,$pass" != "prog,link"; then | |||
vars="deplibs" | vars="deplibs" | |||
else | else | |||
vars="compile_deplibs finalize_deplibs" | vars="compile_deplibs finalize_deplibs" | |||
fi | fi | |||
skipping to change at line 5990 | skipping to change at line 7086 | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
tmp_libs= | tmp_libs= | |||
for deplib in $new_libs; do | for deplib in $new_libs; do | |||
case $deplib in | case $deplib in | |||
-L*) | -L*) | |||
case " $tmp_libs " in | case " $tmp_libs " in | |||
*" $deplib "*) ;; | *" $deplib "*) ;; | |||
*) tmp_libs="$tmp_libs $deplib" ;; | *) func_append tmp_libs " $deplib" ;; | |||
esac | esac | |||
;; | ;; | |||
*) tmp_libs="$tmp_libs $deplib" ;; | *) func_append tmp_libs " $deplib" ;; | |||
esac | esac | |||
done | done | |||
eval $var=\"$tmp_libs\" | eval $var=\"$tmp_libs\" | |||
done # for var | done # for var | |||
fi | fi | |||
# Last step: remove runtime libs from dependency_libs | # Last step: remove runtime libs from dependency_libs | |||
# (they stay in deplibs) | # (they stay in deplibs) | |||
tmp_libs= | tmp_libs= | |||
for i in $dependency_libs ; do | for i in $dependency_libs ; do | |||
case " $predeps $postdeps $compiler_lib_search_path " in | case " $predeps $postdeps $compiler_lib_search_path " in | |||
*" $i "*) | *" $i "*) | |||
i="" | i="" | |||
;; | ;; | |||
esac | esac | |||
if test -n "$i" ; then | if test -n "$i" ; then | |||
tmp_libs="$tmp_libs $i" | func_append tmp_libs " $i" | |||
fi | fi | |||
done | done | |||
dependency_libs=$tmp_libs | dependency_libs=$tmp_libs | |||
done # for pass | done # for pass | |||
if test "$linkmode" = prog; then | if test "$linkmode" = prog; then | |||
dlfiles="$newdlfiles" | dlfiles="$newdlfiles" | |||
fi | fi | |||
if test "$linkmode" = prog || test "$linkmode" = lib; then | if test "$linkmode" = prog || test "$linkmode" = lib; then | |||
dlprefiles="$newdlprefiles" | dlprefiles="$newdlprefiles" | |||
fi | fi | |||
skipping to change at line 6050 | skipping to change at line 7146 | |||
test -n "$release" && \ | test -n "$release" && \ | |||
func_warning "\`-release' is ignored for archives" | func_warning "\`-release' is ignored for archives" | |||
test -n "$export_symbols$export_symbols_regex" && \ | test -n "$export_symbols$export_symbols_regex" && \ | |||
func_warning "\`-export-symbols' is ignored for archives" | func_warning "\`-export-symbols' is ignored for archives" | |||
# Now set the variables for building old libraries. | # Now set the variables for building old libraries. | |||
build_libtool_libs=no | build_libtool_libs=no | |||
oldlibs="$output" | oldlibs="$output" | |||
objs="$objs$old_deplibs" | func_append objs "$old_deplibs" | |||
;; | ;; | |||
lib) | lib) | |||
# Make sure we only generate libraries of the form `libNAME.la'. | # Make sure we only generate libraries of the form `libNAME.la'. | |||
case $outputname in | case $outputname in | |||
lib*) | lib*) | |||
func_stripname 'lib' '.la' "$outputname" | func_stripname 'lib' '.la' "$outputname" | |||
name=$func_stripname_result | name=$func_stripname_result | |||
eval shared_ext=\"$shrext_cmds\" | eval shared_ext=\"$shrext_cmds\" | |||
eval libname=\"$libname_spec\" | eval libname=\"$libname_spec\" | |||
skipping to change at line 6083 | skipping to change at line 7179 | |||
func_stripname '' '.la' "$outputname" | func_stripname '' '.la' "$outputname" | |||
libname=$func_stripname_result | libname=$func_stripname_result | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
if test -n "$objs"; then | if test -n "$objs"; then | |||
if test "$deplibs_check_method" != pass_all; then | if test "$deplibs_check_method" != pass_all; then | |||
func_fatal_error "cannot build libtool library \`$output' from non -libtool objects on this host:$objs" | func_fatal_error "cannot build libtool library \`$output' from non -libtool objects on this host:$objs" | |||
else | else | |||
$ECHO | echo | |||
$ECHO "*** Warning: Linking the shared library $output against the non-libtool" | $ECHO "*** Warning: Linking the shared library $output against the non-libtool" | |||
$ECHO "*** objects $objs is not portable!" | $ECHO "*** objects $objs is not portable!" | |||
libobjs="$libobjs $objs" | func_append libobjs " $objs" | |||
fi | fi | |||
fi | fi | |||
test "$dlself" != no && \ | test "$dlself" != no && \ | |||
func_warning "\`-dlopen self' is ignored for libtool libraries" | func_warning "\`-dlopen self' is ignored for libtool libraries" | |||
set dummy $rpath | set dummy $rpath | |||
shift | shift | |||
test "$#" -gt 1 && \ | test "$#" -gt 1 && \ | |||
func_warning "ignoring multiple \`-rpath's for a libtool library" | func_warning "ignoring multiple \`-rpath's for a libtool library" | |||
skipping to change at line 6151 | skipping to change at line 7247 | |||
# a minor version. But, then there is irix | # a minor version. But, then there is irix | |||
# which has an extra 1 added just for fun | # which has an extra 1 added just for fun | |||
# | # | |||
case $version_type in | case $version_type in | |||
darwin|linux|osf|windows|none) | darwin|linux|osf|windows|none) | |||
func_arith $number_major + $number_minor | func_arith $number_major + $number_minor | |||
current=$func_arith_result | current=$func_arith_result | |||
age="$number_minor" | age="$number_minor" | |||
revision="$number_revision" | revision="$number_revision" | |||
;; | ;; | |||
freebsd-aout|freebsd-elf|sunos) | freebsd-aout|freebsd-elf|qnx|sunos) | |||
current="$number_major" | current="$number_major" | |||
revision="$number_minor" | revision="$number_minor" | |||
age="0" | age="0" | |||
;; | ;; | |||
irix|nonstopux) | irix|nonstopux) | |||
func_arith $number_major + $number_minor | func_arith $number_major + $number_minor | |||
current=$func_arith_result | current=$func_arith_result | |||
age="$number_minor" | age="$number_minor" | |||
revision="$number_minor" | revision="$number_minor" | |||
lt_irix_increment=no | lt_irix_increment=no | |||
skipping to change at line 6284 | skipping to change at line 7380 | |||
loop=$age | loop=$age | |||
while test "$loop" -ne 0; do | while test "$loop" -ne 0; do | |||
func_arith $current - $loop | func_arith $current - $loop | |||
iface=$func_arith_result | iface=$func_arith_result | |||
func_arith $loop - 1 | func_arith $loop - 1 | |||
loop=$func_arith_result | loop=$func_arith_result | |||
verstring="$verstring:${iface}.0" | verstring="$verstring:${iface}.0" | |||
done | done | |||
# Make executables depend on our current version. | # Make executables depend on our current version. | |||
verstring="$verstring:${current}.0" | func_append verstring ":${current}.0" | |||
;; | ;; | |||
qnx) | qnx) | |||
major=".$current" | major=".$current" | |||
versuffix=".$current" | versuffix=".$current" | |||
;; | ;; | |||
sunos) | sunos) | |||
major=".$current" | major=".$current" | |||
versuffix=".$current.$revision" | versuffix=".$current.$revision" | |||
skipping to change at line 6352 | skipping to change at line 7448 | |||
build_old_libs=yes | build_old_libs=yes | |||
fi | fi | |||
else | else | |||
# Don't allow undefined symbols. | # Don't allow undefined symbols. | |||
allow_undefined_flag="$no_undefined_flag" | allow_undefined_flag="$no_undefined_flag" | |||
fi | fi | |||
fi | fi | |||
func_generate_dlsyms "$libname" "$libname" "yes" | func_generate_dlsyms "$libname" "$libname" "yes" | |||
libobjs="$libobjs $symfileobj" | func_append libobjs " $symfileobj" | |||
test "X$libobjs" = "X " && libobjs= | test "X$libobjs" = "X " && libobjs= | |||
if test "$mode" != relink; then | if test "$opt_mode" != relink; then | |||
# Remove our outputs, but don't remove object files since they | # Remove our outputs, but don't remove object files since they | |||
# may have been created when compiling PIC objects. | # may have been created when compiling PIC objects. | |||
removelist= | removelist= | |||
tempremovelist=`$ECHO "$output_objdir/*"` | tempremovelist=`$ECHO "$output_objdir/*"` | |||
for p in $tempremovelist; do | for p in $tempremovelist; do | |||
case $p in | case $p in | |||
*.$objext | *.gcno) | *.$objext | *.gcno) | |||
;; | ;; | |||
$output_objdir/$outputname | $output_objdir/$libname.* | $output _objdir/${libname}${release}.*) | $output_objdir/$outputname | $output_objdir/$libname.* | $output _objdir/${libname}${release}.*) | |||
if test "X$precious_files_regex" != "X"; then | if test "X$precious_files_regex" != "X"; then | |||
if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/nul l 2>&1 | if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/nul l 2>&1 | |||
then | then | |||
continue | continue | |||
fi | fi | |||
fi | fi | |||
removelist="$removelist $p" | func_append removelist " $p" | |||
;; | ;; | |||
*) ;; | *) ;; | |||
esac | esac | |||
done | done | |||
test -n "$removelist" && \ | test -n "$removelist" && \ | |||
func_show_eval "${RM}r \$removelist" | func_show_eval "${RM}r \$removelist" | |||
fi | fi | |||
# Now set the variables for building old libraries. | # Now set the variables for building old libraries. | |||
if test "$build_old_libs" = yes && test "$build_libtool_libs" != conv enience ; then | if test "$build_old_libs" = yes && test "$build_libtool_libs" != conv enience ; then | |||
oldlibs="$oldlibs $output_objdir/$libname.$libext" | func_append oldlibs " $output_objdir/$libname.$libext" | |||
# Transform .lo files to .o files. | # Transform .lo files to .o files. | |||
oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext }'$/d' -e "$lo2o" | $NL2SP` | oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` | |||
fi | fi | |||
# Eliminate all temporary directories. | # Eliminate all temporary directories. | |||
#for path in $notinst_path; do | #for path in $notinst_path; do | |||
# lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $ | # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path | |||
path % %g"` | % %g"` | |||
# deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` | # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` | |||
# dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% - | # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$pat | |||
L$path % %g"` | h % %g"` | |||
#done | #done | |||
if test -n "$xrpath"; then | if test -n "$xrpath"; then | |||
# If the user specified any rpath flags, then add them. | # If the user specified any rpath flags, then add them. | |||
temp_xrpath= | temp_xrpath= | |||
for libdir in $xrpath; do | for libdir in $xrpath; do | |||
temp_xrpath="$temp_xrpath -R$libdir" | func_replace_sysroot "$libdir" | |||
func_append temp_xrpath " -R$func_replace_sysroot_result" | ||||
case "$finalize_rpath " in | case "$finalize_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) finalize_rpath="$finalize_rpath $libdir" ;; | *) func_append finalize_rpath " $libdir" ;; | |||
esac | esac | |||
done | done | |||
if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes ; then | if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes ; then | |||
dependency_libs="$temp_xrpath $dependency_libs" | dependency_libs="$temp_xrpath $dependency_libs" | |||
fi | fi | |||
fi | fi | |||
# Make sure dlfiles contains only unique files that won't be dlpreope ned | # Make sure dlfiles contains only unique files that won't be dlpreope ned | |||
old_dlfiles="$dlfiles" | old_dlfiles="$dlfiles" | |||
dlfiles= | dlfiles= | |||
for lib in $old_dlfiles; do | for lib in $old_dlfiles; do | |||
case " $dlprefiles $dlfiles " in | case " $dlprefiles $dlfiles " in | |||
*" $lib "*) ;; | *" $lib "*) ;; | |||
*) dlfiles="$dlfiles $lib" ;; | *) func_append dlfiles " $lib" ;; | |||
esac | esac | |||
done | done | |||
# Make sure dlprefiles contains only unique files | # Make sure dlprefiles contains only unique files | |||
old_dlprefiles="$dlprefiles" | old_dlprefiles="$dlprefiles" | |||
dlprefiles= | dlprefiles= | |||
for lib in $old_dlprefiles; do | for lib in $old_dlprefiles; do | |||
case "$dlprefiles " in | case "$dlprefiles " in | |||
*" $lib "*) ;; | *" $lib "*) ;; | |||
*) dlprefiles="$dlprefiles $lib" ;; | *) func_append dlprefiles " $lib" ;; | |||
esac | esac | |||
done | done | |||
if test "$build_libtool_libs" = yes; then | if test "$build_libtool_libs" = yes; then | |||
if test -n "$rpath"; then | if test -n "$rpath"; then | |||
case $host in | case $host in | |||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-ce gcc*) | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-ce gcc* | *-*-haiku*) | |||
# these systems don't actually have a c library (as such)! | # these systems don't actually have a c library (as such)! | |||
;; | ;; | |||
*-*-rhapsody* | *-*-darwin1.[012]) | *-*-rhapsody* | *-*-darwin1.[012]) | |||
# Rhapsody C library is in the System framework | # Rhapsody C library is in the System framework | |||
deplibs="$deplibs System.ltframework" | func_append deplibs " System.ltframework" | |||
;; | ;; | |||
*-*-netbsd*) | *-*-netbsd*) | |||
# Don't link with libc until the a.out ld.so is fixed. | # Don't link with libc until the a.out ld.so is fixed. | |||
;; | ;; | |||
*-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) | |||
# Do not include libc due to us having libc/libc_r. | # Do not include libc due to us having libc/libc_r. | |||
;; | ;; | |||
*-*-sco3.2v5* | *-*-sco5v6*) | *-*-sco3.2v5* | *-*-sco5v6*) | |||
# Causes problems with __ctype | # Causes problems with __ctype | |||
;; | ;; | |||
*-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) | *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) | |||
# Compiler inserts libc in the correct place for threads to work | # Compiler inserts libc in the correct place for threads to work | |||
;; | ;; | |||
*) | *) | |||
# Add libc to deplibs on all other systems if necessary. | # Add libc to deplibs on all other systems if necessary. | |||
if test "$build_libtool_need_lc" = "yes"; then | if test "$build_libtool_need_lc" = "yes"; then | |||
deplibs="$deplibs -lc" | func_append deplibs " -lc" | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
# Transform deplibs into only deplibs that can be linked in shared. | # Transform deplibs into only deplibs that can be linked in shared. | |||
name_save=$name | name_save=$name | |||
libname_save=$libname | libname_save=$libname | |||
release_save=$release | release_save=$release | |||
versuffix_save=$versuffix | versuffix_save=$versuffix | |||
skipping to change at line 6504 | skipping to change at line 7601 | |||
if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then | if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then | |||
ldd_output=`ldd conftest` | ldd_output=`ldd conftest` | |||
for i in $deplibs; do | for i in $deplibs; do | |||
case $i in | case $i in | |||
-l*) | -l*) | |||
func_stripname -l '' "$i" | func_stripname -l '' "$i" | |||
name=$func_stripname_result | name=$func_stripname_result | |||
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
case " $predeps $postdeps " in | case " $predeps $postdeps " in | |||
*" $i "*) | *" $i "*) | |||
newdeplibs="$newdeplibs $i" | func_append newdeplibs " $i" | |||
i="" | i="" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
if test -n "$i" ; then | if test -n "$i" ; then | |||
libname=`eval "\\$ECHO \"$libname_spec\""` | libname=`eval "\\$ECHO \"$libname_spec\""` | |||
deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` | deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` | |||
set dummy $deplib_matches; shift | set dummy $deplib_matches; shift | |||
deplib_match=$1 | deplib_match=$1 | |||
if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; t hen | if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; t hen | |||
newdeplibs="$newdeplibs $i" | func_append newdeplibs " $i" | |||
else | else | |||
droppeddeps=yes | droppeddeps=yes | |||
$ECHO | echo | |||
$ECHO "*** Warning: dynamic linker does not accept neede d library $i." | $ECHO "*** Warning: dynamic linker does not accept neede d library $i." | |||
$ECHO "*** I have the capability to make that library au | echo "*** I have the capability to make that library aut | |||
tomatically link in when" | omatically link in when" | |||
$ECHO "*** you link to this library. But I can only do | echo "*** you link to this library. But I can only do t | |||
this if you have a" | his if you have a" | |||
$ECHO "*** shared version of the library, which I believ | echo "*** shared version of the library, which I believe | |||
e you do not have" | you do not have" | |||
$ECHO "*** because a test_compile did reveal that the li | echo "*** because a test_compile did reveal that the lin | |||
nker did not use it for" | ker did not use it for" | |||
$ECHO "*** its dynamic dependency list that programs get | echo "*** its dynamic dependency list that programs get | |||
resolved with at runtime." | resolved with at runtime." | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
newdeplibs="$newdeplibs $i" | func_append newdeplibs " $i" | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
else | else | |||
# Error occurred in the first compile. Let's try to salvage | # Error occurred in the first compile. Let's try to salvage | |||
# the situation: Compile a separate program for each library. | # the situation: Compile a separate program for each library. | |||
for i in $deplibs; do | for i in $deplibs; do | |||
case $i in | case $i in | |||
-l*) | -l*) | |||
func_stripname -l '' "$i" | func_stripname -l '' "$i" | |||
name=$func_stripname_result | name=$func_stripname_result | |||
$opt_dry_run || $RM conftest | $opt_dry_run || $RM conftest | |||
if $LTCC $LTCFLAGS -o conftest conftest.c $i; then | if $LTCC $LTCFLAGS -o conftest conftest.c $i; then | |||
ldd_output=`ldd conftest` | ldd_output=`ldd conftest` | |||
if test "X$allow_libtool_libs_with_static_runtimes" = "Xye s" ; then | if test "X$allow_libtool_libs_with_static_runtimes" = "Xye s" ; then | |||
case " $predeps $postdeps " in | case " $predeps $postdeps " in | |||
*" $i "*) | *" $i "*) | |||
newdeplibs="$newdeplibs $i" | func_append newdeplibs " $i" | |||
i="" | i="" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
if test -n "$i" ; then | if test -n "$i" ; then | |||
libname=`eval "\\$ECHO \"$libname_spec\""` | libname=`eval "\\$ECHO \"$libname_spec\""` | |||
deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` | deplib_matches=`eval "\\$ECHO \"$library_names_spec\""` | |||
set dummy $deplib_matches; shift | set dummy $deplib_matches; shift | |||
deplib_match=$1 | deplib_match=$1 | |||
if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then | if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then | |||
newdeplibs="$newdeplibs $i" | func_append newdeplibs " $i" | |||
else | else | |||
droppeddeps=yes | droppeddeps=yes | |||
$ECHO | echo | |||
$ECHO "*** Warning: dynamic linker does not accept nee ded library $i." | $ECHO "*** Warning: dynamic linker does not accept nee ded library $i." | |||
$ECHO "*** I have the capability to make that library | echo "*** I have the capability to make that library a | |||
automatically link in when" | utomatically link in when" | |||
$ECHO "*** you link to this library. But I can only d | echo "*** you link to this library. But I can only do | |||
o this if you have a" | this if you have a" | |||
$ECHO "*** shared version of the library, which you do | echo "*** shared version of the library, which you do | |||
not appear to have" | not appear to have" | |||
$ECHO "*** because a test_compile did reveal that the | echo "*** because a test_compile did reveal that the l | |||
linker did not use this one" | inker did not use this one" | |||
$ECHO "*** as a dynamic dependency that programs can g | echo "*** as a dynamic dependency that programs can ge | |||
et resolved with at runtime." | t resolved with at runtime." | |||
fi | fi | |||
fi | fi | |||
else | else | |||
droppeddeps=yes | droppeddeps=yes | |||
$ECHO | echo | |||
$ECHO "*** Warning! Library $i is needed by this library but I was not able to" | $ECHO "*** Warning! Library $i is needed by this library but I was not able to" | |||
$ECHO "*** make it link in! You will probably need to ins | echo "*** make it link in! You will probably need to inst | |||
tall it or some" | all it or some" | |||
$ECHO "*** library that it depends on before this library | echo "*** library that it depends on before this library w | |||
will be fully" | ill be fully" | |||
$ECHO "*** functional. Installing it before continuing wo | echo "*** functional. Installing it before continuing wou | |||
uld be even better." | ld be even better." | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
newdeplibs="$newdeplibs $i" | func_append newdeplibs " $i" | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
fi | fi | |||
;; | ;; | |||
file_magic*) | file_magic*) | |||
set dummy $deplibs_check_method; shift | set dummy $deplibs_check_method; shift | |||
file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` | file_magic_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` | |||
for a_deplib in $deplibs; do | for a_deplib in $deplibs; do | |||
case $a_deplib in | case $a_deplib in | |||
-l*) | -l*) | |||
func_stripname -l '' "$a_deplib" | func_stripname -l '' "$a_deplib" | |||
name=$func_stripname_result | name=$func_stripname_result | |||
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
case " $predeps $postdeps " in | case " $predeps $postdeps " in | |||
*" $a_deplib "*) | *" $a_deplib "*) | |||
newdeplibs="$newdeplibs $a_deplib" | func_append newdeplibs " $a_deplib" | |||
a_deplib="" | a_deplib="" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
if test -n "$a_deplib" ; then | if test -n "$a_deplib" ; then | |||
libname=`eval "\\$ECHO \"$libname_spec\""` | libname=`eval "\\$ECHO \"$libname_spec\""` | |||
if test -n "$file_magic_glob"; then | ||||
libnameglob=`func_echo_all "$libname" | $SED -e $file_magi | ||||
c_glob` | ||||
else | ||||
libnameglob=$libname | ||||
fi | ||||
test "$want_nocaseglob" = yes && nocaseglob=`shopt -p nocase | ||||
glob` | ||||
for i in $lib_search_path $sys_lib_search_path $shlib_search _path; do | for i in $lib_search_path $sys_lib_search_path $shlib_search _path; do | |||
potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | if test "$want_nocaseglob" = yes; then | |||
shopt -s nocaseglob | ||||
potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` | ||||
$nocaseglob | ||||
else | ||||
potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` | ||||
fi | ||||
for potent_lib in $potential_libs; do | for potent_lib in $potential_libs; do | |||
# Follow soft links. | # Follow soft links. | |||
if ls -lLd "$potent_lib" 2>/dev/null | | if ls -lLd "$potent_lib" 2>/dev/null | | |||
$GREP " -> " >/dev/null; then | $GREP " -> " >/dev/null; then | |||
continue | continue | |||
fi | fi | |||
# The statement above tries to avoid entering an | # The statement above tries to avoid entering an | |||
# endless loop below, in case of cyclic links. | # endless loop below, in case of cyclic links. | |||
# We might still enter an endless loop, since a link | # We might still enter an endless loop, since a link | |||
# loop can be closed while we follow links, | # loop can be closed while we follow links, | |||
# but so what? | # but so what? | |||
potlib="$potent_lib" | potlib="$potent_lib" | |||
while test -h "$potlib" 2>/dev/null; do | while test -h "$potlib" 2>/dev/null; do | |||
potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` | potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` | |||
case $potliblink in | case $potliblink in | |||
[\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; | [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; | |||
*) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'` "$potliblink";; | *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$pot liblink";; | |||
esac | esac | |||
done | done | |||
if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | | if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | | |||
$SED -e 10q | | $SED -e 10q | | |||
$EGREP "$file_magic_regex" > /dev/null; then | $EGREP "$file_magic_regex" > /dev/null; then | |||
newdeplibs="$newdeplibs $a_deplib" | func_append newdeplibs " $a_deplib" | |||
a_deplib="" | a_deplib="" | |||
break 2 | break 2 | |||
fi | fi | |||
done | done | |||
done | done | |||
fi | fi | |||
if test -n "$a_deplib" ; then | if test -n "$a_deplib" ; then | |||
droppeddeps=yes | droppeddeps=yes | |||
$ECHO | echo | |||
$ECHO "*** Warning: linker path does not have real file for library $a_deplib." | $ECHO "*** Warning: linker path does not have real file for library $a_deplib." | |||
$ECHO "*** I have the capability to make that library automa | echo "*** I have the capability to make that library automat | |||
tically link in when" | ically link in when" | |||
$ECHO "*** you link to this library. But I can only do this | echo "*** you link to this library. But I can only do this | |||
if you have a" | if you have a" | |||
$ECHO "*** shared version of the library, which you do not a | echo "*** shared version of the library, which you do not ap | |||
ppear to have" | pear to have" | |||
$ECHO "*** because I did check the linker path looking for a | echo "*** because I did check the linker path looking for a | |||
file starting" | file starting" | |||
if test -z "$potlib" ; then | if test -z "$potlib" ; then | |||
$ECHO "*** with $libname but no candidates were found. (.. .for file magic test)" | $ECHO "*** with $libname but no candidates were found. (.. .for file magic test)" | |||
else | else | |||
$ECHO "*** with $libname and none of the candidates passed a file format test" | $ECHO "*** with $libname and none of the candidates passed a file format test" | |||
$ECHO "*** using a file magic. Last file checked: $potlib" | $ECHO "*** using a file magic. Last file checked: $potlib" | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
# Add a -L argument. | # Add a -L argument. | |||
newdeplibs="$newdeplibs $a_deplib" | func_append newdeplibs " $a_deplib" | |||
;; | ;; | |||
esac | esac | |||
done # Gone through all deplibs. | done # Gone through all deplibs. | |||
;; | ;; | |||
match_pattern*) | match_pattern*) | |||
set dummy $deplibs_check_method; shift | set dummy $deplibs_check_method; shift | |||
match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` | match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` | |||
for a_deplib in $deplibs; do | for a_deplib in $deplibs; do | |||
case $a_deplib in | case $a_deplib in | |||
-l*) | -l*) | |||
func_stripname -l '' "$a_deplib" | func_stripname -l '' "$a_deplib" | |||
name=$func_stripname_result | name=$func_stripname_result | |||
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then | |||
case " $predeps $postdeps " in | case " $predeps $postdeps " in | |||
*" $a_deplib "*) | *" $a_deplib "*) | |||
newdeplibs="$newdeplibs $a_deplib" | func_append newdeplibs " $a_deplib" | |||
a_deplib="" | a_deplib="" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
if test -n "$a_deplib" ; then | if test -n "$a_deplib" ; then | |||
libname=`eval "\\$ECHO \"$libname_spec\""` | libname=`eval "\\$ECHO \"$libname_spec\""` | |||
for i in $lib_search_path $sys_lib_search_path $shlib_search _path; do | for i in $lib_search_path $sys_lib_search_path $shlib_search _path; do | |||
potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | potential_libs=`ls $i/$libname[.-]* 2>/dev/null` | |||
for potent_lib in $potential_libs; do | for potent_lib in $potential_libs; do | |||
potlib="$potent_lib" # see symlink-check above in file_m agic test | potlib="$potent_lib" # see symlink-check above in file_m agic test | |||
if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ | if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ | |||
$EGREP "$match_pattern_regex" > /dev/null; then | $EGREP "$match_pattern_regex" > /dev/null; then | |||
newdeplibs="$newdeplibs $a_deplib" | func_append newdeplibs " $a_deplib" | |||
a_deplib="" | a_deplib="" | |||
break 2 | break 2 | |||
fi | fi | |||
done | done | |||
done | done | |||
fi | fi | |||
if test -n "$a_deplib" ; then | if test -n "$a_deplib" ; then | |||
droppeddeps=yes | droppeddeps=yes | |||
$ECHO | echo | |||
$ECHO "*** Warning: linker path does not have real file for library $a_deplib." | $ECHO "*** Warning: linker path does not have real file for library $a_deplib." | |||
$ECHO "*** I have the capability to make that library automa | echo "*** I have the capability to make that library automat | |||
tically link in when" | ically link in when" | |||
$ECHO "*** you link to this library. But I can only do this | echo "*** you link to this library. But I can only do this | |||
if you have a" | if you have a" | |||
$ECHO "*** shared version of the library, which you do not a | echo "*** shared version of the library, which you do not ap | |||
ppear to have" | pear to have" | |||
$ECHO "*** because I did check the linker path looking for a | echo "*** because I did check the linker path looking for a | |||
file starting" | file starting" | |||
if test -z "$potlib" ; then | if test -z "$potlib" ; then | |||
$ECHO "*** with $libname but no candidates were found. (.. .for regex pattern test)" | $ECHO "*** with $libname but no candidates were found. (.. .for regex pattern test)" | |||
else | else | |||
$ECHO "*** with $libname and none of the candidates passed a file format test" | $ECHO "*** with $libname and none of the candidates passed a file format test" | |||
$ECHO "*** using a regex pattern. Last file checked: $potl ib" | $ECHO "*** using a regex pattern. Last file checked: $potl ib" | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
# Add a -L argument. | # Add a -L argument. | |||
newdeplibs="$newdeplibs $a_deplib" | func_append newdeplibs " $a_deplib" | |||
;; | ;; | |||
esac | esac | |||
done # Gone through all deplibs. | done # Gone through all deplibs. | |||
;; | ;; | |||
none | unknown | *) | none | unknown | *) | |||
newdeplibs="" | newdeplibs="" | |||
tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ | tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g | |||
-e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` | '` | |||
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; the n | if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; the n | |||
for i in $predeps $postdeps ; do | for i in $predeps $postdeps ; do | |||
# can't use Xsed below, because $i might contain '/' | # can't use Xsed below, because $i might contain '/' | |||
tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` | tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` | |||
done | done | |||
fi | fi | |||
if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | | case $tmp_deplibs in | |||
$GREP . >/dev/null; then | *[!\ \ ]*) | |||
$ECHO | echo | |||
if test "X$deplibs_check_method" = "Xnone"; then | if test "X$deplibs_check_method" = "Xnone"; then | |||
$ECHO "*** Warning: inter-library dependencies are not support ed in this platform." | echo "*** Warning: inter-library dependencies are not supporte d in this platform." | |||
else | else | |||
$ECHO "*** Warning: inter-library dependencies are not known t o be supported." | echo "*** Warning: inter-library dependencies are not known to be supported." | |||
fi | fi | |||
$ECHO "*** All declared inter-library dependencies are being dro pped." | echo "*** All declared inter-library dependencies are being drop ped." | |||
droppeddeps=yes | droppeddeps=yes | |||
fi | ;; | |||
esac | ||||
;; | ;; | |||
esac | esac | |||
versuffix=$versuffix_save | versuffix=$versuffix_save | |||
major=$major_save | major=$major_save | |||
release=$release_save | release=$release_save | |||
libname=$libname_save | libname=$libname_save | |||
name=$name_save | name=$name_save | |||
case $host in | case $host in | |||
*-*-rhapsody* | *-*-darwin1.[012]) | *-*-rhapsody* | *-*-darwin1.[012]) | |||
# On Rhapsody replace the C library with the System framework | # On Rhapsody replace the C library with the System framework | |||
newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltfr amework /'` | newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframewo rk /'` | |||
;; | ;; | |||
esac | esac | |||
if test "$droppeddeps" = yes; then | if test "$droppeddeps" = yes; then | |||
if test "$module" = yes; then | if test "$module" = yes; then | |||
$ECHO | echo | |||
$ECHO "*** Warning: libtool could not satisfy all declared inter | echo "*** Warning: libtool could not satisfy all declared inter- | |||
-library" | library" | |||
$ECHO "*** dependencies of module $libname. Therefore, libtool will create" | $ECHO "*** dependencies of module $libname. Therefore, libtool will create" | |||
$ECHO "*** a static module, that should work as long as the dlop | echo "*** a static module, that should work as long as the dlope | |||
ening" | ning" | |||
$ECHO "*** application is linked with the -dlopen flag." | echo "*** application is linked with the -dlopen flag." | |||
if test -z "$global_symbol_pipe"; then | if test -z "$global_symbol_pipe"; then | |||
$ECHO | echo | |||
$ECHO "*** However, this would only work if libtool was able t | echo "*** However, this would only work if libtool was able to | |||
o extract symbol" | extract symbol" | |||
$ECHO "*** lists from a program, using \`nm' or equivalent, bu | echo "*** lists from a program, using \`nm' or equivalent, but | |||
t libtool could" | libtool could" | |||
$ECHO "*** not find such a program. So, this module is probab | echo "*** not find such a program. So, this module is probabl | |||
ly useless." | y useless." | |||
$ECHO "*** \`nm' from GNU binutils and a full rebuild may help | echo "*** \`nm' from GNU binutils and a full rebuild may help. | |||
." | " | |||
fi | fi | |||
if test "$build_old_libs" = no; then | if test "$build_old_libs" = no; then | |||
oldlibs="$output_objdir/$libname.$libext" | oldlibs="$output_objdir/$libname.$libext" | |||
build_libtool_libs=module | build_libtool_libs=module | |||
build_old_libs=yes | build_old_libs=yes | |||
else | else | |||
build_libtool_libs=no | build_libtool_libs=no | |||
fi | fi | |||
else | else | |||
$ECHO "*** The inter-library dependencies that have been dropped | echo "*** The inter-library dependencies that have been dropped | |||
here will be" | here will be" | |||
$ECHO "*** automatically added whenever a program is linked with | echo "*** automatically added whenever a program is linked with | |||
this library" | this library" | |||
$ECHO "*** or is declared to -dlopen it." | echo "*** or is declared to -dlopen it." | |||
if test "$allow_undefined" = no; then | if test "$allow_undefined" = no; then | |||
$ECHO | echo | |||
$ECHO "*** Since this library must not contain undefined symbo | echo "*** Since this library must not contain undefined symbol | |||
ls," | s," | |||
$ECHO "*** because either the platform does not support them o | echo "*** because either the platform does not support them or | |||
r" | " | |||
$ECHO "*** it was explicitly requested with -no-undefined," | echo "*** it was explicitly requested with -no-undefined," | |||
$ECHO "*** libtool will only create a static version of it." | echo "*** libtool will only create a static version of it." | |||
if test "$build_old_libs" = no; then | if test "$build_old_libs" = no; then | |||
oldlibs="$output_objdir/$libname.$libext" | oldlibs="$output_objdir/$libname.$libext" | |||
build_libtool_libs=module | build_libtool_libs=module | |||
build_old_libs=yes | build_old_libs=yes | |||
else | else | |||
build_libtool_libs=no | build_libtool_libs=no | |||
fi | fi | |||
fi | fi | |||
fi | fi | |||
fi | fi | |||
# Done checking deplibs! | # Done checking deplibs! | |||
deplibs=$newdeplibs | deplibs=$newdeplibs | |||
fi | fi | |||
# Time to change all our "foo.ltframework" stuff back to "-framework foo" | # Time to change all our "foo.ltframework" stuff back to "-framework foo" | |||
case $host in | case $host in | |||
*-*-darwin*) | *-*-darwin*) | |||
newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltfram | newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework | |||
ework% -framework \1%g'` | % -framework \1%g'` | |||
new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | | |||
| $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` | |||
deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% | deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -fra | |||
-framework \1%g'` | mework \1%g'` | |||
;; | ;; | |||
esac | esac | |||
# move library search paths that coincide with paths to not yet | # move library search paths that coincide with paths to not yet | |||
# installed libraries to the beginning of the library search list | # installed libraries to the beginning of the library search list | |||
new_libs= | new_libs= | |||
for path in $notinst_path; do | for path in $notinst_path; do | |||
case " $new_libs " in | case " $new_libs " in | |||
*" -L$path/$objdir "*) ;; | *" -L$path/$objdir "*) ;; | |||
*) | *) | |||
case " $deplibs " in | case " $deplibs " in | |||
*" -L$path/$objdir "*) | *" -L$path/$objdir "*) | |||
new_libs="$new_libs -L$path/$objdir" ;; | func_append new_libs " -L$path/$objdir" ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
for deplib in $deplibs; do | for deplib in $deplibs; do | |||
case $deplib in | case $deplib in | |||
-L*) | -L*) | |||
case " $new_libs " in | case " $new_libs " in | |||
*" $deplib "*) ;; | *" $deplib "*) ;; | |||
*) new_libs="$new_libs $deplib" ;; | *) func_append new_libs " $deplib" ;; | |||
esac | esac | |||
;; | ;; | |||
*) new_libs="$new_libs $deplib" ;; | *) func_append new_libs " $deplib" ;; | |||
esac | esac | |||
done | done | |||
deplibs="$new_libs" | deplibs="$new_libs" | |||
# All the library-specific variables (install_libdir is set above). | # All the library-specific variables (install_libdir is set above). | |||
library_names= | library_names= | |||
old_library= | old_library= | |||
dlname= | dlname= | |||
# Test again, we may have decided not to build it any more | # Test again, we may have decided not to build it any more | |||
if test "$build_libtool_libs" = yes; then | if test "$build_libtool_libs" = yes; then | |||
if test "$hardcode_into_libs" = yes; then | if test "$hardcode_into_libs" = yes; then | |||
# Hardcode the library paths | # Hardcode the library paths | |||
hardcode_libdirs= | hardcode_libdirs= | |||
dep_rpath= | dep_rpath= | |||
rpath="$finalize_rpath" | rpath="$finalize_rpath" | |||
test "$mode" != relink && rpath="$compile_rpath$rpath" | test "$opt_mode" != relink && rpath="$compile_rpath$rpath" | |||
for libdir in $rpath; do | for libdir in $rpath; do | |||
if test -n "$hardcode_libdir_flag_spec"; then | if test -n "$hardcode_libdir_flag_spec"; then | |||
if test -n "$hardcode_libdir_separator"; then | if test -n "$hardcode_libdir_separator"; then | |||
func_replace_sysroot "$libdir" | ||||
libdir=$func_replace_sysroot_result | ||||
if test -z "$hardcode_libdirs"; then | if test -z "$hardcode_libdirs"; then | |||
hardcode_libdirs="$libdir" | hardcode_libdirs="$libdir" | |||
else | else | |||
# Just accumulate the unique libdirs. | # Just accumulate the unique libdirs. | |||
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_ libdir_separator in | case $hardcode_libdir_separator$hardcode_libdirs$hardcode_ libdir_separator in | |||
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separa tor"*) | *"$hardcode_libdir_separator$libdir$hardcode_libdir_separa tor"*) | |||
;; | ;; | |||
*) | *) | |||
hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_sepa rator$libdir" | func_append hardcode_libdirs "$hardcode_libdir_separator $libdir" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
else | else | |||
eval flag=\"$hardcode_libdir_flag_spec\" | eval flag=\"$hardcode_libdir_flag_spec\" | |||
dep_rpath="$dep_rpath $flag" | func_append dep_rpath " $flag" | |||
fi | fi | |||
elif test -n "$runpath_var"; then | elif test -n "$runpath_var"; then | |||
case "$perm_rpath " in | case "$perm_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) perm_rpath="$perm_rpath $libdir" ;; | *) func_apped perm_rpath " $libdir" ;; | |||
esac | esac | |||
fi | fi | |||
done | done | |||
# Substitute the hardcoded libdirs into the rpath. | # Substitute the hardcoded libdirs into the rpath. | |||
if test -n "$hardcode_libdir_separator" && | if test -n "$hardcode_libdir_separator" && | |||
test -n "$hardcode_libdirs"; then | test -n "$hardcode_libdirs"; then | |||
libdir="$hardcode_libdirs" | libdir="$hardcode_libdirs" | |||
if test -n "$hardcode_libdir_flag_spec_ld"; then | if test -n "$hardcode_libdir_flag_spec_ld"; then | |||
eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" | eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" | |||
else | else | |||
eval dep_rpath=\"$hardcode_libdir_flag_spec\" | eval dep_rpath=\"$hardcode_libdir_flag_spec\" | |||
fi | fi | |||
fi | fi | |||
if test -n "$runpath_var" && test -n "$perm_rpath"; then | if test -n "$runpath_var" && test -n "$perm_rpath"; then | |||
# We should set the runpath_var. | # We should set the runpath_var. | |||
rpath= | rpath= | |||
for dir in $perm_rpath; do | for dir in $perm_rpath; do | |||
rpath="$rpath$dir:" | func_append rpath "$dir:" | |||
done | done | |||
eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" | eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" | |||
fi | fi | |||
test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" | test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" | |||
fi | fi | |||
shlibpath="$finalize_shlibpath" | shlibpath="$finalize_shlibpath" | |||
test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" | test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpat h" | |||
if test -n "$shlibpath"; then | if test -n "$shlibpath"; then | |||
eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpa th_var" | eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpa th_var" | |||
fi | fi | |||
# Get the real and link names of the library. | # Get the real and link names of the library. | |||
eval shared_ext=\"$shrext_cmds\" | eval shared_ext=\"$shrext_cmds\" | |||
eval library_names=\"$library_names_spec\" | eval library_names=\"$library_names_spec\" | |||
set dummy $library_names | set dummy $library_names | |||
shift | shift | |||
realname="$1" | realname="$1" | |||
skipping to change at line 6916 | skipping to change at line 8027 | |||
soname="$realname" | soname="$realname" | |||
fi | fi | |||
if test -z "$dlname"; then | if test -z "$dlname"; then | |||
dlname=$soname | dlname=$soname | |||
fi | fi | |||
lib="$output_objdir/$realname" | lib="$output_objdir/$realname" | |||
linknames= | linknames= | |||
for link | for link | |||
do | do | |||
linknames="$linknames $link" | func_append linknames " $link" | |||
done | done | |||
# Use standard objects if they are pic | # Use standard objects if they are pic | |||
test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed - e "$lo2o" | $NL2SP` | test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$l o2o" | $NL2SP` | |||
test "X$libobjs" = "X " && libobjs= | test "X$libobjs" = "X " && libobjs= | |||
delfiles= | delfiles= | |||
if test -n "$export_symbols" && test -n "$include_expsyms"; then | if test -n "$export_symbols" && test -n "$include_expsyms"; then | |||
$opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp " | $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp " | |||
export_symbols="$output_objdir/$libname.uexp" | export_symbols="$output_objdir/$libname.uexp" | |||
delfiles="$delfiles $export_symbols" | func_append delfiles " $export_symbols" | |||
fi | fi | |||
orig_export_symbols= | orig_export_symbols= | |||
case $host_os in | case $host_os in | |||
cygwin* | mingw* | cegcc*) | cygwin* | mingw* | cegcc*) | |||
if test -n "$export_symbols" && test -z "$export_symbols_regex"; t hen | if test -n "$export_symbols" && test -z "$export_symbols_regex"; t hen | |||
# exporting using user supplied symfile | # exporting using user supplied symfile | |||
if test "x`$SED 1q $export_symbols`" != xEXPORTS; then | if test "x`$SED 1q $export_symbols`" != xEXPORTS; then | |||
# and it's NOT already a .def file. Must figure out | # and it's NOT already a .def file. Must figure out | |||
# which of the given symbols are data symbols and tag | # which of the given symbols are data symbols and tag | |||
skipping to change at line 6958 | skipping to change at line 8069 | |||
esac | esac | |||
# Prepare the list of exported symbols | # Prepare the list of exported symbols | |||
if test -z "$export_symbols"; then | if test -z "$export_symbols"; then | |||
if test "$always_export_symbols" = yes || test -n "$export_symbols _regex"; then | if test "$always_export_symbols" = yes || test -n "$export_symbols _regex"; then | |||
func_verbose "generating symbol list for \`$libname.la'" | func_verbose "generating symbol list for \`$libname.la'" | |||
export_symbols="$output_objdir/$libname.exp" | export_symbols="$output_objdir/$libname.exp" | |||
$opt_dry_run || $RM $export_symbols | $opt_dry_run || $RM $export_symbols | |||
cmds=$export_symbols_cmds | cmds=$export_symbols_cmds | |||
save_ifs="$IFS"; IFS='~' | save_ifs="$IFS"; IFS='~' | |||
for cmd in $cmds; do | for cmd1 in $cmds; do | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
eval cmd=\"$cmd\" | # Take the normal branch if the nm_file_list_spec branch | |||
func_len " $cmd" | # doesn't work or if tool conversion is not needed. | |||
len=$func_len_result | case $nm_file_list_spec~$to_tool_file_cmd in | |||
if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le - | *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | | |||
1; then | ~*) | |||
try_normal_branch=yes | ||||
eval cmd=\"$cmd1\" | ||||
func_len " $cmd" | ||||
len=$func_len_result | ||||
;; | ||||
*) | ||||
try_normal_branch=no | ||||
;; | ||||
esac | ||||
if test "$try_normal_branch" = yes \ | ||||
&& { test "$len" -lt "$max_cmd_len" \ | ||||
|| test "$max_cmd_len" -le -1; } | ||||
then | ||||
func_show_eval "$cmd" 'exit $?' | ||||
skipped_export=false | ||||
elif test -n "$nm_file_list_spec"; then | ||||
func_basename "$output" | ||||
output_la=$func_basename_result | ||||
save_libobjs=$libobjs | ||||
save_output=$output | ||||
output=${output_objdir}/${output_la}.nm | ||||
func_to_tool_file "$output" | ||||
libobjs=$nm_file_list_spec$func_to_tool_file_result | ||||
func_append delfiles " $output" | ||||
func_verbose "creating $NM input file list: $output" | ||||
for obj in $save_libobjs; do | ||||
func_to_tool_file "$obj" | ||||
$ECHO "$func_to_tool_file_result" | ||||
done > "$output" | ||||
eval cmd=\"$cmd1\" | ||||
func_show_eval "$cmd" 'exit $?' | func_show_eval "$cmd" 'exit $?' | |||
output=$save_output | ||||
libobjs=$save_libobjs | ||||
skipped_export=false | skipped_export=false | |||
else | else | |||
# The command line is too long to execute in one step. | # The command line is too long to execute in one step. | |||
func_verbose "using reloadable object file for export list.. ." | func_verbose "using reloadable object file for export list.. ." | |||
skipped_export=: | skipped_export=: | |||
# Break out early, otherwise skipped_export may be | # Break out early, otherwise skipped_export may be | |||
# set to false by a later but shorter cmd. | # set to false by a later but shorter cmd. | |||
break | break | |||
fi | fi | |||
done | done | |||
skipping to change at line 6986 | skipping to change at line 8129 | |||
if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then | if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then | |||
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_sym bols" > "${export_symbols}T"' | func_show_eval '$EGREP -e "$export_symbols_regex" "$export_sym bols" > "${export_symbols}T"' | |||
func_show_eval '$MV "${export_symbols}T" "$export_symbols"' | func_show_eval '$MV "${export_symbols}T" "$export_symbols"' | |||
fi | fi | |||
fi | fi | |||
fi | fi | |||
if test -n "$export_symbols" && test -n "$include_expsyms"; then | if test -n "$export_symbols" && test -n "$include_expsyms"; then | |||
tmp_export_symbols="$export_symbols" | tmp_export_symbols="$export_symbols" | |||
test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export _symbols" | test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export _symbols" | |||
$opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL > > "$tmp_export_symbols"' | $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_e xport_symbols"' | |||
fi | fi | |||
if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols" ; then | if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols" ; then | |||
# The given exports_symbols file has to be filtered, so filter it. | # The given exports_symbols file has to be filtered, so filter it. | |||
func_verbose "filter symbol list for \`$libname.la' to tag DATA ex ports" | func_verbose "filter symbol list for \`$libname.la' to tag DATA ex ports" | |||
# FIXME: $output_objdir/$libname.filter potentially contains lots of | # FIXME: $output_objdir/$libname.filter potentially contains lots of | |||
# 's' commands which not all seds can handle. GNU sed should be fi ne | # 's' commands which not all seds can handle. GNU sed should be fi ne | |||
# though. Also, the filter scales superlinearly with the number of | # though. Also, the filter scales superlinearly with the number of | |||
# global variables. join(1) would be nice here, but unfortunately | # global variables. join(1) would be nice here, but unfortunately | |||
# isn't a blessed tool. | # isn't a blessed tool. | |||
$opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\ 1\2|,' < $export_symbols > $output_objdir/$libname.filter | $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\ 1\2|,' < $export_symbols > $output_objdir/$libname.filter | |||
delfiles="$delfiles $export_symbols $output_objdir/$libname.filter " | func_append delfiles " $export_symbols $output_objdir/$libname.fil ter" | |||
export_symbols=$output_objdir/$libname.def | export_symbols=$output_objdir/$libname.def | |||
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_exp ort_symbols > $export_symbols | $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_exp ort_symbols > $export_symbols | |||
fi | fi | |||
tmp_deplibs= | tmp_deplibs= | |||
for test_deplib in $deplibs; do | for test_deplib in $deplibs; do | |||
case " $convenience " in | case " $convenience " in | |||
*" $test_deplib "*) ;; | *" $test_deplib "*) ;; | |||
*) | *) | |||
tmp_deplibs="$tmp_deplibs $test_deplib" | func_append tmp_deplibs " $test_deplib" | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
deplibs="$tmp_deplibs" | deplibs="$tmp_deplibs" | |||
if test -n "$convenience"; then | if test -n "$convenience"; then | |||
if test -n "$whole_archive_flag_spec" && | if test -n "$whole_archive_flag_spec" && | |||
test "$compiler_needs_object" = yes && | test "$compiler_needs_object" = yes && | |||
test -z "$libobjs"; then | test -z "$libobjs"; then | |||
# extract the archives, so we have objects to list. | # extract the archives, so we have objects to list. | |||
# TODO: could optimize this to just extract one archive. | # TODO: could optimize this to just extract one archive. | |||
whole_archive_flag_spec= | whole_archive_flag_spec= | |||
fi | fi | |||
if test -n "$whole_archive_flag_spec"; then | if test -n "$whole_archive_flag_spec"; then | |||
save_libobjs=$libobjs | save_libobjs=$libobjs | |||
eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | eval libobjs=\"\$libobjs $whole_archive_flag_spec\" | |||
test "X$libobjs" = "X " && libobjs= | test "X$libobjs" = "X " && libobjs= | |||
else | else | |||
gentop="$output_objdir/${outputname}x" | gentop="$output_objdir/${outputname}x" | |||
generated="$generated $gentop" | func_append generated " $gentop" | |||
func_extract_archives $gentop $convenience | func_extract_archives $gentop $convenience | |||
libobjs="$libobjs $func_extract_archives_result" | func_append libobjs " $func_extract_archives_result" | |||
test "X$libobjs" = "X " && libobjs= | test "X$libobjs" = "X " && libobjs= | |||
fi | fi | |||
fi | fi | |||
if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; th en | if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; th en | |||
eval flag=\"$thread_safe_flag_spec\" | eval flag=\"$thread_safe_flag_spec\" | |||
linker_flags="$linker_flags $flag" | func_append linker_flags " $flag" | |||
fi | fi | |||
# Make a backup of the uninstalled library when relinking | # Make a backup of the uninstalled library when relinking | |||
if test "$mode" = relink; then | if test "$opt_mode" = relink; then | |||
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $M V $realname ${realname}U)' || exit $? | $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $M V $realname ${realname}U)' || exit $? | |||
fi | fi | |||
# Do each of the archive commands. | # Do each of the archive commands. | |||
if test "$module" = yes && test -n "$module_cmds" ; then | if test "$module" = yes && test -n "$module_cmds" ; then | |||
if test -n "$export_symbols" && test -n "$module_expsym_cmds"; the n | if test -n "$export_symbols" && test -n "$module_expsym_cmds"; the n | |||
eval test_cmds=\"$module_expsym_cmds\" | eval test_cmds=\"$module_expsym_cmds\" | |||
cmds=$module_expsym_cmds | cmds=$module_expsym_cmds | |||
else | else | |||
eval test_cmds=\"$module_cmds\" | eval test_cmds=\"$module_cmds\" | |||
skipping to change at line 7087 | skipping to change at line 8230 | |||
# want to use save_libobjs as it was before | # want to use save_libobjs as it was before | |||
# whole_archive_flag_spec was expanded, because we can't | # whole_archive_flag_spec was expanded, because we can't | |||
# assume the linker understands whole_archive_flag_spec. | # assume the linker understands whole_archive_flag_spec. | |||
# This may have to be revisited, in case too many | # This may have to be revisited, in case too many | |||
# convenience libraries get linked in and end up exceeding | # convenience libraries get linked in and end up exceeding | |||
# the spec. | # the spec. | |||
if test -z "$convenience" || test -z "$whole_archive_flag_spec"; t hen | if test -z "$convenience" || test -z "$whole_archive_flag_spec"; t hen | |||
save_libobjs=$libobjs | save_libobjs=$libobjs | |||
fi | fi | |||
save_output=$output | save_output=$output | |||
output_la=`$ECHO "X$output" | $Xsed -e "$basename"` | func_basename "$output" | |||
output_la=$func_basename_result | ||||
# Clear the reloadable object creation command queue and | # Clear the reloadable object creation command queue and | |||
# initialize k to one. | # initialize k to one. | |||
test_cmds= | test_cmds= | |||
concat_cmds= | concat_cmds= | |||
objlist= | objlist= | |||
last_robj= | last_robj= | |||
k=1 | k=1 | |||
if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && t est "$with_gnu_ld" = yes; then | if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && t est "$with_gnu_ld" = yes; then | |||
output=${output_objdir}/${output_la}.lnkscript | output=${output_objdir}/${output_la}.lnkscript | |||
func_verbose "creating GNU ld script: $output" | func_verbose "creating GNU ld script: $output" | |||
$ECHO 'INPUT (' > $output | echo 'INPUT (' > $output | |||
for obj in $save_libobjs | for obj in $save_libobjs | |||
do | do | |||
$ECHO "$obj" >> $output | func_to_tool_file "$obj" | |||
$ECHO "$func_to_tool_file_result" >> $output | ||||
done | done | |||
$ECHO ')' >> $output | echo ')' >> $output | |||
delfiles="$delfiles $output" | func_append delfiles " $output" | |||
func_to_tool_file "$output" | ||||
output=$func_to_tool_file_result | ||||
elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then | elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then | |||
output=${output_objdir}/${output_la}.lnk | output=${output_objdir}/${output_la}.lnk | |||
func_verbose "creating linker input file list: $output" | func_verbose "creating linker input file list: $output" | |||
: > $output | : > $output | |||
set x $save_libobjs | set x $save_libobjs | |||
shift | shift | |||
firstobj= | firstobj= | |||
if test "$compiler_needs_object" = yes; then | if test "$compiler_needs_object" = yes; then | |||
firstobj="$1 " | firstobj="$1 " | |||
shift | shift | |||
fi | fi | |||
for obj | for obj | |||
do | do | |||
$ECHO "$obj" >> $output | func_to_tool_file "$obj" | |||
$ECHO "$func_to_tool_file_result" >> $output | ||||
done | done | |||
delfiles="$delfiles $output" | func_append delfiles " $output" | |||
output=$firstobj\"$file_list_spec$output\" | func_to_tool_file "$output" | |||
output=$firstobj\"$file_list_spec$func_to_tool_file_result\" | ||||
else | else | |||
if test -n "$save_libobjs"; then | if test -n "$save_libobjs"; then | |||
func_verbose "creating reloadable object files..." | func_verbose "creating reloadable object files..." | |||
output=$output_objdir/$output_la-${k}.$objext | output=$output_objdir/$output_la-${k}.$objext | |||
eval test_cmds=\"$reload_cmds\" | eval test_cmds=\"$reload_cmds\" | |||
func_len " $test_cmds" | func_len " $test_cmds" | |||
len0=$func_len_result | len0=$func_len_result | |||
len=$len0 | len=$len0 | |||
# Loop over the list of objects to be linked. | # Loop over the list of objects to be linked. | |||
skipping to change at line 7147 | skipping to change at line 8296 | |||
func_arith $len + $func_len_result | func_arith $len + $func_len_result | |||
len=$func_arith_result | len=$func_arith_result | |||
if test "X$objlist" = X || | if test "X$objlist" = X || | |||
test "$len" -lt "$max_cmd_len"; then | test "$len" -lt "$max_cmd_len"; then | |||
func_append objlist " $obj" | func_append objlist " $obj" | |||
else | else | |||
# The command $test_cmds is almost too long, add a | # The command $test_cmds is almost too long, add a | |||
# command to the queue. | # command to the queue. | |||
if test "$k" -eq 1 ; then | if test "$k" -eq 1 ; then | |||
# The first file doesn't have a previous command to add. | # The first file doesn't have a previous command to add. | |||
eval concat_cmds=\"$reload_cmds $objlist $last_robj\" | reload_objs=$objlist | |||
eval concat_cmds=\"$reload_cmds\" | ||||
else | else | |||
# All subsequent reloadable object files will link in | # All subsequent reloadable object files will link in | |||
# the last one created. | # the last one created. | |||
eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $ | reload_objs="$objlist $last_robj" | |||
last_robj~\$RM $last_robj\" | eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last | |||
_robj\" | ||||
fi | fi | |||
last_robj=$output_objdir/$output_la-${k}.$objext | last_robj=$output_objdir/$output_la-${k}.$objext | |||
func_arith $k + 1 | func_arith $k + 1 | |||
k=$func_arith_result | k=$func_arith_result | |||
output=$output_objdir/$output_la-${k}.$objext | output=$output_objdir/$output_la-${k}.$objext | |||
objlist=$obj | objlist=" $obj" | |||
func_len " $last_robj" | func_len " $last_robj" | |||
func_arith $len0 + $func_len_result | func_arith $len0 + $func_len_result | |||
len=$func_arith_result | len=$func_arith_result | |||
fi | fi | |||
done | done | |||
# Handle the remaining objects by creating one last | # Handle the remaining objects by creating one last | |||
# reloadable object file. All subsequent reloadable object | # reloadable object file. All subsequent reloadable object | |||
# files will link in the last one created. | # files will link in the last one created. | |||
test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | test -z "$concat_cmds" || concat_cmds=$concat_cmds~ | |||
eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_ | reload_objs="$objlist $last_robj" | |||
robj\" | eval concat_cmds=\"\${concat_cmds}$reload_cmds\" | |||
if test -n "$last_robj"; then | if test -n "$last_robj"; then | |||
eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" | eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" | |||
fi | fi | |||
delfiles="$delfiles $output" | func_append delfiles " $output" | |||
else | else | |||
output= | output= | |||
fi | fi | |||
if ${skipped_export-false}; then | if ${skipped_export-false}; then | |||
func_verbose "generating symbol list for \`$libname.la'" | func_verbose "generating symbol list for \`$libname.la'" | |||
export_symbols="$output_objdir/$libname.exp" | export_symbols="$output_objdir/$libname.exp" | |||
$opt_dry_run || $RM $export_symbols | $opt_dry_run || $RM $export_symbols | |||
libobjs=$output | libobjs=$output | |||
skipping to change at line 7205 | skipping to change at line 8357 | |||
for cmd in $concat_cmds; do | for cmd in $concat_cmds; do | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
$opt_silent || { | $opt_silent || { | |||
func_quote_for_expand "$cmd" | func_quote_for_expand "$cmd" | |||
eval "func_echo $func_quote_for_expand_result" | eval "func_echo $func_quote_for_expand_result" | |||
} | } | |||
$opt_dry_run || eval "$cmd" || { | $opt_dry_run || eval "$cmd" || { | |||
lt_exit=$? | lt_exit=$? | |||
# Restore the uninstalled library and exit | # Restore the uninstalled library and exit | |||
if test "$mode" = relink; then | if test "$opt_mode" = relink; then | |||
( cd "$output_objdir" && \ | ( cd "$output_objdir" && \ | |||
$RM "${realname}T" && \ | $RM "${realname}T" && \ | |||
$MV "${realname}U" "$realname" ) | $MV "${realname}U" "$realname" ) | |||
fi | fi | |||
exit $lt_exit | exit $lt_exit | |||
} | } | |||
done | done | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
if test -n "$export_symbols_regex" && ${skipped_export-false}; t hen | if test -n "$export_symbols_regex" && ${skipped_export-false}; t hen | |||
func_show_eval '$EGREP -e "$export_symbols_regex" "$export_sym bols" > "${export_symbols}T"' | func_show_eval '$EGREP -e "$export_symbols_regex" "$export_sym bols" > "${export_symbols}T"' | |||
func_show_eval '$MV "${export_symbols}T" "$export_symbols"' | func_show_eval '$MV "${export_symbols}T" "$export_symbols"' | |||
fi | fi | |||
fi | fi | |||
if ${skipped_export-false}; then | if ${skipped_export-false}; then | |||
if test -n "$export_symbols" && test -n "$include_expsyms"; then | if test -n "$export_symbols" && test -n "$include_expsyms"; then | |||
tmp_export_symbols="$export_symbols" | tmp_export_symbols="$export_symbols" | |||
test -n "$orig_export_symbols" && tmp_export_symbols="$orig_ex port_symbols" | test -n "$orig_export_symbols" && tmp_export_symbols="$orig_ex port_symbols" | |||
$opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2 NL >> "$tmp_export_symbols"' | $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$t mp_export_symbols"' | |||
fi | fi | |||
if test -n "$orig_export_symbols"; then | if test -n "$orig_export_symbols"; then | |||
# The given exports_symbols file has to be filtered, so filter it. | # The given exports_symbols file has to be filtered, so filter it. | |||
func_verbose "filter symbol list for \`$libname.la' to tag DAT A exports" | func_verbose "filter symbol list for \`$libname.la' to tag DAT A exports" | |||
# FIXME: $output_objdir/$libname.filter potentially contains l ots of | # FIXME: $output_objdir/$libname.filter potentially contains l ots of | |||
# 's' commands which not all seds can handle. GNU sed should b e fine | # 's' commands which not all seds can handle. GNU sed should b e fine | |||
# though. Also, the filter scales superlinearly with the numbe r of | # though. Also, the filter scales superlinearly with the numbe r of | |||
# global variables. join(1) would be nice here, but unfortunat ely | # global variables. join(1) would be nice here, but unfortunat ely | |||
# isn't a blessed tool. | # isn't a blessed tool. | |||
$opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\ 1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter | $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\ 1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter | |||
delfiles="$delfiles $export_symbols $output_objdir/$libname.fi lter" | func_append delfiles " $export_symbols $output_objdir/$libname .filter" | |||
export_symbols=$output_objdir/$libname.def | export_symbols=$output_objdir/$libname.def | |||
$opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig _export_symbols > $export_symbols | $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig _export_symbols > $export_symbols | |||
fi | fi | |||
fi | fi | |||
libobjs=$output | libobjs=$output | |||
# Restore the value of output. | # Restore the value of output. | |||
output=$save_output | output=$save_output | |||
if test -n "$convenience" && test -n "$whole_archive_flag_spec"; t hen | if test -n "$convenience" && test -n "$whole_archive_flag_spec"; t hen | |||
skipping to change at line 7279 | skipping to change at line 8431 | |||
fi | fi | |||
if test -n "$delfiles"; then | if test -n "$delfiles"; then | |||
# Append the command to remove temporary files to $cmds. | # Append the command to remove temporary files to $cmds. | |||
eval cmds=\"\$cmds~\$RM $delfiles\" | eval cmds=\"\$cmds~\$RM $delfiles\" | |||
fi | fi | |||
# Add any objects from preloaded convenience libraries | # Add any objects from preloaded convenience libraries | |||
if test -n "$dlprefiles"; then | if test -n "$dlprefiles"; then | |||
gentop="$output_objdir/${outputname}x" | gentop="$output_objdir/${outputname}x" | |||
generated="$generated $gentop" | func_append generated " $gentop" | |||
func_extract_archives $gentop $dlprefiles | func_extract_archives $gentop $dlprefiles | |||
libobjs="$libobjs $func_extract_archives_result" | func_append libobjs " $func_extract_archives_result" | |||
test "X$libobjs" = "X " && libobjs= | test "X$libobjs" = "X " && libobjs= | |||
fi | fi | |||
save_ifs="$IFS"; IFS='~' | save_ifs="$IFS"; IFS='~' | |||
for cmd in $cmds; do | for cmd in $cmds; do | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
eval cmd=\"$cmd\" | eval cmd=\"$cmd\" | |||
$opt_silent || { | $opt_silent || { | |||
func_quote_for_expand "$cmd" | func_quote_for_expand "$cmd" | |||
eval "func_echo $func_quote_for_expand_result" | eval "func_echo $func_quote_for_expand_result" | |||
} | } | |||
$opt_dry_run || eval "$cmd" || { | $opt_dry_run || eval "$cmd" || { | |||
lt_exit=$? | lt_exit=$? | |||
# Restore the uninstalled library and exit | # Restore the uninstalled library and exit | |||
if test "$mode" = relink; then | if test "$opt_mode" = relink; then | |||
( cd "$output_objdir" && \ | ( cd "$output_objdir" && \ | |||
$RM "${realname}T" && \ | $RM "${realname}T" && \ | |||
$MV "${realname}U" "$realname" ) | $MV "${realname}U" "$realname" ) | |||
fi | fi | |||
exit $lt_exit | exit $lt_exit | |||
} | } | |||
done | done | |||
IFS="$save_ifs" | IFS="$save_ifs" | |||
# Restore the uninstalled library and exit | # Restore the uninstalled library and exit | |||
if test "$mode" = relink; then | if test "$opt_mode" = relink; then | |||
$opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $M V $realname ${realname}T && $MV ${realname}U $realname)' || exit $? | $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $M V $realname ${realname}T && $MV ${realname}U $realname)' || exit $? | |||
if test -n "$convenience"; then | if test -n "$convenience"; then | |||
if test -z "$whole_archive_flag_spec"; then | if test -z "$whole_archive_flag_spec"; then | |||
func_show_eval '${RM}r "$gentop"' | func_show_eval '${RM}r "$gentop"' | |||
fi | fi | |||
fi | fi | |||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
fi | fi | |||
skipping to change at line 7391 | skipping to change at line 8543 | |||
reload_conv_objs= | reload_conv_objs= | |||
gentop= | gentop= | |||
# reload_cmds runs $LD directly, so let us get rid of | # reload_cmds runs $LD directly, so let us get rid of | |||
# -Wl from whole_archive_flag_spec and hope we can get by with | # -Wl from whole_archive_flag_spec and hope we can get by with | |||
# turning comma into space.. | # turning comma into space.. | |||
wl= | wl= | |||
if test -n "$convenience"; then | if test -n "$convenience"; then | |||
if test -n "$whole_archive_flag_spec"; then | if test -n "$whole_archive_flag_spec"; then | |||
eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" | eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" | |||
reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` | reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` | |||
else | else | |||
gentop="$output_objdir/${obj}x" | gentop="$output_objdir/${obj}x" | |||
generated="$generated $gentop" | func_append generated " $gentop" | |||
func_extract_archives $gentop $convenience | func_extract_archives $gentop $convenience | |||
reload_conv_objs="$reload_objs $func_extract_archives_result" | reload_conv_objs="$reload_objs $func_extract_archives_result" | |||
fi | fi | |||
fi | fi | |||
# If we're not building shared, we need to use non_pic_objs | ||||
test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" | ||||
# Create the old-style object. | # Create the old-style object. | |||
reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed - e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_obj s" ### testsuite: skip nested quoting test | reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\ .${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuit e: skip nested quoting test | |||
output="$obj" | output="$obj" | |||
func_execute_cmds "$reload_cmds" 'exit $?' | func_execute_cmds "$reload_cmds" 'exit $?' | |||
# Exit if we aren't doing a library object file. | # Exit if we aren't doing a library object file. | |||
if test -z "$libobj"; then | if test -z "$libobj"; then | |||
if test -n "$gentop"; then | if test -n "$gentop"; then | |||
func_show_eval '${RM}r "$gentop"' | func_show_eval '${RM}r "$gentop"' | |||
fi | fi | |||
skipping to change at line 7462 | skipping to change at line 8617 | |||
test "$preload" = yes \ | test "$preload" = yes \ | |||
&& test "$dlopen_support" = unknown \ | && test "$dlopen_support" = unknown \ | |||
&& test "$dlopen_self" = unknown \ | && test "$dlopen_self" = unknown \ | |||
&& test "$dlopen_self_static" = unknown && \ | && test "$dlopen_self_static" = unknown && \ | |||
func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen su pport." | func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen su pport." | |||
case $host in | case $host in | |||
*-*-rhapsody* | *-*-darwin1.[012]) | *-*-rhapsody* | *-*-darwin1.[012]) | |||
# On Rhapsody replace the C library is the System framework | # On Rhapsody replace the C library is the System framework | |||
compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / Sys | compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.l | |||
tem.ltframework /'` | tframework /'` | |||
finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / S | finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System | |||
ystem.ltframework /'` | .ltframework /'` | |||
;; | ;; | |||
esac | esac | |||
case $host in | case $host in | |||
*-*-darwin*) | *-*-darwin*) | |||
# Don't allow lazy linking, it breaks C++ global constructors | # Don't allow lazy linking, it breaks C++ global constructors | |||
# But is supposedly fixed on 10.4 or later (yay!). | # But is supposedly fixed on 10.4 or later (yay!). | |||
if test "$tagname" = CXX ; then | if test "$tagname" = CXX ; then | |||
case ${MACOSX_DEPLOYMENT_TARGET-10.0} in | case ${MACOSX_DEPLOYMENT_TARGET-10.0} in | |||
10.[0123]) | 10.[0123]) | |||
compile_command="$compile_command ${wl}-bind_at_load" | func_append compile_command " ${wl}-bind_at_load" | |||
finalize_command="$finalize_command ${wl}-bind_at_load" | func_append finalize_command " ${wl}-bind_at_load" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
# Time to change all our "foo.ltframework" stuff back to "-framework foo" | # Time to change all our "foo.ltframework" stuff back to "-framework foo" | |||
compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\ | compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltf | |||
).ltframework% -framework \1%g'` | ramework% -framework \1%g'` | |||
finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $] | finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).l | |||
*\).ltframework% -framework \1%g'` | tframework% -framework \1%g'` | |||
;; | ;; | |||
esac | esac | |||
# move library search paths that coincide with paths to not yet | # move library search paths that coincide with paths to not yet | |||
# installed libraries to the beginning of the library search list | # installed libraries to the beginning of the library search list | |||
new_libs= | new_libs= | |||
for path in $notinst_path; do | for path in $notinst_path; do | |||
case " $new_libs " in | case " $new_libs " in | |||
*" -L$path/$objdir "*) ;; | *" -L$path/$objdir "*) ;; | |||
*) | *) | |||
case " $compile_deplibs " in | case " $compile_deplibs " in | |||
*" -L$path/$objdir "*) | *" -L$path/$objdir "*) | |||
new_libs="$new_libs -L$path/$objdir" ;; | func_append new_libs " -L$path/$objdir" ;; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
for deplib in $compile_deplibs; do | for deplib in $compile_deplibs; do | |||
case $deplib in | case $deplib in | |||
-L*) | -L*) | |||
case " $new_libs " in | case " $new_libs " in | |||
*" $deplib "*) ;; | *" $deplib "*) ;; | |||
*) new_libs="$new_libs $deplib" ;; | *) func_append new_libs " $deplib" ;; | |||
esac | esac | |||
;; | ;; | |||
*) new_libs="$new_libs $deplib" ;; | *) func_append new_libs " $deplib" ;; | |||
esac | esac | |||
done | done | |||
compile_deplibs="$new_libs" | compile_deplibs="$new_libs" | |||
compile_command="$compile_command $compile_deplibs" | func_append compile_command " $compile_deplibs" | |||
finalize_command="$finalize_command $finalize_deplibs" | func_append finalize_command " $finalize_deplibs" | |||
if test -n "$rpath$xrpath"; then | if test -n "$rpath$xrpath"; then | |||
# If the user specified any rpath flags, then add them. | # If the user specified any rpath flags, then add them. | |||
for libdir in $rpath $xrpath; do | for libdir in $rpath $xrpath; do | |||
# This is the magic to use -rpath. | # This is the magic to use -rpath. | |||
case "$finalize_rpath " in | case "$finalize_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) finalize_rpath="$finalize_rpath $libdir" ;; | *) func_append finalize_rpath " $libdir" ;; | |||
esac | esac | |||
done | done | |||
fi | fi | |||
# Now hardcode the library paths | # Now hardcode the library paths | |||
rpath= | rpath= | |||
hardcode_libdirs= | hardcode_libdirs= | |||
for libdir in $compile_rpath $finalize_rpath; do | for libdir in $compile_rpath $finalize_rpath; do | |||
if test -n "$hardcode_libdir_flag_spec"; then | if test -n "$hardcode_libdir_flag_spec"; then | |||
if test -n "$hardcode_libdir_separator"; then | if test -n "$hardcode_libdir_separator"; then | |||
if test -z "$hardcode_libdirs"; then | if test -z "$hardcode_libdirs"; then | |||
hardcode_libdirs="$libdir" | hardcode_libdirs="$libdir" | |||
else | else | |||
# Just accumulate the unique libdirs. | # Just accumulate the unique libdirs. | |||
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libd ir_separator in | case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libd ir_separator in | |||
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator" *) | *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator" *) | |||
;; | ;; | |||
*) | *) | |||
hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separato r$libdir" | func_append hardcode_libdirs "$hardcode_libdir_separator$lib dir" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
else | else | |||
eval flag=\"$hardcode_libdir_flag_spec\" | eval flag=\"$hardcode_libdir_flag_spec\" | |||
rpath="$rpath $flag" | func_append rpath " $flag" | |||
fi | fi | |||
elif test -n "$runpath_var"; then | elif test -n "$runpath_var"; then | |||
case "$perm_rpath " in | case "$perm_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) perm_rpath="$perm_rpath $libdir" ;; | *) func_append perm_rpath " $libdir" ;; | |||
esac | esac | |||
fi | fi | |||
case $host in | case $host in | |||
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) | |||
testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` | testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` | |||
case :$dllsearchpath: in | case :$dllsearchpath: in | |||
*":$libdir:"*) ;; | *":$libdir:"*) ;; | |||
::) dllsearchpath=$libdir;; | ::) dllsearchpath=$libdir;; | |||
*) dllsearchpath="$dllsearchpath:$libdir";; | *) func_append dllsearchpath ":$libdir";; | |||
esac | esac | |||
case :$dllsearchpath: in | case :$dllsearchpath: in | |||
*":$testbindir:"*) ;; | *":$testbindir:"*) ;; | |||
::) dllsearchpath=$testbindir;; | ::) dllsearchpath=$testbindir;; | |||
*) dllsearchpath="$dllsearchpath:$testbindir";; | *) func_append dllsearchpath ":$testbindir";; | |||
esac | esac | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
# Substitute the hardcoded libdirs into the rpath. | # Substitute the hardcoded libdirs into the rpath. | |||
if test -n "$hardcode_libdir_separator" && | if test -n "$hardcode_libdir_separator" && | |||
test -n "$hardcode_libdirs"; then | test -n "$hardcode_libdirs"; then | |||
libdir="$hardcode_libdirs" | libdir="$hardcode_libdirs" | |||
eval rpath=\" $hardcode_libdir_flag_spec\" | eval rpath=\" $hardcode_libdir_flag_spec\" | |||
fi | fi | |||
skipping to change at line 7591 | skipping to change at line 8746 | |||
if test -n "$hardcode_libdir_flag_spec"; then | if test -n "$hardcode_libdir_flag_spec"; then | |||
if test -n "$hardcode_libdir_separator"; then | if test -n "$hardcode_libdir_separator"; then | |||
if test -z "$hardcode_libdirs"; then | if test -z "$hardcode_libdirs"; then | |||
hardcode_libdirs="$libdir" | hardcode_libdirs="$libdir" | |||
else | else | |||
# Just accumulate the unique libdirs. | # Just accumulate the unique libdirs. | |||
case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libd ir_separator in | case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libd ir_separator in | |||
*"$hardcode_libdir_separator$libdir$hardcode_libdir_separator" *) | *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator" *) | |||
;; | ;; | |||
*) | *) | |||
hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separato r$libdir" | func_append hardcode_libdirs "$hardcode_libdir_separator$lib dir" | |||
;; | ;; | |||
esac | esac | |||
fi | fi | |||
else | else | |||
eval flag=\"$hardcode_libdir_flag_spec\" | eval flag=\"$hardcode_libdir_flag_spec\" | |||
rpath="$rpath $flag" | func_append rpath " $flag" | |||
fi | fi | |||
elif test -n "$runpath_var"; then | elif test -n "$runpath_var"; then | |||
case "$finalize_perm_rpath " in | case "$finalize_perm_rpath " in | |||
*" $libdir "*) ;; | *" $libdir "*) ;; | |||
*) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; | *) func_append finalize_perm_rpath " $libdir" ;; | |||
esac | esac | |||
fi | fi | |||
done | done | |||
# Substitute the hardcoded libdirs into the rpath. | # Substitute the hardcoded libdirs into the rpath. | |||
if test -n "$hardcode_libdir_separator" && | if test -n "$hardcode_libdir_separator" && | |||
test -n "$hardcode_libdirs"; then | test -n "$hardcode_libdirs"; then | |||
libdir="$hardcode_libdirs" | libdir="$hardcode_libdirs" | |||
eval rpath=\" $hardcode_libdir_flag_spec\" | eval rpath=\" $hardcode_libdir_flag_spec\" | |||
fi | fi | |||
finalize_rpath="$rpath" | finalize_rpath="$rpath" | |||
if test -n "$libobjs" && test "$build_old_libs" = yes; then | if test -n "$libobjs" && test "$build_old_libs" = yes; then | |||
# Transform all the library objects into standard objects. | # Transform all the library objects into standard objects. | |||
compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2 | compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | | |||
o" | $NL2SP` | $NL2SP` | |||
finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$l | finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | |||
o2o" | $NL2SP` | | $NL2SP` | |||
fi | fi | |||
func_generate_dlsyms "$outputname" "@PROGRAM@" "no" | func_generate_dlsyms "$outputname" "@PROGRAM@" "no" | |||
# template prelinking step | # template prelinking step | |||
if test -n "$prelink_cmds"; then | if test -n "$prelink_cmds"; then | |||
func_execute_cmds "$prelink_cmds" 'exit $?' | func_execute_cmds "$prelink_cmds" 'exit $?' | |||
fi | fi | |||
wrappers_required=yes | wrappers_required=yes | |||
case $host in | case $host in | |||
*cegcc* | *mingw32ce*) | ||||
# Disable wrappers for cegcc and mingw32ce hosts, we are cross comp | ||||
iling anyway. | ||||
wrappers_required=no | ||||
;; | ||||
*cygwin* | *mingw* ) | *cygwin* | *mingw* ) | |||
if test "$build_libtool_libs" != yes; then | if test "$build_libtool_libs" != yes; then | |||
wrappers_required=no | wrappers_required=no | |||
fi | fi | |||
;; | ;; | |||
*cegcc) | ||||
# Disable wrappers for cegcc, we are cross compiling anyway. | ||||
wrappers_required=no | ||||
;; | ||||
*) | *) | |||
if test "$need_relink" = no || test "$build_libtool_libs" != yes; t hen | if test "$need_relink" = no || test "$build_libtool_libs" != yes; t hen | |||
wrappers_required=no | wrappers_required=no | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
if test "$wrappers_required" = no; then | if test "$wrappers_required" = no; then | |||
# Replace the output file specification. | # Replace the output file specification. | |||
compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'" $output"'%g'` | compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$outp ut"'%g'` | |||
link_command="$compile_command$compile_rpath" | link_command="$compile_command$compile_rpath" | |||
# We have no uninstalled library dependencies, so finalize right now . | # We have no uninstalled library dependencies, so finalize right now . | |||
exit_status=0 | exit_status=0 | |||
func_show_eval "$link_command" 'exit_status=$?' | func_show_eval "$link_command" 'exit_status=$?' | |||
if test -n "$postlink_cmds"; then | ||||
func_to_tool_file "$output" | ||||
postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT | ||||
@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` | ||||
func_execute_cmds "$postlink_cmds" 'exit $?' | ||||
fi | ||||
# Delete the generated files. | # Delete the generated files. | |||
if test -f "$output_objdir/${outputname}S.${objext}"; then | if test -f "$output_objdir/${outputname}S.${objext}"; then | |||
func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' | func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' | |||
fi | fi | |||
exit $exit_status | exit $exit_status | |||
fi | fi | |||
if test -n "$compile_shlibpath$finalize_shlibpath"; then | if test -n "$compile_shlibpath$finalize_shlibpath"; then | |||
compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibp ath\$$shlibpath_var\" $compile_command" | compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibp ath\$$shlibpath_var\" $compile_command" | |||
skipping to change at line 7675 | skipping to change at line 8836 | |||
finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_v ar\" $finalize_command" | finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_v ar\" $finalize_command" | |||
fi | fi | |||
compile_var= | compile_var= | |||
finalize_var= | finalize_var= | |||
if test -n "$runpath_var"; then | if test -n "$runpath_var"; then | |||
if test -n "$perm_rpath"; then | if test -n "$perm_rpath"; then | |||
# We should set the runpath_var. | # We should set the runpath_var. | |||
rpath= | rpath= | |||
for dir in $perm_rpath; do | for dir in $perm_rpath; do | |||
rpath="$rpath$dir:" | func_append rpath "$dir:" | |||
done | done | |||
compile_var="$runpath_var=\"$rpath\$$runpath_var\" " | compile_var="$runpath_var=\"$rpath\$$runpath_var\" " | |||
fi | fi | |||
if test -n "$finalize_perm_rpath"; then | if test -n "$finalize_perm_rpath"; then | |||
# We should set the runpath_var. | # We should set the runpath_var. | |||
rpath= | rpath= | |||
for dir in $finalize_perm_rpath; do | for dir in $finalize_perm_rpath; do | |||
rpath="$rpath$dir:" | func_append rpath "$dir:" | |||
done | done | |||
finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " | finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " | |||
fi | fi | |||
fi | fi | |||
if test "$no_install" = yes; then | if test "$no_install" = yes; then | |||
# We don't need to create a wrapper script. | # We don't need to create a wrapper script. | |||
link_command="$compile_var$compile_command$compile_rpath" | link_command="$compile_var$compile_command$compile_rpath" | |||
# Replace the output file specification. | # Replace the output file specification. | |||
link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$outpu t"'%g'` | link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g '` | |||
# Delete the old output file. | # Delete the old output file. | |||
$opt_dry_run || $RM $output | $opt_dry_run || $RM $output | |||
# Link the executable and exit | # Link the executable and exit | |||
func_show_eval "$link_command" 'exit $?' | func_show_eval "$link_command" 'exit $?' | |||
if test -n "$postlink_cmds"; then | ||||
func_to_tool_file "$output" | ||||
postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT | ||||
@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` | ||||
func_execute_cmds "$postlink_cmds" 'exit $?' | ||||
fi | ||||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
fi | fi | |||
if test "$hardcode_action" = relink; then | if test "$hardcode_action" = relink; then | |||
# Fast installation is not supported | # Fast installation is not supported | |||
link_command="$compile_var$compile_command$compile_rpath" | link_command="$compile_var$compile_command$compile_rpath" | |||
relink_command="$finalize_var$finalize_command$finalize_rpath" | relink_command="$finalize_var$finalize_command$finalize_rpath" | |||
func_warning "this platform does not like uninstalled shared librari es" | func_warning "this platform does not like uninstalled shared librari es" | |||
func_warning "\`$output' will be relinked during installation" | func_warning "\`$output' will be relinked during installation" | |||
else | else | |||
if test "$fast_install" != no; then | if test "$fast_install" != no; then | |||
link_command="$finalize_var$compile_command$finalize_rpath" | link_command="$finalize_var$compile_command$finalize_rpath" | |||
if test "$fast_install" = yes; then | if test "$fast_install" = yes; then | |||
relink_command=`$ECHO "X$compile_var$compile_command$compile_rpa th" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` | relink_command=`$ECHO "$compile_var$compile_command$compile_rpat h" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` | |||
else | else | |||
# fast_install is set to needless | # fast_install is set to needless | |||
relink_command= | relink_command= | |||
fi | fi | |||
else | else | |||
link_command="$compile_var$compile_command$compile_rpath" | link_command="$compile_var$compile_command$compile_rpath" | |||
relink_command="$finalize_var$finalize_command$finalize_rpath" | relink_command="$finalize_var$finalize_command$finalize_rpath" | |||
fi | fi | |||
fi | fi | |||
# Replace the output file specification. | # Replace the output file specification. | |||
link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output _objdir/$outputname"'%g'` | link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objd ir/$outputname"'%g'` | |||
# Delete the old output files. | # Delete the old output files. | |||
$opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir /lt-$outputname | $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir /lt-$outputname | |||
func_show_eval "$link_command" 'exit $?' | func_show_eval "$link_command" 'exit $?' | |||
if test -n "$postlink_cmds"; then | ||||
func_to_tool_file "$output_objdir/$outputname" | ||||
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'` | ||||
func_execute_cmds "$postlink_cmds" 'exit $?' | ||||
fi | ||||
# Now create the wrapper script. | # Now create the wrapper script. | |||
func_verbose "creating $output" | func_verbose "creating $output" | |||
# Quote the relink command for shipping. | # Quote the relink command for shipping. | |||
if test -n "$relink_command"; then | if test -n "$relink_command"; then | |||
# Preserve any variables that may affect compiler behavior | # Preserve any variables that may affect compiler behavior | |||
for var in $variables_saved_for_relink; do | for var in $variables_saved_for_relink; do | |||
if eval test -z \"\${$var+set}\"; then | if eval test -z \"\${$var+set}\"; then | |||
relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" | relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" | |||
elif eval var_value=\$$var; test -z "$var_value"; then | elif eval var_value=\$$var; test -z "$var_value"; then | |||
relink_command="$var=; export $var; $relink_command" | relink_command="$var=; export $var; $relink_command" | |||
else | else | |||
func_quote_for_eval "$var_value" | func_quote_for_eval "$var_value" | |||
relink_command="$var=$func_quote_for_eval_result; export $var; $ relink_command" | relink_command="$var=$func_quote_for_eval_result; export $var; $ relink_command" | |||
fi | fi | |||
done | done | |||
relink_command="(cd `pwd`; $relink_command)" | relink_command="(cd `pwd`; $relink_command)" | |||
relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subs | relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` | |||
t"` | ||||
fi | ||||
# Quote $ECHO for shipping. | ||||
if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then | ||||
case $progpath in | ||||
[\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; | ||||
*) qecho="$SHELL `pwd`/$progpath --fallback-echo";; | ||||
esac | ||||
qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` | ||||
else | ||||
qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` | ||||
fi | fi | |||
# Only actually do things if not in dry run mode. | # Only actually do things if not in dry run mode. | |||
$opt_dry_run || { | $opt_dry_run || { | |||
# win32 will think the script is a binary if it has | # win32 will think the script is a binary if it has | |||
# a .exe suffix, so we strip it off here. | # a .exe suffix, so we strip it off here. | |||
case $output in | case $output in | |||
*.exe) func_stripname '' '.exe' "$output" | *.exe) func_stripname '' '.exe' "$output" | |||
output=$func_stripname_result ;; | output=$func_stripname_result ;; | |||
esac | esac | |||
skipping to change at line 7839 | skipping to change at line 9002 | |||
oldobjs="$libobjs_save $symfileobj" | oldobjs="$libobjs_save $symfileobj" | |||
addlibs="$convenience" | addlibs="$convenience" | |||
build_libtool_libs=no | build_libtool_libs=no | |||
else | else | |||
if test "$build_libtool_libs" = module; then | if test "$build_libtool_libs" = module; then | |||
oldobjs="$libobjs_save" | oldobjs="$libobjs_save" | |||
build_libtool_libs=no | build_libtool_libs=no | |||
else | else | |||
oldobjs="$old_deplibs $non_pic_objects" | oldobjs="$old_deplibs $non_pic_objects" | |||
if test "$preload" = yes && test -f "$symfileobj"; then | if test "$preload" = yes && test -f "$symfileobj"; then | |||
oldobjs="$oldobjs $symfileobj" | func_append oldobjs " $symfileobj" | |||
fi | fi | |||
fi | fi | |||
addlibs="$old_convenience" | addlibs="$old_convenience" | |||
fi | fi | |||
if test -n "$addlibs"; then | if test -n "$addlibs"; then | |||
gentop="$output_objdir/${outputname}x" | gentop="$output_objdir/${outputname}x" | |||
generated="$generated $gentop" | func_append generated " $gentop" | |||
func_extract_archives $gentop $addlibs | func_extract_archives $gentop $addlibs | |||
oldobjs="$oldobjs $func_extract_archives_result" | func_append oldobjs " $func_extract_archives_result" | |||
fi | fi | |||
# Do each command in the archive commands. | # Do each command in the archive commands. | |||
if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then | if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then | |||
cmds=$old_archive_from_new_cmds | cmds=$old_archive_from_new_cmds | |||
else | else | |||
# Add any objects from preloaded convenience libraries | # Add any objects from preloaded convenience libraries | |||
if test -n "$dlprefiles"; then | if test -n "$dlprefiles"; then | |||
gentop="$output_objdir/${outputname}x" | gentop="$output_objdir/${outputname}x" | |||
generated="$generated $gentop" | func_append generated " $gentop" | |||
func_extract_archives $gentop $dlprefiles | func_extract_archives $gentop $dlprefiles | |||
oldobjs="$oldobjs $func_extract_archives_result" | func_append oldobjs " $func_extract_archives_result" | |||
fi | fi | |||
# POSIX demands no paths to be encoded in archives. We have | # POSIX demands no paths to be encoded in archives. We have | |||
# to avoid creating archives with duplicate basenames if we | # to avoid creating archives with duplicate basenames if we | |||
# might have to extract them afterwards, e.g., when creating a | # might have to extract them afterwards, e.g., when creating a | |||
# static archive out of a convenience library, or when linking | # static archive out of a convenience library, or when linking | |||
# the entirety of a libtool archive into another (currently | # the entirety of a libtool archive into another (currently | |||
# not supported by libtool). | # not supported by libtool). | |||
if (for obj in $oldobjs | if (for obj in $oldobjs | |||
do | do | |||
func_basename "$obj" | func_basename "$obj" | |||
$ECHO "$func_basename_result" | $ECHO "$func_basename_result" | |||
done | sort | sort -uc >/dev/null 2>&1); then | done | sort | sort -uc >/dev/null 2>&1); then | |||
: | : | |||
else | else | |||
$ECHO "copying selected object files to avoid basename conflicts.. ." | echo "copying selected object files to avoid basename conflicts... " | |||
gentop="$output_objdir/${outputname}x" | gentop="$output_objdir/${outputname}x" | |||
generated="$generated $gentop" | func_append generated " $gentop" | |||
func_mkdir_p "$gentop" | func_mkdir_p "$gentop" | |||
save_oldobjs=$oldobjs | save_oldobjs=$oldobjs | |||
oldobjs= | oldobjs= | |||
counter=1 | counter=1 | |||
for obj in $save_oldobjs | for obj in $save_oldobjs | |||
do | do | |||
func_basename "$obj" | func_basename "$obj" | |||
objbase="$func_basename_result" | objbase="$func_basename_result" | |||
case " $oldobjs " in | case " $oldobjs " in | |||
" ") oldobjs=$obj ;; | " ") oldobjs=$obj ;; | |||
skipping to change at line 7906 | skipping to change at line 9069 | |||
# overlaps. | # overlaps. | |||
newobj=lt$counter-$objbase | newobj=lt$counter-$objbase | |||
func_arith $counter + 1 | func_arith $counter + 1 | |||
counter=$func_arith_result | counter=$func_arith_result | |||
case " $oldobjs " in | case " $oldobjs " in | |||
*[\ /]"$newobj "*) ;; | *[\ /]"$newobj "*) ;; | |||
*) if test ! -f "$gentop/$newobj"; then break; fi ;; | *) if test ! -f "$gentop/$newobj"; then break; fi ;; | |||
esac | esac | |||
done | done | |||
func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$ne wobj" | func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$ne wobj" | |||
oldobjs="$oldobjs $gentop/$newobj" | func_append oldobjs " $gentop/$newobj" | |||
;; | ;; | |||
*) oldobjs="$oldobjs $obj" ;; | *) func_append oldobjs " $obj" ;; | |||
esac | esac | |||
done | done | |||
fi | fi | |||
eval cmds=\"$old_archive_cmds\" | eval cmds=\"$old_archive_cmds\" | |||
func_len " $cmds" | func_len " $cmds" | |||
len=$func_len_result | len=$func_len_result | |||
if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; the n | if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; the n | |||
cmds=$old_archive_cmds | cmds=$old_archive_cmds | |||
elif test -n "$archiver_list_spec"; then | ||||
func_verbose "using command file archive linking..." | ||||
for obj in $oldobjs | ||||
do | ||||
func_to_tool_file "$obj" | ||||
$ECHO "$func_to_tool_file_result" | ||||
done > $output_objdir/$libname.libcmd | ||||
func_to_tool_file "$output_objdir/$libname.libcmd" | ||||
oldobjs=" $archiver_list_spec$func_to_tool_file_result" | ||||
cmds=$old_archive_cmds | ||||
else | else | |||
# the command line is too long to link in one step, link in parts | # the command line is too long to link in one step, link in parts | |||
func_verbose "using piecewise archive linking..." | func_verbose "using piecewise archive linking..." | |||
save_RANLIB=$RANLIB | save_RANLIB=$RANLIB | |||
RANLIB=: | RANLIB=: | |||
objlist= | objlist= | |||
concat_cmds= | concat_cmds= | |||
save_oldobjs=$oldobjs | save_oldobjs=$oldobjs | |||
oldobjs= | oldobjs= | |||
# Is there a better way of finding the last object in the list? | # Is there a better way of finding the last object in the list? | |||
skipping to change at line 7991 | skipping to change at line 9164 | |||
relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" | relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" | |||
elif eval var_value=\$$var; test -z "$var_value"; then | elif eval var_value=\$$var; test -z "$var_value"; then | |||
relink_command="$var=; export $var; $relink_command" | relink_command="$var=; export $var; $relink_command" | |||
else | else | |||
func_quote_for_eval "$var_value" | func_quote_for_eval "$var_value" | |||
relink_command="$var=$func_quote_for_eval_result; export $var; $re link_command" | relink_command="$var=$func_quote_for_eval_result; export $var; $re link_command" | |||
fi | fi | |||
done | done | |||
# Quote the link command for shipping. | # Quote the link command for shipping. | |||
relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=rel ink $libtool_args @inst_prefix_dir@)" | relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=rel ink $libtool_args @inst_prefix_dir@)" | |||
relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst "` | relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` | |||
if test "$hardcode_automatic" = yes ; then | if test "$hardcode_automatic" = yes ; then | |||
relink_command= | relink_command= | |||
fi | fi | |||
# Only create the output if not a dry run. | # Only create the output if not a dry run. | |||
$opt_dry_run || { | $opt_dry_run || { | |||
for installed in no yes; do | for installed in no yes; do | |||
if test "$installed" = yes; then | if test "$installed" = yes; then | |||
if test -z "$install_libdir"; then | if test -z "$install_libdir"; then | |||
break | break | |||
skipping to change at line 8014 | skipping to change at line 9187 | |||
# Replace all uninstalled libtool libraries with the installed o nes | # Replace all uninstalled libtool libraries with the installed o nes | |||
newdependency_libs= | newdependency_libs= | |||
for deplib in $dependency_libs; do | for deplib in $dependency_libs; do | |||
case $deplib in | case $deplib in | |||
*.la) | *.la) | |||
func_basename "$deplib" | func_basename "$deplib" | |||
name="$func_basename_result" | name="$func_basename_result" | |||
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` | |||
test -z "$libdir" && \ | test -z "$libdir" && \ | |||
func_fatal_error "\`$deplib' is not a valid libtool archiv e" | func_fatal_error "\`$deplib' is not a valid libtool archiv e" | |||
newdependency_libs="$newdependency_libs $libdir/$name" | func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$na | |||
me" | ||||
;; | ||||
-L*) | ||||
func_stripname -L '' "$deplib" | ||||
func_replace_sysroot "$func_stripname_result" | ||||
func_append newdependency_libs " -L$func_replace_sysroot_res | ||||
ult" | ||||
;; | ;; | |||
*) newdependency_libs="$newdependency_libs $deplib" ;; | -R*) | |||
func_stripname -R '' "$deplib" | ||||
func_replace_sysroot "$func_stripname_result" | ||||
func_append newdependency_libs " -R$func_replace_sysroot_res | ||||
ult" | ||||
;; | ||||
*) func_append newdependency_libs " $deplib" ;; | ||||
esac | esac | |||
done | done | |||
dependency_libs="$newdependency_libs" | dependency_libs="$newdependency_libs" | |||
newdlfiles= | newdlfiles= | |||
for lib in $dlfiles; do | for lib in $dlfiles; do | |||
case $lib in | case $lib in | |||
*.la) | *.la) | |||
func_basename "$lib" | func_basename "$lib" | |||
name="$func_basename_result" | name="$func_basename_result" | |||
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |||
test -z "$libdir" && \ | test -z "$libdir" && \ | |||
func_fatal_error "\`$lib' is not a valid libtool archive" | func_fatal_error "\`$lib' is not a valid libtool archive" | |||
newdlfiles="$newdlfiles $libdir/$name" | func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" | |||
;; | ;; | |||
*) newdlfiles="$newdlfiles $lib" ;; | *) func_append newdlfiles " $lib" ;; | |||
esac | esac | |||
done | done | |||
dlfiles="$newdlfiles" | dlfiles="$newdlfiles" | |||
newdlprefiles= | newdlprefiles= | |||
for lib in $dlprefiles; do | for lib in $dlprefiles; do | |||
case $lib in | case $lib in | |||
*.la) | *.la) | |||
# Only pass preopened files to the pseudo-archive (for | # Only pass preopened files to the pseudo-archive (for | |||
# eventual linking with the app. that links it) if we | # eventual linking with the app. that links it) if we | |||
# didn't already link the preopened objects directly into | # didn't already link the preopened objects directly into | |||
# the library: | # the library: | |||
func_basename "$lib" | func_basename "$lib" | |||
name="$func_basename_result" | name="$func_basename_result" | |||
eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` | |||
test -z "$libdir" && \ | test -z "$libdir" && \ | |||
func_fatal_error "\`$lib' is not a valid libtool archive" | func_fatal_error "\`$lib' is not a valid libtool archive" | |||
newdlprefiles="$newdlprefiles $libdir/$name" | func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" | |||
;; | ;; | |||
esac | esac | |||
done | done | |||
dlprefiles="$newdlprefiles" | dlprefiles="$newdlprefiles" | |||
else | else | |||
newdlfiles= | newdlfiles= | |||
for lib in $dlfiles; do | for lib in $dlfiles; do | |||
case $lib in | case $lib in | |||
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | |||
*) abs=`pwd`"/$lib" ;; | *) abs=`pwd`"/$lib" ;; | |||
esac | esac | |||
newdlfiles="$newdlfiles $abs" | func_append newdlfiles " $abs" | |||
done | done | |||
dlfiles="$newdlfiles" | dlfiles="$newdlfiles" | |||
newdlprefiles= | newdlprefiles= | |||
for lib in $dlprefiles; do | for lib in $dlprefiles; do | |||
case $lib in | case $lib in | |||
[\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; | |||
*) abs=`pwd`"/$lib" ;; | *) abs=`pwd`"/$lib" ;; | |||
esac | esac | |||
newdlprefiles="$newdlprefiles $abs" | func_append newdlprefiles " $abs" | |||
done | done | |||
dlprefiles="$newdlprefiles" | dlprefiles="$newdlprefiles" | |||
fi | fi | |||
$RM $output | $RM $output | |||
# place dlname in correct position for cygwin | # place dlname in correct position for cygwin | |||
# In fact, it would be nice if we could use this code for all targ | ||||
et | ||||
# systems that can't hard-code library paths into their executable | ||||
s | ||||
# and that have no shared library path variable independent of PAT | ||||
H, | ||||
# but it turns out we can't easily determine that from inspecting | ||||
# libtool variables, so we have to hard-code the OSs to which it | ||||
# applies here; at the moment, that means platforms that use the P | ||||
E | ||||
# object format with DLL files. See the long comment at the top o | ||||
f | ||||
# tests/bindir.at for full details. | ||||
tdlname=$dlname | tdlname=$dlname | |||
case $host,$output,$installed,$module,$dlname in | case $host,$output,$installed,$module,$dlname in | |||
*cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc* | *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc* | |||
,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; | ,*lai,yes,no,*.dll) | |||
# If a -bindir argument was supplied, place the dll there. | ||||
if test "x$bindir" != x ; | ||||
then | ||||
func_relative_path "$install_libdir" "$bindir" | ||||
tdlname=$func_relative_path_result$dlname | ||||
else | ||||
# Otherwise fall back on heuristic. | ||||
tdlname=../bin/$dlname | ||||
fi | ||||
;; | ||||
esac | esac | |||
$ECHO > $output "\ | $ECHO > $output "\ | |||
# $outputname - a libtool library file | # $outputname - a libtool library file | |||
# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION | |||
# | # | |||
# Please DO NOT delete this file! | # Please DO NOT delete this file! | |||
# It is necessary for linking the library. | # It is necessary for linking the library. | |||
# The name that we can dlopen(3). | # The name that we can dlopen(3). | |||
dlname='$tdlname' | dlname='$tdlname' | |||
skipping to change at line 8137 | skipping to change at line 9338 | |||
} | } | |||
# Do a symbolic link so that the libtool archive can be found in | # Do a symbolic link so that the libtool archive can be found in | |||
# LD_LIBRARY_PATH before the program is installed. | # LD_LIBRARY_PATH before the program is installed. | |||
func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S " ../$outputname" "$outputname" )' 'exit $?' | func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S " ../$outputname" "$outputname" )' 'exit $?' | |||
;; | ;; | |||
esac | esac | |||
exit $EXIT_SUCCESS | exit $EXIT_SUCCESS | |||
} | } | |||
{ test "$mode" = link || test "$mode" = relink; } && | { test "$opt_mode" = link || test "$opt_mode" = relink; } && | |||
func_mode_link ${1+"$@"} | func_mode_link ${1+"$@"} | |||
# func_mode_uninstall arg... | # func_mode_uninstall arg... | |||
func_mode_uninstall () | func_mode_uninstall () | |||
{ | { | |||
$opt_debug | $opt_debug | |||
RM="$nonopt" | RM="$nonopt" | |||
files= | files= | |||
rmforce= | rmforce= | |||
exit_status=0 | exit_status=0 | |||
# This variable tells wrapper scripts just to set variables rather | # This variable tells wrapper scripts just to set variables rather | |||
# than running their programs. | # than running their programs. | |||
libtool_install_magic="$magic" | libtool_install_magic="$magic" | |||
for arg | for arg | |||
do | do | |||
case $arg in | case $arg in | |||
-f) RM="$RM $arg"; rmforce=yes ;; | -f) func_append RM " $arg"; rmforce=yes ;; | |||
-*) RM="$RM $arg" ;; | -*) func_append RM " $arg" ;; | |||
*) files="$files $arg" ;; | *) func_append files " $arg" ;; | |||
esac | esac | |||
done | done | |||
test -z "$RM" && \ | test -z "$RM" && \ | |||
func_fatal_help "you must specify an RM program" | func_fatal_help "you must specify an RM program" | |||
rmdirs= | rmdirs= | |||
origobjdir="$objdir" | ||||
for file in $files; do | for file in $files; do | |||
func_dirname "$file" "" "." | func_dirname "$file" "" "." | |||
dir="$func_dirname_result" | dir="$func_dirname_result" | |||
if test "X$dir" = X.; then | if test "X$dir" = X.; then | |||
objdir="$origobjdir" | odir="$objdir" | |||
else | else | |||
objdir="$dir/$origobjdir" | odir="$dir/$objdir" | |||
fi | fi | |||
func_basename "$file" | func_basename "$file" | |||
name="$func_basename_result" | name="$func_basename_result" | |||
test "$mode" = uninstall && objdir="$dir" | test "$opt_mode" = uninstall && odir="$dir" | |||
# Remember objdir for removal later, being careful to avoid duplicate | # Remember odir for removal later, being careful to avoid duplicates | |||
s | if test "$opt_mode" = clean; then | |||
if test "$mode" = clean; then | ||||
case " $rmdirs " in | case " $rmdirs " in | |||
*" $objdir "*) ;; | *" $odir "*) ;; | |||
*) rmdirs="$rmdirs $objdir" ;; | *) func_append rmdirs " $odir" ;; | |||
esac | esac | |||
fi | fi | |||
# Don't error if the file doesn't exist and rm -f was used. | # Don't error if the file doesn't exist and rm -f was used. | |||
if { test -L "$file"; } >/dev/null 2>&1 || | if { test -L "$file"; } >/dev/null 2>&1 || | |||
{ test -h "$file"; } >/dev/null 2>&1 || | { test -h "$file"; } >/dev/null 2>&1 || | |||
test -f "$file"; then | test -f "$file"; then | |||
: | : | |||
elif test -d "$file"; then | elif test -d "$file"; then | |||
exit_status=1 | exit_status=1 | |||
skipping to change at line 8210 | skipping to change at line 9410 | |||
rmfiles="$file" | rmfiles="$file" | |||
case $name in | case $name in | |||
*.la) | *.la) | |||
# Possibly a libtool archive, so verify it. | # Possibly a libtool archive, so verify it. | |||
if func_lalib_p "$file"; then | if func_lalib_p "$file"; then | |||
func_source $dir/$name | func_source $dir/$name | |||
# Delete the libtool libraries and symlinks. | # Delete the libtool libraries and symlinks. | |||
for n in $library_names; do | for n in $library_names; do | |||
rmfiles="$rmfiles $objdir/$n" | func_append rmfiles " $odir/$n" | |||
done | done | |||
test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" | test -n "$old_library" && func_append rmfiles " $odir/$old_library " | |||
case "$mode" in | case "$opt_mode" in | |||
clean) | clean) | |||
case " $library_names " in | case " $library_names " in | |||
# " " in the beginning catches empty $dlname | ||||
*" $dlname "*) ;; | *" $dlname "*) ;; | |||
*) rmfiles="$rmfiles $objdir/$dlname" ;; | *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; | |||
esac | esac | |||
test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${n ame}i" | test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${n ame}i" | |||
;; | ;; | |||
uninstall) | uninstall) | |||
if test -n "$library_names"; then | if test -n "$library_names"; then | |||
# Do each command in the postuninstall commands. | # Do each command in the postuninstall commands. | |||
func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' | func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' | |||
fi | fi | |||
if test -n "$old_library"; then | if test -n "$old_library"; then | |||
# Do each command in the old_postuninstall commands. | # Do each command in the old_postuninstall commands. | |||
func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' | func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' | |||
skipping to change at line 8249 | skipping to change at line 9448 | |||
*.lo) | *.lo) | |||
# Possibly a libtool object, so verify it. | # Possibly a libtool object, so verify it. | |||
if func_lalib_p "$file"; then | if func_lalib_p "$file"; then | |||
# Read the .lo file | # Read the .lo file | |||
func_source $dir/$name | func_source $dir/$name | |||
# Add PIC object to the list of files to remove. | # Add PIC object to the list of files to remove. | |||
if test -n "$pic_object" && | if test -n "$pic_object" && | |||
test "$pic_object" != none; then | test "$pic_object" != none; then | |||
rmfiles="$rmfiles $dir/$pic_object" | func_append rmfiles " $dir/$pic_object" | |||
fi | fi | |||
# Add non-PIC object to the list of files to remove. | # Add non-PIC object to the list of files to remove. | |||
if test -n "$non_pic_object" && | if test -n "$non_pic_object" && | |||
test "$non_pic_object" != none; then | test "$non_pic_object" != none; then | |||
rmfiles="$rmfiles $dir/$non_pic_object" | func_append rmfiles " $dir/$non_pic_object" | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
*) | *) | |||
if test "$mode" = clean ; then | if test "$opt_mode" = clean ; then | |||
noexename=$name | noexename=$name | |||
case $file in | case $file in | |||
*.exe) | *.exe) | |||
func_stripname '' '.exe' "$file" | func_stripname '' '.exe' "$file" | |||
file=$func_stripname_result | file=$func_stripname_result | |||
func_stripname '' '.exe' "$name" | func_stripname '' '.exe' "$name" | |||
noexename=$func_stripname_result | noexename=$func_stripname_result | |||
# $file with .exe has already been added to rmfiles, | # $file with .exe has already been added to rmfiles, | |||
# add $file without .exe | # add $file without .exe | |||
rmfiles="$rmfiles $file" | func_append rmfiles " $file" | |||
;; | ;; | |||
esac | esac | |||
# Do a test to see if this is a libtool program. | # Do a test to see if this is a libtool program. | |||
if func_ltwrapper_p "$file"; then | if func_ltwrapper_p "$file"; then | |||
if func_ltwrapper_executable_p "$file"; then | if func_ltwrapper_executable_p "$file"; then | |||
func_ltwrapper_scriptname "$file" | func_ltwrapper_scriptname "$file" | |||
relink_command= | relink_command= | |||
func_source $func_ltwrapper_scriptname_result | func_source $func_ltwrapper_scriptname_result | |||
rmfiles="$rmfiles $func_ltwrapper_scriptname_result" | func_append rmfiles " $func_ltwrapper_scriptname_result" | |||
else | else | |||
relink_command= | relink_command= | |||
func_source $dir/$noexename | func_source $dir/$noexename | |||
fi | fi | |||
# note $name still contains .exe if it was in $file originally | # note $name still contains .exe if it was in $file originally | |||
# as does the version of $file that was added into $rmfiles | # as does the version of $file that was added into $rmfiles | |||
rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" | func_append rmfiles " $odir/$name $odir/${name}S.${objext}" | |||
if test "$fast_install" = yes && test -n "$relink_command"; then | if test "$fast_install" = yes && test -n "$relink_command"; then | |||
rmfiles="$rmfiles $objdir/lt-$name" | func_append rmfiles " $odir/lt-$name" | |||
fi | fi | |||
if test "X$noexename" != "X$name" ; then | if test "X$noexename" != "X$name" ; then | |||
rmfiles="$rmfiles $objdir/lt-${noexename}.c" | func_append rmfiles " $odir/lt-${noexename}.c" | |||
fi | fi | |||
fi | fi | |||
fi | fi | |||
;; | ;; | |||
esac | esac | |||
func_show_eval "$RM $rmfiles" 'exit_status=1' | func_show_eval "$RM $rmfiles" 'exit_status=1' | |||
done | done | |||
objdir="$origobjdir" | ||||
# Try to remove the ${objdir}s in the directories where we deleted file s | # Try to remove the ${objdir}s in the directories where we deleted file s | |||
for dir in $rmdirs; do | for dir in $rmdirs; do | |||
if test -d "$dir"; then | if test -d "$dir"; then | |||
func_show_eval "rmdir $dir >/dev/null 2>&1" | func_show_eval "rmdir $dir >/dev/null 2>&1" | |||
fi | fi | |||
done | done | |||
exit $exit_status | exit $exit_status | |||
} | } | |||
{ test "$mode" = uninstall || test "$mode" = clean; } && | { test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && | |||
func_mode_uninstall ${1+"$@"} | func_mode_uninstall ${1+"$@"} | |||
test -z "$mode" && { | test -z "$opt_mode" && { | |||
help="$generic_help" | help="$generic_help" | |||
func_fatal_help "you must specify a MODE" | func_fatal_help "you must specify a MODE" | |||
} | } | |||
test -z "$exec_cmd" && \ | test -z "$exec_cmd" && \ | |||
func_fatal_help "invalid operation mode \`$mode'" | func_fatal_help "invalid operation mode \`$opt_mode'" | |||
if test -n "$exec_cmd"; then | if test -n "$exec_cmd"; then | |||
eval exec "$exec_cmd" | eval exec "$exec_cmd" | |||
exit $EXIT_FAILURE | exit $EXIT_FAILURE | |||
fi | fi | |||
exit $exit_status | exit $exit_status | |||
# The TAGs below are defined such that we never get into a situation | # The TAGs below are defined such that we never get into a situation | |||
# in which we disable both kinds of libraries. Given conflicting | # in which we disable both kinds of libraries. Given conflicting | |||
End of changes. 551 change blocks. | ||||
1506 lines changed or deleted | 2783 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |