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