1include(RunCMake) 2 3# Function called in *-check.cmake scripts to check api files. 4function(check_api expect) 5 file(GLOB_RECURSE actual 6 LIST_DIRECTORIES TRUE 7 RELATIVE ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1 8 ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/* 9 ) 10 if(NOT "${actual}" MATCHES "${expect}") 11 set(RunCMake_TEST_FAILED "API files: 12 ${actual} 13do not match what we expected: 14 ${expect} 15in directory: 16 ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1" PARENT_SCOPE) 17 endif() 18endfunction() 19 20function(check_python case) 21 if(RunCMake_TEST_FAILED OR NOT PYTHON_EXECUTABLE) 22 return() 23 endif() 24 file(GLOB index ${RunCMake_TEST_BINARY_DIR}/.cmake/api/v1/reply/index-*.json) 25 execute_process( 26 COMMAND ${PYTHON_EXECUTABLE} "${RunCMake_SOURCE_DIR}/${case}-check.py" "${index}" "${CMAKE_CXX_COMPILER_ID}" 27 "${RunCMake_TEST_BINARY_DIR}" 28 RESULT_VARIABLE result 29 OUTPUT_VARIABLE output 30 ERROR_VARIABLE output 31 ) 32 if(NOT result EQUAL 0) 33 string(REPLACE "\n" "\n " output " ${output}") 34 set(RunCMake_TEST_FAILED "Unexpected index:\n${output}" PARENT_SCOPE) 35 endif() 36endfunction() 37 38if(RunCMake_GENERATOR_IS_MULTI_CONFIG) 39 set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release\\;MinSizeRel\\;RelWithDebInfo") 40endif() 41 42run_cmake(Nothing) 43run_cmake(Empty) 44run_cmake(EmptyClient) 45run_cmake(Stale) 46run_cmake(SharedStateless) 47run_cmake(ClientStateless) 48run_cmake(MixedStateless) 49run_cmake(DuplicateStateless) 50run_cmake(ClientStateful) 51 52function(run_object object) 53 set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${object}-build) 54 list(APPEND RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0118=NEW) 55 run_cmake(${object}) 56 list(POP_BACK RunCMake_TEST_OPTIONS) 57 set(RunCMake_TEST_NO_CLEAN 1) 58 run_cmake_command(${object}-SharedStateless ${CMAKE_COMMAND} .) 59 run_cmake_command(${object}-ClientStateless ${CMAKE_COMMAND} .) 60 run_cmake_command(${object}-ClientStateful ${CMAKE_COMMAND} .) 61endfunction() 62 63run_object(codemodel-v2) 64run_object(cache-v2) 65run_object(cmakeFiles-v1) 66run_object(toolchains-v1) 67