[runtimes] Use a response file for runtimes test suites

We don't know which test suites are going to be included by runtimes
builds so we cannot include those before running the sub-build, but
that's not possible during the LLVM build configuration. We instead use
a response file that's populated by the runtimes build as a level of
indirection.

This addresses the issue described in:
https://discourse.llvm.org/t/cmake-regeneration-is-broken/62788

Differential Revision: https://reviews.llvm.org/D132438

(cherry picked from commit 992e10a3fce41255e4b11782f51d0f4b26dca14d)
This commit is contained in:
Petr Hosek 2022-08-18 08:25:13 +00:00 committed by Tobias Hieta
parent 427e1ea3e7
commit 3a481d4491
3 changed files with 8 additions and 23 deletions

View file

@ -219,13 +219,7 @@ function(runtime_default_target)
endforeach() endforeach()
if(LLVM_INCLUDE_TESTS) if(LLVM_INCLUDE_TESTS)
include(${LLVM_BINARY_DIR}/runtimes/Tests.cmake OPTIONAL RESULT_VARIABLE have_tests) set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES "@${LLVM_BINARY_DIR}/runtimes/Tests.rsp")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${LLVM_BINARY_DIR}/runtimes/Tests.cmake)
if(have_tests)
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES ${SUB_LIT_TESTSUITES})
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_PARAMS ${SUB_LIT_PARAMS})
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_EXTRA_ARGS ${SUB_LIT_EXTRA_ARGS})
endif()
list(APPEND test_targets runtimes-test-depends check-runtimes) list(APPEND test_targets runtimes-test-depends check-runtimes)
endif() endif()
@ -301,13 +295,7 @@ function(runtime_register_target name target)
endforeach() endforeach()
if(LLVM_INCLUDE_TESTS) if(LLVM_INCLUDE_TESTS)
include(${LLVM_BINARY_DIR}/runtimes/${name}/Tests.cmake OPTIONAL RESULT_VARIABLE have_tests) set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES "@${LLVM_BINARY_DIR}/runtimes/${name}/Tests.rsp")
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${LLVM_BINARY_DIR}/runtimes/${name}/Tests.cmake)
if(have_tests)
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_TESTSUITES ${SUB_LIT_TESTSUITES})
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_PARAMS ${SUB_LIT_PARAMS})
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_LIT_EXTRA_ARGS ${SUB_LIT_EXTRA_ARGS})
endif()
set(runtimes-test-depends-${name} runtimes-test-depends) set(runtimes-test-depends-${name} runtimes-test-depends)
set(check-runtimes-${name} check-runtimes) set(check-runtimes-${name} check-runtimes)
list(APPEND ${name}_test_targets runtimes-test-depends-${name} check-runtimes-${name}) list(APPEND ${name}_test_targets runtimes-test-depends-${name} check-runtimes-${name})
@ -497,5 +485,7 @@ if(runtimes)
foreach(target ${test_targets} ${SUB_CHECK_TARGETS}) foreach(target ${test_targets} ${SUB_CHECK_TARGETS})
add_dependencies(${target} ${RUNTIMES_TEST_DEPENDS}) add_dependencies(${target} ${RUNTIMES_TEST_DEPENDS})
endforeach() endforeach()
set_property(GLOBAL APPEND PROPERTY LLVM_ALL_ADDITIONAL_TEST_TARGETS runtimes ${RUNTIMES_TEST_DEPENDS})
endif() endif()
endif() endif()

View file

@ -244,14 +244,12 @@ if(LLVM_INCLUDE_TESTS)
${CMAKE_CURRENT_BINARY_DIR}/llvm-lit) ${CMAKE_CURRENT_BINARY_DIR}/llvm-lit)
endif() endif()
get_property(LLVM_RUNTIMES_LIT_TESTSUITES GLOBAL PROPERTY LLVM_RUNTIMES_LIT_TESTSUITES)
string(REPLACE ";" "\n" LLVM_RUNTIMES_LIT_TESTSUITES "${LLVM_RUNTIMES_LIT_TESTSUITES}")
if(LLVM_RUNTIMES_TARGET) if(LLVM_RUNTIMES_TARGET)
configure_file( file(WRITE ${LLVM_BINARY_DIR}/runtimes/${LLVM_RUNTIMES_TARGET}/Tests.rsp ${LLVM_RUNTIMES_LIT_TESTSUITES})
${CMAKE_CURRENT_SOURCE_DIR}/Tests.cmake.in
${LLVM_BINARY_DIR}/runtimes/${LLVM_RUNTIMES_TARGET}/Tests.cmake)
else() else()
configure_file( file(WRITE ${LLVM_BINARY_DIR}/runtimes/Tests.rsp ${LLVM_RUNTIMES_LIT_TESTSUITES})
${CMAKE_CURRENT_SOURCE_DIR}/Tests.cmake.in
${LLVM_BINARY_DIR}/runtimes/Tests.cmake)
endif() endif()
endif() endif()

View file

@ -1,3 +0,0 @@
set(SUB_LIT_TESTSUITES @LLVM_RUNTIMES_LIT_TESTSUITES@)
set(SUB_LIT_PARAMS @LLVM_RUNTIMES_LIT_PARAMS@)
set(SUB_LIT_EXTRA_ARGS @LLVM_RUNTIMES_LIT_EXTRA_ARGS@)