From 0f0145ee086c7b8a4f7263e11c8ae4b886cb1be6 Mon Sep 17 00:00:00 2001 From: Ralf Wildenhues Date: Mon, 24 Mar 2008 14:28:43 +0000 Subject: [PATCH] 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. --- ChangeLog | 12 ++++++++++++ THANKS | 1 + doc/libtool.texi | 3 ++- tests/static.at | 20 +++++++++++++++----- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 399749eff..9593f9c63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2008-03-24 Ralf Wildenhues + + 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 * libltdl/m4/libtool.m4 (_LT_CHECK_BUILDDIR): No need to escape diff --git a/THANKS b/THANKS index 9f24876ea..236bbaba0 100644 --- a/THANKS +++ b/THANKS @@ -109,6 +109,7 @@ Marc J. Fraioli fraioli@dg-rtp.dg.com Mark Kettenis kettenis@phys.uva.nl Mike Frysinger vapier@gentoo.org + Nix nix@esperi.org.uk Olly Betts olly@muscat.co.uk Patrick Welche prlw1@newn.cam.ac.uk Paul Eggert eggert@twinsun.com diff --git a/doc/libtool.texi b/doc/libtool.texi index e9610da25..1bc53ef84 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -1322,7 +1322,8 @@ The following components of @var{mode-args} are treated specially: @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, diff --git a/tests/static.at b/tests/static.at index 4f9cd4422..74b1c6342 100644 --- a/tests/static.at +++ b/tests/static.at @@ -1,6 +1,6 @@ # 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. @@ -92,6 +92,16 @@ eval `$LIBTOOL --config | 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 @@ -248,10 +258,10 @@ for withdep in no yes; do $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. @@ -296,7 +306,7 @@ for withdep in no yes; do ### 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 -- 2.47.2