You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6496 lines
181 KiB
6496 lines
181 KiB
# ltmain.sh - Provide generalized library-building support services.
|
|||||||||||||||||||||
# NOTE: Changing this file will not affect anything until you rerun configure.
|
|||||||||||||||||||||
#
|
|||||||||||||||||||||
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
|
|||||||||||||||||||||
# Free Software Foundation, Inc.
|
|||||||||||||||||||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
|||||||||||||||||||||
#
|
|||||||||||||||||||||
# This program is free software; you can redistribute it and/or modify
|
|||||||||||||||||||||
# it under the terms of the GNU General Public License as published by
|
|||||||||||||||||||||
# the Free Software Foundation; either version 2 of the License, or
|
|||||||||||||||||||||
# (at your option) any later version.
|
|||||||||||||||||||||
#
|
|||||||||||||||||||||
# This program is distributed in the hope that it will be useful, but
|
|||||||||||||||||||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|||||||||||||||||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|||||||||||||||||||||
# General Public License for more details.
|
|||||||||||||||||||||
#
|
|||||||||||||||||||||
# You should have received a copy of the GNU General Public License
|
|||||||||||||||||||||
# along with this program; if not, write to the Free Software
|
|||||||||||||||||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||||||||||||||||||||
#
|
|||||||||||||||||||||
# As a special exception to the GNU General Public License, if you
|
|||||||||||||||||||||
# distribute this file as part of a program that contains a
|
|||||||||||||||||||||
# configuration script generated by Autoconf, you may include it under
|
|||||||||||||||||||||
# the same distribution terms that you use for the rest of that program.
|
|||||||||||||||||||||
|
|||||||||||||||||||||
basename="s,^.*/,,g"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# 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"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# The name of this program:
|
|||||||||||||||||||||
progname=`echo "$progpath" | $SED $basename`
|
|||||||||||||||||||||
modename="$progname"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# Global variables:
|
|||||||||||||||||||||
EXIT_SUCCESS=0
|
|||||||||||||||||||||
EXIT_FAILURE=1
|
|||||||||||||||||||||
|
|||||||||||||||||||||
PROGRAM=ltmain.sh
|
|||||||||||||||||||||
PACKAGE=libtool
|
|||||||||||||||||||||
VERSION=1.5.16
|
|||||||||||||||||||||
TIMESTAMP=" (1.1220.2.234 2005/04/24 17:45:58)"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# See if we are running on zsh, and set the options which allow our
|
|||||||||||||||||||||
# commands through without removal of \ escapes.
|
|||||||||||||||||||||
if test -n "${ZSH_VERSION+set}" ; then
|
|||||||||||||||||||||
setopt NO_GLOB_SUBST
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# Check that we have a working $echo.
|
|||||||||||||||||||||
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
|
|||||||||||||||||||||
|
|||||||||||||||||||||
default_mode=
|
|||||||||||||||||||||
help="Try \`$progname --help' for more information."
|
|||||||||||||||||||||
magic="%%%MAGIC variable%%%"
|
|||||||||||||||||||||
mkdir="mkdir"
|
|||||||||||||||||||||
mv="mv -f"
|
|||||||||||||||||||||
rm="rm -f"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# Sed substitution that helps us do robust quoting. It backslashifies
|
|||||||||||||||||||||
# metacharacters that are still active within double-quoted strings.
|
|||||||||||||||||||||
Xsed="${SED}"' -e 1s/^X//'
|
|||||||||||||||||||||
sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
|
|||||||||||||||||||||
# test EBCDIC or ASCII
|
|||||||||||||||||||||
case `echo A|tr A '\301'` in
|
|||||||||||||||||||||
A) # EBCDIC based system
|
|||||||||||||||||||||
SP2NL="tr '\100' '\n'"
|
|||||||||||||||||||||
NL2SP="tr '\r\n' '\100\100'"
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
*) # Assume ASCII based system
|
|||||||||||||||||||||
SP2NL="tr '\040' '\012'"
|
|||||||||||||||||||||
NL2SP="tr '\015\012' '\040\040'"
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# NLS nuisances.
|
|||||||||||||||||||||
# 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).
|
|||||||||||||||||||||
# We save the old values to restore during execute mode.
|
|||||||||||||||||||||
if test "${LC_ALL+set}" = set; then
|
|||||||||||||||||||||
save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
if test "${LANG+set}" = set; then
|
|||||||||||||||||||||
save_LANG="$LANG"; LANG=C; export LANG
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# Make sure IFS has a sensible default
|
|||||||||||||||||||||
lt_nl='
|
|||||||||||||||||||||
'
|
|||||||||||||||||||||
IFS=" $lt_nl"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
|
|||||||||||||||||||||
$echo "$modename: not configured to build any kind of library" 1>&2
|
|||||||||||||||||||||
$echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
|
|||||||||||||||||||||
exit $EXIT_FAILURE
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# Global variables.
|
|||||||||||||||||||||
mode=$default_mode
|
|||||||||||||||||||||
nonopt=
|
|||||||||||||||||||||
prev=
|
|||||||||||||||||||||
prevopt=
|
|||||||||||||||||||||
run=
|
|||||||||||||||||||||
show="$echo"
|
|||||||||||||||||||||
show_help=
|
|||||||||||||||||||||
execute_dlfiles=
|
|||||||||||||||||||||
lo2o="s/\\.lo\$/.${objext}/"
|
|||||||||||||||||||||
o2lo="s/\\.${objext}\$/.lo/"
|
|||||||||||||||||||||
quote_scanset='[[~#^*{};<>?'"'"' ]'
|
|||||||||||||||||||||
|
|||||||||||||||||||||
#####################################
|
|||||||||||||||||||||
# Shell function definitions:
|
|||||||||||||||||||||
# This seems to be the best place for them
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# func_win32_libid arg
|
|||||||||||||||||||||
# return the library type of file 'arg'
|
|||||||||||||||||||||
#
|
|||||||||||||||||||||
# Need a lot of goo to handle *both* DLLs and import libs
|
|||||||||||||||||||||
# Has to be a shell function in order to 'eat' the argument
|
|||||||||||||||||||||
# that is supplied when $file_magic_command is called.
|
|||||||||||||||||||||
func_win32_libid ()
|
|||||||||||||||||||||
{
|
|||||||||||||||||||||
win32_libid_type="unknown"
|
|||||||||||||||||||||
win32_fileres=`file -L $1 2>/dev/null`
|
|||||||||||||||||||||
case $win32_fileres in
|
|||||||||||||||||||||
*ar\ archive\ import\ library*) # definitely import
|
|||||||||||||||||||||
win32_libid_type="x86 archive import"
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
*ar\ archive*) # could be an import, or static
|
|||||||||||||||||||||
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
|
|||||||||||||||||||||
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
|
|||||||||||||||||||||
win32_nmres=`eval $NM -f posix -A $1 | \
|
|||||||||||||||||||||
sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
|
|||||||||||||||||||||
if test "X$win32_nmres" = "Ximport" ; then
|
|||||||||||||||||||||
win32_libid_type="x86 archive import"
|
|||||||||||||||||||||
else
|
|||||||||||||||||||||
win32_libid_type="x86 archive static"
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
*DLL*)
|
|||||||||||||||||||||
win32_libid_type="x86 DLL"
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
*executable*) # but shell scripts are "executable" too...
|
|||||||||||||||||||||
case $win32_fileres in
|
|||||||||||||||||||||
*MS\ Windows\ PE\ Intel*)
|
|||||||||||||||||||||
win32_libid_type="x86 DLL"
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
$echo $win32_libid_type
|
|||||||||||||||||||||
}
|
|||||||||||||||||||||
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# func_infer_tag arg
|
|||||||||||||||||||||
# Infer tagged configuration to use if any are available and
|
|||||||||||||||||||||
# if one wasn't chosen via the "--tag" command line option.
|
|||||||||||||||||||||
# Only attempt this if the compiler in the base compile
|
|||||||||||||||||||||
# command doesn't match the default compiler.
|
|||||||||||||||||||||
# arg is usually of the form 'gcc ...'
|
|||||||||||||||||||||
func_infer_tag ()
|
|||||||||||||||||||||
{
|
|||||||||||||||||||||
if test -n "$available_tags" && test -z "$tagname"; then
|
|||||||||||||||||||||
CC_quoted=
|
|||||||||||||||||||||
for arg in $CC; do
|
|||||||||||||||||||||
case $arg in
|
|||||||||||||||||||||
*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
|
|||||||||||||||||||||
arg="\"$arg\""
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
CC_quoted="$CC_quoted $arg"
|
|||||||||||||||||||||
done
|
|||||||||||||||||||||
case $@ in
|
|||||||||||||||||||||
# Blanks in the command may have been stripped by the calling shell,
|
|||||||||||||||||||||
# but not from the CC environment variable when configure was run.
|
|||||||||||||||||||||
" $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
|
|||||||||||||||||||||
# Blanks at the start of $base_compile will cause this to fail
|
|||||||||||||||||||||
# if we don't check for them as well.
|
|||||||||||||||||||||
*)
|
|||||||||||||||||||||
for z in $available_tags; do
|
|||||||||||||||||||||
if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then
|
|||||||||||||||||||||
# Evaluate the configuration.
|
|||||||||||||||||||||
eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`"
|
|||||||||||||||||||||
CC_quoted=
|
|||||||||||||||||||||
for arg in $CC; do
|
|||||||||||||||||||||
# Double-quote args containing other shell metacharacters.
|
|||||||||||||||||||||
case $arg in
|
|||||||||||||||||||||
*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
|
|||||||||||||||||||||
arg="\"$arg\""
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
CC_quoted="$CC_quoted $arg"
|
|||||||||||||||||||||
done
|
|||||||||||||||||||||
case "$@ " in
|
|||||||||||||||||||||
" $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
|
|||||||||||||||||||||
# The compiler in the base compile command matches
|
|||||||||||||||||||||
# the one in the tagged configuration.
|
|||||||||||||||||||||
# Assume this is the tagged configuration we want.
|
|||||||||||||||||||||
tagname=$z
|
|||||||||||||||||||||
break
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
done
|
|||||||||||||||||||||
# If $tagname still isn't set, then no tagged configuration
|
|||||||||||||||||||||
# was found and let the user know that the "--tag" command
|
|||||||||||||||||||||
# line option must be used.
|
|||||||||||||||||||||
if test -z "$tagname"; then
|
|||||||||||||||||||||
$echo "$modename: unable to infer tagged configuration"
|
|||||||||||||||||||||
$echo "$modename: specify a tag with \`--tag'" 1>&2
|
|||||||||||||||||||||
exit $EXIT_FAILURE
|
|||||||||||||||||||||
# else
|
|||||||||||||||||||||
# $echo "$modename: using $tagname tagged configuration"
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
}
|
|||||||||||||||||||||
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# func_extract_an_archive dir oldlib
|
|||||||||||||||||||||
func_extract_an_archive ()
|
|||||||||||||||||||||
{
|
|||||||||||||||||||||
f_ex_an_ar_dir="$1"; shift
|
|||||||||||||||||||||
f_ex_an_ar_oldlib="$1"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
$show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
|
|||||||||||||||||||||
$run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
|
|||||||||||||||||||||
if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
|
|||||||||||||||||||||
:
|
|||||||||||||||||||||
else
|
|||||||||||||||||||||
$echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
|
|||||||||||||||||||||
exit $EXIT_FAILURE
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
}
|
|||||||||||||||||||||
|
|||||||||||||||||||||
# func_extract_archives gentop oldlib ...
|
|||||||||||||||||||||
func_extract_archives ()
|
|||||||||||||||||||||
{
|
|||||||||||||||||||||
my_gentop="$1"; shift
|
|||||||||||||||||||||
my_oldlibs=${1+"$@"}
|
|||||||||||||||||||||
my_oldobjs=""
|
|||||||||||||||||||||
my_xlib=""
|
|||||||||||||||||||||
my_xabs=""
|
|||||||||||||||||||||
my_xdir=""
|
|||||||||||||||||||||
my_status=""
|
|||||||||||||||||||||
|
|||||||||||||||||||||
$show "${rm}r $my_gentop"
|
|||||||||||||||||||||
$run ${rm}r "$my_gentop"
|
|||||||||||||||||||||
$show "$mkdir $my_gentop"
|
|||||||||||||||||||||
$run $mkdir "$my_gentop"
|
|||||||||||||||||||||
my_status=$?
|
|||||||||||||||||||||
if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
|
|||||||||||||||||||||
exit $my_status
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
|
|||||||||||||||||||||
for my_xlib in $my_oldlibs; do
|
|||||||||||||||||||||
# Extract the objects.
|
|||||||||||||||||||||
case $my_xlib in
|
|||||||||||||||||||||
[\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;;
|
|||||||||||||||||||||
*) my_xabs=`pwd`"/$my_xlib" ;;
|
|||||||||||||||||||||
esac
|
|||||||||||||||||||||
my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
|
|||||||||||||||||||||
my_xdir="$my_gentop/$my_xlib"
|
|||||||||||||||||||||
|
|||||||||||||||||||||
$show "${rm}r $my_xdir"
|
|||||||||||||||||||||
$run ${rm}r "$my_xdir"
|
|||||||||||||||||||||
$show "$mkdir $my_xdir"
|
|||||||||||||||||||||
$run $mkdir "$my_xdir"
|
|||||||||||||||||||||
status=$?
|
|||||||||||||||||||||
if test "$status" -ne 0 && test ! -d "$my_xdir"; then
|
|||||||||||||||||||||
exit $status
|
|||||||||||||||||||||
fi
|
|||||||||||||||||||||
case $host in
|
|||||||||||||||||||||
*-darwin*)
|
|||||||||||||||||||||
$show "Extracting $my_xabs"
|
|||||||||||||||||||||
# Do not bother doing anything if just a dry run
|
|||||||||||||||||||||
if test -z "$run"; then
|
|||||||||||||||||||||
darwin_orig_dir=`pwd`
|
|||||||||||||||||||||
cd $my_xdir || exit $?
|
|||||||||||||||||||||
|
Author | SHA1 | Date |
---|---|---|
Sebastian Junges | 8b46203e11 | 8 years ago |
Sebastian Junges | ed311bdd22 | 8 years ago |
sjunges | 461951c52e | 8 years ago |
Sebastian Junges | 05cf1071b8 | 8 years ago |
Sebastian Junges | 2bd01d022f | 8 years ago |
Sebastian Junges | 0c79aba2c7 | 8 years ago |