diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2021-11-26 17:45:00 +0100 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2021-12-02 16:34:22 +0100 |
commit | 7a6dd6084cb6dc3d8ad0476d9630ad7c575bca19 (patch) | |
tree | 1bfa3d18782fa57791f0f0d1d3524ff32c7076b6 /src/corelib/Qt6CTestMacros.cmake | |
parent | d22bafe3559afef1dcab1c9076f82ac224d012b6 (diff) |
Replace BUILD_OPTIONS_LIST variable by the getter function
Encapsulate configuration options in a function and use it instead of
a globally defined variable.
Pick-to: 6.2
Change-Id: I5c69c207788fe069fdd046b68a6bc58aa16e71b4
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'src/corelib/Qt6CTestMacros.cmake')
-rw-r--r-- | src/corelib/Qt6CTestMacros.cmake | 124 |
1 files changed, 70 insertions, 54 deletions
diff --git a/src/corelib/Qt6CTestMacros.cmake b/src/corelib/Qt6CTestMacros.cmake index 8b4e5c6e4b..24e7a737e9 100644 --- a/src/corelib/Qt6CTestMacros.cmake +++ b/src/corelib/Qt6CTestMacros.cmake @@ -17,57 +17,69 @@ foreach(_mod ${CMAKE_MODULES_UNDER_TEST}) message("CMAKE_${_mod}_MODULE_PATCH_VERSION: ${CMAKE_${_mod}_MODULE_PATCH_VERSION}") endforeach() -set(BUILD_OPTIONS_LIST) - -if (CMAKE_C_COMPILER AND NOT CMAKE_CROSSCOMPILING) - list(APPEND BUILD_OPTIONS_LIST "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}") -endif() - -if (CMAKE_CXX_COMPILER AND NOT CMAKE_CROSSCOMPILING) - list(APPEND BUILD_OPTIONS_LIST "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") -endif() - -if (CMAKE_BUILD_TYPE) - list(APPEND BUILD_OPTIONS_LIST "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") -endif() - -if (CMAKE_TOOLCHAIN_FILE) - file(TO_CMAKE_PATH "${CMAKE_TOOLCHAIN_FILE}" _CMAKE_TOOLCHAIN_FILE) - list(APPEND BUILD_OPTIONS_LIST "-DCMAKE_TOOLCHAIN_FILE=${_CMAKE_TOOLCHAIN_FILE}") -endif() - -if (CMAKE_VERBOSE_MAKEFILE) - list(APPEND BUILD_OPTIONS_LIST "-DCMAKE_VERBOSE_MAKEFILE=1") -endif() - -if (NO_GUI) - list(APPEND BUILD_OPTIONS_LIST "-DNO_GUI=True") -endif() -if (NO_WIDGETS) - list(APPEND BUILD_OPTIONS_LIST "-DNO_WIDGETS=True") -endif() -if (NO_DBUS) - list(APPEND BUILD_OPTIONS_LIST "-DNO_DBUS=True") -endif() - -if(APPLE AND CMAKE_OSX_ARCHITECTURES) - list(LENGTH CMAKE_OSX_ARCHITECTURES osx_arch_count) - - # When Qt is built as universal config (macOS or iOS), force CMake build tests to build one - # architecture instead of all of them, because the build machine that builds the cmake tests - # might not have a universal SDK installed. - if(osx_arch_count GREATER 1) - list(APPEND BUILD_OPTIONS_LIST "-DQT_FORCE_SINGLE_QT_OSX_ARCHITECTURE=ON") - endif() -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() +function(_qt_internal_get_cmake_test_configure_options out_var) + set(option_list) + + if (CMAKE_C_COMPILER AND NOT CMAKE_CROSSCOMPILING) + list(APPEND option_list "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}") + endif() + + if (CMAKE_CXX_COMPILER AND NOT CMAKE_CROSSCOMPILING) + list(APPEND option_list "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") + endif() + + get_cmake_property(is_multi_config GENERATOR_IS_MULTI_CONFIG) + if(is_multi_config) + if(CMAKE_CONFIGURATION_TYPES) + string(REPLACE ";" "\;" configuration_types "${CMAKE_CONFIGURATION_TYPES}") + list(APPEND option_list "-DCMAKE_CONFIGURATION_TYPES=${configuration_types}") + endif() + else() + if(CMAKE_BUILD_TYPE) + list(APPEND option_list "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}") + endif() + endif() + + if (CMAKE_TOOLCHAIN_FILE) + file(TO_CMAKE_PATH "${CMAKE_TOOLCHAIN_FILE}" _CMAKE_TOOLCHAIN_FILE) + list(APPEND option_list "-DCMAKE_TOOLCHAIN_FILE=${_CMAKE_TOOLCHAIN_FILE}") + endif() + + if (CMAKE_VERBOSE_MAKEFILE) + list(APPEND option_list "-DCMAKE_VERBOSE_MAKEFILE=1") + endif() + + if (NO_GUI) + list(APPEND option_list "-DNO_GUI=True") + endif() + if (NO_WIDGETS) + list(APPEND option_list "-DNO_WIDGETS=True") + endif() + if (NO_DBUS) + list(APPEND option_list "-DNO_DBUS=True") + endif() + + if(APPLE AND CMAKE_OSX_ARCHITECTURES) + list(LENGTH CMAKE_OSX_ARCHITECTURES osx_arch_count) + + # When Qt is built as universal config (macOS or iOS), force CMake build tests to build one + # architecture instead of all of them, because the build machine that builds the cmake tests + # might not have a universal SDK installed. + if(osx_arch_count GREATER 1) + list(APPEND option_list "-DQT_FORCE_SINGLE_QT_OSX_ARCHITECTURE=ON") + endif() + endif() + + foreach(module ${CMAKE_MODULES_UNDER_TEST}) + list(APPEND option_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() + + set(${out_var} "${option_list}" PARENT_SCOPE) +endfunction() function(_qt_internal_set_up_test_run_environment testname) # This is copy-pasted from qt_add_test and adapted to the standalone project case. @@ -319,6 +331,7 @@ macro(_qt_internal_test_expect_pass _dir) ) endif() + _qt_internal_get_cmake_test_configure_options(option_list) set(ctest_command_args --build-and-test "${__expect_pass_source_dir}" @@ -328,7 +341,7 @@ macro(_qt_internal_test_expect_pass _dir) --build-generator "${generator}" --build-makeprogram "${make_program}" ${build_project} - --build-options "-DCMAKE_PREFIX_PATH=${__expect_pass_prefixes}" ${BUILD_OPTIONS_LIST} + --build-options "-DCMAKE_PREFIX_PATH=${__expect_pass_prefixes}" ${option_list} ${_ARGS_BUILD_OPTIONS} ${additional_configure_args} ${test_command} ) @@ -386,6 +399,8 @@ list(APPEND CMAKE_PREFIX_PATH \"${CMAKE_PREFIX_PATH}\") endif() " ) + + _qt_internal_get_cmake_test_configure_options(option_list) add_test(${testname} ${CMAKE_CTEST_COMMAND} --build-and-test "${CMAKE_CURRENT_BINARY_DIR}/failbuild/${_dir}" @@ -394,7 +409,7 @@ list(APPEND CMAKE_PREFIX_PATH \"${CMAKE_PREFIX_PATH}\") --build-generator "${CMAKE_GENERATOR}" --build-makeprogram "${CMAKE_MAKE_PROGRAM}" --build-project "${_dir}" - --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${BUILD_OPTIONS_LIST} + --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${option_list} ) endmacro() @@ -488,6 +503,7 @@ function(_qt_internal_test_module_includes) int main(int, char **) { ${instances_string} return 0; }\n" ) + _qt_internal_get_cmake_test_configure_options(option_list) add_test(module_includes ${CMAKE_CTEST_COMMAND} --build-and-test "${CMAKE_CURRENT_BINARY_DIR}/module_includes/" @@ -496,6 +512,6 @@ function(_qt_internal_test_module_includes) --build-generator "${CMAKE_GENERATOR}" --build-makeprogram "${CMAKE_MAKE_PROGRAM}" --build-project module_includes - --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${BUILD_OPTIONS_LIST} + --build-options "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" ${option_list} ) endfunction() |