diff options
author | Alex Merry <alex.merry@kde.org> | 2015-11-15 15:09:48 +0000 |
---|---|---|
committer | Alex Merry <alex.merry@kde.org> | 2015-11-22 10:39:45 +0000 |
commit | c941061aa989bba945e296aad47df22f9c8ddd5f (patch) | |
tree | 02ce7b041d556579bd2c8c3c224776553c8cc5bd /CMakeLists.txt | |
parent | 8f0cbc9f8a8e3b60df6755da1d7d5369ef37b8f2 (diff) | |
download | extra-cmake-modules-c941061aa989bba945e296aad47df22f9c8ddd5f.tar.gz extra-cmake-modules-c941061aa989bba945e296aad47df22f9c8ddd5f.tar.bz2 |
Overhaul the ECM build system.
It should now be easier to read, and more featureful. Among other
tweaks, we now print a summary of dependencies and build options, and
the documentation is generated with more sensible breadcrumbs and
builds properly with Sphinx 1.3.
REVIEW: 126075
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 160 |
1 files changed, 130 insertions, 30 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index c1abd6c7..ef38b2fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,29 +1,99 @@ +#============================================================================= +# Copyright 2006-2013 Alex Neundorf <neundorf@kde.org> +# Copyright 2014-2015 Alex Merry <alex.merry@kde.org> +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file COPYING-CMAKE-SCRIPTS for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR) -project(extra-cmake-modules NONE) +# +# Preliminary setup +# + +set(VERSION "5.16.0") # handled by release scripts + +if (POLICY CMP0048) + cmake_policy(SET CMP0048 NEW) + project(ECM + VERSION "${VERSION}" + LANGUAGES NONE + ) +else() + project(ECM NONE) + include("${CMAKE_SOURCE_DIR}/modules/ECMSetupVersion.cmake") + ecm_setup_version( + "${VERSION}" + VARIABLE_PREFIX ECM + ) +endif() + + +# +# Includes +# + +set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") + +include(FeatureSummary) + -set(ECM_MAJOR_VERSION 5) -set(ECM_MINOR_VERSION 16) -set(ECM_PATCH_VERSION 0) +# +# Installation paths +# -set(ECM_VERSION ${ECM_MAJOR_VERSION}.${ECM_MINOR_VERSION}.${ECM_PATCH_VERSION}) +set(SHARE_INSTALL_DIR share + CACHE + PATH + "read-only architecture-independent data" +) + +set(CMAKECONFIG_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/cmake/) + +set(FIND_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/find-modules/) +set(KDE_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/kde-modules/) +set(MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/modules/) +set(TOOLCHAIN_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/toolchain/) + +set(DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/ECM + CACHE + PATH + "HTML and QtHelp documentation" +) +set(MAN_INSTALL_DIR ${SHARE_INSTALL_DIR}/man + CACHE + PATH + "man pages" +) + + +# +# Documentation +# + +add_subdirectory(docs) + + +# +# Tests +# option(BUILD_TESTING "Build automated tests." ON) +add_feature_info(BUILD_TESTING BUILD_TESTING "Build automated tests.") if(BUILD_TESTING) enable_testing() add_subdirectory(tests) endif() -set(SHARE_INSTALL_DIR share CACHE PATH "read-only architecture-independent data") -set(TOOLCHAIN_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/toolchain/) -set(MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/modules/) -set(KDE_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/kde-modules/) -set(FIND_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/find-modules/) -set(CMAKECONFIG_INSTALL_DIR ${SHARE_INSTALL_DIR}/ECM/cmake/) -set(DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/ECM) -set(MAN_INSTALL_DIR ${SHARE_INSTALL_DIR}/man) -add_subdirectory(docs) +# +# Install modules +# file(GLOB installModuleFiles ${CMAKE_SOURCE_DIR}/modules/*[^~]) install(FILES ${installModuleFiles} DESTINATION ${MODULES_INSTALL_DIR}) @@ -38,28 +108,58 @@ file(GLOB installToolchainModuleFiles ${CMAKE_SOURCE_DIR}/toolchain/*[^~]) install(FILES ${installToolchainModuleFiles} DESTINATION ${TOOLCHAIN_MODULES_INSTALL_DIR}) -include(CMakePackageConfigHelpers) - -configure_package_config_file(ECMConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/ECMConfig.cmake - INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} - PATH_VARS FIND_MODULES_INSTALL_DIR KDE_MODULES_INSTALL_DIR MODULES_INSTALL_DIR ) +# +# Config.cmake file +# +include(CMakePackageConfigHelpers) -write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/ECMConfigVersion.cmake - VERSION ${ECM_MAJOR_VERSION}.${ECM_MINOR_VERSION}.${ECM_PATCH_VERSION} - COMPATIBILITY AnyNewerVersion ) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/ECMConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/ECMConfigVersion.cmake - DESTINATION ${CMAKECONFIG_INSTALL_DIR}) - -# need to install a Config.cmake file +configure_package_config_file( + ECMConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/ECMConfig.cmake + INSTALL_DESTINATION + ${CMAKECONFIG_INSTALL_DIR} + PATH_VARS + FIND_MODULES_INSTALL_DIR + KDE_MODULES_INSTALL_DIR + MODULES_INSTALL_DIR +) + +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/ECMConfigVersion.cmake + VERSION + "${PROJECT_VERSION}" + COMPATIBILITY + AnyNewerVersion +) + +install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/ECMConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/ECMConfigVersion.cmake + DESTINATION + ${CMAKECONFIG_INSTALL_DIR} +) + + +# +# Packaging +# -# set up packaging set(CPACK_PACKAGE_NAME extra-cmake-modules) -set(CPACK_PACKAGE_VERSION ${ECM_VERSION}) +set(CPACK_PACKAGE_VERSION ${PROJECT_VERSION}) set(CPACK_SYSTEM_NAME "generic") set(CPACK_GENERATOR "TGZ") set(CPACK_SET_DESTDIR FALSE) include(CPack) + + +# +# Feature summary +# + +feature_summary( + FATAL_ON_MISSING_REQUIRED_PACKAGES + WHAT ALL +) |