aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Neundorf <neundorf@kde.org>2008-12-02 02:16:39 +0000
committerAlexander Neundorf <neundorf@kde.org>2008-12-02 02:16:39 +0000
commitd4d0eb927fcfc990d4f6ee1dc31705bedaaba84a (patch)
treecf48c86310459eda3bae524934f0d247e6346237
parent68d1c5c031d0b956a6a157f5950970d547d95b7a (diff)
downloadextra-cmake-modules-d4d0eb927fcfc990d4f6ee1dc31705bedaaba84a.tar.gz
extra-cmake-modules-d4d0eb927fcfc990d4f6ee1dc31705bedaaba84a.tar.bz2
big patch which makes the reduced link interface work for kdepimlibs and kdepim:
* Use target_link_libraries(... LINK_INTERFACE_LIBRARIES ...) to define the "link interface" of the libs in kdepimlibs. To enable this, set the option KDE4_ENABLE_EXPERIMENTAL_LIB_EXPORT to on using "make edit_cache". Then apps linking to libraries will only link to the library itself and to the libraries specified using LINK_INTERFACE_LIBRARIES. This gives less dependencies for packagers, after startup and I think there were more advantages. * To make this work, export_library_dependencies() may not be used anymore, but instead the library targets have to be "exported", so they can be imported again later by other projects and this way bring their link interface with them. So now all library targets from kdepimlibs are exported in the set kdepimlibsLibraryTargets. * To be able to give the developer some useful error message, KdepimLibsDependencies.cmake now errors out and tells the developer to update kdelibs, and the install location information is now in KdepimLibsInformation.cmake, which tells the developer to update kdepimlibs if it's not recent enough. So: you need now an up-to-date version of kdepimlibs and kdesupport ! If that's not acceptable let me know and I'll add some workaround. * Search the xsl file in the install location of the already installed kdelibs, not in the current install location, which may be in a completely different place. * Use the correct install location (KDEPIMLIBS_INSTALL_DIR) in KdepimLibsInformation.cmake instead of KDE4_INSTALL_DIR, which is the one for kdelibs, but not for kdepimlibs. * more minor things I don't remember right now * Do you actually have a version number for kdepimlibs ? It would be easy to add via KdepimLibsInformation.cmake Alex CCMAIL: kdepim@kde.org CCMAIL: winter@kde.org svn path=/trunk/KDE/kdelibs/; revision=891439
-rw-r--r--modules/FindKdepimLibs.cmake124
1 files changed, 65 insertions, 59 deletions
diff --git a/modules/FindKdepimLibs.cmake b/modules/FindKdepimLibs.cmake
index 759ccfa0..8b449d93 100644
--- a/modules/FindKdepimLibs.cmake
+++ b/modules/FindKdepimLibs.cmake
@@ -3,7 +3,25 @@
#
# KDEPIMLIBS_FOUND - system has KDE PIM Libraries
# KDEPIMLIBS_INCLUDE_DIR - the KDE PIM Libraries include directory
-
+# It also sets:
+# KDEPIMLIBS_AKONADI_LIBS
+# KDEPIMLIBS_AKONADI_KMIME_LIBS
+# KDEPIMLIBS_AKONADI_KABC_LIBS
+# KDEPIMLIBS_GPGMEPP_LIBS
+# KDEPIMLIBS_KABC_LIBS
+# KDEPIMLIBS_KBLOG_LIBS
+# KDEPIMLIBS_KCAL_LIBS
+# KDEPIMLIBS_KIMAP_LIBS
+# KDEPIMLIBS_KLDAP_LIBS
+# KDEPIMLIBS_KMIME_LIBS
+# KDEPIMLIBS_KPIMIDENTITIES_LIBS
+# KDEPIMLIBS_KPIMUTILS_LIBS
+# KDEPIMLIBS_KRESOURCES_LIBS
+# KDEPIMLIBS_KTNEF_LIBS
+# KDEPIMLIBS_KXMLRPCCLIENT_LIBS
+# KDEPIMLIBS_MAILTRANSPORT_LIBS
+# KDEPIMLIBS_QGPGME_LIBS
+# KDEPIMLIBS_SYNDICATION_LIBS
# Copyright (c) 2006, Laurent Montel, <montel@kde.org>
# Copyright (c) 2006, Ralf Habacker, <ralf.habacker@freenet.de>
@@ -26,72 +44,61 @@ find_path( KDEPIMLIBS_INCLUDE_DIR kcal/kcal_export.h
${KDE4_INCLUDE_DIR}
)
-if( KDEPIMLIBS_INCLUDE_DIR )
- set(KDEPIMLIBS_FOUND TRUE)
-
- # this file contains all dependencies of all libraries of kdepimlibs, Alex
- include(KDEPimLibsDependencies)
-
- find_library(KDE4_AKONADI_LIBRARY NAMES akonadi-kde PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_AKONADI_LIBS ${akonadi_LIB_DEPENDS} ${KDE4_AKONADI_LIBRARY} )
-
- find_library(KDE4_AKONADI_KMIME_LIBRARY NAMES akonadi-kmime PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_AKONADI_KMIME_LIBS ${akonadi_kmime_LIB_DEPENDS} ${KDE4_AKONADI_KMIME_LIBRARY} )
-
- find_library(KDE4_AKONADI_KABC_LIBRARY NAMES akonadi-kabc PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_AKONADI_KABC_LIBS ${akonadi_kabc_LIB_DEPENDS} ${KDE4_AKONADI_KABC_LIBRARY} )
-
- find_library(KDE4_GPGMEPP_LIBRARY NAMES gpgme++ PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_GPGMEPP_LIBS ${gpgmepp_LIB_DEPENDS} ${KDE4_GPGMEPP_LIBRARY} )
-
- find_library(KDE4_KABC_LIBRARY NAMES kabc PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KABC_LIBS ${kabc_LIB_DEPENDS} ${KDE4_KABC_LIBRARY} )
-
- find_library(KDE4_KBLOG_LIBRARY NAMES kblog PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KBLOG_LIBS ${kblog_LIB_DEPENDS} ${KDE4_KBLOG_LIBRARY} )
-
- find_library(KDE4_KCAL_LIBRARY NAMES kcal PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KCAL_LIBS ${kcal_LIB_DEPENDS} ${KDE4_KCAL_LIBRARY} )
+macro(_KDEPIMLibs_Set_Lib_Vars _prefix _lib)
+ set(KDEPIMLIBS_${_prefix}_LIBRARY ${_lib})
+ set(KDEPIMLIBS_${_prefix}_LIBS ${_lib})
+ # these two are set for compatibility with KDE 4.[01], Alex:
+ set(KDE4_${_prefix}_LIBRARY ${_lib})
+ set(KDE4_${_prefix}_LIBS ${_lib})
+endmacro(_KDEPIMLibs_Set_Lib_Vars)
- find_library(KDE4_KIMAP_LIBRARY NAMES kimap PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KIMAP_LIBS ${kimap_LIB_DEPENDS} ${KDE4_KIMAP_LIBRARY} )
- find_library(KDE4_KLDAP_LIBRARY NAMES kldap PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KLDAP_LIBS ${kldap_LIB_DEPENDS} ${KDE4_KLDAP_LIBRARY} )
-
- find_library(KDE4_KMIME_LIBRARY NAMES kmime PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KMIME_LIBS ${kmime_LIB_DEPENDS} ${KDE4_KMIME_LIBRARY} )
-
- find_library(KDE4_KPIMIDENTITIES_LIBRARY NAMES kpimidentities PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KPIMIDENTITIES_LIBS ${kpimidentities_LIB_DEPENDS} ${KDE4_KPIMIDENTITIES_LIBRARY} )
-
- find_library(KDE4_KPIMUTILS_LIBRARY NAMES kpimutils PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KPIMUTILS_LIBS ${kpimutils_LIB_DEPENDS} ${KDE4_KPIMUTILS_LIBRARY} )
-
- find_library(KDE4_KRESOURCES_LIBRARY NAMES kresources PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KRESOURCES_LIBS ${kresources_LIB_DEPENDS} ${KDE4_KRESOURCES_LIBRARY} )
-
- find_library(KDE4_KTNEF_LIBRARY NAMES ktnef PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KTNEF_LIBS ${ktnef_LIB_DEPENDS} ${KDE4_KTNEF_LIBRARY} )
-
- find_library(KDE4_KXMLRPCCLIENT_LIBRARY NAMES kxmlrpcclient PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_KXMLRPCCLIENT_LIBS ${kxmlrpcclient_LIB_DEPENDS} ${KDE4_KXMLRPCCLIENT_LIBRARY} )
-
- find_library(KDE4_MAILTRANSPORT_LIBRARY NAMES mailtransport PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_MAILTRANSPORT_LIBS ${mailtransport_LIB_DEPENDS} ${KDE4_MAILTRANSPORT_LIBRARY} )
+if( KDEPIMLIBS_INCLUDE_DIR )
+ set(KDEPIMLIBS_FOUND TRUE)
- find_library(KDE4_QGPGME_LIBRARY NAMES qgpgme PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_QGPGME_LIBS ${qgpgme_LIB_DEPENDS} ${KDE4_QGPGME_LIBRARY} )
+ get_filename_component( kdepimlibs_cmake_module_dir "${KDEPIMLIBS_INCLUDE_DIR}" PATH)
+ set(kdepimlibs_cmake_module_dir "${kdepimlibs_cmake_module_dir}/share/apps/cmake/modules")
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${kdepimlibs_cmake_module_dir}")
- find_library(KDE4_SYNDICATION_LIBRARY NAMES syndication PATHS ${KDE4_LIB_DIR} NO_DEFAULT_PATH )
- set(KDE4_SYNDICATION_LIBS ${syndication_LIB_DEPENDS} ${KDE4_SYNDICATION_LIBRARY} )
+ # this file contains all dependencies of all libraries of kdepimlibs, Alex
+ include("${kdepimlibs_cmake_module_dir}/KDEPimLibsInformation.cmake" OPTIONAL RESULT_VARIABLE _newKdepimLibsFound)
+ # if this file could not be loaded, we found an older version of Kdepimlibs, tell the
+ # developer that he should update kdepimlibs. Alex
+ if (NOT _newKdepimLibsFound)
+ message(FATAL_ERROR "You need a newer version of kdepimlibs, please update it")
+ endif (NOT _newKdepimLibsFound)
+
+ include("${kdepimlibs_cmake_module_dir}/KDEPimLibsLibraryTargets.cmake")
+
+ _kdepimlibs_set_lib_vars( AKONADI akonadi-kde)
+ _kdepimlibs_set_lib_vars( AKONADI_KMIME akonadi-kmime)
+ _kdepimlibs_set_lib_vars( AKONADI_KABC akonadi-kabc)
+ _kdepimlibs_set_lib_vars( GPGMEPP gpgmepp)
+ _kdepimlibs_set_lib_vars( KABC kabc)
+ _kdepimlibs_set_lib_vars( KBLOG kblog)
+ _kdepimlibs_set_lib_vars( KCAL kcal)
+ _kdepimlibs_set_lib_vars( KIMAP kimap)
+ _kdepimlibs_set_lib_vars( KLDAP kldap)
+ _kdepimlibs_set_lib_vars( KMIME kmime)
+ _kdepimlibs_set_lib_vars( KPIMIDENTITIES kpimidentities)
+ _kdepimlibs_set_lib_vars( KPIMUTILS kpimutils)
+ _kdepimlibs_set_lib_vars( KRESOURCES kresources)
+ _kdepimlibs_set_lib_vars( KTNEF ktnef)
+ _kdepimlibs_set_lib_vars( KXMLRPCCLIENT kxmlrpcclient)
+ _kdepimlibs_set_lib_vars( MAILTRANSPORT mailtransport)
+ _kdepimlibs_set_lib_vars( QGPGME qgpgme)
+ _kdepimlibs_set_lib_vars( SYNDICATION syndication)
+
+ # this is bad, so I commented it out. A module shouldn't modify variables
+ # set by another module. Alex.
+ # # setup global used KDE include
+ # set (KDE4_INCLUDES ${KDE4_INCLUDES} ${KDEPIMLIBS_INCLUDE_DIR})
- # setup global used KDE include
- set (KDE4_INCLUDES ${KDE4_INCLUDES} ${KDEPIMLIBS_INCLUDE_DIR})
else( KDEPIMLIBS_INCLUDE_DIR )
set(KDEPIMLIBS_FOUND FALSE)
endif( KDEPIMLIBS_INCLUDE_DIR )
+
if (KDEPIMLIBS_FOUND)
if (NOT KdepimLibs_FIND_QUIETLY)
message(STATUS "Found KDE PIM libraries")
@@ -102,4 +109,3 @@ else (KDEPIMLIBS_FOUND)
endif (KdepimLibs_FIND_REQUIRED)
endif (KDEPIMLIBS_FOUND)
-