[clang-tools-extra] 685af3a - [clangd] Log environment variables that influence compilation at startup (#204990)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 22 06:41:27 PDT 2026
Author: Akshay Kumar Dubey
Date: 2026-06-22T09:41:22-04:00
New Revision: 685af3ab083c71c32172fb7116176b55a6c26b25
URL: https://github.com/llvm/llvm-project/commit/685af3ab083c71c32172fb7116176b55a6c26b25
DIFF: https://github.com/llvm/llvm-project/commit/685af3ab083c71c32172fb7116176b55a6c26b25.diff
LOG: [clangd] Log environment variables that influence compilation at startup (#204990)
When users face missing system include issues (especially on Windows),
it's difficult to diagnose whether the problem is caused by missing
environment variables like `INCLUDE`, `CPATH`, etc.
This patch logs the values of environment variables that influence how the
compiler finds headers and libraries, at startup alongside the existing
version/PID/argv logs. Only variables that are actually set are printed.
Variables logged:
- MSVC (set by vcvarsall.bat): `INCLUDE`, `LIB`, `LIBPATH`, `CL`, `_CL_`
- GCC/Clang: `CPATH`, `C_INCLUDE_PATH`, `CPLUS_INCLUDE_PATH`,
`OBJC_INCLUDE_PATH`, `LIBRARY_PATH`, `GCC_EXEC_PREFIX`
Fixes https://github.com/clangd/clangd/issues/2657
Added:
Modified:
clang-tools-extra/clangd/tool/ClangdMain.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp
index 549b1ae8d7980..13fe4d3911731 100644
--- a/clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -912,6 +912,26 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
log("argv[{0}]: {1}", I, argv[I]);
if (auto EnvFlags = llvm::sys::Process::GetEnv(FlagsEnvVar))
log("{0}: {1}", FlagsEnvVar, *EnvFlags);
+ // Log environment variables that influence how clangd finds system headers.
+ // This helps diagnose missing-include issues, especially on Windows.
+ for (const char *EnvVar : {
+ // MSVC environment variables (set by vcvarsall.bat)
+ "INCLUDE",
+ "LIB",
+ "LIBPATH",
+ "CL",
+ "_CL_",
+ // GCC/Clang environment variables
+ "CPATH",
+ "C_INCLUDE_PATH",
+ "CPLUS_INCLUDE_PATH",
+ "OBJC_INCLUDE_PATH",
+ "LIBRARY_PATH",
+ "GCC_EXEC_PREFIX",
+ }) {
+ if (auto Val = llvm::sys::Process::GetEnv(EnvVar))
+ log("Env {0}: {1}", EnvVar, *Val);
+ }
ClangdLSPServer::Options Opts;
Opts.UseDirBasedCDB = (CompileArgsFrom == FilesystemCompileArgs);
More information about the cfe-commits
mailing list