From f357e10335c51879007da3410c676866cf0e91c5 Mon Sep 17 00:00:00 2001 From: Peter Korsgaard Date: Fri, 18 Feb 2011 12:30:00 +0100 Subject: [PATCH] taglib: fix build The old libtool version gets confused about rpath, which breaks the build. FIx it by up upgrading to 1.5.22 (package is not compatible with libtool 2.x, so we cannot just autoreconf). Signed-off-by: Peter Korsgaard --- .../taglib/taglib-1.5-libtool.patch | 4084 +++++++++++++++++ 1 file changed, 4084 insertions(+) create mode 100644 package/multimedia/taglib/taglib-1.5-libtool.patch diff --git a/package/multimedia/taglib/taglib-1.5-libtool.patch b/package/multimedia/taglib/taglib-1.5-libtool.patch new file mode 100644 index 0000000000..d4160f0ab4 --- /dev/null +++ b/package/multimedia/taglib/taglib-1.5-libtool.patch @@ -0,0 +1,4084 @@ +[PATCH] fix libtool + +Update to 1.5.22 so it doesn't get confused about rpath, and apply +buildroot-libtool-v1.5.patch so cross compilation works. + +Signed-off-by: Peter Korsgaard +--- + admin/ltmain.sh | 2080 ++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 1284 insertions(+), 796 deletions(-) + +Index: taglib-1.5/admin/ltmain.sh +=================================================================== +--- taglib-1.5.orig/admin/ltmain.sh ++++ taglib-1.5/admin/ltmain.sh +@@ -1,7 +1,7 @@ + # 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 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 + # Free Software Foundation, Inc. + # Originally by Gordon Matzigkeit , 1996 + # +@@ -24,6 +24,34 @@ + # 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.22 ++TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" ++ ++# 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. +@@ -36,7 +64,7 @@ + : + else + # Restart under the correct shell, and then maybe $echo will work. +- exec $SHELL "$0" --no-reexec ${1+"$@"} ++ exec $SHELL "$progpath" --no-reexec ${1+"$@"} + fi + + if test "X$1" = X--fallback-echo; then +@@ -45,19 +73,9 @@ + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Global variables. +@@ -111,6 +132,8 @@ + show="$echo" + show_help= + execute_dlfiles= ++duplicate_deps=no ++preserve_args= + lo2o="s/\\.lo\$/.${objext}/" + o2lo="s/\\.${objext}\$/.lo/" + +@@ -118,10 +141,51 @@ + # 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. +-win32_libid () { ++func_win32_libid () ++{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in +@@ -130,17 +194,16 @@ + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ +- grep -E 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then ++ $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*) ++ *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... +@@ -154,9 +217,182 @@ + $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 ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ 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 ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") ++ 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: defaulting to \`CC'" ++ $echo "$modename: if this is not correct, specify a tag with \`--tag'" ++# 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" ++ 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 +@@ -176,12 +412,13 @@ + ;; + tag) + tagname="$arg" ++ preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +@@ -191,10 +428,10 @@ + # not specially marked. + ;; + *) +- if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$0" > /dev/null; then ++ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. +- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $0`" ++ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi +@@ -220,24 +457,25 @@ + --version) + $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + $echo +- $echo "Copyright (C) 2003 Free Software Foundation, Inc." ++ $echo "Copyright (C) 2005 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 0 ++ exit $? + ;; + + --config) +- ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 ++ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do +- ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$0" ++ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done +- exit 0 ++ exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x ++ preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) +@@ -256,7 +494,7 @@ + else + $echo "disable static libraries" + fi +- exit 0 ++ exit $? + ;; + + --finish) mode="finish" ;; +@@ -268,13 +506,19 @@ + + --quiet | --silent) + show=: ++ 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 + prev=tag ++ preserve_args="$preserve_args --tag" + ;; + + -dlopen) +@@ -285,7 +529,7 @@ + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + + *) +@@ -298,9 +542,21 @@ + if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ 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. +@@ -311,7 +567,7 @@ + # 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 +@@ -354,7 +610,7 @@ + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. +@@ -369,13 +625,15 @@ + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" ++ suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= ++ later= + + for arg + do +- case "$arg_mode" in ++ case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" +@@ -394,24 +652,19 @@ + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + +- -static) +- build_old_libs=yes ++ -static | -prefer-pic | -prefer-non-pic) ++ later="$later $arg" + continue + ;; + +- -prefer-pic) +- pic_mode=yes +- continue +- ;; +- +- -prefer-non-pic) +- pic_mode=no ++ -no-suppress) ++ suppress_opt=no + continue + ;; + +@@ -424,7 +677,7 @@ + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' +- for arg in $args; do ++ for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. +@@ -462,7 +715,10 @@ + 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\"" + ;; +@@ -474,11 +730,11 @@ + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" +- exit 1 ++ exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. +@@ -511,51 +767,39 @@ + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +- # 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. +- if test -n "$available_tags" && test -z "$tagname"; then +- case $base_compile 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` "*) ;; +- # 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$" < "$0" > /dev/null; then +- # Evaluate the configuration. +- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" +- case "$base_compile " in +- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) +- # 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 1 +-# else +-# $echo "$modename: using $tagname tagged configuration" +- fi ++ func_infer_tag $base_compile ++ ++ for arg in $later; do ++ case $arg in ++ -static) ++ build_old_libs=yes ++ continue ++ ;; ++ ++ -prefer-pic) ++ pic_mode=yes ++ continue ++ ;; ++ ++ -prefer-non-pic) ++ pic_mode=no ++ continue + ;; + esac +- fi ++ 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 +@@ -568,7 +812,7 @@ + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. +@@ -579,7 +823,7 @@ + fi + + $run $rm $removelist +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in +@@ -598,7 +842,7 @@ + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" +- trap "$run $rm $removelist; exit 1" 1 2 15 ++ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no +@@ -608,7 +852,7 @@ + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then +- until $run ln "$0" "$lockfile" 2>/dev/null; do ++ until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done +@@ -626,14 +870,19 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ 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" + +@@ -655,18 +904,18 @@ + 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 + +@@ -681,7 +930,7 @@ + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test "$need_locks" = warn && +@@ -701,7 +950,7 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one +@@ -722,7 +971,9 @@ + EOF + + # Allow error messages only from the first compilation. +- suppress_output=' >/dev/null 2>&1' ++ if test "$suppress_opt" = yes; then ++ suppress_output=' >/dev/null 2>&1' ++ fi + else + # No PIC object so indicate it doesn't exist in the libtool + # object file. +@@ -736,9 +987,9 @@ + 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" +@@ -751,7 +1002,7 @@ + if $run eval "$command"; then : + else + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test "$need_locks" = warn && +@@ -771,7 +1022,7 @@ + compiler." + + $run $rm $removelist +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Just move the object if needed +@@ -809,7 +1060,7 @@ + $run $rm "$lockfile" + fi + +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + # libtool link mode +@@ -835,7 +1086,7 @@ + ;; + esac + libtool_args="$nonopt" +- base_compile="$nonopt" ++ base_compile="$nonopt $@" + compile_command="$nonopt" + finalize_command="$nonopt" + +@@ -847,7 +1098,6 @@ + old_convenience= + deplibs= + old_deplibs= +- add_flags= + compiler_flags= + linker_flags= + dllsearchpath= +@@ -868,6 +1118,8 @@ + 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 + prev= +@@ -881,6 +1133,8 @@ + vinfo= + vinfo_number=no + ++ func_infer_tag $base_compile ++ + # We need to know -static, to get the right output filenames. + for arg + do +@@ -893,14 +1147,15 @@ + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi ++ prefer_static_libs=yes + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi ++ prefer_static_libs=built + fi + build_libtool_libs=no + build_old_libs=yes +- prefer_static_libs=yes + break + ;; + esac +@@ -912,7 +1167,6 @@ + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" +- base_compile="$base_compile $arg" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") +@@ -976,7 +1230,7 @@ + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" +- exit 1 ++ exit $EXIT_FAILURE + fi + prev= + continue +@@ -991,6 +1245,11 @@ + prev= + continue + ;; ++ precious_regex) ++ precious_files_regex="$arg" ++ prev= ++ continue ++ ;; + release) + release="-$arg" + prev= +@@ -1023,7 +1282,7 @@ + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. +@@ -1071,12 +1330,17 @@ + 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. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + else + # Dry-run case. + +@@ -1097,7 +1361,7 @@ + done + else + $echo "$modename: link input file \`$save_arg' does not exist" +- exit 1 ++ exit $EXIT_FAILURE + fi + arg=$save_arg + prev= +@@ -1109,7 +1373,7 @@ + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then +@@ -1149,16 +1413,15 @@ + finalize_command="$finalize_command $qarg" + continue + ;; +- framework) +- case $host in +- *-*-darwin*) +- case "$deplibs " in +- *" $qarg.ltframework "*) ;; +- *) deplibs="$deplibs $qarg.ltframework" # this is fixed later +- ;; +- esac +- ;; +- esac ++ shrext) ++ shrext_cmds="$arg" ++ 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 + ;; +@@ -1210,7 +1473,7 @@ + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms +@@ -1220,6 +1483,18 @@ + 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 +@@ -1246,7 +1521,8 @@ + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 +- exit 1 ++ absdir="$dir" ++ notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; +@@ -1260,10 +1536,15 @@ + 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 +@@ -1272,26 +1553,35 @@ + -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 + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework +- deplibs="$deplibs System.ltframework" ++ 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*) ++ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; +@@ -1301,18 +1591,41 @@ + continue + ;; + ++ # 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) ++ compiler_flags="$compiler_flags $arg" ++ compile_command="$compile_command $arg" ++ finalize_command="$finalize_command $arg" ++ continue ++ ;; ++ + -module) + module=yes + 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 ++ # -pg pass through profiling flag for GCC ++ # @file GCC response files ++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ ++ -t[45]*|-txscale*|@*) ++ + # 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"` +@@ -1323,9 +1636,7 @@ + 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 + ;; + +@@ -1365,6 +1676,11 @@ + + -o) prev=output ;; + ++ -precious-files-regex) ++ prev=precious_regex ++ continue ++ ;; ++ + -release) + prev=release + continue +@@ -1387,7 +1703,7 @@ + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in +@@ -1473,11 +1789,6 @@ + continue + ;; + +- -framework) +- prev=framework +- continue +- ;; +- + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need +@@ -1488,7 +1799,6 @@ + arg="\"$arg\"" + ;; + esac +- add_flags="$add_flags $arg" + ;; + + *.$objext) +@@ -1516,7 +1826,7 @@ + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. +@@ -1564,12 +1874,17 @@ + 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. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + else + # Dry-run case. + +@@ -1623,7 +1938,6 @@ + arg="\"$arg\"" + ;; + esac +- add_flags="$add_flags $arg" + ;; + esac # arg + +@@ -1637,48 +1951,7 @@ + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 +- fi +- +- # 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 link +- # command doesn't match the default compiler. +- if test -n "$available_tags" && test -z "$tagname"; then +- case $base_compile 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` "*) ;; +- # 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$" < "$0" > /dev/null; then +- # Evaluate the configuration. +- eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $0`" +- case $base_compile in +- "$CC "* | " $CC "* | "`$echo $CC` "* | " `$echo $CC` "*) +- # The compiler in $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 1 +-# else +-# $echo "$modename: using $tagname tagged configuration" +- fi +- ;; +- esac ++ exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then +@@ -1711,9 +1984,9 @@ + 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 + +@@ -1722,7 +1995,7 @@ + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; +@@ -1732,7 +2005,7 @@ + + case $host in + *cygwin* | *mingw* | *pw32*) +- # don't eliminate duplcations in $postdeps and $predeps ++ # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) +@@ -1776,7 +2049,6 @@ + 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" +@@ -1785,7 +2057,7 @@ + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -1823,18 +2095,23 @@ + lib= + found=no + case $deplib in ++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) ++ if test "$linkmode,$pass" = "prog,link"; then ++ compile_deplibs="$deplib $compile_deplibs" ++ finalize_deplibs="$deplib $finalize_deplibs" ++ else ++ compiler_flags="$compiler_flags $deplib" ++ fi ++ continue ++ ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi +- if test "$pass" = conv && test "$allow_undefined" = yes; 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 +- for search_ext in .la $shrext .so .a; do ++ for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then +@@ -1895,18 +2172,6 @@ + fi + fi + ;; # -l +- *.ltframework) +- if test "$linkmode,$pass" = "prog,link"; then +- compile_deplibs="$deplib $compile_deplibs" +- finalize_deplibs="$deplib $finalize_deplibs" +- else +- deplibs="$deplib $deplibs" +- if test "$linkmode" = lib ; then +- newdependency_libs="$deplib $newdependency_libs" +- fi +- fi +- continue +- ;; + -L*) + case $linkmode in + lib) +@@ -1922,11 +2187,11 @@ + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" +- newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi ++ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 +@@ -1954,7 +2219,22 @@ + 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" +@@ -2004,15 +2284,15 @@ + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else +- $echo "$modename: cannot find the library \`$lib'" 1>&2 +- exit 1 ++ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 ++ exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` +@@ -2028,6 +2308,8 @@ + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no ++ avoidtemprpath= ++ + + # Read the .la file + case $lib in +@@ -2035,13 +2317,6 @@ + *) . ./$lib ;; + esac + +- case $host in +- *-*-darwin*) +- # Convert "-framework foo" to "foo.ltframework" in dependency_libs +- test -n "$dependency_libs" && dependency_libs=`$echo "X$dependency_libs" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` +- ;; +- esac +- + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then +@@ -2052,33 +2327,32 @@ + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" +- tmp_libs= +- for deplib in $dependency_libs; do +- #echo "Adding $deplib to \$deplibs" +- deplibs="$deplib $deplibs" +- if test "X$duplicate_deps" = "Xyes" ; then +- case "$tmp_libs " in +- *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; +- esac +- fi +- tmp_libs="$tmp_libs $deplib" +- done + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" ++ tmp_libs= ++ for deplib in $dependency_libs; do ++ deplibs="$deplib $deplibs" ++ if test "X$duplicate_deps" = "Xyes" ; then ++ case "$tmp_libs " in ++ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; ++ esac ++ fi ++ tmp_libs="$tmp_libs $deplib" ++ done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + +- ++ + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do +@@ -2086,16 +2360,18 @@ + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi +- if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then ++ if test -z "$dlname" || ++ test "$dlopen_support" != yes || ++ test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't +@@ -2129,14 +2405,28 @@ + absdir="$abs_ladir" + libdir="$abs_ladir" + else +- dir="$libdir" +- absdir="$libdir" ++ # Adding 'libdir' from the .la file to our library search paths ++ # breaks crosscompilation horribly. We cheat here and don't add ++ # it, instead adding the path where we found the .la. -CL ++ dir="$abs_ladir" ++ absdir="$abs_ladir" ++ libdir="$abs_ladir" ++ #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//'` + +@@ -2144,7 +2434,7 @@ + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). +@@ -2171,7 +2461,7 @@ + continue + fi + +- ++ + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" +@@ -2209,12 +2499,12 @@ + if test -n "$library_names" && + { test "$prefer_static_libs" = no || 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 + +@@ -2251,24 +2541,29 @@ + 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 ++ need_relink=no + fi + # This is a shared library +- +- # Warn about portability, can't link against -module's on some systems (darwin) +- if test "$shouldnotlink" = yes && test "$pass" = link ; then ++ ++ # Warn about portability, can't link against -module's on ++ # some systems (darwin) ++ if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi +- $echo "*** $linklib is not portable!" +- fi ++ $echo "*** $linklib is not portable!" ++ fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. +@@ -2326,9 +2621,10 @@ + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' +- eval cmds=\"$extract_expsyms_cmds\" ++ cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -2339,9 +2635,10 @@ + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' +- eval cmds=\"$old_archive_from_expsyms_cmds\" ++ cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -2362,11 +2659,15 @@ + 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 | grep "bundle" >/dev/null ; then ++ # 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 + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo +@@ -2374,7 +2675,7 @@ + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" +- fi ++ fi + fi + esac + elif test "$hardcode_minus_L" = no; then +@@ -2397,9 +2698,9 @@ + 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="-L$inst_prefix_dir$libdir $add_dir" ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi +@@ -2416,7 +2717,7 @@ + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then +@@ -2459,7 +2760,8 @@ + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then +- if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then ++ if test -n "$inst_prefix_dir" && ++ test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" +@@ -2469,9 +2771,9 @@ + 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="-L$inst_prefix_dir$libdir $add_dir" ++ add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi +@@ -2530,17 +2832,16 @@ + fi + fi + else +- convenience="$convenience $dir/$old_library" +- old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then +- #if test -n "$dependency_libs" && +- # { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || +- # test "$link_static" = yes; }; then ++ if test -n "$dependency_libs" && ++ { test "$hardcode_into_libs" != yes || ++ test "$build_old_libs" = yes || ++ test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do +@@ -2554,7 +2855,7 @@ + esac + done + dependency_libs="$temp_deplibs" +- #fi ++ fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library +@@ -2596,20 +2897,18 @@ + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then +- # Sure, some shells/systems don't implement the -ef. +- # Those will have to live with the warning. +- test "$absdir" -ef "$libdir" > /dev/null 2>&1 || +- $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 ++ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) +- # we do not want to link against static libs, but need to link against shared ++ # 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` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do +@@ -2617,46 +2916,36 @@ + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" +- fi ++ fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac +- path="" + fi ++ path="" + ;; + *) +- path="-L$path" +- ;; +- esac +- ++ path="-L$path" ++ ;; ++ esac + ;; +- -l*) ++ -l*) + case $host in + *-*-darwin*) +- # Again, we only want to link against shared libraries +- eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` +- for tmp in $newlib_search_path ; do +- if test -f "$tmp/lib$tmp_libs.dylib" ; then +- eval depdepl="$tmp/lib$tmp_libs.dylib" +- break +- fi +- done +- path="" ++ # Again, we only want to link against shared libraries ++ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` ++ for tmp in $newlib_search_path ; do ++ if test -f "$tmp/lib$tmp_libs.dylib" ; then ++ eval depdepl="$tmp/lib$tmp_libs.dylib" ++ break ++ fi ++ done ++ path="" + ;; + *) continue ;; +- esac +- ;; +- +- *.ltframework) +- case $host in +- *-*-darwin*) +- depdepl="$deplib" +- ;; + esac + ;; +- + *) continue ;; + esac + case " $deplibs " in +@@ -2660,12 +2949,12 @@ + *) continue ;; + esac + case " $deplibs " in +- *" $depdepl "*) ;; +- *) deplibs="$deplibs $depdepl" ;; +- esac +- case " $deplibs " in + *" $path "*) ;; +- *) deplibs="$deplibs $path" ;; ++ *) deplibs="$path $deplibs" ;; ++ esac ++ case " $deplibs " in ++ *" $depdepl "*) ;; ++ *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no +@@ -2752,7 +3041,8 @@ + eval $var=\"$tmp_libs\" + done # for var + fi +- # Last step: remove runtime libs from dependency_libs (they stay in deplibs) ++ # Last step: remove runtime libs from dependency_libs ++ # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in +@@ -2812,19 +3102,19 @@ + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` +- eval shared_ext=\"$shrext\" ++ eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` +- eval shared_ext=\"$shrext\" ++ eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` +@@ -2835,7 +3125,7 @@ + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 +- exit 1 ++ exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" +@@ -2883,13 +3173,13 @@ + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible +- ++ + case $vinfo_number in + yes) + number_major="$2" +@@ -2929,36 +3219,36 @@ + + # Check that each of the things are valid numbers. + case $current in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][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 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $revision in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][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 1 ++ exit $EXIT_FAILURE + ;; + esac + + case $age in +- 0 | [1-9] | [1-9][0-9] | [1-9][0-9][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 1 ++ exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Calculate the version variables. +@@ -2975,7 +3265,7 @@ + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` +- verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ++ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + ;; + + freebsd-aout) +@@ -3047,7 +3337,7 @@ + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +@@ -3098,9 +3388,15 @@ + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in +- *.$objext | *$exeext) ++ *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) ++ if test "X$precious_files_regex" != "X"; then ++ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 ++ then ++ continue ++ fi ++ fi + removelist="$removelist $p" + ;; + *) ;; +@@ -3122,9 +3418,9 @@ + + # 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'` ++ 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 +@@ -3137,7 +3433,7 @@ + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done +- if true || test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then ++ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi +@@ -3170,14 +3466,19 @@ + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework +- deplibs="$deplibs System.ltframework" ++ deplibs="$deplibs -framework System" + ;; + *-*-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. +@@ -3221,11 +3522,11 @@ + int main() { return 0; } + EOF + $rm conftest +- $LTCC -o conftest conftest.c $deplibs ++ $LTCC $LTCFLAGS -o conftest conftest.c $deplibs + if test "$?" -eq 0 ; 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then +@@ -3262,11 +3563,11 @@ + # 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 ++ $LTCC $LTCFLAGS -o conftest conftest.c $i + # Did it work? + if test "$?" -eq 0 ; then + ldd_output=`ldd conftest` +@@ -3314,7 +3615,7 @@ + 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 +@@ -3383,7 +3684,7 @@ + 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 +@@ -3463,7 +3764,7 @@ + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework +- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + +@@ -3509,17 +3810,39 @@ + fi + fi + fi +- # Time to change all our "foo.ltframework" stuff back to "-framework foo" +- case $host in +- *-*-darwin*) +- newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` +- dependency_libs=`$echo "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` +- ;; +- esac + # Done checking deplibs! + 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= +@@ -3532,7 +3855,7 @@ + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" +- test "$mode" != relink && test "$fast_install" = no && rpath="$compile_rpath$rpath" ++ test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then +@@ -3587,7 +3910,7 @@ + fi + + # Get the real and link names of the library. +- eval shared_ext=\"$shrext\" ++ eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" +@@ -3603,6 +3926,7 @@ + fi + + lib="$output_objdir/$realname" ++ linknames= + for link + do + linknames="$linknames $link" +@@ -3617,10 +3941,11 @@ + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols +- eval cmds=\"$export_symbols_cmds\" ++ cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" +@@ -3630,6 +3955,9 @@ + # 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" +@@ -3650,12 +3978,12 @@ + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; +- *) ++ *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done +- deplibs="$tmp_deplibs" ++ deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then +@@ -3663,67 +3991,13 @@ + 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" +@@ -3734,31 +4008,27 @@ + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + +- # Add all flags from the command line. We here create a library, +- # but those flags were only added to compile_command and +- # finalize_command, which are only used when creating executables. +- # So do it by hand here. +- compiler_flags="$compiler_flags $add_flags" +- # Only add it to commands which use CC, instead of LD, i.e. +- # only to $compiler_flags +- #linker_flags="$linker_flags $add_flags" +- + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then +- eval cmds=\"$module_expsym_cmds\" ++ eval test_cmds=\"$module_expsym_cmds\" ++ cmds=$module_expsym_cmds + else +- eval cmds=\"$module_cmds\" ++ eval test_cmds=\"$module_cmds\" ++ cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then +- eval cmds=\"$archive_expsym_cmds\" ++ eval test_cmds=\"$archive_expsym_cmds\" ++ cmds=$archive_expsym_cmds + else +- eval cmds=\"$archive_cmds\" ++ eval test_cmds=\"$archive_cmds\" ++ cmds=$archive_cmds + fi + fi + +- if test "X$skipped_export" != "X:" && len=`expr "X$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 +@@ -3777,6 +4047,7 @@ + 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. +@@ -3786,13 +4057,13 @@ + 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 +@@ -3806,9 +4077,9 @@ + # 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 +@@ -3828,13 +4099,13 @@ + 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" +@@ -3859,28 +4130,54 @@ + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. ++ if test "$module" = yes && test -n "$module_cmds" ; then ++ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then ++ cmds=$module_expsym_cmds ++ else ++ cmds=$module_cmds ++ fi ++ else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then +- eval cmds=\"$archive_expsym_cmds\" ++ cmds=$archive_expsym_cmds + else +- eval cmds=\"$archive_cmds\" ++ cmds=$archive_cmds ++ fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. +- eval cmds=\"\$cmds~$rm $delfiles\" ++ eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + 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 $? +- exit 0 ++ ++ 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 + + # Create links to the real library. +@@ -3928,7 +4225,7 @@ + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` +@@ -3957,64 +4254,10 @@ + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + 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 + +@@ -4022,10 +4265,11 @@ + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" +- eval cmds=\"$reload_cmds\" ++ cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -4038,7 +4282,7 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then +@@ -4051,17 +4295,18 @@ + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" +- eval cmds=\"$reload_cmds\" ++ cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -4073,7 +4318,7 @@ + $run ${rm}r $gentop + fi + +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + prog) +@@ -4098,24 +4343,50 @@ + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework +- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` +- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ++ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` ++ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in +- *-*-darwin*) ++ *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi +- # Time to change all our "foo.ltframework" stuff back to "-framework foo" +- compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` +- finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + 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" + +@@ -4160,10 +4431,15 @@ + 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 +@@ -4277,13 +4553,25 @@ + + # 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 + +@@ -4334,7 +4622,26 @@ + #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; + } +@@ -4381,20 +4688,33 @@ + 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" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` ++ finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"` ++ else ++ 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}%"` ++ fi ++ ;; ++ * ) ++ 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}%"` ++ ;; ++ esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + else +@@ -4407,17 +4727,6 @@ + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + +- # AIX runtime linking requires linking programs with -Wl,-brtl and libs with -Wl,-G +- # Also add -bnolibpath to the beginning of the link line, to clear the hardcoded runpath. +- # Otherwise, things like the -L path to libgcc.a are accidentally hardcoded by ld. +- # This does not apply on AIX for ia64, which uses a SysV linker. +- case "$host" in +- ia64-*-aix5*) ;; +- *-*-aix4* | *-*-aix5*) +- compile_command=`$echo "X$compile_command $wl-brtl" | $Xsed -e "s/\$CC/\$CC $wl-bnolibpath/1"` +- finalize_command=`$echo "X$finalize_command $wl-brtl" | $Xsed -e "s/\$CC/\$CC $wl-bnolibpath/1"` ;; +- esac +- + 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'` +@@ -4426,7 +4735,7 @@ + # 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 +@@ -4434,7 +4743,7 @@ + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + +- exit $status ++ exit $exit_status + fi + + if test -n "$shlibpath_var"; then +@@ -4493,7 +4802,7 @@ + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? +- exit 0 ++ exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then +@@ -4548,10 +4857,10 @@ + fi + + # Quote $echo for shipping. +- if test "X$echo" = "X$SHELL $0 --fallback-echo"; then +- case $0 in +- [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; +- *) qecho="$SHELL `pwd`/$0 --fallback-echo";; ++ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then ++ case $progpath in ++ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; ++ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else +@@ -4573,11 +4882,13 @@ + *) exeext= ;; + esac + case $host in +- *mingw* ) +- cwrappersource=`$echo ${output_objdir}/lt-${outputname}.c` +- cwrapper=`$echo ${output}.exe` +- $rm $cwrappersource $cwrapper +- trap "$rm $cwrappersource $cwrapper; exit 1" 1 2 15 ++ *cygwin* | *mingw* ) ++ 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 < + #include + #include ++#include ++#include ++#include + + #if defined(PATH_MAX) + # define LT_PATHMAX PATH_MAX +@@ -4612,15 +4926,19 @@ + #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 +@@ -4630,17 +4948,32 @@ + (((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, ...); + +@@ -4649,30 +4982,52 @@ + { + 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 <> $cwrappersource <> $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"); ++ strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; ++ ++ for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" ++ cat >> $cwrappersource <<"EOF" ++ return 127; + } + + void * +@@ -4685,59 +5040,159 @@ + return p; + } + +-char * ++char * + xstrdup (const char *string) + { + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL + ; + } + +-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; + } + +-char * +-fnqualify(const char *path) ++/* Searches for the full path of the wrapper. Returns ++ newly allocated full path name if found, NULL otherwise */ ++char * ++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 (path[0]) && path[1] == ':') +- return xstrdup (path); ++ 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) ++ } + #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 * +-strendzap(char *str, const char *pat) ++strendzap(char *str, const char *pat) + { + size_t len, patlen; + +@@ -4757,7 +5212,7 @@ + } + + static void +-lt_error_core (int exit_status, const char * mode, ++lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) + { + fprintf (stderr, "%s: %s: ", program_name, mode); +@@ -4777,16 +5232,16 @@ + 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 1" 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 +@@ -4807,7 +5262,7 @@ + + # 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\" + +@@ -4886,7 +5341,7 @@ + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + +@@ -4936,34 +5391,32 @@ + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ +- exec \$progdir\\\\\$program \${1+\"\$@\"} ++ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} + " + ;; + + *) +- # Need to set LD_LIBRARY_PATH, to the value already +- # computed within libtool. + $echo >> $output "\ +- LD_LIBRARY_PATH=\"$rpath\" exec \$progdir/\$program \${1+\"\$@\"} ++ exec \"\$progdir/\$program\" \${1+\"\$@\"} + " + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" +- exit 1 ++ 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 1 ++ exit $EXIT_FAILURE + fi + fi\ + " + chmod +x $output + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + esac + +@@ -4986,78 +5439,78 @@ + + 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 + +- compiler_flags="$compiler_flags $add_flags" +- + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then +- eval cmds=\"$old_archive_from_new_cmds\" ++ 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" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then +- : ++ cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." +@@ -5066,31 +5519,18 @@ + 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 + last_oldobj=$obj +- done ++ done + for obj in $save_oldobjs + do + 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 +@@ -5098,7 +5538,7 @@ + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB +- fi ++ fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= +@@ -5109,12 +5549,13 @@ + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else +- eval cmds=\"\$concat_cmds~$old_archive_cmds\" ++ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do ++ eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? +@@ -5146,11 +5587,13 @@ + fi + done + # Quote the link command for shipping. +- relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" ++ 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"` + if test "$hardcode_automatic" = yes ; then +- relink_command= +- fi ++ relink_command= ++ fi ++ ++ + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do +@@ -5162,13 +5605,17 @@ + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do ++ # Replacing uninstalled with installed can easily break crosscompilation, ++ # since the installed path is generally the wrong architecture. -CL ++ newdependency_libs="$newdependency_libs $deplib" ++ continue + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; +@@ -5182,7 +5629,7 @@ + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done +@@ -5193,11 +5640,30 @@ + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" ++ else ++ newdlfiles= ++ for lib in $dlfiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlfiles="$newdlfiles $abs" ++ done ++ dlfiles="$newdlfiles" ++ newdlprefiles= ++ for lib in $dlprefiles; do ++ case $lib in ++ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; ++ *) abs=`pwd`"/$lib" ;; ++ esac ++ newdlprefiles="$newdlprefiles $abs" ++ done ++ dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin +@@ -5241,7 +5707,7 @@ + + # Directory that this library needs to be installed in: + libdir='$install_libdir'" +- if test "$installed" = no && test "$need_relink" = yes && test "$fast_install" = no; then ++ if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ + relink_command=\"$relink_command\"" + fi +@@ -5254,7 +5720,7 @@ + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + # libtool install mode +@@ -5265,11 +5731,11 @@ + # 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 +@@ -5278,14 +5744,14 @@ + 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 +@@ -5303,28 +5769,31 @@ + 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 + ;; +@@ -5333,7 +5802,7 @@ + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in +- *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) ++ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac +@@ -5343,13 +5812,13 @@ + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + if test -z "$files"; then +@@ -5359,7 +5828,7 @@ + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. +@@ -5380,7 +5849,7 @@ + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + case $destdir in +@@ -5392,7 +5861,7 @@ + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + done +@@ -5421,7 +5890,7 @@ + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + library_names= +@@ -5461,10 +5930,13 @@ + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. +- if test "$inst_prefix_dir" = "$destdir"; then +- $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 +- exit 1 +- fi ++ # ++ # This breaks install into our staging area. -PB ++ # ++ # if test "$inst_prefix_dir" = "$destdir"; then ++ # $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 ++ # exit $EXIT_FAILURE ++ # fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. +@@ -5478,7 +5950,7 @@ + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi + +@@ -5502,23 +5974,36 @@ + + 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 + + # Do each command in the postinstall commands. + lib="$destdir/$realname" +- eval cmds=\"$postinstall_cmds\" ++ cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + 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 +@@ -5556,7 +6041,7 @@ + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + +@@ -5574,7 +6059,7 @@ + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + *) +@@ -5612,23 +6097,21 @@ + 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. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + finalize=yes +@@ -5650,30 +6133,21 @@ + 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-$$" +- if $mkdir "$tmpdir" && chmod 700 "$tmpdir"; then : +- else +- $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. +@@ -5697,7 +6171,7 @@ + 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 +@@ -5729,16 +6203,17 @@ + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + +- if test -n "$stripme" && test -n "$striplib"; then ++ if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. +- eval cmds=\"$old_postinstall_cmds\" ++ cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done +@@ -5752,9 +6227,9 @@ + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" +- exec_cmd='$SHELL $0 --finish$current_libdirs' ++ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else +- exit 0 ++ exit $EXIT_SUCCESS + fi + ;; + +@@ -5773,10 +6248,11 @@ + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. +- eval cmds=\"$finish_cmds\" ++ cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" +@@ -5793,9 +6269,9 @@ + fi + + # Exit here if they wanted silent mode. +- exit 0 ++ test "$show" = : && exit $EXIT_SUCCESS + +- $echo "----------------------------------------------------------------------" ++ $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" +@@ -5828,8 +6304,8 @@ + $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 "----------------------------------------------------------------------" +- exit 0 ++ $echo "X----------------------------------------------------------------------" | $Xsed ++ exit $EXIT_SUCCESS + ;; + + # libtool execute mode +@@ -5841,7 +6317,7 @@ + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. +@@ -5849,7 +6325,7 @@ + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + dir= +@@ -5860,7 +6336,7 @@ + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + # Read the libtool library. +@@ -5887,7 +6363,7 @@ + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + ;; + +@@ -5967,7 +6443,7 @@ + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" +- exit 0 ++ exit $EXIT_SUCCESS + fi + ;; + +@@ -5995,7 +6471,7 @@ + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + + rmdirs= +@@ -6045,15 +6521,24 @@ + 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. +- eval cmds=\"$postuninstall_cmds\" ++ cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then +@@ -6065,10 +6550,11 @@ + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. +- eval cmds=\"$old_postuninstall_cmds\" ++ cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" ++ eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then +@@ -6078,7 +6564,8 @@ + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. +- fi ++ ;; ++ esac + fi + ;; + +@@ -6107,7 +6594,7 @@ + if test "$mode" = clean ; then + noexename=$name + case $file in +- *.exe) ++ *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, +@@ -6152,20 +6639,20 @@ + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + fi + fi # test -z "$show_help" + + if test -n "$exec_cmd"; then + eval exec $exec_cmd +- exit 1 ++ exit $EXIT_FAILURE + fi + + # We need to display help for each of the modes. +@@ -6201,7 +6688,7 @@ + a more detailed description of MODE. + + Report bugs to ." +- exit 0 ++ exit $EXIT_SUCCESS + ;; + + clean) +@@ -6313,6 +6800,8 @@ + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects ++ -precious-files-regex REGEX ++ don't remove output files matching REGEX + -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 +@@ -6354,14 +6843,14 @@ + *) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 +- exit 1 ++ exit $EXIT_FAILURE + ;; + esac + + $echo + $echo "Try \`$modename --help' for more information about other modes." + +-exit 0 ++exit $? + + # The TAGs below are defined such that we never get into a situation + # in which we disable both kinds of libraries. Given conflicting +@@ -6375,12 +6864,11 @@ + # 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: