================ @@ -131,13 +138,65 @@ def parseScript(test, preamble): script += preamble script += scriptInTest + has_std_module = False + has_std_compat_module = False + for module in modules: + if module == "std": + has_std_module = True + elif module == "std.compat": + has_std_compat_module = True + else: + script.insert( + 0, + f"echo \"The module '{module}' is not valid, use 'std' or 'std.compat'\"", + ) + script.insert(1, "false") + return script + + if modules: + # This flag is needed for both modules. + moduleCompileFlags.append("-fprebuilt-module-path=%T") + + # Building the modules needs to happen before the other script commands + # are executed. Therefore the commands are added to the front of the + # list. + if has_std_compat_module: + script.insert( + 0, + "%dbg(MODULE std.compat) %{cxx} %{flags} %{compile_flags} " + "-Wno-reserved-module-identifier -Wno-reserved-user-defined-literal " + "--precompile -o %T/std.compat.pcm -c %{module}/std.compat.cppm", ---------------- ldionne wrote:
In a follow-up patch, I think we should rename this to `modules-dir`. In fact the other variables might need a renaming too: ```diff diff --git a/libcxx/test/configs/cmake-bridge.cfg.in b/libcxx/test/configs/cmake-bridge.cfg.in index 0e3c3040c964..93a7a9bb8129 100644 --- a/libcxx/test/configs/cmake-bridge.cfg.in +++ b/libcxx/test/configs/cmake-bridge.cfg.in @@ -25,12 +25,12 @@ config.test_exec_root = os.path.join('@CMAKE_BINARY_DIR@', 'test') # Add substitutions for bootstrapping the test suite configuration import shlex config.substitutions.append(('%{cxx}', shlex.quote('@CMAKE_CXX_COMPILER@'))) -config.substitutions.append(('%{libcxx}', '@LIBCXX_SOURCE_DIR@')) -config.substitutions.append(('%{include}', '@LIBCXX_GENERATED_INCLUDE_DIR@')) -config.substitutions.append(('%{target-include}', '@LIBCXX_GENERATED_INCLUDE_TARGET_DIR@')) -config.substitutions.append(('%{lib}', '@LIBCXX_LIBRARY_DIR@')) -config.substitutions.append(('%{module}', '@LIBCXX_GENERATED_MODULE_DIR@')) -config.substitutions.append(('%{test-tools}', '@LIBCXX_TEST_TOOLS_PATH@')) +config.substitutions.append(('%{libcxx-dir}', '@LIBCXX_SOURCE_DIR@')) +config.substitutions.append(('%{include-dir}', '@LIBCXX_GENERATED_INCLUDE_DIR@')) +config.substitutions.append(('%{target-include-dir}', '@LIBCXX_GENERATED_INCLUDE_TARGET_DIR@')) +config.substitutions.append(('%{lib-dir}', '@LIBCXX_LIBRARY_DIR@')) +config.substitutions.append(('%{modules-dir}', '@LIBCXX_GENERATED_MODULE_DIR@')) +config.substitutions.append(('%{test-tools-dir}', '@LIBCXX_TEST_TOOLS_PATH@')) # The test needs to manually rebuild the module. The compiler flags used in the # test need to be the same as the compiler flags used to generate the module. ``` This would make this a lot easier to read IMO. https://github.com/llvm/llvm-project/pull/76246 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits