aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/CMakeLists.txt1
-rw-r--r--modules/FindKDE4Internal.cmake22
-rw-r--r--modules/KDE4Macros.cmake11
-rw-r--r--modules/kde4BasicFindPackageVersion.cmake.in27
4 files changed, 59 insertions, 2 deletions
diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt
index b9dea894..35526b69 100644
--- a/modules/CMakeLists.txt
+++ b/modules/CMakeLists.txt
@@ -9,6 +9,7 @@ install( FILES cmake-modules-styleguide.txt
kde4init_win32lib_dummy.cpp.in
kde4_cmake_uninstall.cmake.in
kde4automoc.files.in
+ kde4BasicFindPackageVersion.cmake.in
FindLibPython.py
FindPyKDE4.py
FindPyQt.py
diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake
index 7a03ca35..386586aa 100644
--- a/modules/FindKDE4Internal.cmake
+++ b/modules/FindKDE4Internal.cmake
@@ -115,8 +115,11 @@
# KDE4_ENABLE_FINAL - enable KDE-style enable-final all-in-one-compilation
# KDE4_BUILD_TESTS - enable this to build the testcases
# KDE4_ENABLE_FPIE - enable it to use gcc Position Independent Executables feature
+# KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR - only present for CMake >= 2.6.3, defaults to TRUE
+# If enabled, the package should install its <package>Config.cmake file to
+# lib/cmake/<package>/ instead to lib/<package>/cmake
#
-# It also adds the following macros (from KDE4Macros.cmake)
+# It also adds the following macros and functions (from KDE4Macros.cmake)
# KDE4_ADD_UI_FILES (SRCS_VAR file1.ui ... fileN.ui)
# Use this to add Qt designer ui files to your application/library.
#
@@ -131,6 +134,14 @@
# Use this to add widget description files for the makekdewidgets code generator
# for Qt Designer plugins.
#
+# KDE4_WRITE_BASIC_CMAKE_VERSION_FILE( _filename _major _minor _patch)
+# Writes a file for use as <package>Version.cmake file to <_filename>.
+# See the documentation of FIND_PACKAGE() for details on this.
+# _filename is the output filename, it should be in the build tree.
+# _major is the major version number of the project to be installed
+# _minor is the minor version number of the project to be installed
+# _patch is the patch version number of the project to be installed
+#
# KDE4_CREATE_FINAL_FILES (filename_CXX filename_C file1 ... fileN)
# This macro is intended mainly for internal uses.
# It is used for enable-final. It will generate two source files,
@@ -591,6 +602,15 @@ option(KDE4_ENABLE_FINAL "Enable final all-in-one compilation")
option(KDE4_BUILD_TESTS "Build the tests")
option(KDE4_ENABLE_HTMLHANDBOOK "Create targets htmlhandbook for creating the html versions of the docbook docs")
+if(${CMAKE_VERSION_MAJOR}.${CMAKE_VERSION_MINOR}.${CMAKE_VERSION_PATCH} VERSION_GREATER 2.6.2)
+ option(KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR
+ "Prefer to install the <package>Config.cmake files to lib/cmake/<package> instead to lib/<package>/cmake"
+ TRUE)
+else(${CMAKE_VERSION_MAJOR}.${CMAKE_VERSION_MINOR}.${CMAKE_VERSION_PATCH} VERSION_GREATER 2.6.2)
+ set(KDE4_USE_COMMON_CMAKE_PACKAGE_CONFIG_DIR FALSE)
+endif(${CMAKE_VERSION_MAJOR}.${CMAKE_VERSION_MINOR}.${CMAKE_VERSION_PATCH} VERSION_GREATER 2.6.2)
+
+
# This is for the reduced link interface.
# In kdelibs it is already alwaysenabled.
# In all other modules provide the switch _KDE4_USE_REDUCED_LINK_INTERFACE to turn it on.
diff --git a/modules/KDE4Macros.cmake b/modules/KDE4Macros.cmake
index be4620a8..37195e87 100644
--- a/modules/KDE4Macros.cmake
+++ b/modules/KDE4Macros.cmake
@@ -1,6 +1,6 @@
# for documentation look at FindKDE4Internal.cmake
-# this file contains the following macros:
+# this file contains the following macros (or functions):
# KDE4_ADD_UI_FILES
# KDE4_ADD_UI3_FILES
# KDE4_ADD_KCFG_FILES
@@ -21,6 +21,7 @@
# KDE4_CREATE_HANDBOOK
# KDE4_ADD_APP_ICON
# KDE4_CREATE_MANPAGE
+# KDE4_CREATE_BASIC_CMAKE_VERSION_FILE (function)
# Copyright (c) 2006, 2007, Alexander Neundorf, <neundorf@kde.org>
# Copyright (c) 2006, 2007, Laurent Montel, <montel@kde.org>
@@ -1133,6 +1134,14 @@ macro (KDE4_ADD_APP_ICON appsources pattern)
endmacro (KDE4_ADD_APP_ICON)
+function(KDE4_WRITE_BASIC_CMAKE_VERSION_FILE _filename _major _minor _patch)
+ set(PROJECT_VERSION_MAJOR ${_major})
+ set(PROJECT_VERSION_MINOR ${_minor})
+ set(PROJECT_VERSION_PATCH ${_patch})
+ configure_file(${KDE4_MODULE_DIR}/kde4BasicFindPackageVersion.cmake.in "${_filename}" @ONLY)
+endfunction(KDE4_WRITE_BASIC_CMAKE_VERSION_FILE _major _minor _patch)
+
+
macro(_KDE4_EXPORT_LIBRARY_DEPENDENCIES _append_or_write _filename)
message(FATAL_ERROR "_KDE4_EXPORT_LIBRARY_DEPENDENCIES() was an internal macro and has been removed again. Just remove the code which calls it, there is no substitute.")
endmacro(_KDE4_EXPORT_LIBRARY_DEPENDENCIES)
diff --git a/modules/kde4BasicFindPackageVersion.cmake.in b/modules/kde4BasicFindPackageVersion.cmake.in
new file mode 100644
index 00000000..a347e15f
--- /dev/null
+++ b/modules/kde4BasicFindPackageVersion.cmake.in
@@ -0,0 +1,27 @@
+# This is a very basic file for the new style find_package() search mode,
+# i.e. Config-mode. It is used by KDE4_WRITE_BASIC_CMAKE_VERSION_FILE() from
+# KDE4Macros.cmake.
+# In this mode find_package() searches for a <package>Config.cmake
+# file and an associated <package>Version.cmake file, which it loads to check
+# the version number.
+# This file can be used with configure_file() to generate such a file for a project
+# with very basic logic.
+# It sets PACKAGE_VERSION_EXACT if the current version string and the requested
+# version string are exactly the same and it sets PACKAGE_VERSION_COMPATIBLE
+# if the current version is >= requested version.
+# If this is not good enough for your project, you need to write your own
+# improved <package>Version.cmake file.
+# This file requires the following three variables to be set:
+# PROJECT_VERSION_MAJOR
+# PROJECT_VERSION_MINOR
+# PROJECT_VERSION_PATCH
+
+
+set(PACKAGE_VERSION @PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@)
+
+if(NOT ${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION} )
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if( ${PACKAGE_FIND_VERSION} STREQUAL ${PACKAGE_VERSION})
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif( ${PACKAGE_FIND_VERSION} STREQUAL ${PACKAGE_VERSION})
+endif(NOT ${PACKAGE_FIND_VERSION} VERSION_LESS ${PACKAGE_VERSION} )