llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-tools-extra Author: Duncan Ogilvie (mrexodia) <details> <summary>Changes</summary> When using `zig c++` for cross-compiling `clangd` removes the zig command from the command line. Because of this the system include extraction fails. This change detects that the driver executable is named `zig` and adds `cc` or `c++` back into the command line. I don't think there is infrastructure to test this (since it would involve executing the `zig` executable), so I did not add any tests. --- Full diff: https://github.com/llvm/llvm-project/pull/100759.diff 1 Files Affected: - (modified) clang-tools-extra/clangd/SystemIncludeExtractor.cpp (+11-1) ``````````diff diff --git a/clang-tools-extra/clangd/SystemIncludeExtractor.cpp b/clang-tools-extra/clangd/SystemIncludeExtractor.cpp index d4b9b173d149d..c01dbea9c0c12 100644 --- a/clang-tools-extra/clangd/SystemIncludeExtractor.cpp +++ b/clang-tools-extra/clangd/SystemIncludeExtractor.cpp @@ -389,7 +389,17 @@ extractSystemIncludesAndTarget(const DriverArgs &InputArgs, return std::nullopt; } - llvm::SmallVector<llvm::StringRef> Args = {Driver, "-E", "-v"}; + llvm::SmallVector<llvm::StringRef> Args = {Driver}; + // Support the zig compiler wrapper + auto DriverExecutable = llvm::sys::path::stem(Driver); + if (DriverExecutable == "zig") { + if (InputArgs.Lang == "c") { + Args.push_back("cc"); + } else { + Args.push_back("c++"); + } + } + Args.append({"-E", "-v"}); Args.append(InputArgs.render()); // Input needs to go after Lang flags. Args.push_back("-"); `````````` </details> https://github.com/llvm/llvm-project/pull/100759 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits