[libc++] Simplify how we select modules flavors in the test suite (#66385)

This gets rid of the separate parameter enable_modules_lsv in favor of
adding a named option to the enable_modules parameter. The patch also
removes the getModuleFlag helper, which was just a really complicated
way of hardcoding "none".
This commit is contained in:
Louis Dionne 2023-09-18 09:37:18 -04:00 committed by GitHub
parent 06f9ffa050
commit d4d8f214a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 32 deletions

View File

@ -1,2 +1,2 @@
set(LIBCXX_TEST_PARAMS "enable_modules=clang;enable_modules_lsv=True" CACHE STRING "")
set(LIBCXX_TEST_PARAMS "enable_modules=clang-lsv" CACHE STRING "")
set(LIBCXXABI_TEST_PARAMS "${LIBCXX_TEST_PARAMS}" CACHE STRING "")

View File

@ -87,15 +87,6 @@ def getStdFlag(cfg, std):
return None
_allModules = ["none", "clang"]
def getModuleFlag(cfg, enable_modules):
if enable_modules in _allModules:
return enable_modules
return None
# fmt: off
DEFAULT_PARAMETERS = [
Parameter(
@ -128,32 +119,25 @@ DEFAULT_PARAMETERS = [
),
Parameter(
name="enable_modules",
choices=_allModules,
choices=["none", "clang", "clang-lsv"],
type=str,
help="Whether to build the test suite with modules enabled. Select "
"`clang` for Clang modules",
default=lambda cfg: next(s for s in _allModules if getModuleFlag(cfg, s)),
actions=lambda enable_modules: [
AddFeature("clang-modules-build"),
AddCompileFlag("-fmodules"),
AddCompileFlag("-fcxx-modules"), # AppleClang disregards -fmodules entirely when compiling C++. This enables modules for C++.
help="Whether to build the test suite with modules enabled. "
"Select `clang` for Clang modules, and 'clang-lsv' for Clang modules with Local Submodule Visibility.",
default="none",
actions=lambda modules: filter(None, [
AddFeature("clang-modules-build") if modules in ("clang", "clang-lsv") else None,
# Note: AppleClang disregards -fmodules entirely when compiling C++, so we also pass -fcxx-modules
# to enable modules for C++.
AddCompileFlag("-fmodules -fcxx-modules") if modules in ("clang", "clang-lsv") else None,
# Note: We use a custom modules cache path to make sure that we don't reuse
# the default one, which can be shared across CI builds with different
# configurations.
AddCompileFlag(lambda cfg: f"-fmodules-cache-path={cfg.test_exec_root}/ModuleCache"),
]
if enable_modules == "clang"
else [],
),
Parameter(
name="enable_modules_lsv",
choices=[True, False],
type=bool,
default=False,
help="Whether to enable Local Submodule Visibility in the Modules build.",
actions=lambda lsv: [] if not lsv else [
AddCompileFlag("-Xclang -fmodules-local-submodule-visibility"),
],
AddCompileFlag(lambda cfg: f"-fmodules-cache-path={cfg.test_exec_root}/ModuleCache") if modules in ("clang", "clang-lsv") else None,
AddCompileFlag("-Xclang -fmodules-local-submodule-visibility") if modules == "clang-lsv" else None,
])
),
Parameter(
name="enable_exceptions",