| Index: ltmain.sh
|
| diff --git a/ltmain.sh b/ltmain.sh
|
| index 23f82e3b79cf555dc49c69f5ec241a587987918e..e420facf55f8bf28e0d73c486fbecb4a7deadf5e 100644
|
| --- a/ltmain.sh
|
| +++ b/ltmain.sh
|
| @@ -1,8 +1,8 @@
|
| # 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
|
| -# Free Software Foundation, Inc.
|
| +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
|
| +# 2007, 2008 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
|
| @@ -17,7 +17,7 @@
|
| #
|
| # 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
| +# 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
|
| @@ -33,9 +33,6 @@ basename="s,^.*/,,g"
|
| # function.
|
| progpath="$0"
|
|
|
| -# RH: define SED for historic ltconfig's generated by Libtool 1.3
|
| -[ -z "$SED" ] && SED=sed
|
| -
|
| # The name of this program:
|
| progname=`echo "$progpath" | $SED $basename`
|
| modename="$progname"
|
| @@ -46,9 +43,22 @@ EXIT_FAILURE=1
|
|
|
| PROGRAM=ltmain.sh
|
| PACKAGE=libtool
|
| -VERSION=1.5.6
|
| -TIMESTAMP=" (1.1220.2.95 2004/04/11 05:50:42)"
|
| -
|
| +VERSION="1.5.26 Debian 1.5.26-1ubuntu1"
|
| +TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)"
|
| +
|
| +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
|
| +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
|
| + emulate sh
|
| + NULLCMD=:
|
| + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
|
| + # is contrary to our usage. Disable this feature.
|
| + alias -g '${1+"$@"}'='"$@"'
|
| + setopt NO_GLOB_SUBST
|
| +else
|
| + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
|
| +fi
|
| +BIN_SH=xpg4; export BIN_SH # for Tru64
|
| +DUALCASE=1; export DUALCASE # for MKS sh
|
|
|
| # Check that we have a working $echo.
|
| if test "X$1" = X--no-reexec; then
|
| @@ -86,14 +96,15 @@ rm="rm -f"
|
| 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'"
|
| +case `echo X|tr X '\101'` in
|
| + A) # ASCII based system
|
| + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
|
| + SP2NL='tr \040 \012'
|
| + NL2SP='tr \015\012 \040\040'
|
| ;;
|
| - *) # Assume ASCII based system
|
| - SP2NL="tr '\040' '\012'"
|
| - NL2SP="tr '\015\012' '\040\040'"
|
| + *) # EBCDIC based system
|
| + SP2NL='tr \100 \n'
|
| + NL2SP='tr \r\n \100\100'
|
| ;;
|
| esac
|
|
|
| @@ -102,16 +113,25 @@ esac
|
| # 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
|
| +lt_env=
|
| +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
|
| +do
|
| + eval "if test \"\${$lt_var+set}\" = set; then
|
| + save_$lt_var=\$$lt_var
|
| + lt_env=\"$lt_var=\$$lt_var \$lt_env\"
|
| + $lt_var=C
|
| + export $lt_var
|
| + fi"
|
| +done
|
| +
|
| +if test -n "$lt_env"; then
|
| + lt_env="env $lt_env"
|
| fi
|
|
|
| # Make sure IFS has a sensible default
|
| -: ${IFS="
|
| -"}
|
| +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
|
| @@ -128,20 +148,62 @@ run=
|
| show="$echo"
|
| show_help=
|
| execute_dlfiles=
|
| +duplicate_deps=no
|
| +preserve_args=
|
| lo2o="s/\\.lo\$/.${objext}/"
|
| o2lo="s/\\.${objext}\$/.lo/"
|
| +extracted_archives=
|
| +extracted_serial=0
|
|
|
| #####################################
|
| # Shell function definitions:
|
| # This seems to be the best place for them
|
|
|
| +# func_mktempdir [string]
|
| +# Make a temporary directory that won't clash with other running
|
| +# libtool processes, and avoids race conditions if possible. If
|
| +# given, STRING is the basename for that directory.
|
| +func_mktempdir ()
|
| +{
|
| + my_template="${TMPDIR-/tmp}/${1-$progname}"
|
| +
|
| + if test "$run" = ":"; then
|
| + # Return a directory name, but don't create it in dry-run mode
|
| + my_tmpdir="${my_template}-$$"
|
| + else
|
| +
|
| + # If mktemp works, use that first and foremost
|
| + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
|
| +
|
| + if test ! -d "$my_tmpdir"; then
|
| + # Failing that, at least try and use $RANDOM to avoid a race
|
| + my_tmpdir="${my_template}-${RANDOM-0}$$"
|
| +
|
| + save_mktempdir_umask=`umask`
|
| + umask 0077
|
| + $mkdir "$my_tmpdir"
|
| + umask $save_mktempdir_umask
|
| + fi
|
| +
|
| + # If we're not in dry-run mode, bomb out on failure
|
| + test -d "$my_tmpdir" || {
|
| + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
|
| + exit $EXIT_FAILURE
|
| + }
|
| + fi
|
| +
|
| + $echo "X$my_tmpdir" | $Xsed
|
| +}
|
| +
|
| +
|
| # 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 () {
|
| +func_win32_libid ()
|
| +{
|
| win32_libid_type="unknown"
|
| win32_fileres=`file -L $1 2>/dev/null`
|
| case $win32_fileres in
|
| @@ -152,12 +214,17 @@ func_win32_libid () {
|
| 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
|
| + $SED -n -e '1,100{
|
| + / I /{
|
| + s,.*,import,
|
| + p
|
| + q
|
| + }
|
| + }'`
|
| + case $win32_nmres in
|
| + import*) win32_libid_type="x86 archive import";;
|
| + *) win32_libid_type="x86 archive static";;
|
| + esac
|
| fi
|
| ;;
|
| *DLL*)
|
| @@ -181,7 +248,8 @@ func_win32_libid () {
|
| # 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 () {
|
| +func_infer_tag ()
|
| +{
|
| if test -n "$available_tags" && test -z "$tagname"; then
|
| CC_quoted=
|
| for arg in $CC; do
|
| @@ -238,12 +306,126 @@ func_infer_tag () {
|
| 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_xlib_u=$my_xlib
|
| + while :; do
|
| + case " $extracted_archives " in
|
| + *" $my_xlib_u "*)
|
| + extracted_serial=`expr $extracted_serial + 1`
|
| + my_xlib_u=lt$extracted_serial-$my_xlib ;;
|
| + *) break ;;
|
| + esac
|
| + done
|
| + extracted_archives="$extracted_archives $my_xlib_u"
|
| + my_xdir="$my_gentop/$my_xlib_u"
|
| +
|
| + $show "${rm}r $my_xdir"
|
| + $run ${rm}r "$my_xdir"
|
| + $show "$mkdir $my_xdir"
|
| + $run $mkdir "$my_xdir"
|
| + exit_status=$?
|
| + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
|
| + exit $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 $?
|
| + darwin_archive=$my_xabs
|
| + darwin_curdir=`pwd`
|
| + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
|
| + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
|
| + if test -n "$darwin_arches"; then
|
| + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
|
| + darwin_arch=
|
| + $show "$darwin_base_archive has multiple architectures $darwin_arches"
|
| + for darwin_arch in $darwin_arches ; do
|
| + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}"
|
| + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}"
|
| + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}"
|
| + func_extract_an_archive "`pwd`" "${darwin_base_archive}"
|
| + cd "$darwin_curdir"
|
| + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}"
|
| + done # $darwin_arches
|
| + ## Okay now we have a bunch of thin objects, gotta fatten them up :)
|
| + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
|
| + darwin_file=
|
| + darwin_files=
|
| + for darwin_file in $darwin_filelist; do
|
| + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
|
| + lipo -create -output "$darwin_file" $darwin_files
|
| + done # $darwin_filelist
|
| + ${rm}r unfat-$$
|
| + cd "$darwin_orig_dir"
|
| + else
|
| + cd "$darwin_orig_dir"
|
| + func_extract_an_archive "$my_xdir" "$my_xabs"
|
| + fi # $darwin_arches
|
| + fi # $run
|
| + ;;
|
| + *)
|
| + func_extract_an_archive "$my_xdir" "$my_xabs"
|
| + ;;
|
| + esac
|
| + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
|
| + done
|
| + func_extract_archives_result="$my_oldobjs"
|
| +}
|
| # End of Shell function definitions
|
| #####################################
|
|
|
| # Darwin sucks
|
| eval std_shrext=\"$shrext_cmds\"
|
|
|
| +disable_libs=no
|
| +
|
| # Parse our command line options once, thoroughly.
|
| while test "$#" -gt 0
|
| do
|
| @@ -306,12 +488,13 @@ do
|
| ;;
|
|
|
| --version)
|
| - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
|
| - $echo
|
| - $echo "Copyright (C) 2003 Free Software Foundation, Inc."
|
| - $echo "This is free software; see the source for copying conditions. There is NO"
|
| - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
| - exit $EXIT_SUCCESS
|
| + echo "\
|
| +$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
|
| +
|
| +Copyright (C) 2008 Free Software Foundation, Inc.
|
| +This is free software; see the source for copying conditions. There is NO
|
| +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
| + exit $?
|
| ;;
|
|
|
| --config)
|
| @@ -320,7 +503,7 @@ do
|
| for tagname in $taglist; do
|
| ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
|
| done
|
| - exit $EXIT_SUCCESS
|
| + exit $?
|
| ;;
|
|
|
| --debug)
|
| @@ -345,7 +528,7 @@ do
|
| else
|
| $echo "disable static libraries"
|
| fi
|
| - exit $EXIT_SUCCESS
|
| + exit $?
|
| ;;
|
|
|
| --finish) mode="finish" ;;
|
| @@ -360,7 +543,11 @@ do
|
| preserve_args="$preserve_args $arg"
|
| ;;
|
|
|
| - --tag) prevopt="--tag" prev=tag ;;
|
| + --tag)
|
| + prevopt="--tag"
|
| + prev=tag
|
| + preserve_args="$preserve_args --tag"
|
| + ;;
|
| --tag=*)
|
| set tag "$optarg" ${1+"$@"}
|
| shift
|
| @@ -392,6 +579,18 @@ if test -n "$prevopt"; then
|
| exit $EXIT_FAILURE
|
| fi
|
|
|
| +case $disable_libs in
|
| +no)
|
| + ;;
|
| +shared)
|
| + build_libtool_libs=no
|
| + build_old_libs=yes
|
| + ;;
|
| +static)
|
| + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
|
| + ;;
|
| +esac
|
| +
|
| # 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
|
| # left over by shells.
|
| @@ -402,7 +601,7 @@ if test -z "$show_help"; then
|
| # Infer the operation mode.
|
| if test -z "$mode"; then
|
| $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
|
| - $echo "*** Future versions of Libtool will require -mode=MODE be specified." 1>&2
|
| + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
|
| case $nonopt in
|
| *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
|
| mode=link
|
| @@ -468,7 +667,7 @@ if test -z "$show_help"; then
|
|
|
| for arg
|
| do
|
| - case "$arg_mode" in
|
| + case $arg_mode in
|
| arg )
|
| # do not "continue". Instead, add this to base_compile
|
| lastarg="$arg"
|
| @@ -550,7 +749,10 @@ if test -z "$show_help"; then
|
| case $lastarg in
|
| # Double-quote args containing other shell metacharacters.
|
| # Many Bourne shells cannot handle close brackets correctly
|
| - # in scan sets, so we specify it separately.
|
| + # in scan sets, and some SunOS ksh mistreat backslash-escaping
|
| + # in scan sets (worked around with variable expansion),
|
| + # and furthermore cannot handle '|' '&' '(' ')' in scan sets
|
| + # at all, so we specify them separately.
|
| *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
|
| lastarg="\"$lastarg\""
|
| ;;
|
| @@ -588,9 +790,11 @@ if test -z "$show_help"; then
|
| *.class) xform=class ;;
|
| *.cpp) xform=cpp ;;
|
| *.cxx) xform=cxx ;;
|
| - *.f90) xform=f90 ;;
|
| + *.[fF][09]?) xform=[fF][09]. ;;
|
| *.for) xform=for ;;
|
| *.java) xform=java ;;
|
| + *.obj) xform=obj ;;
|
| + *.sx) xform=sx ;;
|
| esac
|
|
|
| libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
|
| @@ -624,6 +828,14 @@ if test -z "$show_help"; then
|
| esac
|
| done
|
|
|
| + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
|
| + case $qlibobj in
|
| + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
|
| + qlibobj="\"$qlibobj\"" ;;
|
| + esac
|
| + test "X$libobj" != "X$qlibobj" \
|
| + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
|
| + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
|
| objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
|
| xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
|
| if test "X$xdir" = "X$obj"; then
|
| @@ -696,12 +908,17 @@ compiler."
|
| $run $rm $removelist
|
| exit $EXIT_FAILURE
|
| fi
|
| - $echo $srcfile > "$lockfile"
|
| + $echo "$srcfile" > "$lockfile"
|
| fi
|
|
|
| if test -n "$fix_srcfile_path"; then
|
| eval srcfile=\"$fix_srcfile_path\"
|
| fi
|
| + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
|
| + case $qsrcfile in
|
| + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
|
| + qsrcfile="\"$qsrcfile\"" ;;
|
| + esac
|
|
|
| $run $rm "$libobj" "${libobj}T"
|
|
|
| @@ -723,18 +940,18 @@ EOF
|
| fbsd_hideous_sh_bug=$base_compile
|
|
|
| if test "$pic_mode" != no; then
|
| - command="$base_compile $srcfile $pic_flag"
|
| + command="$base_compile $qsrcfile $pic_flag"
|
| else
|
| # Don't build PIC code
|
| - command="$base_compile $srcfile"
|
| + command="$base_compile $qsrcfile"
|
| fi
|
|
|
| if test ! -d "${xdir}$objdir"; then
|
| $show "$mkdir ${xdir}$objdir"
|
| $run $mkdir ${xdir}$objdir
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
|
| - exit $status
|
| + exit_status=$?
|
| + if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
|
| + exit $exit_status
|
| fi
|
| fi
|
|
|
| @@ -746,7 +963,7 @@ EOF
|
| $run $rm "$lobj" "$output_obj"
|
|
|
| $show "$command"
|
| - if $run eval "$command"; then :
|
| + if $run eval $lt_env "$command"; then :
|
| else
|
| test -n "$output_obj" && $run $rm $removelist
|
| exit $EXIT_FAILURE
|
| @@ -806,9 +1023,9 @@ EOF
|
| if test "$build_old_libs" = yes; then
|
| if test "$pic_mode" != yes; then
|
| # Don't build PIC code
|
| - command="$base_compile $srcfile"
|
| + command="$base_compile $qsrcfile"
|
| else
|
| - command="$base_compile $srcfile $pic_flag"
|
| + command="$base_compile $qsrcfile $pic_flag"
|
| fi
|
| if test "$compiler_c_o" = yes; then
|
| command="$command -o $obj"
|
| @@ -818,7 +1035,7 @@ EOF
|
| command="$command$suppress_output"
|
| $run $rm "$obj" "$output_obj"
|
| $show "$command"
|
| - if $run eval "$command"; then :
|
| + if $run eval $lt_env "$command"; then :
|
| else
|
| $run $rm $removelist
|
| exit $EXIT_FAILURE
|
| @@ -937,6 +1154,7 @@ EOF
|
| no_install=no
|
| objs=
|
| non_pic_objects=
|
| + notinst_path= # paths that contain not-installed libtool libraries
|
| precious_files_regex=
|
| prefer_static_libs=no
|
| preload=no
|
| @@ -950,6 +1168,7 @@ EOF
|
| thread_safe=no
|
| vinfo=
|
| vinfo_number=no
|
| + single_module="${wl}-single_module"
|
|
|
| func_infer_tag $base_compile
|
|
|
| @@ -957,22 +1176,32 @@ EOF
|
| for arg
|
| do
|
| case $arg in
|
| - -all-static | -static)
|
| - if test "X$arg" = "X-all-static"; then
|
| + -all-static | -static | -static-libtool-libs)
|
| + case $arg in
|
| + -all-static)
|
| if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
|
| $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
|
| fi
|
| if test -n "$link_static_flag"; then
|
| dlopen_self=$dlopen_self_static
|
| fi
|
| - else
|
| + prefer_static_libs=yes
|
| + ;;
|
| + -static)
|
| if test -z "$pic_flag" && test -n "$link_static_flag"; then
|
| dlopen_self=$dlopen_self_static
|
| fi
|
| - fi
|
| + prefer_static_libs=built
|
| + ;;
|
| + -static-libtool-libs)
|
| + if test -z "$pic_flag" && test -n "$link_static_flag"; then
|
| + dlopen_self=$dlopen_self_static
|
| + fi
|
| + prefer_static_libs=yes
|
| + ;;
|
| + esac
|
| build_libtool_libs=no
|
| build_old_libs=yes
|
| - prefer_static_libs=yes
|
| break
|
| ;;
|
| esac
|
| @@ -1147,6 +1376,11 @@ EOF
|
| if test -z "$pic_object" || test "$pic_object" = none ; then
|
| arg="$non_pic_object"
|
| fi
|
| + else
|
| + # If the PIC object exists, use it instead.
|
| + # $xdir was prepended to $pic_object above.
|
| + non_pic_object="$pic_object"
|
| + non_pic_objects="$non_pic_objects $non_pic_object"
|
| fi
|
| else
|
| # Only an error if not doing a dry-run.
|
| @@ -1230,6 +1464,13 @@ EOF
|
| prev=
|
| continue
|
| ;;
|
| + darwin_framework|darwin_framework_skip)
|
| + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
|
| + compile_command="$compile_command $arg"
|
| + finalize_command="$finalize_command $arg"
|
| + prev=
|
| + continue
|
| + ;;
|
| *)
|
| eval "$prev=\"\$arg\""
|
| prev=
|
| @@ -1288,6 +1529,18 @@ EOF
|
| continue
|
| ;;
|
|
|
| + -framework|-arch|-isysroot)
|
| + case " $CC " in
|
| + *" ${arg} ${1} "* | *" ${arg} ${1} "*)
|
| + prev=darwin_framework_skip ;;
|
| + *) compiler_flags="$compiler_flags $arg"
|
| + prev=darwin_framework ;;
|
| + esac
|
| + compile_command="$compile_command $arg"
|
| + finalize_command="$finalize_command $arg"
|
| + continue
|
| + ;;
|
| +
|
| -inst-prefix-dir)
|
| prev=inst_prefix
|
| continue
|
| @@ -1314,7 +1567,8 @@ EOF
|
| absdir=`cd "$dir" && pwd`
|
| if test -z "$absdir"; then
|
| $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
|
| - exit $EXIT_FAILURE
|
| + absdir="$dir"
|
| + notinst_path="$notinst_path $dir"
|
| fi
|
| dir="$absdir"
|
| ;;
|
| @@ -1328,10 +1582,15 @@ EOF
|
| esac
|
| case $host in
|
| *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
|
| + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
|
| case :$dllsearchpath: in
|
| *":$dir:"*) ;;
|
| *) dllsearchpath="$dllsearchpath:$dir";;
|
| esac
|
| + case :$dllsearchpath: in
|
| + *":$testbindir:"*) ;;
|
| + *) dllsearchpath="$dllsearchpath:$testbindir";;
|
| + esac
|
| ;;
|
| esac
|
| continue
|
| @@ -1340,15 +1599,15 @@ EOF
|
| -l*)
|
| if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
|
| case $host in
|
| - *-*-cygwin* | *-*-pw32* | *-*-beos*)
|
| + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
|
| # These systems don't actually have a C or math library (as such)
|
| continue
|
| ;;
|
| - *-*-mingw* | *-*-os2*)
|
| + *-*-os2*)
|
| # These systems don't actually have a C library (as such)
|
| test "X$arg" = "X-lc" && continue
|
| ;;
|
| - *-*-openbsd* | *-*-freebsd*)
|
| + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
|
| # Do not include libc due to us having libc/libc_r.
|
| test "X$arg" = "X-lc" && continue
|
| ;;
|
| @@ -1356,10 +1615,19 @@ EOF
|
| # Rhapsody C and math libraries are in the System framework
|
| deplibs="$deplibs -framework System"
|
| continue
|
| + ;;
|
| + *-*-sco3.2v5* | *-*-sco5v6*)
|
| + # Causes problems with __ctype
|
| + test "X$arg" = "X-lc" && continue
|
| + ;;
|
| + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
|
| + # Compiler inserts libc in the correct place for threads to work
|
| + test "X$arg" = "X-lc" && continue
|
| + ;;
|
| esac
|
| elif test "X$arg" = "X-lc_r"; then
|
| case $host in
|
| - *-*-openbsd* | *-*-freebsd*)
|
| + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
|
| # Do not include libc_r directly, use -pthread flag.
|
| continue
|
| ;;
|
| @@ -1369,8 +1637,25 @@ EOF
|
| continue
|
| ;;
|
|
|
| - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
|
| - deplibs="$deplibs $arg"
|
| + # Tru64 UNIX uses -model [arg] to determine the layout of C++
|
| + # classes, name mangling, and exception handling.
|
| + -model)
|
| + compile_command="$compile_command $arg"
|
| + compiler_flags="$compiler_flags $arg"
|
| + finalize_command="$finalize_command $arg"
|
| + prev=xcompiler
|
| + continue
|
| + ;;
|
| +
|
| + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
|
| + compiler_flags="$compiler_flags $arg"
|
| + compile_command="$compile_command $arg"
|
| + finalize_command="$finalize_command $arg"
|
| + continue
|
| + ;;
|
| +
|
| + -multi_module)
|
| + single_module="${wl}-multi_module"
|
| continue
|
| ;;
|
|
|
| @@ -1379,13 +1664,20 @@ EOF
|
| continue
|
| ;;
|
|
|
| - # gcc -m* arguments should be passed to the linker via $compiler_flags
|
| - # in order to pass architecture information to the linker
|
| - # (e.g. 32 vs 64-bit). This may also be accomplished via -Wl,-mfoo
|
| - # but this is not reliable with gcc because gcc may use -mfoo to
|
| - # select a different linker, different libraries, etc, while
|
| - # -Wl,-mfoo simply passes -mfoo to the linker.
|
| - -m*)
|
| + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
|
| + # -r[0-9][0-9]* specifies the processor on the SGI compiler
|
| + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
|
| + # +DA*, +DD* enable 64-bit mode on the HP compiler
|
| + # -q* pass through compiler args for the IBM compiler
|
| + # -m* pass through architecture-specific compiler args for GCC
|
| + # -m*, -t[45]*, -txscale* pass through architecture-specific
|
| + # compiler args for GCC
|
| + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
|
| + # -F/path gives path to uninstalled frameworks, gcc on darwin
|
| + # @file GCC response files
|
| + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
|
| + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
|
| +
|
| # Unknown arguments in both finalize_command and compile_command need
|
| # to be aesthetically quoted because they are evaled later.
|
| arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
|
| @@ -1396,9 +1688,7 @@ EOF
|
| esac
|
| compile_command="$compile_command $arg"
|
| finalize_command="$finalize_command $arg"
|
| - if test "$with_gcc" = "yes" ; then
|
| - compiler_flags="$compiler_flags $arg"
|
| - fi
|
| + compiler_flags="$compiler_flags $arg"
|
| continue
|
| ;;
|
|
|
| @@ -1414,9 +1704,9 @@ EOF
|
|
|
| -no-install)
|
| case $host in
|
| - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
|
| + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
|
| # The PATH hackery in wrapper scripts is required on Windows
|
| - # in order for the loader to find any dlls it needs.
|
| + # and Darwin in order for the loader to find any dlls it needs.
|
| $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
|
| $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
|
| fast_install=no
|
| @@ -1475,7 +1765,7 @@ EOF
|
| continue
|
| ;;
|
|
|
| - -static)
|
| + -static | -static-libtool-libs)
|
| # The effects of -static are defined in a previous loop.
|
| # We used to do the same as -all-static on platforms that
|
| # didn't have a PIC flag, but the assumption that the effects
|
| @@ -1636,6 +1926,11 @@ EOF
|
| if test -z "$pic_object" || test "$pic_object" = none ; then
|
| arg="$non_pic_object"
|
| fi
|
| + else
|
| + # If the PIC object exists, use it instead.
|
| + # $xdir was prepended to $pic_object above.
|
| + non_pic_object="$pic_object"
|
| + non_pic_objects="$non_pic_objects $non_pic_object"
|
| fi
|
| else
|
| # Only an error if not doing a dry-run.
|
| @@ -1741,9 +2036,9 @@ EOF
|
| if test ! -d "$output_objdir"; then
|
| $show "$mkdir $output_objdir"
|
| $run $mkdir $output_objdir
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$output_objdir"; then
|
| - exit $status
|
| + exit_status=$?
|
| + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
|
| + exit $exit_status
|
| fi
|
| fi
|
|
|
| @@ -1806,7 +2101,6 @@ EOF
|
| newlib_search_path=
|
| need_relink=no # whether we're linking any uninstalled libtool libraries
|
| notinst_deplibs= # not-installed libtool libraries
|
| - notinst_path= # paths that contain not-installed libtool libraries
|
| case $linkmode in
|
| lib)
|
| passes="conv link"
|
| @@ -1841,7 +2135,10 @@ EOF
|
| case $pass in
|
| dlopen) libs="$dlfiles" ;;
|
| dlpreopen) libs="$dlprefiles" ;;
|
| - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
|
| + link)
|
| + libs="$deplibs %DEPLIBS%"
|
| + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
|
| + ;;
|
| esac
|
| fi
|
| if test "$pass" = dlopen; then
|
| @@ -1853,12 +2150,12 @@ EOF
|
| lib=
|
| found=no
|
| case $deplib in
|
| - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
|
| + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
|
| if test "$linkmode,$pass" = "prog,link"; then
|
| compile_deplibs="$deplib $compile_deplibs"
|
| finalize_deplibs="$deplib $finalize_deplibs"
|
| else
|
| - deplibs="$deplib $deplibs"
|
| + compiler_flags="$compiler_flags $deplib"
|
| fi
|
| continue
|
| ;;
|
| @@ -1867,12 +2164,13 @@ EOF
|
| $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
|
| continue
|
| fi
|
| - if test "$pass" = conv; then
|
| - deplibs="$deplib $deplibs"
|
| - continue
|
| - fi
|
| name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
|
| - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
|
| + if test "$linkmode" = lib; then
|
| + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
|
| + else
|
| + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
|
| + fi
|
| + for searchdir in $searchdirs; do
|
| for search_ext in .la $std_shrext .so .a; do
|
| # Search the libtool library
|
| lib="$searchdir/lib${name}${search_ext}"
|
| @@ -1981,7 +2279,22 @@ EOF
|
| fi
|
| case $linkmode in
|
| lib)
|
| - if test "$deplibs_check_method" != pass_all; then
|
| + valid_a_lib=no
|
| + case $deplibs_check_method in
|
| + match_pattern*)
|
| + set dummy $deplibs_check_method
|
| + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
|
| + if eval $echo \"$deplib\" 2>/dev/null \
|
| + | $SED 10q \
|
| + | $EGREP "$match_pattern_regex" > /dev/null; then
|
| + valid_a_lib=yes
|
| + fi
|
| + ;;
|
| + pass_all)
|
| + valid_a_lib=yes
|
| + ;;
|
| + esac
|
| + if test "$valid_a_lib" != yes; then
|
| $echo
|
| $echo "*** Warning: Trying to link with static lib archive $deplib."
|
| $echo "*** I have the capability to make that library automatically link in when"
|
| @@ -2031,7 +2344,7 @@ EOF
|
| esac # case $deplib
|
| if test "$found" = yes || test -f "$lib"; then :
|
| else
|
| - $echo "$modename: cannot find the library \`$lib'" 1>&2
|
| + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
|
| exit $EXIT_FAILURE
|
| fi
|
|
|
| @@ -2055,6 +2368,8 @@ EOF
|
| # it will not redefine variables installed, or shouldnotlink
|
| installed=yes
|
| shouldnotlink=no
|
| + avoidtemprpath=
|
| +
|
|
|
| # Read the .la file
|
| case $lib in
|
| @@ -2153,11 +2468,19 @@ EOF
|
| dir="$libdir"
|
| absdir="$libdir"
|
| fi
|
| + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes
|
| else
|
| - dir="$ladir/$objdir"
|
| - absdir="$abs_ladir/$objdir"
|
| - # Remove this search path later
|
| - notinst_path="$notinst_path $abs_ladir"
|
| + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then
|
| + dir="$ladir"
|
| + absdir="$abs_ladir"
|
| + # Remove this search path later
|
| + notinst_path="$notinst_path $abs_ladir"
|
| + else
|
| + dir="$ladir/$objdir"
|
| + absdir="$abs_ladir/$objdir"
|
| + # Remove this search path later
|
| + notinst_path="$notinst_path $abs_ladir"
|
| + fi
|
| fi # $installed = yes
|
| name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
|
|
|
| @@ -2228,14 +2551,16 @@ EOF
|
|
|
| if test "$linkmode,$pass" = "prog,link"; then
|
| if test -n "$library_names" &&
|
| - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
|
| + { { test "$prefer_static_libs" = no ||
|
| + test "$prefer_static_libs,$installed" = "built,yes"; } ||
|
| + test -z "$old_library"; }; then
|
| # We need to hardcode the library path
|
| - if test -n "$shlibpath_var"; then
|
| + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
|
| # Make sure the rpath contains only unique directories.
|
| case "$temp_rpath " in
|
| *" $dir "*) ;;
|
| *" $absdir "*) ;;
|
| - *) temp_rpath="$temp_rpath $dir" ;;
|
| + *) temp_rpath="$temp_rpath $absdir" ;;
|
| esac
|
| fi
|
|
|
| @@ -2272,8 +2597,12 @@ EOF
|
| fi
|
|
|
| link_static=no # Whether the deplib will be linked statically
|
| + use_static_libs=$prefer_static_libs
|
| + if test "$use_static_libs" = built && test "$installed" = yes ; then
|
| + use_static_libs=no
|
| + fi
|
| if test -n "$library_names" &&
|
| - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
|
| + { test "$use_static_libs" = no || test -z "$old_library"; }; then
|
| if test "$installed" = no; then
|
| notinst_deplibs="$notinst_deplibs $lib"
|
| need_relink=yes
|
| @@ -2386,11 +2715,15 @@ EOF
|
| if test "$hardcode_direct" = no; then
|
| add="$dir/$linklib"
|
| case $host in
|
| - *-*-sco3.2v5* ) add_dir="-L$dir" ;;
|
| + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
|
| + *-*-sysv4*uw2*) add_dir="-L$dir" ;;
|
| + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
|
| + *-*-unixware7*) add_dir="-L$dir" ;;
|
| *-*-darwin* )
|
| # if the lib is a module then we can not link against
|
| # it, someone is ignoring the new warnings I added
|
| - if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
|
| + if /usr/bin/file -L $add 2> /dev/null |
|
| + $EGREP ": [^:]* bundle" >/dev/null ; then
|
| $echo "** Warning, lib $linklib is a module, not a shared library"
|
| if test -z "$old_library" ; then
|
| $echo
|
| @@ -2421,7 +2754,7 @@ EOF
|
| add_dir="-L$dir"
|
| # Try looking first in the location we're being installed to.
|
| if test -n "$inst_prefix_dir"; then
|
| - case "$libdir" in
|
| + case $libdir in
|
| [\\/]*)
|
| add_dir="$add_dir -L$inst_prefix_dir$libdir"
|
| ;;
|
| @@ -2494,7 +2827,7 @@ EOF
|
| add_dir="-L$libdir"
|
| # Try looking first in the location we're being installed to.
|
| if test -n "$inst_prefix_dir"; then
|
| - case "$libdir" in
|
| + case $libdir in
|
| [\\/]*)
|
| add_dir="$add_dir -L$inst_prefix_dir$libdir"
|
| ;;
|
| @@ -2555,8 +2888,6 @@ EOF
|
| fi
|
| fi
|
| else
|
| - convenience="$convenience $dir/$old_library"
|
| - old_convenience="$old_convenience $dir/$old_library"
|
| deplibs="$dir/$old_library $deplibs"
|
| link_static=yes
|
| fi
|
| @@ -2635,12 +2966,18 @@ EOF
|
| # we do not want to link against static libs,
|
| # but need to link against shared
|
| eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
|
| + eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
|
| if test -n "$deplibrary_names" ; then
|
| for tmp in $deplibrary_names ; do
|
| depdepl=$tmp
|
| done
|
| - if test -f "$path/$depdepl" ; then
|
| + if test -f "$deplibdir/$depdepl" ; then
|
| + depdepl="$deplibdir/$depdepl"
|
| + elif test -f "$path/$depdepl" ; then
|
| depdepl="$path/$depdepl"
|
| + else
|
| + # Can't find it, oh well...
|
| + depdepl=
|
| fi
|
| # do not add paths which are already there
|
| case " $newlib_search_path " in
|
| @@ -2674,12 +3011,12 @@ EOF
|
| *) continue ;;
|
| esac
|
| case " $deplibs " in
|
| - *" $depdepl "*) ;;
|
| - *) deplibs="$depdepl $deplibs" ;;
|
| + *" $path "*) ;;
|
| + *) deplibs="$path $deplibs" ;;
|
| esac
|
| case " $deplibs " in
|
| - *" $path "*) ;;
|
| - *) deplibs="$deplibs $path" ;;
|
| + *" $depdepl "*) ;;
|
| + *) deplibs="$depdepl $deplibs" ;;
|
| esac
|
| done
|
| fi # link_all_deplibs != no
|
| @@ -2788,9 +3125,10 @@ EOF
|
|
|
| case $linkmode in
|
| oldlib)
|
| - if test -n "$deplibs"; then
|
| - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
|
| - fi
|
| + case " $deplibs" in
|
| + *\ -l* | *\ -L*)
|
| + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
|
| + esac
|
|
|
| if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
|
| $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
|
| @@ -2918,7 +3256,7 @@ EOF
|
| # which has an extra 1 added just for fun
|
| #
|
| case $version_type in
|
| - darwin|linux|osf|windows)
|
| + darwin|linux|osf|windows|none)
|
| current=`expr $number_major + $number_minor`
|
| age="$number_minor"
|
| revision="$number_revision"
|
| @@ -2929,9 +3267,15 @@ EOF
|
| age="0"
|
| ;;
|
| irix|nonstopux)
|
| - current=`expr $number_major + $number_minor - 1`
|
| + current=`expr $number_major + $number_minor`
|
| age="$number_minor"
|
| revision="$number_minor"
|
| + lt_irix_increment=no
|
| + ;;
|
| + *)
|
| + $echo "$modename: unknown library version type \`$version_type'" 1>&2
|
| + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
|
| + exit $EXIT_FAILURE
|
| ;;
|
| esac
|
| ;;
|
| @@ -2944,27 +3288,27 @@ EOF
|
|
|
| # Check that each of the things are valid numbers.
|
| case $current in
|
| - [0-9]*) ;;
|
| + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
|
| *)
|
| - $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2
|
| + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
|
| $echo "$modename: \`$vinfo' is not valid version information" 1>&2
|
| exit $EXIT_FAILURE
|
| ;;
|
| esac
|
|
|
| case $revision in
|
| - [0-9]*) ;;
|
| + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
|
| *)
|
| - $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2
|
| + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
|
| $echo "$modename: \`$vinfo' is not valid version information" 1>&2
|
| exit $EXIT_FAILURE
|
| ;;
|
| esac
|
|
|
| case $age in
|
| - [0-9]*) ;;
|
| + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;;
|
| *)
|
| - $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2
|
| + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
|
| $echo "$modename: \`$vinfo' is not valid version information" 1>&2
|
| exit $EXIT_FAILURE
|
| ;;
|
| @@ -2990,6 +3334,7 @@ EOF
|
| versuffix="$major.$age.$revision"
|
| # Darwin ld doesn't like 0 for these options...
|
| minor_current=`expr $current + 1`
|
| + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
|
| verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
|
| ;;
|
|
|
| @@ -3004,8 +3349,11 @@ EOF
|
| ;;
|
|
|
| irix | nonstopux)
|
| - major=`expr $current - $age + 1`
|
| -
|
| + if test "X$lt_irix_increment" = "Xno"; then
|
| + major=`expr $current - $age`
|
| + else
|
| + major=`expr $current - $age + 1`
|
| + fi
|
| case $version_type in
|
| nonstopux) verstring_prefix=nonstopux ;;
|
| *) verstring_prefix=sgi ;;
|
| @@ -3142,11 +3490,11 @@ EOF
|
| fi
|
|
|
| # Eliminate all temporary directories.
|
| - for path in $notinst_path; do
|
| - lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
|
| - deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
|
| - dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
|
| - done
|
| + #for path in $notinst_path; do
|
| + # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
|
| + # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
|
| + # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
|
| + #done
|
|
|
| if test -n "$xrpath"; then
|
| # If the user specified any rpath flags, then add them.
|
| @@ -3196,9 +3544,14 @@ EOF
|
| *-*-netbsd*)
|
| # Don't link with libc until the a.out ld.so is fixed.
|
| ;;
|
| - *-*-openbsd* | *-*-freebsd*)
|
| + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
|
| # Do not include libc due to us having libc/libc_r.
|
| - test "X$arg" = "X-lc" && continue
|
| + ;;
|
| + *-*-sco3.2v5* | *-*-sco5v6*)
|
| + # Causes problems with __ctype
|
| + ;;
|
| + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
|
| + # Compiler inserts libc in the correct place for threads to work
|
| ;;
|
| *)
|
| # Add libc to deplibs on all other systems if necessary.
|
| @@ -3242,13 +3595,12 @@ EOF
|
| int main() { return 0; }
|
| EOF
|
| $rm conftest
|
| - $LTCC -o conftest conftest.c $deplibs
|
| - if test "$?" -eq 0 ; then
|
| + if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
|
| ldd_output=`ldd conftest`
|
| for i in $deplibs; do
|
| - name="`expr $i : '-l\(.*\)'`"
|
| + name=`expr $i : '-l\(.*\)'`
|
| # If $name is empty we are operating on a -L argument.
|
| - if test "$name" != "" && test "$name" -ne "0"; then
|
| + if test "$name" != "" && test "$name" != "0"; then
|
| if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
|
| case " $predeps $postdeps " in
|
| *" $i "*)
|
| @@ -3283,13 +3635,11 @@ EOF
|
| # Error occurred in the first compile. Let's try to salvage
|
| # the situation: Compile a separate program for each library.
|
| for i in $deplibs; do
|
| - name="`expr $i : '-l\(.*\)'`"
|
| + name=`expr $i : '-l\(.*\)'`
|
| # If $name is empty we are operating on a -L argument.
|
| if test "$name" != "" && test "$name" != "0"; then
|
| $rm conftest
|
| - $LTCC -o conftest conftest.c $i
|
| - # Did it work?
|
| - if test "$?" -eq 0 ; then
|
| + if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
|
| ldd_output=`ldd conftest`
|
| if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
|
| case " $predeps $postdeps " in
|
| @@ -3321,7 +3671,7 @@ EOF
|
| droppeddeps=yes
|
| $echo
|
| $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 install it or some"
|
| + $echo "*** make it link in! You will probably need to install it or some"
|
| $echo "*** library that it depends on before this library will be fully"
|
| $echo "*** functional. Installing it before continuing would be even better."
|
| fi
|
| @@ -3335,7 +3685,7 @@ EOF
|
| set dummy $deplibs_check_method
|
| file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
|
| for a_deplib in $deplibs; do
|
| - name="`expr $a_deplib : '-l\(.*\)'`"
|
| + name=`expr $a_deplib : '-l\(.*\)'`
|
| # If $name is empty we are operating on a -L argument.
|
| if test "$name" != "" && test "$name" != "0"; then
|
| if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
|
| @@ -3404,7 +3754,7 @@ EOF
|
| set dummy $deplibs_check_method
|
| match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
|
| for a_deplib in $deplibs; do
|
| - name="`expr $a_deplib : '-l\(.*\)'`"
|
| + name=`expr $a_deplib : '-l\(.*\)'`
|
| # If $name is empty we are operating on a -L argument.
|
| if test -n "$name" && test "$name" != "0"; then
|
| if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
|
| @@ -3534,6 +3884,35 @@ EOF
|
| deplibs=$newdeplibs
|
| fi
|
|
|
| +
|
| + # move library search paths that coincide with paths to not yet
|
| + # installed libraries to the beginning of the library search list
|
| + new_libs=
|
| + for path in $notinst_path; do
|
| + case " $new_libs " in
|
| + *" -L$path/$objdir "*) ;;
|
| + *)
|
| + case " $deplibs " in
|
| + *" -L$path/$objdir "*)
|
| + new_libs="$new_libs -L$path/$objdir" ;;
|
| + esac
|
| + ;;
|
| + esac
|
| + done
|
| + for deplib in $deplibs; do
|
| + case $deplib in
|
| + -L*)
|
| + case " $new_libs " in
|
| + *" $deplib "*) ;;
|
| + *) new_libs="$new_libs $deplib" ;;
|
| + esac
|
| + ;;
|
| + *) new_libs="$new_libs $deplib" ;;
|
| + esac
|
| + done
|
| + deplibs="$new_libs"
|
| +
|
| +
|
| # All the library-specific variables (install_libdir is set above).
|
| library_names=
|
| old_library=
|
| @@ -3578,7 +3957,10 @@ EOF
|
| test -n "$hardcode_libdirs"; then
|
| libdir="$hardcode_libdirs"
|
| if test -n "$hardcode_libdir_flag_spec_ld"; then
|
| - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
|
| + case $archive_cmds in
|
| + *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
|
| + *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
|
| + esac
|
| else
|
| eval dep_rpath=\"$hardcode_libdir_flag_spec\"
|
| fi
|
| @@ -3617,6 +3999,7 @@ EOF
|
| fi
|
|
|
| lib="$output_objdir/$realname"
|
| + linknames=
|
| for link
|
| do
|
| linknames="$linknames $link"
|
| @@ -3645,6 +4028,9 @@ EOF
|
| # The command line is too long to execute in one step.
|
| $show "using reloadable object file for export list..."
|
| skipped_export=:
|
| + # Break out early, otherwise skipped_export may be
|
| + # set to false by a later but shorter cmd.
|
| + break
|
| fi
|
| done
|
| IFS="$save_ifs"
|
| @@ -3678,67 +4064,13 @@ EOF
|
| eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
|
| else
|
| gentop="$output_objdir/${outputname}x"
|
| - $show "${rm}r $gentop"
|
| - $run ${rm}r "$gentop"
|
| - $show "$mkdir $gentop"
|
| - $run $mkdir "$gentop"
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$gentop"; then
|
| - exit $status
|
| - fi
|
| generated="$generated $gentop"
|
|
|
| - for xlib in $convenience; do
|
| - # Extract the objects.
|
| - case $xlib in
|
| - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
|
| - *) xabs=`pwd`"/$xlib" ;;
|
| - esac
|
| - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
|
| - xdir="$gentop/$xlib"
|
| -
|
| - $show "${rm}r $xdir"
|
| - $run ${rm}r "$xdir"
|
| - $show "$mkdir $xdir"
|
| - $run $mkdir "$xdir"
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$xdir"; then
|
| - exit $status
|
| - fi
|
| - # We will extract separately just the conflicting names and we will no
|
| - # longer touch any unique names. It is faster to leave these extract
|
| - # automatically by $AR in one run.
|
| - $show "(cd $xdir && $AR x $xabs)"
|
| - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
|
| - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
|
| - :
|
| - else
|
| - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
|
| - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
|
| - $AR t "$xabs" | sort | uniq -cd | while read -r count name
|
| - do
|
| - i=1
|
| - while test "$i" -le "$count"
|
| - do
|
| - # Put our $i before any first dot (extension)
|
| - # Never overwrite any file
|
| - name_to="$name"
|
| - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
|
| - do
|
| - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
|
| - done
|
| - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
|
| - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
|
| - i=`expr $i + 1`
|
| - done
|
| - done
|
| - fi
|
| -
|
| - libobjs="$libobjs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
|
| - done
|
| + func_extract_archives $gentop $convenience
|
| + libobjs="$libobjs $func_extract_archives_result"
|
| fi
|
| fi
|
| -
|
| +
|
| if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
|
| eval flag=\"$thread_safe_flag_spec\"
|
| linker_flags="$linker_flags $flag"
|
| @@ -3768,7 +4100,8 @@ EOF
|
| fi
|
| fi
|
|
|
| - if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
|
| + if test "X$skipped_export" != "X:" &&
|
| + len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
|
| test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
|
| :
|
| else
|
| @@ -3787,6 +4120,7 @@ EOF
|
| save_libobjs=$libobjs
|
| fi
|
| save_output=$output
|
| + output_la=`$echo "X$output" | $Xsed -e "$basename"`
|
|
|
| # Clear the reloadable object creation command queue and
|
| # initialize k to one.
|
| @@ -3796,13 +4130,13 @@ EOF
|
| delfiles=
|
| last_robj=
|
| k=1
|
| - output=$output_objdir/$save_output-${k}.$objext
|
| + output=$output_objdir/$output_la-${k}.$objext
|
| # Loop over the list of objects to be linked.
|
| for obj in $save_libobjs
|
| do
|
| eval test_cmds=\"$reload_cmds $objlist $last_robj\"
|
| if test "X$objlist" = X ||
|
| - { len=`expr "X$test_cmds" : ".*"` &&
|
| + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
|
| test "$len" -le "$max_cmd_len"; }; then
|
| objlist="$objlist $obj"
|
| else
|
| @@ -3816,9 +4150,9 @@ EOF
|
| # the last one created.
|
| eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
|
| fi
|
| - last_robj=$output_objdir/$save_output-${k}.$objext
|
| + last_robj=$output_objdir/$output_la-${k}.$objext
|
| k=`expr $k + 1`
|
| - output=$output_objdir/$save_output-${k}.$objext
|
| + output=$output_objdir/$output_la-${k}.$objext
|
| objlist=$obj
|
| len=1
|
| fi
|
| @@ -3838,13 +4172,13 @@ EOF
|
| eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
|
| fi
|
|
|
| - # Set up a command to remove the reloadale object files
|
| + # Set up a command to remove the reloadable object files
|
| # after they are used.
|
| i=0
|
| while test "$i" -lt "$k"
|
| do
|
| i=`expr $i + 1`
|
| - delfiles="$delfiles $output_objdir/$save_output-${i}.$objext"
|
| + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
|
| done
|
|
|
| $echo "creating a temporary reloadable object file: $output"
|
| @@ -3892,13 +4226,30 @@ EOF
|
| IFS="$save_ifs"
|
| eval cmd=\"$cmd\"
|
| $show "$cmd"
|
| - $run eval "$cmd" || exit $?
|
| + $run eval "$cmd" || {
|
| + lt_exit=$?
|
| +
|
| + # Restore the uninstalled library and exit
|
| + if test "$mode" = relink; then
|
| + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
|
| + fi
|
| +
|
| + exit $lt_exit
|
| + }
|
| done
|
| IFS="$save_ifs"
|
|
|
| # Restore the uninstalled library and exit
|
| if test "$mode" = relink; then
|
| $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
|
| +
|
| + if test -n "$convenience"; then
|
| + if test -z "$whole_archive_flag_spec"; then
|
| + $show "${rm}r $gentop"
|
| + $run ${rm}r "$gentop"
|
| + fi
|
| + fi
|
| +
|
| exit $EXIT_SUCCESS
|
| fi
|
|
|
| @@ -3919,9 +4270,10 @@ EOF
|
| ;;
|
|
|
| obj)
|
| - if test -n "$deplibs"; then
|
| - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
|
| - fi
|
| + case " $deplibs" in
|
| + *\ -l* | *\ -L*)
|
| + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
|
| + esac
|
|
|
| if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
|
| $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
|
| @@ -3968,72 +4320,20 @@ EOF
|
| reload_conv_objs=
|
| gentop=
|
| # reload_cmds runs $LD directly, so let us get rid of
|
| - # -Wl from whole_archive_flag_spec
|
| + # -Wl from whole_archive_flag_spec and hope we can get by with
|
| + # turning comma into space..
|
| wl=
|
|
|
| if test -n "$convenience"; then
|
| if test -n "$whole_archive_flag_spec"; then
|
| - eval reload_conv_objs=\"\$reload_objs $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'`
|
| else
|
| gentop="$output_objdir/${obj}x"
|
| - $show "${rm}r $gentop"
|
| - $run ${rm}r "$gentop"
|
| - $show "$mkdir $gentop"
|
| - $run $mkdir "$gentop"
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$gentop"; then
|
| - exit $status
|
| - fi
|
| generated="$generated $gentop"
|
|
|
| - for xlib in $convenience; do
|
| - # Extract the objects.
|
| - case $xlib in
|
| - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
|
| - *) xabs=`pwd`"/$xlib" ;;
|
| - esac
|
| - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
|
| - xdir="$gentop/$xlib"
|
| -
|
| - $show "${rm}r $xdir"
|
| - $run ${rm}r "$xdir"
|
| - $show "$mkdir $xdir"
|
| - $run $mkdir "$xdir"
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$xdir"; then
|
| - exit $status
|
| - fi
|
| - # We will extract separately just the conflicting names and we will no
|
| - # longer touch any unique names. It is faster to leave these extract
|
| - # automatically by $AR in one run.
|
| - $show "(cd $xdir && $AR x $xabs)"
|
| - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
|
| - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
|
| - :
|
| - else
|
| - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
|
| - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
|
| - $AR t "$xabs" | sort | uniq -cd | while read -r count name
|
| - do
|
| - i=1
|
| - while test "$i" -le "$count"
|
| - do
|
| - # Put our $i before any first dot (extension)
|
| - # Never overwrite any file
|
| - name_to="$name"
|
| - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
|
| - do
|
| - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
|
| - done
|
| - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
|
| - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
|
| - i=`expr $i + 1`
|
| - done
|
| - done
|
| - fi
|
| -
|
| - reload_conv_objs="$reload_objs "`find $xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
|
| - done
|
| + func_extract_archives $gentop $convenience
|
| + reload_conv_objs="$reload_objs $func_extract_archives_result"
|
| fi
|
| fi
|
|
|
| @@ -4134,6 +4434,35 @@ EOF
|
| ;;
|
| esac
|
|
|
| +
|
| + # move library search paths that coincide with paths to not yet
|
| + # installed libraries to the beginning of the library search list
|
| + new_libs=
|
| + for path in $notinst_path; do
|
| + case " $new_libs " in
|
| + *" -L$path/$objdir "*) ;;
|
| + *)
|
| + case " $compile_deplibs " in
|
| + *" -L$path/$objdir "*)
|
| + new_libs="$new_libs -L$path/$objdir" ;;
|
| + esac
|
| + ;;
|
| + esac
|
| + done
|
| + for deplib in $compile_deplibs; do
|
| + case $deplib in
|
| + -L*)
|
| + case " $new_libs " in
|
| + *" $deplib "*) ;;
|
| + *) new_libs="$new_libs $deplib" ;;
|
| + esac
|
| + ;;
|
| + *) new_libs="$new_libs $deplib" ;;
|
| + esac
|
| + done
|
| + compile_deplibs="$new_libs"
|
| +
|
| +
|
| compile_command="$compile_command $compile_deplibs"
|
| finalize_command="$finalize_command $finalize_deplibs"
|
|
|
| @@ -4178,10 +4507,15 @@ EOF
|
| fi
|
| case $host in
|
| *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
|
| + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
|
| case :$dllsearchpath: in
|
| *":$libdir:"*) ;;
|
| *) dllsearchpath="$dllsearchpath:$libdir";;
|
| esac
|
| + case :$dllsearchpath: in
|
| + *":$testbindir:"*) ;;
|
| + *) dllsearchpath="$dllsearchpath:$testbindir";;
|
| + esac
|
| ;;
|
| esac
|
| done
|
| @@ -4295,13 +4629,25 @@ extern \"C\" {
|
|
|
| # Prepare the list of exported symbols
|
| if test -z "$export_symbols"; then
|
| - export_symbols="$output_objdir/$output.exp"
|
| + export_symbols="$output_objdir/$outputname.exp"
|
| $run $rm $export_symbols
|
| - $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
|
| + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
|
| + case $host in
|
| + *cygwin* | *mingw* )
|
| + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
|
| + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
|
| + ;;
|
| + esac
|
| else
|
| - $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"'
|
| - $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T'
|
| + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
|
| + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
|
| $run eval 'mv "$nlist"T "$nlist"'
|
| + case $host in
|
| + *cygwin* | *mingw* )
|
| + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
|
| + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
|
| + ;;
|
| + esac
|
| fi
|
| fi
|
|
|
| @@ -4352,7 +4698,26 @@ extern \"C\" {
|
| #endif
|
|
|
| /* The mapping between symbol names and symbols. */
|
| +"
|
| +
|
| + case $host in
|
| + *cygwin* | *mingw* )
|
| + $echo >> "$output_objdir/$dlsyms" "\
|
| +/* DATA imports from DLLs on WIN32 can't be const, because
|
| + runtime relocations are performed -- see ld's documentation
|
| + on pseudo-relocs */
|
| +struct {
|
| +"
|
| + ;;
|
| + * )
|
| + $echo >> "$output_objdir/$dlsyms" "\
|
| const struct {
|
| +"
|
| + ;;
|
| + esac
|
| +
|
| +
|
| + $echo >> "$output_objdir/$dlsyms" "\
|
| const char *name;
|
| lt_ptr address;
|
| }
|
| @@ -4399,16 +4764,29 @@ static const void *lt_preloaded_setup() {
|
| esac
|
|
|
| # Now compile the dynamic symbol file.
|
| - $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
|
| - $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
|
| + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
|
| + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
|
|
|
| # Clean up the generated files.
|
| $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
|
| $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
|
|
|
| # Transform the symbol file into the correct name.
|
| - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
|
| - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
|
| + case $host in
|
| + *cygwin* | *mingw* )
|
| + if test -f "$output_objdir/${outputname}.def" ; then
|
| + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
|
| + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
|
| + else
|
| + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
|
| + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
|
| + fi
|
| + ;;
|
| + * )
|
| + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
|
| + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
|
| + ;;
|
| + esac
|
| ;;
|
| *)
|
| $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
|
| @@ -4421,19 +4799,19 @@ static const void *lt_preloaded_setup() {
|
| # really was required.
|
|
|
| # Nullify the symbol file.
|
| - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
|
| - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
|
| + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
|
| + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
|
| fi
|
|
|
| if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
|
| # Replace the output file specification.
|
| - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
|
| + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
|
| link_command="$compile_command$compile_rpath"
|
|
|
| # We have no uninstalled library dependencies, so finalize right now.
|
| $show "$link_command"
|
| $run eval "$link_command"
|
| - status=$?
|
| + exit_status=$?
|
|
|
| # Delete the generated files.
|
| if test -n "$dlsyms"; then
|
| @@ -4441,7 +4819,7 @@ static const void *lt_preloaded_setup() {
|
| $run $rm "$output_objdir/${outputname}S.${objext}"
|
| fi
|
|
|
| - exit $status
|
| + exit $exit_status
|
| fi
|
|
|
| if test -n "$shlibpath_var"; then
|
| @@ -4514,7 +4892,7 @@ static const void *lt_preloaded_setup() {
|
| if test "$fast_install" != no; then
|
| link_command="$finalize_var$compile_command$finalize_rpath"
|
| if test "$fast_install" = yes; then
|
| - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
|
| + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
|
| else
|
| # fast_install is set to needless
|
| relink_command=
|
| @@ -4551,7 +4929,7 @@ static const void *lt_preloaded_setup() {
|
| fi
|
| done
|
| relink_command="(cd `pwd`; $relink_command)"
|
| - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
|
| + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
|
| fi
|
|
|
| # Quote $echo for shipping.
|
| @@ -4581,10 +4959,12 @@ static const void *lt_preloaded_setup() {
|
| esac
|
| case $host in
|
| *cygwin* | *mingw* )
|
| - cwrappersource=`$echo ${objdir}/lt-${output}.c`
|
| - cwrapper=`$echo ${output}.exe`
|
| - $rm $cwrappersource $cwrapper
|
| - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
|
| + output_name=`basename $output`
|
| + output_path=`dirname $output`
|
| + cwrappersource="$output_path/$objdir/lt-$output_name.c"
|
| + cwrapper="$output_path/$output_name.exe"
|
| + $rm $cwrappersource $cwrapper
|
| + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
|
|
|
| cat > $cwrappersource <<EOF
|
|
|
| @@ -4609,6 +4989,9 @@ EOF
|
| #include <malloc.h>
|
| #include <stdarg.h>
|
| #include <assert.h>
|
| +#include <string.h>
|
| +#include <ctype.h>
|
| +#include <sys/stat.h>
|
|
|
| #if defined(PATH_MAX)
|
| # define LT_PATHMAX PATH_MAX
|
| @@ -4619,15 +5002,19 @@ EOF
|
| #endif
|
|
|
| #ifndef DIR_SEPARATOR
|
| -#define DIR_SEPARATOR '/'
|
| +# define DIR_SEPARATOR '/'
|
| +# define PATH_SEPARATOR ':'
|
| #endif
|
|
|
| #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
|
| defined (__OS2__)
|
| -#define HAVE_DOS_BASED_FILE_SYSTEM
|
| -#ifndef DIR_SEPARATOR_2
|
| -#define DIR_SEPARATOR_2 '\\'
|
| -#endif
|
| +# define HAVE_DOS_BASED_FILE_SYSTEM
|
| +# ifndef DIR_SEPARATOR_2
|
| +# define DIR_SEPARATOR_2 '\\'
|
| +# endif
|
| +# ifndef PATH_SEPARATOR_2
|
| +# define PATH_SEPARATOR_2 ';'
|
| +# endif
|
| #endif
|
|
|
| #ifndef DIR_SEPARATOR_2
|
| @@ -4637,17 +5024,32 @@ EOF
|
| (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
|
| #endif /* DIR_SEPARATOR_2 */
|
|
|
| +#ifndef PATH_SEPARATOR_2
|
| +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
|
| +#else /* PATH_SEPARATOR_2 */
|
| +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
|
| +#endif /* PATH_SEPARATOR_2 */
|
| +
|
| #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
|
| #define XFREE(stale) do { \
|
| if (stale) { free ((void *) stale); stale = 0; } \
|
| } while (0)
|
|
|
| +/* -DDEBUG is fairly common in CFLAGS. */
|
| +#undef DEBUG
|
| +#if defined DEBUGWRAPPER
|
| +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
|
| +#else
|
| +# define DEBUG(format, ...)
|
| +#endif
|
| +
|
| const char *program_name = NULL;
|
|
|
| void * xmalloc (size_t num);
|
| char * xstrdup (const char *string);
|
| -char * basename (const char *name);
|
| -char * fnqualify(const char *path);
|
| +const char * base_name (const char *name);
|
| +char * find_executable(const char *wrapper);
|
| +int check_executable(const char *path);
|
| char * strendzap(char *str, const char *pat);
|
| void lt_fatal (const char *message, ...);
|
|
|
| @@ -4657,29 +5059,51 @@ main (int argc, char *argv[])
|
| char **newargz;
|
| int i;
|
|
|
| - program_name = (char *) xstrdup ((char *) basename (argv[0]));
|
| + program_name = (char *) xstrdup (base_name (argv[0]));
|
| + DEBUG("(main) argv[0] : %s\n",argv[0]);
|
| + DEBUG("(main) program_name : %s\n",program_name);
|
| newargz = XMALLOC(char *, argc+2);
|
| EOF
|
|
|
| - cat >> $cwrappersource <<EOF
|
| - newargz[0] = "$SHELL";
|
| + cat >> $cwrappersource <<EOF
|
| + newargz[0] = (char *) xstrdup("$SHELL");
|
| EOF
|
|
|
| - cat >> $cwrappersource <<"EOF"
|
| - newargz[1] = fnqualify(argv[0]);
|
| + cat >> $cwrappersource <<"EOF"
|
| + newargz[1] = find_executable(argv[0]);
|
| + if (newargz[1] == NULL)
|
| + lt_fatal("Couldn't find %s", argv[0]);
|
| + DEBUG("(main) found exe at : %s\n",newargz[1]);
|
| /* we know the script has the same name, without the .exe */
|
| /* so make sure newargz[1] doesn't end in .exe */
|
| strendzap(newargz[1],".exe");
|
| for (i = 1; i < argc; i++)
|
| newargz[i+1] = xstrdup(argv[i]);
|
| newargz[argc+1] = NULL;
|
| +
|
| + for (i=0; i<argc+1; i++)
|
| + {
|
| + DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
|
| + ;
|
| + }
|
| +
|
| EOF
|
|
|
| - cat >> $cwrappersource <<EOF
|
| + case $host_os in
|
| + mingw*)
|
| + cat >> $cwrappersource <<EOF
|
| + execv("$SHELL",(char const **)newargz);
|
| +EOF
|
| + ;;
|
| + *)
|
| + cat >> $cwrappersource <<EOF
|
| execv("$SHELL",newargz);
|
| EOF
|
| + ;;
|
| + esac
|
|
|
| - cat >> $cwrappersource <<"EOF"
|
| + cat >> $cwrappersource <<"EOF"
|
| + return 127;
|
| }
|
|
|
| void *
|
| @@ -4699,48 +5123,148 @@ xstrdup (const char *string)
|
| ;
|
| }
|
|
|
| -char *
|
| -basename (const char *name)
|
| +const char *
|
| +base_name (const char *name)
|
| {
|
| const char *base;
|
|
|
| #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
| /* Skip over the disk name in MSDOS pathnames. */
|
| - if (isalpha (name[0]) && name[1] == ':')
|
| + if (isalpha ((unsigned char)name[0]) && name[1] == ':')
|
| name += 2;
|
| #endif
|
|
|
| for (base = name; *name; name++)
|
| if (IS_DIR_SEPARATOR (*name))
|
| base = name + 1;
|
| - return (char *) base;
|
| + return base;
|
| }
|
|
|
| +int
|
| +check_executable(const char * path)
|
| +{
|
| + struct stat st;
|
| +
|
| + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
|
| + if ((!path) || (!*path))
|
| + return 0;
|
| +
|
| + if ((stat (path, &st) >= 0) &&
|
| + (
|
| + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
|
| +#if defined (S_IXOTH)
|
| + ((st.st_mode & S_IXOTH) == S_IXOTH) ||
|
| +#endif
|
| +#if defined (S_IXGRP)
|
| + ((st.st_mode & S_IXGRP) == S_IXGRP) ||
|
| +#endif
|
| + ((st.st_mode & S_IXUSR) == S_IXUSR))
|
| + )
|
| + return 1;
|
| + else
|
| + return 0;
|
| +}
|
| +
|
| +/* Searches for the full path of the wrapper. Returns
|
| + newly allocated full path name if found, NULL otherwise */
|
| char *
|
| -fnqualify(const char *path)
|
| +find_executable (const char* wrapper)
|
| {
|
| - size_t size;
|
| - char *p;
|
| + int has_slash = 0;
|
| + const char* p;
|
| + const char* p_next;
|
| + /* static buffer for getcwd */
|
| char tmp[LT_PATHMAX + 1];
|
| + int tmp_len;
|
| + char* concat_name;
|
| +
|
| + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
|
|
|
| - assert(path != NULL);
|
| + if ((wrapper == NULL) || (*wrapper == '\0'))
|
| + return NULL;
|
|
|
| - /* Is it qualified already? */
|
| + /* Absolute path? */
|
| +#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
| + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
|
| + {
|
| + concat_name = xstrdup (wrapper);
|
| + if (check_executable(concat_name))
|
| + return concat_name;
|
| + XFREE(concat_name);
|
| + }
|
| + else
|
| + {
|
| +#endif
|
| + if (IS_DIR_SEPARATOR (wrapper[0]))
|
| + {
|
| + concat_name = xstrdup (wrapper);
|
| + if (check_executable(concat_name))
|
| + return concat_name;
|
| + XFREE(concat_name);
|
| + }
|
| #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
|
| - if (isalpha (path[0]) && path[1] == ':')
|
| - return xstrdup (path);
|
| + }
|
| #endif
|
| - if (IS_DIR_SEPARATOR (path[0]))
|
| - return xstrdup (path);
|
|
|
| - /* prepend the current directory */
|
| - /* doesn't handle '~' */
|
| + for (p = wrapper; *p; p++)
|
| + if (*p == '/')
|
| + {
|
| + has_slash = 1;
|
| + break;
|
| + }
|
| + if (!has_slash)
|
| + {
|
| + /* no slashes; search PATH */
|
| + const char* path = getenv ("PATH");
|
| + if (path != NULL)
|
| + {
|
| + for (p = path; *p; p = p_next)
|
| + {
|
| + const char* q;
|
| + size_t p_len;
|
| + for (q = p; *q; q++)
|
| + if (IS_PATH_SEPARATOR(*q))
|
| + break;
|
| + p_len = q - p;
|
| + p_next = (*q == '\0' ? q : q + 1);
|
| + if (p_len == 0)
|
| + {
|
| + /* empty path: current directory */
|
| + if (getcwd (tmp, LT_PATHMAX) == NULL)
|
| + lt_fatal ("getcwd failed");
|
| + tmp_len = strlen(tmp);
|
| + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
|
| + memcpy (concat_name, tmp, tmp_len);
|
| + concat_name[tmp_len] = '/';
|
| + strcpy (concat_name + tmp_len + 1, wrapper);
|
| + }
|
| + else
|
| + {
|
| + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
|
| + memcpy (concat_name, p, p_len);
|
| + concat_name[p_len] = '/';
|
| + strcpy (concat_name + p_len + 1, wrapper);
|
| + }
|
| + if (check_executable(concat_name))
|
| + return concat_name;
|
| + XFREE(concat_name);
|
| + }
|
| + }
|
| + /* not found in PATH; assume curdir */
|
| + }
|
| + /* Relative path | not found in path: prepend cwd */
|
| if (getcwd (tmp, LT_PATHMAX) == NULL)
|
| lt_fatal ("getcwd failed");
|
| - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
|
| - p = XMALLOC(char, size);
|
| - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
|
| - return p;
|
| + tmp_len = strlen(tmp);
|
| + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
|
| + memcpy (concat_name, tmp, tmp_len);
|
| + concat_name[tmp_len] = '/';
|
| + strcpy (concat_name + tmp_len + 1, wrapper);
|
| +
|
| + if (check_executable(concat_name))
|
| + return concat_name;
|
| + XFREE(concat_name);
|
| + return NULL;
|
| }
|
|
|
| char *
|
| @@ -4784,16 +5308,16 @@ lt_fatal (const char *message, ...)
|
| va_end (ap);
|
| }
|
| EOF
|
| - # we should really use a build-platform specific compiler
|
| - # here, but OTOH, the wrappers (shell script and this C one)
|
| - # are only useful if you want to execute the "real" binary.
|
| - # Since the "real" binary is built for $host, then this
|
| - # wrapper might as well be built for $host, too.
|
| - $run $LTCC -s -o $cwrapper $cwrappersource
|
| - ;;
|
| - esac
|
| - $rm $output
|
| - trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
|
| + # we should really use a build-platform specific compiler
|
| + # here, but OTOH, the wrappers (shell script and this C one)
|
| + # are only useful if you want to execute the "real" binary.
|
| + # Since the "real" binary is built for $host, then this
|
| + # wrapper might as well be built for $host, too.
|
| + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
|
| + ;;
|
| + esac
|
| + $rm $output
|
| + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
|
|
|
| $echo > $output "\
|
| #! $SHELL
|
| @@ -4812,9 +5336,23 @@ EOF
|
| Xsed='${SED} -e 1s/^X//'
|
| sed_quote_subst='$sed_quote_subst'
|
|
|
| +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
|
| +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
|
| + emulate sh
|
| + NULLCMD=:
|
| + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
|
| + # is contrary to our usage. Disable this feature.
|
| + alias -g '\${1+\"\$@\"}'='\"\$@\"'
|
| + setopt NO_GLOB_SUBST
|
| +else
|
| + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
|
| +fi
|
| +BIN_SH=xpg4; export BIN_SH # for Tru64
|
| +DUALCASE=1; export DUALCASE # for MKS sh
|
| +
|
| # The HP-UX ksh and POSIX shell print the target directory to stdout
|
| # if CDPATH is set.
|
| -if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi
|
| +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
|
|
|
| relink_command=\"$relink_command\"
|
|
|
| @@ -4943,23 +5481,23 @@ else
|
| # Backslashes separate directories on plain windows
|
| *-*-mingw | *-*-os2*)
|
| $echo >> $output "\
|
| - exec \$progdir\\\\\$program \${1+\"\$@\"}
|
| + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
|
| "
|
| ;;
|
|
|
| *)
|
| $echo >> $output "\
|
| - exec \$progdir/\$program \${1+\"\$@\"}
|
| + exec \"\$progdir/\$program\" \${1+\"\$@\"}
|
| "
|
| ;;
|
| esac
|
| $echo >> $output "\
|
| - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
|
| + \$echo \"\$0: cannot exec \$program \$*\"
|
| exit $EXIT_FAILURE
|
| fi
|
| else
|
| # 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 \"See the $PACKAGE documentation for more information.\" 1>&2
|
| exit $EXIT_FAILURE
|
| @@ -4991,71 +5529,73 @@ fi\
|
|
|
| if test -n "$addlibs"; then
|
| gentop="$output_objdir/${outputname}x"
|
| - $show "${rm}r $gentop"
|
| - $run ${rm}r "$gentop"
|
| - $show "$mkdir $gentop"
|
| - $run $mkdir "$gentop"
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$gentop"; then
|
| - exit $status
|
| - fi
|
| generated="$generated $gentop"
|
|
|
| - # Add in members from convenience archives.
|
| - for xlib in $addlibs; do
|
| - # Extract the objects.
|
| - case $xlib in
|
| - [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;;
|
| - *) xabs=`pwd`"/$xlib" ;;
|
| - esac
|
| - xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'`
|
| - xdir="$gentop/$xlib"
|
| -
|
| - $show "${rm}r $xdir"
|
| - $run ${rm}r "$xdir"
|
| - $show "$mkdir $xdir"
|
| - $run $mkdir "$xdir"
|
| - status=$?
|
| - if test "$status" -ne 0 && test ! -d "$xdir"; then
|
| - exit $status
|
| - fi
|
| - # We will extract separately just the conflicting names and we will no
|
| - # longer touch any unique names. It is faster to leave these extract
|
| - # automatically by $AR in one run.
|
| - $show "(cd $xdir && $AR x $xabs)"
|
| - $run eval "(cd \$xdir && $AR x \$xabs)" || exit $?
|
| - if ($AR t "$xabs" | sort | sort -uc >/dev/null 2>&1); then
|
| - :
|
| - else
|
| - $echo "$modename: warning: object name conflicts; renaming object files" 1>&2
|
| - $echo "$modename: warning: to ensure that they will not overwrite" 1>&2
|
| - $AR t "$xabs" | sort | uniq -cd | while read -r count name
|
| - do
|
| - i=1
|
| - while test "$i" -le "$count"
|
| - do
|
| - # Put our $i before any first dot (extension)
|
| - # Never overwrite any file
|
| - name_to="$name"
|
| - while test "X$name_to" = "X$name" || test -f "$xdir/$name_to"
|
| - do
|
| - name_to=`$echo "X$name_to" | $Xsed -e "s/\([^.]*\)/\1-$i/"`
|
| - done
|
| - $show "(cd $xdir && $AR xN $i $xabs '$name' && $mv '$name' '$name_to')"
|
| - $run eval "(cd \$xdir && $AR xN $i \$xabs '$name' && $mv '$name' '$name_to')" || exit $?
|
| - i=`expr $i + 1`
|
| - done
|
| - done
|
| - fi
|
| -
|
| - oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP`
|
| - done
|
| + func_extract_archives $gentop $addlibs
|
| + oldobjs="$oldobjs $func_extract_archives_result"
|
| fi
|
|
|
| # Do each command in the archive commands.
|
| if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then
|
| cmds=$old_archive_from_new_cmds
|
| else
|
| + # POSIX demands no paths to be encoded in archives. We have
|
| + # to avoid creating archives with duplicate basenames if we
|
| + # might have to extract them afterwards, e.g., when creating a
|
| + # static archive out of a convenience library, or when linking
|
| + # the entirety of a libtool archive into another (currently
|
| + # not supported by libtool).
|
| + if (for obj in $oldobjs
|
| + do
|
| + $echo "X$obj" | $Xsed -e 's%^.*/%%'
|
| + done | sort | sort -uc >/dev/null 2>&1); then
|
| + :
|
| + else
|
| + $echo "copying selected object files to avoid basename conflicts..."
|
| +
|
| + if test -z "$gentop"; then
|
| + gentop="$output_objdir/${outputname}x"
|
| + generated="$generated $gentop"
|
| +
|
| + $show "${rm}r $gentop"
|
| + $run ${rm}r "$gentop"
|
| + $show "$mkdir $gentop"
|
| + $run $mkdir "$gentop"
|
| + exit_status=$?
|
| + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
|
| + exit $exit_status
|
| + fi
|
| + fi
|
| +
|
| + save_oldobjs=$oldobjs
|
| + oldobjs=
|
| + counter=1
|
| + for obj in $save_oldobjs
|
| + do
|
| + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
|
| + case " $oldobjs " in
|
| + " ") oldobjs=$obj ;;
|
| + *[\ /]"$objbase "*)
|
| + while :; do
|
| + # Make sure we don't pick an alternate name that also
|
| + # overlaps.
|
| + newobj=lt$counter-$objbase
|
| + counter=`expr $counter + 1`
|
| + case " $oldobjs " in
|
| + *[\ /]"$newobj "*) ;;
|
| + *) if test ! -f "$gentop/$newobj"; then break; fi ;;
|
| + esac
|
| + done
|
| + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
|
| + $run ln "$obj" "$gentop/$newobj" ||
|
| + $run cp "$obj" "$gentop/$newobj"
|
| + oldobjs="$oldobjs $gentop/$newobj"
|
| + ;;
|
| + *) oldobjs="$oldobjs $obj" ;;
|
| + esac
|
| + done
|
| + fi
|
| +
|
| eval cmds=\"$old_archive_cmds\"
|
|
|
| if len=`expr "X$cmds" : ".*"` &&
|
| @@ -5069,20 +5609,7 @@ fi\
|
| objlist=
|
| concat_cmds=
|
| save_oldobjs=$oldobjs
|
| - # GNU ar 2.10+ was changed to match POSIX; thus no paths are
|
| - # encoded into archives. This makes 'ar r' malfunction in
|
| - # this piecewise linking case whenever conflicting object
|
| - # names appear in distinct ar calls; check, warn and compensate.
|
| - if (for obj in $save_oldobjs
|
| - do
|
| - $echo "X$obj" | $Xsed -e 's%^.*/%%'
|
| - done | sort | sort -uc >/dev/null 2>&1); then
|
| - :
|
| - else
|
| - $echo "$modename: warning: object name conflicts; overriding AR_FLAGS to 'cq'" 1>&2
|
| - $echo "$modename: warning: to ensure that POSIX-compatible ar will work" 1>&2
|
| - AR_FLAGS=cq
|
| - fi
|
| +
|
| # Is there a better way of finding the last object in the list?
|
| for obj in $save_oldobjs
|
| do
|
| @@ -5093,7 +5620,7 @@ fi\
|
| oldobjs="$objlist $obj"
|
| objlist="$objlist $obj"
|
| eval test_cmds=\"$old_archive_cmds\"
|
| - if len=`expr "X$test_cmds" : ".*"` &&
|
| + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
|
| test "$len" -le "$max_cmd_len"; then
|
| :
|
| else
|
| @@ -5151,7 +5678,7 @@ fi\
|
| done
|
| # Quote the link command for shipping.
|
| relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
|
| - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
|
| + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
|
| if test "$hardcode_automatic" = yes ; then
|
| relink_command=
|
| fi
|
| @@ -5290,11 +5817,11 @@ relink_command=\"$relink_command\""
|
| # install_prog (especially on Windows NT).
|
| if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
|
| # Allow the use of GNU shtool's install command.
|
| - $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
|
| + $echo "X$nonopt" | grep shtool > /dev/null; then
|
| # Aesthetically quote it.
|
| arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
|
| case $arg in
|
| - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
|
| + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
|
| arg="\"$arg\""
|
| ;;
|
| esac
|
| @@ -5303,14 +5830,14 @@ relink_command=\"$relink_command\""
|
| shift
|
| else
|
| install_prog=
|
| - arg="$nonopt"
|
| + arg=$nonopt
|
| fi
|
|
|
| # The real first argument should be the name of the installation program.
|
| # Aesthetically quote it.
|
| arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
|
| case $arg in
|
| - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
|
| + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
|
| arg="\"$arg\""
|
| ;;
|
| esac
|
| @@ -5328,28 +5855,31 @@ relink_command=\"$relink_command\""
|
| do
|
| if test -n "$dest"; then
|
| files="$files $dest"
|
| - dest="$arg"
|
| + dest=$arg
|
| continue
|
| fi
|
|
|
| case $arg in
|
| -d) isdir=yes ;;
|
| - -f) prev="-f" ;;
|
| - -g) prev="-g" ;;
|
| - -m) prev="-m" ;;
|
| - -o) prev="-o" ;;
|
| + -f)
|
| + case " $install_prog " in
|
| + *[\\\ /]cp\ *) ;;
|
| + *) prev=$arg ;;
|
| + esac
|
| + ;;
|
| + -g | -m | -o) prev=$arg ;;
|
| -s)
|
| stripme=" -s"
|
| continue
|
| ;;
|
| - -*) ;;
|
| -
|
| + -*)
|
| + ;;
|
| *)
|
| # If the previous option needed an argument, then skip it.
|
| if test -n "$prev"; then
|
| prev=
|
| else
|
| - dest="$arg"
|
| + dest=$arg
|
| continue
|
| fi
|
| ;;
|
| @@ -5358,7 +5888,7 @@ relink_command=\"$relink_command\""
|
| # Aesthetically quote the argument.
|
| arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
|
| case $arg in
|
| - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*)
|
| + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
|
| arg="\"$arg\""
|
| ;;
|
| esac
|
| @@ -5493,9 +6023,9 @@ relink_command=\"$relink_command\""
|
|
|
| if test -n "$inst_prefix_dir"; then
|
| # Stick the inst_prefix_dir data into the link command.
|
| - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
|
| + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
|
| else
|
| - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
|
| + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
|
| fi
|
|
|
| $echo "$modename: warning: relinking \`$file'" 1>&2
|
| @@ -5527,11 +6057,14 @@ relink_command=\"$relink_command\""
|
|
|
| if test "$#" -gt 0; then
|
| # Delete the old symlinks, and create new ones.
|
| + # Try `ln -sf' first, because the `ln' binary might depend on
|
| + # the symlink we replace! Solaris /bin/ln does not understand -f,
|
| + # so we also need to try rm && ln -s.
|
| for linkname
|
| do
|
| if test "$linkname" != "$realname"; then
|
| - $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
|
| - $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
|
| + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
|
| + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
|
| fi
|
| done
|
| fi
|
| @@ -5544,7 +6077,16 @@ relink_command=\"$relink_command\""
|
| IFS="$save_ifs"
|
| eval cmd=\"$cmd\"
|
| $show "$cmd"
|
| - $run eval "$cmd" || exit $?
|
| + $run eval "$cmd" || {
|
| + lt_exit=$?
|
| +
|
| + # Restore the uninstalled library and exit
|
| + if test "$mode" = relink; then
|
| + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
|
| + fi
|
| +
|
| + exit $lt_exit
|
| + }
|
| done
|
| IFS="$save_ifs"
|
| fi
|
| @@ -5638,17 +6180,15 @@ relink_command=\"$relink_command\""
|
| notinst_deplibs=
|
| relink_command=
|
|
|
| - # To insure that "foo" is sourced, and not "foo.exe",
|
| - # finese the cygwin/MSYS system by explicitly sourcing "foo."
|
| - # which disallows the automatic-append-.exe behavior.
|
| - case $build in
|
| - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
|
| - *) wrapperdot=${wrapper} ;;
|
| - esac
|
| + # Note that it is not necessary on cygwin/mingw to append a dot to
|
| + # foo even if both foo and FILE.exe exist: automatic-append-.exe
|
| + # behavior happens only for exec(3), not for open(2)! Also, sourcing
|
| + # `FILE.' does not work on cygwin managed mounts.
|
| + #
|
| # If there is no directory component, then add one.
|
| - case $file in
|
| - */* | *\\*) . ${wrapperdot} ;;
|
| - *) . ./${wrapperdot} ;;
|
| + case $wrapper in
|
| + */* | *\\*) . ${wrapper} ;;
|
| + *) . ./${wrapper} ;;
|
| esac
|
|
|
| # Check the variables that should have been set.
|
| @@ -5676,38 +6216,25 @@ relink_command=\"$relink_command\""
|
| done
|
|
|
| relink_command=
|
| - # To insure that "foo" is sourced, and not "foo.exe",
|
| - # finese the cygwin/MSYS system by explicitly sourcing "foo."
|
| - # which disallows the automatic-append-.exe behavior.
|
| - case $build in
|
| - *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
|
| - *) wrapperdot=${wrapper} ;;
|
| - esac
|
| + # Note that it is not necessary on cygwin/mingw to append a dot to
|
| + # foo even if both foo and FILE.exe exist: automatic-append-.exe
|
| + # behavior happens only for exec(3), not for open(2)! Also, sourcing
|
| + # `FILE.' does not work on cygwin managed mounts.
|
| + #
|
| # If there is no directory component, then add one.
|
| - case $file in
|
| - */* | *\\*) . ${wrapperdot} ;;
|
| - *) . ./${wrapperdot} ;;
|
| + case $wrapper in
|
| + */* | *\\*) . ${wrapper} ;;
|
| + *) . ./${wrapper} ;;
|
| esac
|
|
|
| outputname=
|
| if test "$fast_install" = no && test -n "$relink_command"; then
|
| if test "$finalize" = yes && test -z "$run"; then
|
| - tmpdir="/tmp"
|
| - test -n "$TMPDIR" && tmpdir="$TMPDIR"
|
| - tmpdir="$tmpdir/libtool-$$"
|
| - save_umask=`umask`
|
| - umask 0077
|
| - if $mkdir "$tmpdir"; then
|
| - umask $save_umask
|
| - else
|
| - umask $save_umask
|
| - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
|
| - continue
|
| - fi
|
| + tmpdir=`func_mktempdir`
|
| file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
|
| outputname="$tmpdir/$file"
|
| # Replace the output file specification.
|
| - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
|
| + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
|
|
|
| $show "$relink_command"
|
| if $run eval "$relink_command"; then :
|
| @@ -5727,7 +6254,7 @@ relink_command=\"$relink_command\""
|
| fi
|
|
|
| # remove .exe since cygwin /usr/bin/install will append another
|
| - # one anyways
|
| + # one anyway
|
| case $install_prog,$host in
|
| */usr/bin/install*,*cygwin*)
|
| case $file:$destfile in
|
| @@ -5827,7 +6354,7 @@ relink_command=\"$relink_command\""
|
| # Exit here if they wanted silent mode.
|
| test "$show" = : && exit $EXIT_SUCCESS
|
|
|
| - $echo "----------------------------------------------------------------------"
|
| + $echo "X----------------------------------------------------------------------" | $Xsed
|
| $echo "Libraries have been installed in:"
|
| for libdir in $libdirs; do
|
| $echo " $libdir"
|
| @@ -5860,7 +6387,7 @@ relink_command=\"$relink_command\""
|
| $echo
|
| $echo "See any operating system documentation about shared libraries for"
|
| $echo "more information, such as the ld(1) and ld.so(8) manual pages."
|
| - $echo "----------------------------------------------------------------------"
|
| + $echo "X----------------------------------------------------------------------" | $Xsed
|
| exit $EXIT_SUCCESS
|
| ;;
|
|
|
| @@ -5918,8 +6445,10 @@ relink_command=\"$relink_command\""
|
| if test -f "$dir/$objdir/$dlname"; then
|
| dir="$dir/$objdir"
|
| else
|
| - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
|
| - exit $EXIT_FAILURE
|
| + if test ! -f "$dir/$dlname"; then
|
| + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
|
| + exit $EXIT_FAILURE
|
| + fi
|
| fi
|
| ;;
|
|
|
| @@ -5983,12 +6512,12 @@ relink_command=\"$relink_command\""
|
| fi
|
|
|
| # Restore saved environment variables
|
| - if test "${save_LC_ALL+set}" = set; then
|
| - LC_ALL="$save_LC_ALL"; export LC_ALL
|
| - fi
|
| - if test "${save_LANG+set}" = set; then
|
| - LANG="$save_LANG"; export LANG
|
| - fi
|
| + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
|
| + do
|
| + eval "if test \"\${save_$lt_var+set}\" = set; then
|
| + $lt_var=\$save_$lt_var; export $lt_var
|
| + fi"
|
| + done
|
|
|
| # Now prepare to actually exec the command.
|
| exec_cmd="\$cmd$args"
|
| @@ -6077,9 +6606,17 @@ relink_command=\"$relink_command\""
|
| rmfiles="$rmfiles $objdir/$n"
|
| done
|
| test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
|
| - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
|
|
|
| - if test "$mode" = uninstall; then
|
| + case "$mode" in
|
| + clean)
|
| + case " $library_names " in
|
| + # " " in the beginning catches empty $dlname
|
| + *" $dlname "*) ;;
|
| + *) rmfiles="$rmfiles $objdir/$dlname" ;;
|
| + esac
|
| + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
|
| + ;;
|
| + uninstall)
|
| if test -n "$library_names"; then
|
| # Do each command in the postuninstall commands.
|
| cmds=$postuninstall_cmds
|
| @@ -6112,7 +6649,8 @@ relink_command=\"$relink_command\""
|
| IFS="$save_ifs"
|
| fi
|
| # FIXME: should reinstall the best remaining shared library.
|
| - fi
|
| + ;;
|
| + esac
|
| fi
|
| ;;
|
|
|
| @@ -6336,9 +6874,9 @@ The following components of LINK-COMMAND are treated specially:
|
| -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
|
| -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
|
| -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
|
| - try to export only the symbols matching REGEX
|
| + try to export only the symbols matching REGEX
|
| -LLIBDIR search LIBDIR for required installed libraries
|
| -lNAME OUTPUT-FILE requires the installed library libNAME
|
| -module build a library that can dlopened
|
| @@ -6352,9 +6890,11 @@ The following components of LINK-COMMAND are treated specially:
|
| -release RELEASE specify package release information
|
| -rpath LIBDIR the created library will eventually be installed in LIBDIR
|
| -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
|
| - -static do not do any dynamic linking of libtool libraries
|
| + -static do not do any dynamic linking of uninstalled libtool libraries
|
| + -static-libtool-libs
|
| + do not do any dynamic linking of libtool libraries
|
| -version-info CURRENT[:REVISION[:AGE]]
|
| - specify library version info [each variable defaults to 0]
|
| + specify library version info [each variable defaults to 0]
|
|
|
| All other options (arguments beginning with \`-') are ignored.
|
|
|
| @@ -6397,7 +6937,7 @@ esac
|
| $echo
|
| $echo "Try \`$modename --help' for more information about other modes."
|
|
|
| -exit $EXIT_SUCCESS
|
| +exit $?
|
|
|
| # The TAGs below are defined such that we never get into a situation
|
| # in which we disable both kinds of libraries. Given conflicting
|
| @@ -6411,12 +6951,11 @@ exit $EXIT_SUCCESS
|
| # configuration. But we'll never go from static-only to shared-only.
|
|
|
| # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
|
| -build_libtool_libs=no
|
| -build_old_libs=yes
|
| +disable_libs=shared
|
| # ### END LIBTOOL TAG CONFIG: disable-shared
|
|
|
| # ### BEGIN LIBTOOL TAG CONFIG: disable-static
|
| -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
|
| +disable_libs=static
|
| # ### END LIBTOOL TAG CONFIG: disable-static
|
|
|
| # Local Variables:
|
|
|