aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Faure <faure@kde.org>2006-05-03 15:35:41 +0000
committerDavid Faure <faure@kde.org>2006-05-03 15:35:41 +0000
commitcbad9fd217b1afa224fa9dc073739ad008d80384 (patch)
treebf55a8a084450d7d8afe45a392f1911c6e92bbf3
parentc9ed51d92f43326244b3cfdc3a63eae3e0c2c4a0 (diff)
downloadextra-cmake-modules-cbad9fd217b1afa224fa9dc073739ad008d80384.tar.gz
extra-cmake-modules-cbad9fd217b1afa224fa9dc073739ad008d80384.tar.bz2
Added support for KDE_MIN_VERSION (modelled after QT_MIN_VERSION), and ported the
"kdelibs trunk" check to use the same data, i.e. the output of kde-config. svn path=/trunk/KDE/kdelibs/; revision=536962
-rw-r--r--modules/FindKDE4Internal.cmake65
1 files changed, 52 insertions, 13 deletions
diff --git a/modules/FindKDE4Internal.cmake b/modules/FindKDE4Internal.cmake
index 62185afd..b02b1324 100644
--- a/modules/FindKDE4Internal.cmake
+++ b/modules/FindKDE4Internal.cmake
@@ -177,7 +177,6 @@
# _KDE4_PLATFORM_INCLUDE_DIRS is used only internally
# _KDE4_PLATFORM_DEFINITIONS is used only internally
-
cmake_minimum_required(VERSION 2.4.0 FATAL_ERROR)
set(QT_MIN_VERSION "4.1.1")
@@ -281,6 +280,50 @@ else(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h)
set( _KDE4_KCONFIG_COMPILER_DEP)
set( _KDE4_MAKEKDEWIDGETS_DEP)
+ # Check the version of kde. KDE4_KDECONFIG_EXECUTABLE was set by FindKDE4
+ EXEC_PROGRAM(${KDE4_KDECONFIG_EXECUTABLE} ARGS "--version" OUTPUT_VARIABLE kdeconfig_output )
+
+ STRING(REGEX MATCH "KDE: [0-9]+\\.[0-9]+\\.[0-9]+" KDEVERSION "${kdeconfig_output}")
+ IF (KDEVERSION)
+
+ # avoid porting against kdelibs trunk
+ string(REGEX MATCH "DONTPORT" _match "${kdeconfig_output}")
+ if (_match)
+ message ( FATAL_ERROR "ERROR: don't port against this version of kdelibs! Use /branches/work/kdelibs4_snapshot instead!!" )
+ endif (_match)
+
+
+ # we need at least this version:
+ IF (NOT KDE_MIN_VERSION)
+ SET(KDE_MIN_VERSION "3.9.0")
+ ENDIF (NOT KDE_MIN_VERSION)
+
+ #message(STATUS "KDE_MIN_VERSION=${KDE_MIN_VERSION} found ${KDEVERSION}")
+
+ # now parse the parts of the user given version string into variables
+ STRING(REGEX REPLACE "([0-9]+)\\.[0-9]+\\.[0-9]+" "\\1" req_kde_major_vers "${KDE_MIN_VERSION}")
+ STRING(REGEX REPLACE "[0-9]+\\.([0-9])+\\.[0-9]+" "\\1" req_kde_minor_vers "${KDE_MIN_VERSION}")
+ STRING(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" req_kde_patch_vers "${KDE_MIN_VERSION}")
+
+ # and now the version string given by kde-config
+ STRING(REGEX REPLACE "KDE: ([0-9]+)\\.[0-9]+\\.[0-9]+.*" "\\1" found_kde_major_vers "${KDEVERSION}")
+ STRING(REGEX REPLACE "KDE: [0-9]+\\.([0-9])+\\.[0-9]+.*" "\\1" found_kde_minor_vers "${KDEVERSION}")
+ STRING(REGEX REPLACE "KDE: [0-9]+\\.[0-9]+\\.([0-9]+).*" "\\1" found_kde_patch_vers "${KDEVERSION}")
+
+ # compute an overall version number which can be compared at once
+ MATH(EXPR req_vers "${req_kde_major_vers}*10000 + ${req_kde_minor_vers}*100 + ${req_kde_patch_vers}")
+ MATH(EXPR found_vers "${found_kde_major_vers}*10000 + ${found_kde_minor_vers}*100 + ${found_kde_patch_vers}")
+
+ IF (found_vers LESS req_vers)
+ SET(KDE4_FOUND FALSE)
+ SET(KDE4_INSTALLED_VERSION_TOO_OLD TRUE)
+ ENDIF (found_vers LESS req_vers)
+
+ ELSE (KDEVERSION)
+ message(FATAL_ERROR "Couldn't parse KDE version string from the kde-config output:\n${kdeconfig_output}")
+ ENDIF (KDEVERSION)
+
+
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib )
get_filename_component( kde_cmake_module_dir ${CMAKE_CURRENT_LIST_FILE} PATH)
@@ -423,13 +466,6 @@ else(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h)
find_program(KDE4_MAKEKDEWIDGETS_EXECUTABLE NAME makekdewidgets )
endif (NOT KDE4_MAKEKDEWIDGETS_EXECUTABLE)
- # avoid porting against kdelibs trunk
- file(READ ${KDE4_INCLUDE_DIR}/kdeversion.h _contents)
- string(REGEX MATCHALL "DONTPORT" _match "${_contents}")
- if (_match)
- message ( FATAL_ERROR "Don't port against this version of kdelibs! Use /branches/work/kdelibs4_snapshot instead!!" )
- endif (_match)
-
endif(EXISTS ${CMAKE_SOURCE_DIR}/kdecore/kglobal.h)
@@ -586,11 +622,10 @@ include(KDE4Macros)
# decide whether KDE4 has been found
-if (KDE4_INCLUDE_DIR AND KDE4_LIB_DIR AND KDE4_DCOPIDL_EXECUTABLE AND KDE4_DCOPIDL2CPP_EXECUTABLE AND KDE4_KCFGC_EXECUTABLE)
+set(KDE4_FOUND FALSE)
+if (KDE4_INCLUDE_DIR AND KDE4_LIB_DIR AND KDE4_DCOPIDL_EXECUTABLE AND KDE4_DCOPIDL2CPP_EXECUTABLE AND KDE4_KCFGC_EXECUTABLE AND NOT KDE4_INSTALLED_VERSION_TOO_OLD)
set(KDE4_FOUND TRUE)
-else (KDE4_INCLUDE_DIR AND KDE4_LIB_DIR AND KDE4_DCOPIDL_EXECUTABLE AND KDE4_DCOPIDL2CPP_EXECUTABLE AND KDE4_KCFGC_EXECUTABLE)
- set(KDE4_FOUND FALSE)
-endif (KDE4_INCLUDE_DIR AND KDE4_LIB_DIR AND KDE4_DCOPIDL_EXECUTABLE AND KDE4_DCOPIDL2CPP_EXECUTABLE AND KDE4_KCFGC_EXECUTABLE)
+endif (KDE4_INCLUDE_DIR AND KDE4_LIB_DIR AND KDE4_DCOPIDL_EXECUTABLE AND KDE4_DCOPIDL2CPP_EXECUTABLE AND KDE4_KCFGC_EXECUTABLE AND NOT KDE4_INSTALLED_VERSION_TOO_OLD)
macro (KDE4_PRINT_RESULTS)
@@ -633,7 +668,11 @@ endmacro (KDE4_PRINT_RESULTS)
if (KDE4Internal_FIND_REQUIRED AND NOT KDE4_FOUND)
#bail out if something wasn't found
kde4_print_results()
- message(FATAL_ERROR "Could NOT find everything required for compiling KDE 4 programs")
+ if (KDE4_INSTALLED_VERSION_TOO_OLD)
+ message(FATAL_ERROR "ERROR: the installed kdelibs version ${KDEVERSION} is too old, at least version ${KDE_MIN_VERSION} is required")
+ else (KDE4_INSTALLED_VERSION_TOO_OLD)
+ message(FATAL_ERROR "ERROR: could NOT find everything required for compiling KDE 4 programs")
+ endif (KDE4_INSTALLED_VERSION_TOO_OLD)
endif (KDE4Internal_FIND_REQUIRED AND NOT KDE4_FOUND)