aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorAlex Merry <alex.merry@kde.org>2015-11-15 15:09:48 +0000
committerAlex Merry <alex.merry@kde.org>2015-11-22 10:39:45 +0000
commitc941061aa989bba945e296aad47df22f9c8ddd5f (patch)
tree02ce7b041d556579bd2c8c3c224776553c8cc5bd /CMakeLists.txt
parent8f0cbc9f8a8e3b60df6755da1d7d5369ef37b8f2 (diff)
downloadextra-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.txt160
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
+)