From a8ff78d8b90d6f7a45c9586449986dadb65809c8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 6 Nov 2023 13:53:00 +0200 Subject: Fix basic issues with C++20 named modules support in Clang Note that modules support now require Clang 16 or later. --- libbuild2/cxx/init.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'libbuild2/cxx') diff --git a/libbuild2/cxx/init.cxx b/libbuild2/cxx/init.cxx index 0d4faf2..3023ad5 100644 --- a/libbuild2/cxx/init.cxx +++ b/libbuild2/cxx/init.cxx @@ -433,6 +433,8 @@ namespace build2 } case compiler_type::clang: { + // @@ TMP: revise + // // At the time of this writing, support for C++20 modules in // Clang is incomplete. And starting with Clang 9 (Apple Clang // 11.0.3), they are enabled by default in the C++2a mode which @@ -448,8 +450,16 @@ namespace build2 // if (modules.value) { + if (mj < 16) + { + fail << "support for C++ modules requires Clang 16 or later" << + info << "C++ compiler is " << ci.signature << + info << "required by " << project (rs) << '@' << rs; + } + + // See https://github.com/llvm/llvm-project/issues/71364 + // prepend ("-D__cpp_modules=201704"); // p0629r0 - mode.push_back ("-fmodules-ts"); // For the hack to work. modules = true; } -- cgit v1.1