
Projects can use the new command to request file API replies for the current run. No query files are generated, the query is tracked internally. Replies are created in the file system at generation time in the usual way. Fixes: #24951
74 lines
2.2 KiB
CMake
74 lines
2.2 KiB
CMake
include(RunCMake)
|
|
|
|
# Function called in *-check.cmake scripts to check api files.
|
|
function(check_api expect)
|
|
file(GLOB_RECURSE actual
|
|
LIST_DIRECTORIES TRUE
|
|
RELATIVE ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1
|
|
${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/*
|
|
)
|
|
if(NOT "${actual}" MATCHES "${expect}")
|
|
set(RunCMake_TEST_FAILED "API files:
|
|
${actual}
|
|
do not match what we expected:
|
|
${expect}
|
|
in directory:
|
|
${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1" PARENT_SCOPE)
|
|
endif()
|
|
endfunction()
|
|
|
|
function(check_python case)
|
|
if(RunCMake_TEST_FAILED OR NOT Python_EXECUTABLE)
|
|
return()
|
|
endif()
|
|
file(GLOB index ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/reply/index-*.json)
|
|
execute_process(
|
|
COMMAND ${Python_EXECUTABLE} "${RunCMake_SOURCE_DIR}/${case}-check.py" "${index}" "${CMAKE_CXX_COMPILER_ID}"
|
|
"${RunCMake_TEST_BINARY_DIR}"
|
|
RESULT_VARIABLE result
|
|
OUTPUT_VARIABLE output
|
|
ERROR_VARIABLE output
|
|
)
|
|
if(NOT result EQUAL 0)
|
|
string(REPLACE "\n" "\n " output " ${output}")
|
|
set(RunCMake_TEST_FAILED "Unexpected index:\n${output}" PARENT_SCOPE)
|
|
endif()
|
|
endfunction()
|
|
|
|
if(RunCMake_GENERATOR_IS_MULTI_CONFIG)
|
|
set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release\\;MinSizeRel\\;RelWithDebInfo")
|
|
endif()
|
|
|
|
if(JsonCpp_VERSION_STRING AND JsonCpp_VERSION_STRING VERSION_LESS 1.7.5)
|
|
set(ENV{CMake_JSONCPP_PRE_1_7_5} 1)
|
|
endif()
|
|
|
|
run_cmake(Nothing)
|
|
run_cmake(Empty)
|
|
run_cmake(EmptyClient)
|
|
run_cmake(Stale)
|
|
run_cmake(SharedStateless)
|
|
run_cmake(ClientStateless)
|
|
run_cmake(MixedStateless)
|
|
run_cmake(DuplicateStateless)
|
|
run_cmake(ClientStateful)
|
|
run_cmake(ProjectQueryGood)
|
|
run_cmake(ProjectQueryBad)
|
|
|
|
function(run_object object)
|
|
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${object}-build)
|
|
list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0118=NEW)
|
|
run_cmake(${object})
|
|
list(POP_BACK RunCMake_TEST_OPTIONS)
|
|
set(RunCMake_TEST_NO_CLEAN 1)
|
|
run_cmake_command(${object}-SharedStateless ${CMAKE_COMMAND} .)
|
|
run_cmake_command(${object}-ClientStateless ${CMAKE_COMMAND} .)
|
|
run_cmake_command(${object}-ClientStateful ${CMAKE_COMMAND} .)
|
|
endfunction()
|
|
|
|
run_object(codemodel-v2)
|
|
run_object(configureLog-v1)
|
|
run_object(cache-v2)
|
|
run_object(cmakeFiles-v1)
|
|
run_object(toolchains-v1)
|