bug-libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fix disable-static -all-static (was: testsuite: 24 25 64 failed)


From: Ralf Wildenhues
Subject: Fix disable-static -all-static (was: testsuite: 24 25 64 failed)
Date: Mon, 24 Mar 2008 13:43:21 +0100
User-agent: Mutt/1.5.17+20080114 (2008-01-14)

* Ralf Wildenhues wrote on Mon, Mar 24, 2008 at 12:56:56PM CET:
> I'll address 25 separately (confirmed with --disable-static, BTW).

Proposed, slightly ugly patch.  Can you try it please, and do you have a
name and email address to put in the ChangeLog and THANKS?

Thus, OK to apply?  Note that our manual explicitly allows to use
-static even with --disable-static (which I am not sure whether it works
everywhere, but the static.at test should expose that when libtool is
configured that way), so the situation isn't quite clear-cut.

Cheers,
Ralf

2008-03-24  Ralf Wildenhues  <address@hidden>

        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.

Index: doc/libtool.texi
===================================================================
RCS file: /cvsroot/libtool/libtool/doc/libtool.texi,v
retrieving revision 1.239
diff -u -r1.239 libtool.texi
--- doc/libtool.texi    4 Mar 2008 21:07:36 -0000       1.239
+++ doc/libtool.texi    24 Mar 2008 12:37:17 -0000
@@ -1322,7 +1322,8 @@
 @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,
Index: tests/static.at
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/static.at,v
retrieving revision 1.6
diff -u -r1.6 static.at
--- tests/static.at     25 Mar 2007 12:12:43 -0000      1.6
+++ tests/static.at     24 Mar 2008 12:31:42 -0000
@@ -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 @@
 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 @@
   $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 @@
 
   ### 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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]