+2008-03-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+
+ Document that disable-static plus -all-static is not portable.
+ * doc/libtool.texi (Link mode): -all-static does not go well
+ with disable-static on most systems.
+ * tests/static.at (static linking flags for programs) [!aix]:
+ With --disable-static but nonempty link_static_flag, skip the
+ m-all-static link. Do not skip it on AIX, as there the
+ enable_static is self-inflicted, and thus expected to work.
+ * THANKS: Update.
+ Report by Nix.
+
2008-03-17 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* libltdl/m4/libtool.m4 (_LT_CHECK_BUILDDIR): No need to escape
@item -all-static
If @var{output-file} is a program, then do not link it against any
shared libraries at all. If @var{output-file} is a library, then only
-create a static library.
+create a static library. In general, this flag cannot be used together
+with @samp{disable-static} (@pxref{LT_INIT}).
@item -avoid-version
Tries to avoid versioning (@pxref{Versioning}) for libraries and modules,
# static.at -- test flags for static/dynamic linking -*- Autotest -*-
#
-# Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc.
# Written by Ralf Wildenhues, 2006
#
# This file is part of GNU Libtool.
if test -n "$per_deplib_static_flag" && test -n "$per_deplib_dynamic_flag"; then
per_deplib=:
fi
+# On GNU/Linux with --disable-static, m-all-static fails to link.
+# What we'd like to state here is: if the user actively passed
+# --disable-static (as opposed to: the libtool.m4 macros set
+# enable_static=no), then they cannot expect -all-static to work.
+# So we punt, knowing that we mangle enable_static on AIX only.
+can_link_all_static=-all-static
+case $host_os,$have_static,$link_static_flag in
+ aix*) ;;
+ *,false,?*) can_link_all_static= ;;
+esac
# Create broken libraries. They will later be moved to those
# directories where the respective libraries should be linked
$CC $CPPFLAGS $CFLAGS -c m.c
# global static flags.
- for st in -static -static-libtool-libs -all-static; do
+ for st in -static -static-libtool-libs $can_link_all_static; do
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS $st -o m$st m.$OBJEXT \
- -L$libdir1 -la1 a2/liba2.la -L$libdir3 -R$libdir3 -la3],
- [0], [ignore], [ignore])
+ -L$libdir1 -la1 a2/liba2.la -L$libdir3 -R$libdir3 -la3],
+ [0], [ignore], [ignore])
done
# per-deplib static/shared flags.
### install the programs.
# We can't install any program that links dynamically against liba2.
- for st in -static -static-libtool-libs -all-static `$per_deplib && echo 2 12 23 123 123a`; do
+ for st in -static -static-libtool-libs $can_link_all_static `$per_deplib && echo 2 12 23 123 123a`; do
echo "# m$st"
AT_CHECK([$LIBTOOL --mode=install cp m$st $bindir/m$st], [0], [ignore], [stderr])
if $have_static; then