From 4a55ae0536e46020ca17070155a3223536e36703 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Vr=C3=A1til?= Date: Fri, 15 May 2015 16:01:11 +0200 Subject: Async: make it a stand-alone CMake project --- async/CMakeLists.txt | 71 +++++++++++++++++++++++++++++++++++++++--- async/KF5AsyncConfig.cmake.in | 3 ++ async/autotests/CMakeLists.txt | 18 ++++++----- async/src/CMakeLists.txt | 64 +++++++++++++++++++++++++++++++------ 4 files changed, 134 insertions(+), 22 deletions(-) create mode 100644 async/KF5AsyncConfig.cmake.in (limited to 'async') diff --git a/async/CMakeLists.txt b/async/CMakeLists.txt index a6b53f8..6a93a2c 100644 --- a/async/CMakeLists.txt +++ b/async/CMakeLists.txt @@ -1,12 +1,73 @@ -project(libasync) +project(KAsync) -option(WITH_KJOB "Enable native support for KJob in libasync API (enabled by default)" ON) +cmake_minimum_required(VERSION 2.8.12) + +# ECM setup +find_package(ECM 5.10.0 CONFIG REQUIRED) +set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) + +include(GenerateExportHeader) +include(ECMGenerateHeaders) +include(ECMGeneratePriFile) +include(ECMPackageConfigHelpers) +include(ECMSetupVersion) +include(FeatureSummary) +include(KDEInstallDirs) +include(KDECMakeSettings) +include(KDEFrameworkCompilerSettings) + +set(KASYNC_VERSION "4.99.0") + +set(KF5_VERSION "5.10.0") +set(QT_REQUIRED_VERSION "5.2.0") + +ecm_setup_version(${KASYNC_VERSION} + VARIABLE_PREFIX KASYNC + VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kasync_version.h" + PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5AsyncConfigVersion.cmake" + SOVERSION 5 +) + + +########### Find packages ########### +find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED COMPONENTS Core Test) +option(WITH_KJOB "Enable native support for KJob in libasync API (enabled by default)" ON) if (WITH_KJOB) - set(MINUMUM_FRAMEWORKS_VERSION "5.8.0") - find_package(KF5CoreAddons REQUIRED ${MINUMUM_FRAMEWORKS_VERSION}) + find_package(KF5CoreAddons REQUIRED ${KF5_VERSION}) add_definitions(-DWITH_KJOB) endif() +########### Targets ########### add_subdirectory(src) -add_subdirectory(autotests) \ No newline at end of file +add_subdirectory(autotests) + + +########### CMake Config Files ########### +set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5Async") + +ecm_configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/KF5AsyncConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/KF5AsyncConfig.cmake" + INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/KF5AsyncConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/KF5AsyncConfigVersion.cmake" + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel +) + +install(EXPORT + KF5AsyncTargets + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + FILE KF5AsyncTargets.cmake + NAMESPACE KF5::) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/kasync_version.h + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5} COMPONENT Devel +) + +feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/async/KF5AsyncConfig.cmake.in b/async/KF5AsyncConfig.cmake.in new file mode 100644 index 0000000..d11b836 --- /dev/null +++ b/async/KF5AsyncConfig.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/KF5AsyncTargets.cmake") diff --git a/async/autotests/CMakeLists.txt b/async/autotests/CMakeLists.txt index 8116f13..b2209ab 100644 --- a/async/autotests/CMakeLists.txt +++ b/async/autotests/CMakeLists.txt @@ -1,11 +1,13 @@ -include_directories(../src ${CMAKE_CURRENT_BINARY_DIR}) +include(ECMAddTests) -add_executable(asynctest asynctest.cpp) -qt5_use_modules(asynctest Test) -target_link_libraries(asynctest akonadi2async Qt5::Core Qt5::Test) +ecm_add_test(asynctest.cpp + TEST_NAME asynctest + LINK_LIBRARIES KF5Async Qt5::Test +) if (WITH_KJOB) - add_executable(kjobtest kjobtest.cpp testkjob.cpp) - qt5_use_modules(kjobtest Test) - target_link_libraries(kjobtest akonadi2async Qt5::Core Qt5::Test KF5::CoreAddons) -endif () \ No newline at end of file + ecm_add_test(kjobtest.cpp testkjob.cpp + TEST_NAME kjobtest + LINK_LIBRARIES KF5Async Qt5::Test KF5::CoreAddons + ) +endif() diff --git a/async/src/CMakeLists.txt b/async/src/CMakeLists.txt index becc8ee..05d08b6 100644 --- a/async/src/CMakeLists.txt +++ b/async/src/CMakeLists.txt @@ -1,17 +1,63 @@ -project(akonadi2async) - -include_directories(${CMAKE_CURRENT_BINARY_DIR}) - -set(async_SRCS +set(kasync_SRCS async.cpp future.cpp debug.cpp ) -add_library(${PROJECT_NAME} SHARED ${async_SRCS}) -target_link_libraries(${PROJECT_NAME} PUBLIC Qt5::Core) +set(kasync_priv_HEADERS + async_impl.h + debug.h +) + +ecm_generate_headers(kasync_HEADERS + HEADER_NAMES + Async + Future +) + + +add_library(KF5Async ${kasync_SRCS}) +add_library(KF5::Async ALIAS KF5Async) + +generate_export_header(KF5Async BASE_NAME kasync) + +target_include_directories(KF5Async INTERFACE "$") +target_include_directories(KF5Async PUBLIC "$") + +target_link_libraries(KF5Async + PUBLIC + Qt5::Core +) if (WITH_KJOB) - target_link_libraries(${PROJECT_NAME} PUBLIC KF5::CoreAddons) + target_link_libraries(KF5Async PUBLIC KF5::CoreAddons) endif () -install(TARGETS ${PROJECT_NAME} ${KDE_INSTALL_TARGETS_DEFAULT_ARGS}) + +set_target_properties(KF5Async PROPERTIES + VERSION ${KASYNC_VERSION_STRING} + SOVERSION ${KASYNC_SOVERSION} + EXPORT_NAME KAsync +) + +ecm_generate_pri_file(BASE_NAME KAsync + LIB_NAME KF5Async + FILENAME_VAR PRI_FILENAME +) + +install(TARGETS + KF5Async + EXPORT KF5AsyncTargets ${KF5_INSTALL_TARGETS_DEFAULT_ARGS} +) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/kasync_export.h + ${kasync_HEADERS} + ${kasync_priv_HEADERS} + DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/Async + COMPONENT Devel +) + +install(FILES + ${PRI_FILENAME} + DESTINATION ${ECM_MKSPECS_INSTALL_DIR} +) -- cgit v1.2.3