aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Neundorf <neundorf@kde.org>2012-05-12 21:25:36 +0200
committerAlex Neundorf <neundorf@kde.org>2012-05-12 21:28:58 +0200
commit653895414dca71dde86dd78f493b5b646bb36ab7 (patch)
treed98c7c6dd574ff78986f060f41785d8c4ffb73f2
parent0f46b993438abce7a2b90c7ba720427cbe827e8d (diff)
downloadextra-cmake-modules-653895414dca71dde86dd78f493b5b646bb36ab7.tar.gz
extra-cmake-modules-653895414dca71dde86dd78f493b5b646bb36ab7.tar.bz2
rework of extra-cmake-modules
-rename the cmake package from extra-cmake-modules to ECM -change variable names and docs accordingly -move setting of Qt-related defines from ECMQtFrameworks.cmake to KDECompilerSettings.cmake -remove ECMSetVersionVariables.cmake, we'll do it some other way -rename ECMConfig.cmake.in to ECMQtFrameworkConfig.cmake.in, since this is where it is used, and it would have the same name as ECMConfig.cmake.in which is for extra-cmake-modules itself Alex
-rw-r--r--CMakeLists.txt23
-rw-r--r--ECMConfig.cmake.in18
-rw-r--r--extra-cmake-modules-config.cmake.in18
-rw-r--r--kde-modules/KDECMakeSettings.cmake15
-rw-r--r--kde-modules/KDECompilerSettings.cmake11
-rw-r--r--modules/ECMConfig.cmake.in18
-rw-r--r--modules/ECMQtFramework.cmake24
-rw-r--r--modules/ECMQtFrameworkConfig.cmake.in17
-rw-r--r--modules/ECMSetVersionVariables.cmake42
-rw-r--r--modules/ECMUseFindModules.cmake12
-rw-r--r--modules/ECMVersion.cmake2
11 files changed, 82 insertions, 118 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3ca946dc..dd1c04fb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,14 +4,14 @@ project(extra-cmake-modules)
set(ECM_MAJOR_VERSION 0)
set(ECM_MINOR_VERSION 0)
-set(ECM_PATCH_VERSION 3)
+set(ECM_PATCH_VERSION 4)
set(ECM_VERSION ${ECM_MAJOR_VERSION}.${ECM_MINOR_VERSION}.${ECM_PATCH_VERSION})
enable_testing()
add_subdirectory(tests)
-set(SHARE_INSTALL_DIR share/extra-cmake-modules-${ECM_VERSION})
+set(SHARE_INSTALL_DIR share/ECM-${ECM_VERSION})
set(MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/modules/)
set(KDE_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/kde-modules/)
set(FIND_MODULES_INSTALL_DIR ${SHARE_INSTALL_DIR}/find-modules/)
@@ -41,19 +41,20 @@ install(FILES ${installKdeModuleFiles} DESTINATION ${KDE_MODULES_INSTALL_DIR})
file(GLOB installFindModuleFiles ${CMAKE_SOURCE_DIR}/find-modules/*[^~])
install(FILES ${installFindModuleFiles} DESTINATION ${FIND_MODULES_INSTALL_DIR})
-# figure out the relative path from the installed Config.cmake file to the install prefix (which may be at
-# runtime different from the chosen CMAKE_INSTALL_PREFIX if under Windows the package was installed anywhere)
-# This relative path will be configured into the BarConfig.cmake
-file(RELATIVE_PATH relInstallDir ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR} ${CMAKE_INSTALL_PREFIX})
-configure_file(extra-cmake-modules-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/extra-cmake-modules-config.cmake @ONLY)
-include(WriteBasicConfigVersionFile)
-write_basic_config_version_file( ${CMAKE_CURRENT_BINARY_DIR}/extra-cmake-modules-config-version.cmake
+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 )
+
+
+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}/extra-cmake-modules-config.cmake
- ${CMAKE_CURRENT_BINARY_DIR}/extra-cmake-modules-config-version.cmake
+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
diff --git a/ECMConfig.cmake.in b/ECMConfig.cmake.in
new file mode 100644
index 00000000..b163e3ae
--- /dev/null
+++ b/ECMConfig.cmake.in
@@ -0,0 +1,18 @@
+@PACKAGE_INIT@
+
+# set the version of myself
+set(ECM_VERSION_MAJOR @ECM_MAJOR_VERSION@)
+set(ECM_VERSION_MINOR @ECM_MINOR_VERSION@)
+set(ECM_VERSION_PATCH @ECM_PATCH_VERSION@)
+set(ECM_MODULES_VERSION ${ECM_VERSION_MAJOR}.${ECM_VERSION_MINOR}.${ECM_VERSION_PATCH})
+
+
+set(ECM_FIND_MODULE_DIR "@PACKAGE_FIND_MODULES_INSTALL_DIR@")
+
+set(ECM_MODULE_DIR "@PACKAGE_MODULES_INSTALL_DIR@")
+
+set(ECM_KDE_MODULE_DIR "@PACKAGE_KDE_MODULES_INSTALL_DIR@")
+
+set(ECM_MODULE_PATH "${ECM_MODULE_DIR}" "${ECM_FIND_MODULE_DIR}" "${ECM_KDE_MODULE_DIR}")
+
+include("${ECM_MODULE_DIR}/ECMUseFindModules.cmake")
diff --git a/extra-cmake-modules-config.cmake.in b/extra-cmake-modules-config.cmake.in
deleted file mode 100644
index 33ae10d8..00000000
--- a/extra-cmake-modules-config.cmake.in
+++ /dev/null
@@ -1,18 +0,0 @@
-get_filename_component(rootDir ${CMAKE_CURRENT_LIST_DIR}/@relInstallDir@ ABSOLUTE) # get the chosen install prefix
-
-# set the version of myself
-set(EXTRA_CMAKE_MODULES_VERSION_MAJOR @ECM_MAJOR_VERSION@)
-set(EXTRA_CMAKE_MODULES_VERSION_MINOR @ECM_MINOR_VERSION@)
-set(EXTRA_CMAKE_MODULES_VERSION_PATCH @ECM_PATCH_VERSION@)
-set(EXTRA_CMAKE_MODULES_VERSION ${EXTRA_CMAKE_MODULES_VERSION_MAJOR}.${EXTRA_CMAKE_MODULES_VERSION_MINOR}.${EXTRA_CMAKE_MODULES_VERSION_PATCH})
-
-
-set(EXTRA_CMAKE_MODULES_FIND_MODULE_DIR "${rootDir}/@FIND_MODULES_INSTALL_DIR@")
-
-set(EXTRA_CMAKE_MODULES_MODULE_DIR "${rootDir}/@MODULES_INSTALL_DIR@")
-
-set(EXTRA_CMAKE_MODULES_KDE_MODULE_DIR "${rootDir}/@KDE_MODULES_INSTALL_DIR@")
-
-set(EXTRA_CMAKE_MODULES_MODULE_PATH "${EXTRA_CMAKE_MODULES_MODULE_DIR}" "${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR}" "${EXTRA_CMAKE_MODULES_KDE_MODULE_DIR}")
-
-include("${EXTRA_CMAKE_MODULES_MODULE_DIR}/ECMUseFindModules.cmake")
diff --git a/kde-modules/KDECMakeSettings.cmake b/kde-modules/KDECMakeSettings.cmake
index 828a0b38..2ff8e029 100644
--- a/kde-modules/KDECMakeSettings.cmake
+++ b/kde-modules/KDECMakeSettings.cmake
@@ -1,6 +1,7 @@
-# KDE_SKIP_RPATH_SETTINGS
-# KDE_SKIP_BUILD_SETTINGS
-# KDE_SKIP_TEST_SETTINGS
+# The following variables can be set to TRUE to skip parts of the functionality:
+# KDE_SKIP_RPATH_SETTINGS
+# KDE_SKIP_BUILD_SETTINGS
+# KDE_SKIP_TEST_SETTINGS
################# RPATH handling ##################################
@@ -80,6 +81,14 @@ if(NOT KDE_SKIP_BUILD_SETTINGS)
# Enable automoc in cmake
set(CMAKE_AUTOMOC ON)
+ # under Windows, generate all executables and libraries into
+ # one common directory, so the executables find their dlls
+ if(WIN32)
+ set(ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+ set(LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+ set(RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
+ endif()
+
endif()
###################################################################
diff --git a/kde-modules/KDECompilerSettings.cmake b/kde-modules/KDECompilerSettings.cmake
index 905e16d6..506bb2c0 100644
--- a/kde-modules/KDECompilerSettings.cmake
+++ b/kde-modules/KDECompilerSettings.cmake
@@ -473,3 +473,14 @@ endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
add_compiler_export_flags() # from GenerateExportHeader.cmake
add_definitions(${_KDE4_PLATFORM_DEFINITIONS})
+
+# add some more Qt-related definitions:
+add_definitions(-DQT_NO_CAST_TO_ASCII
+ -DQT_NO_CAST_FROM_ASCII
+ -DQT_STRICT_ITERATORS
+ -DQT_NO_URL_CAST_FROM_STRING
+ -DQT_NO_CAST_FROM_BYTEARRAY
+ -DQT_NO_KEYWORDS
+ -DQT_USE_FAST_CONCATENATION
+ -DQT_USE_FAST_OPERATOR_PLUS
+ )
diff --git a/modules/ECMConfig.cmake.in b/modules/ECMConfig.cmake.in
deleted file mode 100644
index 114ce50e..00000000
--- a/modules/ECMConfig.cmake.in
+++ /dev/null
@@ -1,18 +0,0 @@
-# Any changes in this file will be overwritten by CMake.
-
-get_filename_component(myDir ${CMAKE_CURRENT_LIST_FILE} PATH) # get the directory where I myself am
-get_filename_component(rootDir ${myDir}/@relInstallDir@ ABSOLUTE) # get the chosen install prefix
-
-set(@PROJECT_NAME@_VERSION_MAJOR "@ECM_VERSION_MAJOR@")
-set(@PROJECT_NAME@_VERSION_MINOR "@ECM_VERSION_MINOR@")
-set(@PROJECT_NAME@_VERSION_PATCH "@ECM_VERSION_PATCH@")
-
-set(@PROJECT_NAME@_INSTALL_PREFIX "${rootDir}")
-set(@PROJECT_NAME@_INCLUDE_DIR "${rootDir}/@INCLUDE_INSTALL_DIR@")
-set(@PROJECT_NAME@_LIBRARY_DIR "${rootDir}/@LIB_INSTALL_DIR@")
-
-set(@PROJECT_NAME@_LIBRARY @PROJECT_NAME@)
-
-set(@PROJECT_NAME@_USE_FILE "${myDir}/@PROJECT_NAME@Use.cmake")
-
-#include(${myDir}/@PROJECT_NAME@Targets.cmake)
diff --git a/modules/ECMQtFramework.cmake b/modules/ECMQtFramework.cmake
index 5cc428bd..fdbb6de9 100644
--- a/modules/ECMQtFramework.cmake
+++ b/modules/ECMQtFramework.cmake
@@ -89,21 +89,6 @@
include(FeatureSummary)
-include(${CMAKE_CURRENT_LIST_DIR}/../kde-modules/KDEInstallDirs.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/../kde-modules/KDECMakeSettings.cmake)
-include(${CMAKE_CURRENT_LIST_DIR}/../kde-modules/KDECompilerSettings.cmake)
-
-
-add_definitions(-DQT_NO_CAST_TO_ASCII)
-add_definitions(-DQT_NO_CAST_FROM_ASCII)
-add_definitions(-DQT_STRICT_ITERATORS)
-add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
-add_definitions(-DQT_NO_CAST_FROM_BYTEARRAY)
-add_definitions(-DQT_NO_KEYWORDS)
-add_definitions(-DQT_USE_FAST_CONCATENATION)
-add_definitions(-DQT_USE_FAST_OPERATOR_PLUS)
-
-
set(LIBRARY_TYPE SHARED)
set(ECM_TARGET_DEFAULT_ARGS
@@ -115,12 +100,13 @@ set(ECM_TARGET_DEFAULT_ARGS
set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/${PROJECT_NAME}")
-file(RELATIVE_PATH relInstallDir "${CMAKE_INSTALL_PREFIX}/${CMAKECONFIG_INSTALL_DIR}" "${CMAKE_INSTALL_PREFIX}")
+include(CMakePackageConfigHelpers)
-configure_file(
- "${CMAKE_CURRENT_LIST_DIR}/ECMConfig.cmake.in"
+configure_package_config_file(
+ "${CMAKE_CURRENT_LIST_DIR}/ECMQtFrameworkConfig.cmake.in"
"${CMAKE_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
- @ONLY
+ INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
+ PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR CMAKE_INSTALL_PREFIX
)
include(WriteBasicConfigVersionFile)
diff --git a/modules/ECMQtFrameworkConfig.cmake.in b/modules/ECMQtFrameworkConfig.cmake.in
new file mode 100644
index 00000000..6a63ed9d
--- /dev/null
+++ b/modules/ECMQtFrameworkConfig.cmake.in
@@ -0,0 +1,17 @@
+@PACKAGE_INIT@
+
+# Any changes in this file will be overwritten by CMake.
+
+set(@PROJECT_NAME@_VERSION_MAJOR "@ECM_VERSION_MAJOR@")
+set(@PROJECT_NAME@_VERSION_MINOR "@ECM_VERSION_MINOR@")
+set(@PROJECT_NAME@_VERSION_PATCH "@ECM_VERSION_PATCH@")
+
+set(@PROJECT_NAME@_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@")
+set_and_check(@PROJECT_NAME@_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
+set_and_check(@PROJECT_NAME@_LIBRARY_DIR "@PACKAGE_LIB_INSTALL_DIR@")
+
+set(@PROJECT_NAME@_LIBRARY @PROJECT_NAME@)
+
+set(@PROJECT_NAME@_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Use.cmake")
+
+#include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
diff --git a/modules/ECMSetVersionVariables.cmake b/modules/ECMSetVersionVariables.cmake
deleted file mode 100644
index 561358a8..00000000
--- a/modules/ECMSetVersionVariables.cmake
+++ /dev/null
@@ -1,42 +0,0 @@
-# - Convenience macro for setting version variables.
-#
-# ECM_SET_VERSION_VARIABLES(<prefix> <major> <minor> <patch>)
-#
-# This macro sets the following variables:
-# <prefix>_VERSION_MAJOR to <major>
-# <prefix>_VERSION_MINOR to <minor>
-# <prefix>_VERSION_PATCH to <patch>
-# <prefix>_SOVERSION to <major>
-# <prefix>_VERSION_STRING to "<major>.<minor>.<patch>"
-#
-# It is basically a shortcut, so instead of
-#
-# set(FOO_MAJOR_VERSION 0)
-# set(FOO_MINOR_VERSION 0)
-# set(FOO_PATCH_VERSION 1)
-# set(FOO_SOVERSION ${FOO_SOVERSION} )
-# set(FOO_VERSION ${FOO_MAJOR_VERSION}.${FOO_MINOR_VERSION}.${FOO_PATCH_VERSION})
-#
-# you can simply write
-#
-# ecm_set_version_variables(FOO 0 0 1)
-#
-# You can do with these variables whatever you want, there is no other automagic or
-# anything that depends on them.
-
-# Copyright 2011 Alexander Neundorf <neundorf@kde.org>
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt 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.
-
-macro(ecm_set_version_variables _prefix _major _minor _patch)
- set(${_prefix}_VERSION_MAJOR ${_major})
- set(${_prefix}_VERSION_MINOR ${_minor})
- set(${_prefix}_VERSION_PATCH ${_patch})
- set(${_prefix}_SOVERSION ${_major})
- set(${_prefix}_VERSION_STRING "${${_prefix}_VERSION_MAJOR}.${${_prefix}_VERSION_MINOR}.${${_prefix}_VERSION_PATCH}")
-endmacro()
diff --git a/modules/ECMUseFindModules.cmake b/modules/ECMUseFindModules.cmake
index 20e4cdcf..f7979e45 100644
--- a/modules/ECMUseFindModules.cmake
+++ b/modules/ECMUseFindModules.cmake
@@ -1,11 +1,11 @@
-# - Selectively use some of the Find-modules provided by extra-cmake-modules
+# - Selectively use some of the Find-modules provided by extra-cmake-modules (ECM)
#
# ECM_USE_FIND_MODULES(DIR <dir> MODULES module1.cmake module2.cmake .. moduleN.cmake [NO_OVERRIDE] )
#
# This macro is automatically available once extra-cmake-modules has been found, so it is not
# necessary to include(ECMUseFindModules) explictely.
#
-# Use this macro instead of simply adding ${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR} to CMAKE_MODULE_PATH
+# Use this macro instead of simply adding ${ECM_FIND_MODULE_DIR} to CMAKE_MODULE_PATH
# if you want to use only a subset or some specific find-modules coming with extra-cmake-modules.
# The given find-modules will be copied to the given directory. This directory should then be added
# to CMAKE_MODULE_PATH. The given modules override modules of the same name coming with CMake, except
@@ -19,7 +19,7 @@
# CMake version
#
# Example:
-# find_package(extra-cmake-modules 0.0.2 REQUIRED)
+# find_package(ECM 0.0.4 REQUIRED)
# ecm_use_find_modules(DIR ${CMAKE_BINARY_DIR}/cmake/ Modules FindBlueZ.cmake NO_OVERRIDE )
# set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}/cmake/ )
#
@@ -53,11 +53,11 @@ function(ecm_use_find_modules)
file(MAKE_DIRECTORY "${EUFM_DIR}")
foreach(file ${EUFM_MODULES})
- if(NOT EXISTS ${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR}/${file} )
- message(FATAL_ERROR "File ${file} not found in ${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR} !")
+ if(NOT EXISTS ${ECM_FIND_MODULE_DIR}/${file} )
+ message(FATAL_ERROR "File ${file} not found in ${ECM_FIND_MODULE_DIR} !")
endif()
if(NOT EXISTS "${CMAKE_ROOT}/Modules/${file}" OR NOT EUFM_NO_OVERRIDE)
- configure_file("${EXTRA_CMAKE_MODULES_FIND_MODULE_DIR}/${file}" "${EUFM_DIR}/${file}" COPYONLY)
+ configure_file("${ECM_FIND_MODULE_DIR}/${file}" "${EUFM_DIR}/${file}" COPYONLY)
endif()
endforeach()
diff --git a/modules/ECMVersion.cmake b/modules/ECMVersion.cmake
index 3b4a0c49..ccac31b4 100644
--- a/modules/ECMVersion.cmake
+++ b/modules/ECMVersion.cmake
@@ -1,6 +1,6 @@
macro(ecm_version _major _minor _patch)
- message(STATUS "************** ecm_version() is obsolete, use ecm_set_version_variables() instead")
+ message(STATUS "************** ecm_version() is deprecated")
set(ECM_VERSION_MAJOR ${_major})
set(ECM_VERSION_MINOR ${_minor})
set(ECM_VERSION_PATCH ${_patch})