From kde-buildsystem Thu Jun 26 22:58:21 2008 From: Alexander Neundorf Date: Thu, 26 Jun 2008 22:58:21 +0000 To: kde-buildsystem Subject: Re: Reducing excess linkage - cmake 2.6 IMPORTED targets and Message-Id: <200806270058.22501.neundorf () kde ! org> X-MARC-Message: https://marc.info/?l=kde-buildsystem&m=121452080111713 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--Boundary-00=_O8BZIo4WJnXt25L" --Boundary-00=_O8BZIo4WJnXt25L Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Thursday 26 June 2008, Dirk Mueller wrote: > On Thursday 26 June 2008, Alexander Neundorf wrote: > > Currently this patch does two things > > -it adds more libs to the TARGET_LINK_LIBRARIES() calls - wouldn't hurt > > to commit that part > > exactly, and it is the right thing to do. Done. Attached is the remaining part of the patch. > > -it sets the LINK_INTERFACE_LIBRARIES target property - this can hurt > > with cmake 2.6 even if that option is not enabled > > Hmm, okay. I think we can fix that via another level of indirection: > > --- KDE4Macros.cmake > +++ KDE4Macros.cmake > @@ -1186,6 +1186,11 @@ macro(_KDE4_EXPORT_LIBRARY_DEPENDENCIES > endif(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX)# AND NOT APPLE) > endmacro(_KDE4_EXPORT_LIBRARY_DEPENDENCIES) > > +macro (KDE4_TARGET_LINK_INTERFACE_LIBRARIES _target _interface_libs) > + if(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX )# AND NOT APPLE) > + set_target_properties("${_target}" "${_interface_libs}") > + endif(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX)# AND NOT APPLE) > +endmacro (KDE4_TARGET_LINK_INTERFACE_LIBRARIES) Hmm, I don't like that. If we do it, I'd prefer that we do it only this new way, i.e. all KDE builds will use the new style. Adding the macro to KDE4Macros.cmake means that we have to maintain it for all of KDE 4.x. I'd prefer to see it as a temporary hack during the transition. How about prefixing it with an underscore to make clear it's no public macro ? And additionally moving it out of KDE4Macros.cmake into kdelibs/CMakeLists.txt, so it stays within kdelibs. We might need to copy it ti kdepimlibs. Is this actually important also for libraries in other modules ? I guess with the libs from kdelibs not dragging in that many libraries the effect of libs in other modules shouldn't be big. Or, instead of using a macro, how about this: if(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX ) set(DISABLE ) else(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX ) set(DISABLE DISABLED_PROPERTY_) endif(KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT AND UNIX ) and then do set_target_properties(khtml PROPERTIES VERSION ${KDE_NON_GENERIC_LIB_VERSION} SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} ${DISABLE}LINK_INTERFACE_LIBRARIES "kparts;kjs;kio;kdeui;kdecore") So if the option is enabled, DISABLE is empty and the correct property is set, otherwise a useless property is set. Still this should be done only for the transition period I'd say. Alex --Boundary-00=_O8BZIo4WJnXt25L Content-Type: text/x-diff; charset="utf-8"; name="reduced_linking_2.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="reduced_linking_2.patch" Index: khtml/CMakeLists.txt =================================================================== --- khtml/CMakeLists.txt (revision 824948) +++ khtml/CMakeLists.txt (working copy) @@ -329,7 +329,8 @@ target_link_libraries(khtml ${KDE4_KPARTS_LIBS} ktexteditor kjs ${KDE4_PHONON_LIBS} ${JPEG_LIBRARIES} ${GIF_LIBRARIES} ${PNG_LIBRARIES} ${X11_LIBRARIES}) set_target_properties(khtml PROPERTIES VERSION ${KDE_NON_GENERIC_LIB_VERSION} - SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} ) + SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kparts;kjs;kio;kdeui;kdecore") set(CREATE_HASH_TABLE ${CMAKE_SOURCE_DIR}/kjs/create_hash_table ) Index: kde3support/CMakeLists.txt =================================================================== --- kde3support/CMakeLists.txt (revision 824948) +++ kde3support/CMakeLists.txt (working copy) @@ -81,7 +81,8 @@ target_link_libraries(kde3support ${KDE4_KPARTS_LIBS} ${KDE4_KPTY_LIBS} ${QT_QTXML_LIBRARY} ${QT_QT3SUPPORT_LIBRARY} ${KDE4_KFILE_LIBS} ${X11_LIBRARIES}) set_target_properties(kde3support PROPERTIES VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} ) + SOVERSION ${GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kio;kdeui;kdecore;${QT_QT3SUPPORT_LIBRARY}") install(TARGETS kde3support ${INSTALL_TARGETS_DEFAULT_ARGS}) Index: kfile/CMakeLists.txt =================================================================== --- kfile/CMakeLists.txt (revision 824948) +++ kfile/CMakeLists.txt (working copy) @@ -40,7 +40,8 @@ ) set_target_properties(kfile PROPERTIES VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} ) + SOVERSION ${GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kio;kdeui;kdecore") install(TARGETS kfile ${INSTALL_TARGETS_DEFAULT_ARGS}) Index: kross/core/CMakeLists.txt =================================================================== --- kross/core/CMakeLists.txt (revision 824948) +++ kross/core/CMakeLists.txt (working copy) @@ -13,7 +13,8 @@ kde4_add_library(krosscore SHARED ${krosscore_LIB_SRCS}) target_link_libraries(krosscore ${KDE4_KDECORE_LIBS} ${KDE4_KDEUI_LIBS} ${QT_QTSCRIPT_LIBRARY} ${QT_QTXML_LIBRARY}) set_target_properties(krosscore PROPERTIES VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} ) + SOVERSION ${GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kdecore;${QT_QTSCRIPT_LIBRARY};${QT_QTXML_LIBRARY}") install(TARGETS krosscore ${INSTALL_TARGETS_DEFAULT_ARGS}) Index: kross/ui/CMakeLists.txt =================================================================== --- kross/ui/CMakeLists.txt (revision 824948) +++ kross/ui/CMakeLists.txt (working copy) @@ -16,7 +16,8 @@ kde4_add_library(krossui SHARED ${krossui_LIB_SRCS}) target_link_libraries(krossui krosscore ${KDE4_KDEUI_LIBS} ${KDE4_KPARTS_LIBS} ${KDE4_KIO_LIBS}) set_target_properties(krossui PROPERTIES VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} ) + SOVERSION ${GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "krosscore") install(TARGETS krossui ${INSTALL_TARGETS_DEFAULT_ARGS}) Index: kparts/CMakeLists.txt =================================================================== --- kparts/CMakeLists.txt (revision 824948) +++ kparts/CMakeLists.txt (working copy) @@ -27,7 +27,8 @@ target_link_libraries(kparts ${KDE4_KDECORE_LIBS} kdeui kio) set_target_properties(kparts PROPERTIES VERSION ${GENERIC_LIB_VERSION} - SOVERSION ${GENERIC_LIB_SOVERSION} ) + SOVERSION ${GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kio;kdeui;kdecore") install(TARGETS kparts ${INSTALL_TARGETS_DEFAULT_ARGS}) Index: kio/CMakeLists.txt =================================================================== --- kio/CMakeLists.txt (revision 824948) +++ kio/CMakeLists.txt (working copy) @@ -260,7 +260,8 @@ endif(X11_Xrender_FOUND) set_target_properties(kio PROPERTIES VERSION ${KDE_NON_GENERIC_LIB_VERSION} - SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} ) + SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kdeui;kdecore;${QT_QTNETWORK_LIBRARY};${QT_QTXML_LIBRARY}") ########### install files ############### Index: kdeui/CMakeLists.txt =================================================================== --- kdeui/CMakeLists.txt (revision 824948) +++ kdeui/CMakeLists.txt (working copy) @@ -316,8 +316,9 @@ endif(X11_Xrender_FOUND) set_target_properties(kdeui PROPERTIES VERSION ${KDE_NON_GENERIC_LIB_VERSION} - SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} ) - + SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "kdecore;${QT_QTSVG_LIBRARY};${QT_QTGUI_LIBRARY}" + ) install(TARGETS kdeui ${INSTALL_TARGETS_DEFAULT_ARGS}) ########### install files ############### Index: kdecore/CMakeLists.txt =================================================================== --- kdecore/CMakeLists.txt (revision 824948) +++ kdecore/CMakeLists.txt (working copy) @@ -248,7 +248,8 @@ set_target_properties(kdecore PROPERTIES VERSION ${KDE_NON_GENERIC_LIB_VERSION} - SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} ) + SOVERSION ${KDE_NON_GENERIC_LIB_SOVERSION} + LINK_INTERFACE_LIBRARIES "${QT_QTDBUS_LIBRARY};${QT_QTCORE_LIBRARY}") install(TARGETS kdecore ${INSTALL_TARGETS_DEFAULT_ARGS}) --Boundary-00=_O8BZIo4WJnXt25L Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Kde-buildsystem mailing list Kde-buildsystem@kde.org https://mail.kde.org/mailman/listinfo/kde-buildsystem --Boundary-00=_O8BZIo4WJnXt25L--