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/ {
:print
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]*$//
# Print
/./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/