Revision control
Copy as Markdown
include(${CMAKE_CURRENT_LIST_DIR}/3rdparty/cmake/QtRunCMakeTestHelpers.cmake)
if(CMAKE_VERSION VERSION_LESS 3.17.0)
set(CMAKE_CURRENT_FUNCTION_LIST_DIR "${CMAKE_CURRENT_LIST_DIR}")
endif()
function(qt_internal_add_RunCMake_test test)
# Add the common Qt specific setups
set(common_args
"-DQt6_DIR=${Qt6_DIR}"
"-D_Qt6CTestMacros=${_Qt6CTestMacros}"
"-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_FUNCTION_LIST_DIR}"
)
# Set some compatibility variables that the original add_RunCMake_test expects
set(CMAKE_CMAKE_COMMAND "${CMAKE_COMMAND}")
# Get test dir, like add_RunCMake_test does.
if("${ARGV1}" STREQUAL "TEST_DIR")
if("${ARGV2}" STREQUAL "")
message(FATAL_ERROR "Invalid TEST_DIR value given.")
endif()
set(test_dir ${ARGV2})
else()
set(test_dir ${test})
endif()
# Get the path to the original file that add_RunCMake_test would run.
set(script_path_to_include "${CMAKE_CURRENT_SOURCE_DIR}/${test_dir}/RunCMakeTest.cmake")
# Create a wrapper script so we respect build test skip regex.
set(testname "RunCMake.${test}")
set(wrapper_file "${CMAKE_CURRENT_BINARY_DIR}/run_cmake_test_${testname}.cmake")
string(JOIN "\n" pre_run_code ${_qt_internal_skip_build_test_pre_run})
set(android_code "")
if(ANDROID)
qt_internal_get_cmake_policy_version_minimum(ANDROID version)
string(APPEND android_code "
# Avoid cmake policy deprecation warnings with older android NDKs appearing in stderr, which
# causes test failures if the test doesn't set
# set(RunCMake_TEST_OUTPUT_MERGE 1)
# to avoid stderr being polluted.
if(NOT QT_NO_SET_RUN_CMAKE_TESTS_CMAKE_POLICY_VERSION_MINIMUM)
set(ENV{CMAKE_POLICY_VERSION_MINIMUM} ${version})
endif()")
endif()
_qt_internal_configure_file(CONFIGURE
OUTPUT "${wrapper_file}"
CONTENT "
${pre_run_code}
${android_code}
include(\"${script_path_to_include}\")
")
# Let add_RunCMake_test know it should use the wrapper file via outer-scope variable.
set(QT_RUN_CMAKE_SCRIPT_PATH "${wrapper_file}")
add_RunCMake_test("${test}" ${common_args} ${ARGN})
set_tests_properties("${testname}" PROPERTIES
SKIP_REGULAR_EXPRESSION "${_qt_internal_skip_build_test_regex}")
endfunction()