diff --git a/compiler-rt/cmake/Modules/AddCompilerRT.cmake b/compiler-rt/cmake/Modules/AddCompilerRT.cmake --- a/compiler-rt/cmake/Modules/AddCompilerRT.cmake +++ b/compiler-rt/cmake/Modules/AddCompilerRT.cmake @@ -598,6 +598,7 @@ CMAKE_OBJCOPY CMAKE_OBJDUMP CMAKE_STRIP + CMAKE_READELF CMAKE_SYSROOT LIBCXX_HAS_MUSL_LIBC PYTHON_EXECUTABLE diff --git a/compiler-rt/test/CMakeLists.txt b/compiler-rt/test/CMakeLists.txt --- a/compiler-rt/test/CMakeLists.txt +++ b/compiler-rt/test/CMakeLists.txt @@ -1,5 +1,6 @@ # Needed for lit support in standalone builds. include(AddLLVM) +include(LLVMExternalProjectUtils) option(COMPILER_RT_TEST_STANDALONE_BUILD_LIBS "When set to ON and testing in a standalone build, test the runtime \ @@ -36,6 +37,21 @@ if (WIN32) list(APPEND SANITIZER_COMMON_LIT_TEST_DEPS KillTheDoctor) endif() + elseif(COMPILER_RT_STANDALONE_BUILD) + # These are tools needed for testing in a standalone/runtimes build, but we + # don't have a corresponding CMAKE_* flag for. These will need to be rebuilt. + set(LIT_ONLY_TOOLS FileCheck count not clang-resource-headers) + foreach(dep ${LIT_ONLY_TOOLS}) + if (NOT TARGET ${dep}) + llvm_ExternalProject_BuildCmd(build_${dep} ${dep} ${BINARY_DIR}) + add_custom_target(${dep} + COMMAND ${build_${dep}} + WORKING_DIRECTORY ${BINARY_DIR} + VERBATIM USES_TERMINAL) + endif() + endforeach() + + list(APPEND SANITIZER_COMMON_LIT_TEST_DEPS ${LIT_ONLY_TOOLS}) endif() # Tests use C++ standard library headers. if (TARGET cxx-headers OR HAVE_LIBCXX)