diff --git a/CMakeLists.txt b/CMakeLists.txt index f3ac8969b..bfea2561e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,128 +1,138 @@ project(kdepimlibs) set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules ) # search packages used by KDE find_package(KDE4 REQUIRED) include (KDE4Defaults) include (MacroLibrary) find_package(Boost REQUIRED) macro_log_feature(Boost_FOUND "boost" "Boost C++ Libraries" "http://www.boost.org" TRUE "1_33_0" "Needed by several critical PIM libraries.") if (NOT ONLY_KLEO) macro_optional_find_package(Sasl2) macro_log_feature(SASL2_FOUND "cyrus-sasl" "Cyrus SASL API" "http://asg.web.cmu.edu/sasl/sasl-library.html" FALSE "" "Needed to support authentication of logins. IMAP and Sieve kioslaves will not be built.") endif (NOT ONLY_KLEO) # gpgme is a hard dependency find_package(Gpgme REQUIRED) include (gpgme++/ConfigureChecks.cmake) include (ConfigureChecks.cmake) add_definitions (${QT_DEFINITIONS} ${KDE4_DEFINITIONS}) include_directories (${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${KDE4_INCLUDES}) # TODO(move to kdesupport scripts) temporary way to support gpgme-qt under win32 if (EXISTS ${CMAKE_SOURCE_DIR}/gpgme-qt) message(STATUS "gpgme-qt for Windows will be compiled: ${CMAKE_SOURCE_DIR}/gpgme-qt") add_subdirectory(gpgme-qt) endif (EXISTS ${CMAKE_SOURCE_DIR}/gpgme-qt) macro_optional_add_subdirectory(doc) add_subdirectory(gpgme++) add_subdirectory(qgpgme) add_subdirectory(kmime) if (NOT ONLY_KLEO) find_package(Akonadi REQUIRED) if(Akonadi_FOUND) add_subdirectory(akonadi) endif(Akonadi_FOUND) # (gpgme++/qgpgme handle their conditions inside their own CMakeLists.txt files) add_subdirectory(kabc) add_subdirectory(kblog) add_subdirectory(kcal) add_subdirectory(kimap) add_subdirectory(kldap) add_subdirectory(kpimidentities) add_subdirectory(kpimutils) add_subdirectory(kresources) add_subdirectory(ktnef) add_subdirectory(kxmlrpcclient) add_subdirectory(mailtransport) add_subdirectory(syndication) add_subdirectory(kioslave) endif (NOT ONLY_KLEO) add_subdirectory(cmake) macro_display_feature_log() -# taken from kdelibs/CMakeLists.txt, needed for having different install prefixes -# for kdepimlibs and kdelibs -# TODO: we probably need all the other variables here as well +# now create the KdepimLibsConfig.cmake file, which will be loaded by +# kdelibs/cmake/modules/FindKdepimLibs.cmake and which has to contain all information +# about the installed kdepimlibs anybody would like to have. Alex # we need the absolute directories where stuff will be installed too # but since the variables which contain the destinations can be relative # or absolute paths, we need this macro to make them all absoulte, Alex macro(MAKE_INSTALL_PATH_ABSOLUTE out in) if (IS_ABSOLUTE "${in}") # IS_ABSOLUTE is new since cmake 2.4.8 set(${out} "${in}") else (IS_ABSOLUTE "${in}") set(${out} "\${KDEPIMLIBS_INSTALL_DIR}/${in}") endif (IS_ABSOLUTE "${in}") endmacro(MAKE_INSTALL_PATH_ABSOLUTE out in) - +# all the following variables are put into KdepimLibsConfig.cmake, so +# they are usable by projects using kdepimlibs. Alex +make_install_path_absolute(KDEPIMLIBS_DATA_DIR ${DATA_INSTALL_DIR}) make_install_path_absolute(KDEPIMLIBS_DBUS_INTERFACES_DIR ${DBUS_INTERFACES_INSTALL_DIR}) make_install_path_absolute(KDEPIMLIBS_DBUS_SERVICES_DIR ${DBUS_SERVICES_INSTALL_DIR}) -make_install_path_absolute(KDEPIMLIBS_DATA_DIR ${DATA_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_INCLUDE_DIR ${INCLUDE_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_LIB_DIR ${LIB_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_BIN_DIR ${BIN_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_LIBEXEC_DIR ${LIBEXEC_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_SBIN_DIR ${SBIN_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_HTML_DIR ${HTML_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_CONFIG_DIR ${CONFIG_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_ICON_DIR ${ICON_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_KCFG_DIR ${KCFG_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_LOCALE_DIR ${LOCALE_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_MIME_DIR ${MIME_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_SOUND_DIR ${SOUND_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_TEMPLATES_DIR ${TEMPLATES_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_WALLPAPER_DIR ${WALLPAPER_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_KCONF_UPDATE_DIR ${KCONF_UPDATE_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_AUTOSTART_DIR ${AUTOSTART_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_XDG_APPS_DIR ${XDG_APPS_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_XDG_DIRECTORY_DIR ${XDG_DIRECTORY_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_SYSCONF_DIR ${SYSCONF_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_MAN_DIR ${MAN_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_INFO_DIR ${INFO_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_SERVICES_DIR ${SERVICES_INSTALL_DIR}) +make_install_path_absolute(KDEPIMLIBS_SERVICETYPES_DIR ${SERVICETYPES_INSTALL_DIR}) +set(KDEPIMLIBS_TARGET_PREFIX KDEPIMLibs__) + +configure_file(KdepimLibsConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/KdepimLibsConfig.cmake" @ONLY) + +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KdepimLibsConfig.cmake # ${CMAKE_CURRENT_BINARY_DIR}/KDEPimLibsDependencies.cmake + DESTINATION ${LIB_INSTALL_DIR}/KdepimLibs/cmake) + +# from next monday on only the version with prefix will be installed, to keep it working +# in all cases until then now install two versions, one with and one without prefix. Alex +install(EXPORT kdepimlibsLibraryTargets + NAMESPACE ${KDEPIMLIBS_TARGET_PREFIX} + DESTINATION ${LIB_INSTALL_DIR}/KdepimLibs/cmake + FILE KDEPimLibsLibraryTargetsWithPrefix.cmake ) -# This file will be picked up by "old" FindKdepimLibs.cmake from kdelibs, + +# These files will be picked up by older FindKdepimLibs.cmake from kdelibs, # so write a message there to inform the developer that he should update kdelibs. Alex file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/KDEPimLibsDependencies.cmake " message(FATAL_ERROR "For using this version of kdepimlibs you need a newer version of kdelibs, please update.") ") -# current FindKdepimLibs.cmake loads these two files, now the libraries from -# KdepimLibs are "exported" and then "imported" again when using FindKdepimLibs.cmake -# Alex. file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/KDEPimLibsInformation.cmake " -if(NOT KDEPIMLIBS_INSTALL_DIR) - set(KDEPIMLIBS_INSTALL_DIR \"${CMAKE_INSTALL_PREFIX}\") -endif(NOT KDEPIMLIBS_INSTALL_DIR) - -set(KDEPIMLIBS_DATA_DIR \"${KDEPIMLIBS_DATA_DIR}\") -set(KDEPIMLIBS_DBUS_INTERFACES_DIR \"${KDEPIMLIBS_DBUS_INTERFACES_DIR}\") -set(KDEPIMLIBS_DBUS_SERVICES_DIR \"${KDEPIMLIBS_DBUS_SERVICES_DIR}\") -# These two are just for compatibility with KDE 4.[01] -set(KDEPIMLIBS4_DBUS_INTERFACES_DIR \"\${KDEPIMLIBS_DBUS_INTERFACES_DIR}\") -set(KDEPIMLIBS4_DBUS_SERVICES_DIR \"\${KDEPIMLIBS_DBUS_SERVICES_DIR}\") - -set(KDEPIMLIBS_TARGET_PREFIX \"KDEPIMLibs::\") - -\n") +message(FATAL_ERROR "For using this version of kdepimlibs you need a newer version of kdelibs, please update.") +") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/KDEPimLibsInformation.cmake ${CMAKE_CURRENT_BINARY_DIR}/KDEPimLibsDependencies.cmake DESTINATION ${DATA_INSTALL_DIR}/cmake/modules) - -# from next monday on only the version with prefix will be installed, to keep it working -# in all cases until then now install two versions, one with and one without prefix. Alex -install(EXPORT kdepimlibsLibraryTargets - NAMESPACE "KDEPIMLibs::" - DESTINATION ${DATA_INSTALL_DIR}/cmake/modules - FILE KDEPimLibsLibraryTargetsWithPrefix.cmake ) - -install(EXPORT kdepimlibsLibraryTargets - DESTINATION ${DATA_INSTALL_DIR}/cmake/modules - FILE KDEPimLibsLibraryTargets.cmake ) - - diff --git a/KdepimLibsConfig.cmake.in b/KdepimLibsConfig.cmake.in new file mode 100644 index 000000000..f17b09bfa --- /dev/null +++ b/KdepimLibsConfig.cmake.in @@ -0,0 +1,76 @@ +# KdepimLibs.cmake is generated by CMake from kdepimlibs/KdepimLibs.cmake.in + +if(NOT KDEPIMLIBS_INSTALL_DIR) + set(KDEPIMLIBS_INSTALL_DIR "@CMAKE_INSTALL_PREFIX@") +endif(NOT KDEPIMLIBS_INSTALL_DIR) + +set(KDEPIMLIBS_DATA_DIR "@KDEPIMLIBS_DATA_DIR@") +set(KDEPIMLIBS_DBUS_INTERFACES_DIR "@KDEPIMLIBS_DBUS_INTERFACES_DIR@") +set(KDEPIMLIBS_DBUS_SERVICES_DIR "@KDEPIMLIBS_DBUS_SERVICES_DIR@") +set(KDEPIMLIBS_INCLUDE_DIR "@KDEPIMLIBS_INCLUDE_DIR@") +set(KDEPIMLIBS_LIB_DIR "@KDEPIMLIBS_LIB_DIR@") +set(KDEPIMLIBS_BIN_DIR "@KDEPIMLIBS_BIN_DIR@") +set(KDEPIMLIBS_LIBEXEC_DIR "@KDEPIMLIBS_LIBEXEC_DIR@") +set(KDEPIMLIBS_SBIN_DIR "@KDEPIMLIBS_SBIN_DIR@") +set(KDEPIMLIBS_HTML_DIR "@KDEPIMLIBS_HTML_DIR@") +set(KDEPIMLIBS_CONFIG_DIR "@KDEPIMLIBS_CONFIG_DIR@") +set(KDEPIMLIBS_ICON_DIR "@KDEPIMLIBS_ICON_DIR@") +set(KDEPIMLIBS_KCFG_DIR "@KDEPIMLIBS_KCFG_DIR@") +set(KDEPIMLIBS_LOCALE_DIR "@KDEPIMLIBS_LOCALE_DIR@") +set(KDEPIMLIBS_MIME_DIR "@KDEPIMLIBS_MIME_DIR@") +set(KDEPIMLIBS_SOUND_DIR "@KDEPIMLIBS_SOUND_DIR@") +set(KDEPIMLIBS_TEMPLATES_DIR "@KDEPIMLIBS_TEMPLATES_DIR@") +set(KDEPIMLIBS_KCONF_UPDATE_DIR "@KDEPIMLIBS_KCONF_UPDATE_DIR@") +set(KDEPIMLIBS_AUTOSTART_DIR "@KDEPIMLIBS_AUTOSTART_DIR@") +set(KDEPIMLIBS_XDG_APPS_DIR "@KDEPIMLIBS_XDG_APPS_DIR@") +set(KDEPIMLIBS_XDG_DIRECTORY_DIR "@KDEPIMLIBS_XDG_DIRECTORY_DIR@") +set(KDEPIMLIBS_SYSCONF_DIR "@KDEPIMLIBS_SYSCONF_DIR@") +set(KDEPIMLIBS_MAN_DIR "@KDEPIMLIBS_MAN_DIR@") +set(KDEPIMLIBS_INFO_DIR "@KDEPIMLIBS_INFO_DIR@") +set(KDEPIMLIBS_SERVICES_DIR "@KDEPIMLIBS_SERVICES_DIR@") +set(KDEPIMLIBS_SERVICETYPES_DIR "@KDEPIMLIBS_SERVICETYPES_DIR@") + +# These two are just for compatibility with KDE 4.[01] +set(KDEPIMLIBS4_DBUS_INTERFACES_DIR "${KDEPIMLIBS_DBUS_INTERFACES_DIR}") +set(KDEPIMLIBS4_DBUS_SERVICES_DIR "${KDEPIMLIBS_DBUS_SERVICES_DIR}") + +set(CMAKE_MODULE_PATH "${KDEPIMLIBS_DATA_DIR}/cmake/modules" "${CMAKE_MODULE_PATH}" ) + +# the exports file exports +set(KDEPIMLIBS_TARGET_PREFIX @KDEPIMLIBS_TARGET_PREFIX@) + +# Make sure to load the exported targets only once +# For the rest of this script it doesn't matter that much +if(NOT TARGET KDEPIMLibs__kresources) + get_filename_component(_currentDir "${CMAKE_CURRENT_LIST_FILE}" PATH) + include("${_currentDir}/KDEPimLibsLibraryTargetsWithPrefix.cmake") +endif(NOT TARGET KDEPIMLibs__kresources) + +macro(_KDEPIMLibs_Set_Lib_Vars _prefix _lib) + set(KDEPIMLIBS_${_prefix}_LIBRARY ${KDEPIMLIBS_TARGET_PREFIX}${_lib}) + set(KDEPIMLIBS_${_prefix}_LIBS ${KDEPIMLIBS_TARGET_PREFIX}${_lib}) + # these two are set for compatibility with KDE 4.[01], Alex: + set(KDE4_${_prefix}_LIBRARY ${KDEPIMLIBS_TARGET_PREFIX}${_lib}) + set(KDE4_${_prefix}_LIBS ${KDEPIMLIBS_TARGET_PREFIX}${_lib}) +endmacro(_KDEPIMLibs_Set_Lib_Vars) + + +_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) +