[bootstrap] Allow passing options to sub-builds for all targets

This patch makes it possible to pass a CMake option to one of the runtimes
for all targets being built. Basically, any option that starts with the
name of a runtime project being built will be forwarded as-is to the
sub-build. This is useful for customizing a sub-build for all targets.

Differential Revision: https://reviews.llvm.org/D121822
This commit is contained in:
Louis Dionne 2022-03-16 12:35:35 -04:00
parent 523914c20d
commit 240e06dfe7
2 changed files with 12 additions and 1 deletions

View File

@ -462,7 +462,7 @@ bootstrapping-build)
-DLLVM_TARGETS_TO_BUILD="host" \
-DRUNTIMES_BUILD_ALLOW_DARWIN=ON \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DRUNTIMES_LIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
-DLIBUNWIND_TEST_CONFIG="llvm-libunwind-shared.cfg.in"
echo "+++ Running the libc++ and libc++abi tests"
${NINJA} -C "${BUILD_DIR}" check-runtimes

View File

@ -340,6 +340,17 @@ function(runtime_register_target name target)
endforeach()
endif()
# If we're passed any option like <project>_FOO, pass it through to the sub-builds.
foreach(runtime ${LLVM_ENABLE_RUNTIMES})
string(TOUPPER "${runtime}" runtime_upper)
foreach(variableName ${variableNames})
if (variableName MATCHES "^${runtime_upper}_.+")
string(REPLACE ";" "|" escaped_value "${${variableName}}")
list(APPEND ${name}_extra_args "-D${variableName}=${escaped_value}")
endif()
endforeach()
endforeach()
if(NOT RUNTIMES_${name}_LLVM_ENABLE_RUNTIMES AND NOT RUNTIMES_${target}_LLVM_ENABLE_RUNTIMES)
string(REPLACE ";" "|" LLVM_ENABLE_RUNTIMES_PASSTHROUGH "${LLVM_ENABLE_RUNTIMES}")
list(APPEND ${name}_extra_args -DLLVM_ENABLE_RUNTIMES=${LLVM_ENABLE_RUNTIMES_PASSTHROUGH})