On 20/03/11 06:28, Lukas Fleischer wrote:
Also includes a Debian patch (from #347650) that makes libtool play
nicely with "-Wl,--as-needed".

Signed-off-by: Lukas Fleischer<archli...@cryptocrack.de>
---
  lib/libalpm/Makefile.am |    2 +-
  ltmain.sh               |   14 ++++++++++++++
  2 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/lib/libalpm/Makefile.am b/lib/libalpm/Makefile.am
index 1bda571..4c329b8 100644
--- a/lib/libalpm/Makefile.am
+++ b/lib/libalpm/Makefile.am
@@ -52,7 +52,7 @@ libalpm_la_SOURCES += \
        md5.h md5.c
  endif

-libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO)
+libalpm_la_LDFLAGS = -no-undefined -version-info $(LIB_VERSION_INFO) 
-Wl,--as-needed

This part is not needed. With the changes below the build obeys the given LDFLAGS. Unless of course we want to make this the default.


  libalpm_la_LIBADD = $(LTLIBINTL)

  # vim:set ts=2 sw=2 noet:
diff --git a/ltmain.sh b/ltmain.sh
index 6c02b18..4e98c79 100755
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -5790,6 +5790,11 @@ func_mode_link ()
        arg=$func_stripname_result
        ;;

+      -Wl,--as-needed|-Wl,--no-as-needed)
+       deplibs="$deplibs $arg"
+       continue
+       ;;
+
        -Wl,*)
        func_stripname '-Wl,' '' "$arg"
        args=$func_stripname_result
@@ -6150,6 +6155,15 @@ func_mode_link ()
        lib=
        found=no
        case $deplib in
+       -Wl,--as-needed|-Wl,--no-as-needed)
+         if test "$linkmode,$pass" = "prog,link"; then
+           compile_deplibs="$deplib $compile_deplibs"
+           finalize_deplibs="$deplib $finalize_deplibs"
+         else
+           deplibs="$deplib $deplibs"
+         fi
+         continue
+         ;;
        
-mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
          if test "$linkmode,$pass" = "prog,link"; then
            compile_deplibs="$deplib $compile_deplibs"

This hack will do until libtool gets it fixed. Just to clarify what the issues is here, libtool likes to reorder arguments that you pass to it. That puts -Wl,--as-needed after all the -lfoo statements which stops it working. And this is a hack as it requires -Wl,--as-needed to be separately specified (-Wl,--as-needed,--something-else will not work). But this fix is in widespread use while we wait for the proper fix so I will give it an ack.

Allan

Reply via email to