diff options
| -rw-r--r-- | CMakeLists.txt | 4 | ||||
| -rw-r--r-- | kde-modules/KDEInstallDirs.cmake | 6 | ||||
| -rw-r--r-- | modules/ECMSetupVersion.cmake | 91 | 
3 files changed, 99 insertions, 2 deletions
| diff --git a/CMakeLists.txt b/CMakeLists.txt index 391a87d4..b75d57f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,10 @@ -cmake_minimum_required(VERSION 2.8.9 FATAL_ERROR) +cmake_minimum_required(VERSION 2.8.10.1 FATAL_ERROR)  project(extra-cmake-modules)  set(ECM_MAJOR_VERSION 0)  set(ECM_MINOR_VERSION 0) -set(ECM_PATCH_VERSION 5) +set(ECM_PATCH_VERSION 6)  set(ECM_VERSION ${ECM_MAJOR_VERSION}.${ECM_MINOR_VERSION}.${ECM_PATCH_VERSION}) diff --git a/kde-modules/KDEInstallDirs.cmake b/kde-modules/KDEInstallDirs.cmake index a9d738c7..ea132e6e 100644 --- a/kde-modules/KDEInstallDirs.cmake +++ b/kde-modules/KDEInstallDirs.cmake @@ -179,3 +179,9 @@ if(APPLE)    set(INSTALL_TARGETS_DEFAULT_ARGS  ${INSTALL_TARGETS_DEFAULT_ARGS}                                      BUNDLE DESTINATION "${BUNDLE_INSTALL_DIR}" )  endif(APPLE) + +# new in cmake 2.8.9: this is used for all installed files which do not have a component set +# so set the default component name to the name of the project, if a project name has been set: +if(NOT "${PROJECT_NAME}" STREQUAL "Project") +  set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME "${PROJECT_NAME}") +endif() diff --git a/modules/ECMSetupVersion.cmake b/modules/ECMSetupVersion.cmake new file mode 100644 index 00000000..10297077 --- /dev/null +++ b/modules/ECMSetupVersion.cmake @@ -0,0 +1,91 @@ +# This file provides the function ecm_setup_version(). +# ECM_SETUP_VERSION() bundles three things which are usually done for versioned libraries: +#  - it sets a set of version variables +#  - optionally it creates a C version header file, which can then be installed along with the library +#  - optionally it creates a CMake package version file, which can then be installed along with a +#    CMake package Config.cmake file +# +#   ecm_setup_version(<major> <minor> <patch> +#                     VARIABLE_PREFIX prefix +#                     [SOVERSION <soversion>] +#                     [VERSION_HEADER filename] +#                     [PACKAGE_VERSION_FILE filename] ) +# +# +# ecm_setup_version() sets the following variables +#    <prefix>_VERSION_MAJOR = <major> +#    <prefix>_VERSION_MINOR = <minor> +#    <prefix>_VERSION_PATCH = <patch> +#    <prefix>_VERSION_STRING = <major>.<minor>.<patch> +#    <prefix>_SOVERSION is set to <major> if <soversion> has not been specified. +# +# If the VERSION_HEADER option is used, a simple C header is generated with the given +# filename. If filename is a relative path, it is interpreted as relative to +# CMAKE_CURRENT_BINARY_DIR. +# The generated header contains the following macros: +#    <prefix>_VERSION_MAJOR +#    <prefix>_VERSION_MINOR +#    <prefix>_VERSION_PATCH +#    <prefix>_VERSION_STRING - containing the full version number as a C string +#    <prefix>_VERSION - containing the full version combined into one integer +# +# If the PACKAGE_VERSION_FILE option is used, a simple CMake package version +# file is created using the write_basic_package_version_file() macro coming +# with CMake. It should be installed along the Config.cmake file of the library +# into the same directory where it can be found by find_package(). +# Also here, if the given filename is a relative path, it is interpreted as +# relative to CMAKE_CURRENT_BINARY_DIR. + +# Copyright (c) 2012, Alexander Neundorf, <neundorf@kde.org> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + + +include(CMakePackageConfigHelpers) + +function(ECM_SETUP_VERSION _major _minor _patch) +  set(options ) +  set(oneValueArgs VARIABLE_PREFIX SOVERSION VERSION_HEADER PACKAGE_VERSION_FILE) +  set(multiValueArgs SOVERSION VERSION_HEADER_FILE PACKAGE_VERSION_FILE) + +  cmake_parse_arguments(ESV "${options}" "${oneValueArgs}" "${multiValueArgs}"  ${ARGN}) + +  if(ESV_UNPARSED_ARGUMENTS) +    message(FATAL_ERROR "Unknown keywords given to ECM_SETUP_VERSION(): \"${ESV_UNPARSED_ARGUMENTS}\"") +  endif() + +  if(NOT ESV_VARIABLE_PREFIX) +    message(FATAL_ERROR "Required argument PREFIX missing in ECM_SETUP_VERSION() call") +  endif() + +  if(NOT ESV_SOVERSION) +    set(ESV_SOVERSION ${_major}) +  endif() + +  set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR ${_major}) +  set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR ${_minor}) +  set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH ${_patch}) +  set(${ESV_VARIABLE_PREFIX}_SOVERSION ${ESV_SOVERSION}) +  set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${_major}.${_minor}.${_patch}") + +  if(ESV_VERSION_HEADER) +    set(PROJECT_NAME_UPPER "${ESV_VARIABLE_PREFIX}") +    set(ECM_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION_STRING}") +    set(ECM_VERSION_MAJOR "${${ESV_VARIABLE_PREFIX}_VERSION_MAJOR}") +    set(ECM_VERSION_MINOR "${${ESV_VARIABLE_PREFIX}_VERSION_MINOR}") +    set(ECM_VERSION_PATCH "${${ESV_VARIABLE_PREFIX}_VERSION_PATCH}") +    configure_file("${ECM_MODULE_DIR}/ECMVersionHeader.h.in" "${ESV_VERSION_HEADER}") +  endif() + +  if(ESV_PACKAGE_VERSION_FILE) +    write_basic_package_version_file("${ESV_PACKAGE_VERSION_FILE}" VERSION ${_major}.${_minor}.${_patch} COMPATIBILITY AnyNewerVersion) +  endif() + +  set(${ESV_VARIABLE_PREFIX}_VERSION_MAJOR  "${${ESV_VARIABLE_PREFIX}_VERSION_MAJOR}"  PARENT_SCOPE) +  set(${ESV_VARIABLE_PREFIX}_VERSION_MINOR  "${${ESV_VARIABLE_PREFIX}_VERSION_MINOR}"  PARENT_SCOPE) +  set(${ESV_VARIABLE_PREFIX}_VERSION_PATCH  "${${ESV_VARIABLE_PREFIX}_VERSION_PATCH}"  PARENT_SCOPE) +  set(${ESV_VARIABLE_PREFIX}_SOVERSION      "${${ESV_VARIABLE_PREFIX}_SOVERSION}"      PARENT_SCOPE) +  set(${ESV_VARIABLE_PREFIX}_VERSION_STRING "${${ESV_VARIABLE_PREFIX}_VERSION_STRING}" PARENT_SCOPE) + +endfunction() | 
