[PATCH, RFC] no LIBADD for convenience libraries

Adeodato Simó asp16 at alu.ua.es
Thu Aug 18 16:01:46 BST 2005


Hello,

  there is a mild hint in the "convenience libs" hotwo [1] that they
  don't need LIBADD nor LDFLAGS, but it is mentioned that they can be
  used if regarded necessary.

    [1] http://developer.kde.org/documentation/makefile_am_howto/en/_sharing_code_convenience_libs_.html

  I've seen that there have been in the past commits [2] removing the
  use of LIBADD and LDFLAGS for this kind of libraries. I don't know how
  much of a priority are these changes considered, but for Debian
  packages I'm hunting down those and producing patches. The reason for
  this is that libtool (*) is not able to prune dependencies specified
  in LIBADD for convenience libraries, and if the libraries specified
  there are many (e.g., $(LIB_KIO) as opposed to -lz), shared objects
  and binaries end up with 30 odd DT_NEEDED entries when less than 10
  suffice.

    [2] http://websvn.kde.org/trunk/kdelibs/kio/kio/Makefile.am?rev=134452&r1=133604&r2=134452

  So, my plan is to send patches (to this list, or to whatever place I'm
  pointed at) to implement commits like the above whenever I come
  accross one of these uses of LIBADD, unless I'm told you'd prefer not
  to apply such patches -- in which case I'll stick to applying them for
  the Debian packages, unless I determine that is causing me more pain
  than benefits.

  Attached is one such patch, for kdelibs/kdoctools and kdelibs/kspell2.
  I've worked on it for 3.4.2, but I see in websvn that the files are
  the same in trunk/. If I've overlooked and that's not the case, please
  let me know if you want me to rediff.

  Also, if there are some past thread from this list I should've read
  before posting this, please let me know too.

  Cheers,

    (*) The libtool in Debian, that is; the pruning-dependency code is
    not integrated upstream yet. I know now exists --enable-new-ldflags,
    which tries to solve the extra dependencies problem using linker
    features rather than libtool ones; but at least in Debian we won't
    be enabling it for now, since this feature is broken in several
    architectures. I hope this breakage gets fixed soon [3], but in the
    meantime, I constantly dream about KDE's libtool gaining this
    prunning support (hey, dreaming is easy), so if there's something I
    could do to make progress in that direction, I'd be more than
    willing to help (FWIW, I'll be in Málaga).

    [3] https://bugzilla.ubuntu.com/12822

-- 
Adeodato Simó
    EM: asp16 [ykwim] alu.ua.es | PK: DA6AE621
 
Proper treatment will cure a cold in seven days, but left to itself, a
cold will hang on for a week.
                -- Darrell Huff
-------------- next part --------------
--- kdelibs-3.4.2/kdoctools/Makefile.am
+++ kdelibs-3.4.2/kdoctools/Makefile.am
@@ -5,18 +5,17 @@
 noinst_LTLIBRARIES = libkbzipfilter_dummy.la
 
 libkbzipfilter_dummy_la_SOURCES = kbzip2filter.cpp
-libkbzipfilter_dummy_la_LIBADD = $(LIB_KIO) $(LIBBZ2)
 
 ####### Files
 
 kde_module_LTLIBRARIES = kio_help.la kio_ghelp.la
 
 kio_help_la_SOURCES = kio_help.cpp main.cpp xslt.cpp
-kio_help_la_LIBADD = $(LIBXSLT_LIBS) $(LIBXML_LIBS)  libkbzipfilter_dummy.la
+kio_help_la_LIBADD = $(LIBXSLT_LIBS) $(LIBXML_LIBS)  libkbzipfilter_dummy.la $(LIB_KIO) $(LIBBZ2)
 kio_help_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
 
 kio_ghelp_la_SOURCES = kio_help.cpp main_ghelp.cpp xslt.cpp
-kio_ghelp_la_LIBADD = $(LIBXSLT_LIBS) $(LIBXML_LIBS) libkbzipfilter_dummy.la
+kio_ghelp_la_LIBADD = $(LIBXSLT_LIBS) $(LIBXML_LIBS) libkbzipfilter_dummy.la $(LIB_KIO) $(LIBBZ2)
 kio_ghelp_la_LDFLAGS = $(all_libraries) -module $(KDE_PLUGIN)
 
 noinst_HEADERS = kio_help.h
@@ -25,7 +24,7 @@
 kdelnkdir = $(kde_servicesdir)
 
 bin_PROGRAMS = meinproc 
-meinproc_LDADD = xslt_pure.o libkbzipfilter_dummy.la $(LIBXSLT_LIBS) $(LIBXML_LIBS) 
+meinproc_LDADD = xslt_pure.o libkbzipfilter_dummy.la $(LIBXSLT_LIBS) $(LIBXML_LIBS) $(LIB_KIO) $(LIBBZ2)
 meinproc_SOURCES = meinproc.cpp
 
 xslt_pure.o: xslt.cpp
--- kdelibs-3.4.2/kspell2/Makefile.am	2005-05-23 14:16:10.000000000 +0200
+++ kdelibs-3.4.2/kspell2/Makefile.am	2005-08-18 13:13:22.000000000 +0200
@@ -17,7 +17,6 @@
 	defaultdictionary.cpp 
 
 libkspell2base_la_LDFLAGS = -no-undefined $(all_libraries)
-libkspell2base_la_LIBADD  = $(LIB_KPARTS) ../kutils/libkutils.la 
 
 servicetype_DATA = kspellclient.desktop
 servicetypedir = $(kde_servicetypesdir)
--- kdelibs-3.4.2/kspell2/ui/Makefile.am	2005-07-20 11:19:24.000000000 +0200
+++ kdelibs-3.4.2/kspell2/ui/Makefile.am	2005-08-18 13:11:02.000000000 +0200
@@ -18,4 +18,4 @@
 
 libkspell2_la_SOURCES = dialog.cpp
 libkspell2_la_LDFLAGS = -no-undefined -version-info 1:0:0 $(all_libraries)
-libkspell2_la_LIBADD = libkspell2_noinst.la ../libkspell2base.la
+libkspell2_la_LIBADD = libkspell2_noinst.la ../libkspell2base.la $(LIB_KPARTS) ../../kutils/libkutils.la 
--- kdelibs-3.4.2/kspell2/tests/Makefile.am	2005-07-20 11:19:24.000000000 +0200
+++ kdelibs-3.4.2/kspell2/tests/Makefile.am	2005-08-18 13:12:01.000000000 +0200
@@ -18,7 +18,7 @@
 test_dialog_LDADD = ../ui/libkspell2.la $(LIB_KDECORE)
 
 test_highlighter_SOURCES = test_highlighter.cpp
-test_highlighter_LDADD = ../ui/libkspell2_noinst.la ../libkspell2base.la $(LIB_KDECORE)
+test_highlighter_LDADD = ../ui/libkspell2_noinst.la ../libkspell2base.la $(LIB_KDECORE) $(LIB_KPARTS) ../../kutils/libkutils.la
 
 test_configdialog_SOURCES = test_configdialog.cpp
-test_configdialog_LDADD = ../ui/libkspell2_noinst.la ../libkspell2base.la $(LIB_KDECORE)
+test_configdialog_LDADD = ../ui/libkspell2_noinst.la ../libkspell2base.la $(LIB_KDECORE) $(LIB_KPARTS) ../../kutils/libkutils.la


More information about the kde-core-devel mailing list