[clang] [clang][modules] Print library module manifest path. (PR #76451)

Mark de Wever via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 29 08:30:34 PST 2023


================
@@ -2164,6 +2164,12 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
     return false;
   }
 
+  if (C.getArgs().hasArg(options::OPT_print_library_module_manifest_path)) {
+    llvm::outs() << "module: ="
----------------
mordante wrote:

> I'd like there to be some distinction between "modules not present because Clang was built without them" and "modules not present but expected to be there" (maybe distro packagers split things and the modules package is missing?).

However that is hard to do and might be wrong. Currently stdlibc++ does not ship modules. I don't know how clang-18 will ever find them stdlibc++-15 since it's unknown whether that version will have modules nor do I know the name of their manifest file.

Same for Clang and libc++,  Clang has no idea whether libc++ was build with or without modules. They are build independently. So it would need to look at the version information of libc++ to detect whether it's libc++-18 or earlier. Earlier never has the manifest.

IMO tool vendors should look at the output of this command; it either contains a path or a single error value. If it's the error value they should not attempt to build the std module.

What would be the benefit of different errors @mathstuf ? Especially considering the above that it's hard to determine the proper error message.

https://github.com/llvm/llvm-project/pull/76451


More information about the cfe-commits mailing list