diff options
author | Stephen Kelly <stephen.kelly@kdab.com> | 2013-03-27 17:47:40 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-05 14:20:39 +0200 |
commit | 30d01db3a59f40af2352aeea0c4ce3cc79721975 (patch) | |
tree | c5097c9947df5bdaf7e5d3d5add7e3f20c64ef79 | |
parent | 6c879b9b7c5099455a29c95b24d6cb7e69baff99 (diff) |
Test that the CMake files create appropriate version variables.
Change-Id: I1d8061302fbb8494b5ae31e20a644745fe969f10
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Brad King <brad.king@kitware.com>
Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
-rw-r--r-- | mkspecs/features/ctest_testcase.prf | 20 | ||||
-rw-r--r-- | src/corelib/Qt5CTestMacros.cmake | 29 | ||||
-rw-r--r-- | tests/auto/cmake/cmake.pro | 10 |
3 files changed, 57 insertions, 2 deletions
diff --git a/mkspecs/features/ctest_testcase.prf b/mkspecs/features/ctest_testcase.prf index 79adde3446..7faf738d6e 100644 --- a/mkspecs/features/ctest_testcase.prf +++ b/mkspecs/features/ctest_testcase.prf @@ -56,9 +56,27 @@ isEmpty(CMAKE_VERSION) { SET = set equals(QMAKE_DIR_SEP, "/"):SET = export + CMAKE_MODULE_VERSIONS = + CMAKE_MODULES_UNDER_TEST = + for (MODULE_UNDER_TEST, CMAKE_QT_MODULES_UNDER_TEST) { + CMAKE_NAME = $$cmakeModuleName($$MODULE_UNDER_TEST) + CMAKE_MODULE_VERSIONS += \ + -DCMAKE_$${CMAKE_NAME}_MODULE_MAJOR_VERSION=$$eval(QT.$${MODULE_UNDER_TEST}.MAJOR_VERSION) \ + -DCMAKE_$${CMAKE_NAME}_MODULE_MINOR_VERSION=$$eval(QT.$${MODULE_UNDER_TEST}.MINOR_VERSION) \ + -DCMAKE_$${CMAKE_NAME}_MODULE_PATCH_VERSION=$$eval(QT.$${MODULE_UNDER_TEST}.PATCH_VERSION) + CMAKE_MODULES_UNDER_TEST += $$CMAKE_NAME + } + CMAKE_MODULES_UNDER_TEST = $$join(CMAKE_MODULES_UNDER_TEST, ;) + check.commands = \ $(MKDIR) $$BUILD_DIR && cd $$BUILD_DIR && $$SET VERBOSE=1 && \ - cmake $$_PRO_FILE_PWD_ $$CMAKE_GENERATOR $$CMAKE_MODULE_DEFINES -DCMAKE_BUILD_TYPE=$${CMAKE_BUILD_TYPE} -DCMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH -DQt5_MODULE_TEST_DEPENDS=\"$${dependentmodules}\" && \ + cmake $$_PRO_FILE_PWD_ $$CMAKE_GENERATOR \ + $$CMAKE_MODULE_DEFINES \ + -DCMAKE_BUILD_TYPE=$${CMAKE_BUILD_TYPE} \ + -DCMAKE_PREFIX_PATH=$$CMAKE_PREFIX_PATH \ + -DQt5_MODULE_TEST_DEPENDS=\"$${dependentmodules}\" \ + $${CMAKE_MODULE_VERSIONS} \ + -DCMAKE_MODULES_UNDER_TEST=\"$$CMAKE_MODULES_UNDER_TEST\" && \ $(TESTRUNNER) ctest --output-on-failure } diff --git a/src/corelib/Qt5CTestMacros.cmake b/src/corelib/Qt5CTestMacros.cmake index 32af44a79d..e507c8009e 100644 --- a/src/corelib/Qt5CTestMacros.cmake +++ b/src/corelib/Qt5CTestMacros.cmake @@ -26,6 +26,14 @@ if (NO_DBUS) list(APPEND BUILD_OPTIONS_LIST "-DNO_DBUS=True") endif() +foreach(module ${CMAKE_MODULES_UNDER_TEST}) + list(APPEND BUILD_OPTIONS_LIST + "-DCMAKE_${module}_MODULE_MAJOR_VERSION=${CMAKE_${module}_MODULE_MAJOR_VERSION}" + "-DCMAKE_${module}_MODULE_MINOR_VERSION=${CMAKE_${module}_MODULE_MINOR_VERSION}" + "-DCMAKE_${module}_MODULE_PATCH_VERSION=${CMAKE_${module}_MODULE_PATCH_VERSION}" + ) +endforeach() + macro(expect_pass _dir) string(REPLACE "(" "_" testname "${_dir}") string(REPLACE ")" "_" testname "${testname}") @@ -95,11 +103,30 @@ function(test_module_includes) while(all_args) list(GET all_args 0 qtmodule) list(REMOVE_AT all_args 0 1) + + set(CMAKE_MODULE_VERSION ${CMAKE_${qtmodule}_MODULE_MAJOR_VERSION}.${CMAKE_${qtmodule}_MODULE_MINOR_VERSION}.${CMAKE_${qtmodule}_MODULE_PATCH_VERSION} ) + set(packages_string "${packages_string} find_package(Qt5${qtmodule} 5.0.0 REQUIRED) include_directories(\${Qt5${qtmodule}_INCLUDE_DIRS}) - add_definitions(\${Qt5${qtmodule}_DEFINITIONS})\n" + add_definitions(\${Qt5${qtmodule}_DEFINITIONS}) + + if(NOT \"\${Qt5${qtmodule}_VERSION}\" VERSION_EQUAL ${CMAKE_MODULE_VERSION}) + message(SEND_ERROR \"Qt5${qtmodule}_VERSION variable was not ${CMAKE_MODULE_VERSION}. Got \${Qt5${qtmodule}_VERSION} instead.\") + endif() + if(NOT \"\${Qt5${qtmodule}_VERSION_MAJOR}\" VERSION_EQUAL ${CMAKE_${qtmodule}_MODULE_MAJOR_VERSION}) + message(SEND_ERROR \"Qt5${qtmodule}_VERSION_MAJOR variable was not ${CMAKE_${qtmodule}_MODULE_MAJOR_VERSION}. Got \${Qt5${qtmodule}_VERSION_MAJOR} instead.\") + endif() + if(NOT \"\${Qt5${qtmodule}_VERSION_MINOR}\" VERSION_EQUAL ${CMAKE_${qtmodule}_MODULE_MINOR_VERSION}) + message(SEND_ERROR \"Qt5${qtmodule}_VERSION_MINOR variable was not ${CMAKE_${qtmodule}_MODULE_MINOR_VERSION}. Got \${Qt5${qtmodule}_VERSION_MINOR} instead.\") + endif() + if(NOT \"\${Qt5${qtmodule}_VERSION_PATCH}\" VERSION_EQUAL ${CMAKE_${qtmodule}_MODULE_PATCH_VERSION}) + message(SEND_ERROR \"Qt5${qtmodule}_VERSION_PATCH variable was not ${CMAKE_${qtmodule}_MODULE_PATCH_VERSION}. Got \${Qt5${qtmodule}_VERSION_PATCH} instead.\") + endif() + if(NOT \"\${Qt5${qtmodule}_VERSION_STRING}\" VERSION_EQUAL ${CMAKE_MODULE_VERSION}) + message(SEND_ERROR \"Qt5${qtmodule}_VERSION_STRING variable was not ${CMAKE_MODULE_VERSION}. Got \${Qt5${qtmodule}_VERSION_STRING} instead.\") + endif()\n" ) set(libraries_string "${libraries_string} Qt5::${qtmodule}") endwhile() diff --git a/tests/auto/cmake/cmake.pro b/tests/auto/cmake/cmake.pro index bf2dbcb772..715e710490 100644 --- a/tests/auto/cmake/cmake.pro +++ b/tests/auto/cmake/cmake.pro @@ -2,4 +2,14 @@ # Cause make to do nothing. TEMPLATE = subdirs +CMAKE_QT_MODULES_UNDER_TEST = core network xml sql testlib + +qtHaveModule(dbus): CMAKE_QT_MODULES_UNDER_TEST += dbus +qtHaveModule(gui): CMAKE_QT_MODULES_UNDER_TEST += gui +qtHaveModule(openglextensions): CMAKE_QT_MODULES_UNDER_TEST += openglextensions +qtHaveModule(widgets): CMAKE_QT_MODULES_UNDER_TEST += widgets +qtHaveModule(printsupport): CMAKE_QT_MODULES_UNDER_TEST += printsupport +qtHaveModule(opengl): CMAKE_QT_MODULES_UNDER_TEST += opengl +qtHaveModule(concurrent): CMAKE_QT_MODULES_UNDER_TEST += concurrent + CONFIG += ctest_testcase |