[clang] [clang-tools-extra] [clangd] Disable PCH for libs that use gRPC (PR #185185)
Alexis Engelke via cfe-commits
cfe-commits at lists.llvm.org
Sat Mar 7 05:04:59 PST 2026
https://github.com/aengelke updated https://github.com/llvm/llvm-project/pull/185185
>From f0882faafe93401bdafccd85f11ba848ae777b23 Mon Sep 17 00:00:00 2001
From: Alexis Engelke <engelke at in.tum.de>
Date: Sat, 7 Mar 2026 12:50:13 +0000
Subject: [PATCH 1/3] [clangd] Disable PCH for libs that use gRPC
gRPC adds -pthread, which is incompatible with PCH without it.
At some point, we probably should generally switch from -lpthread to
-pthread, but until then, disable PCH for affected targets.
Fixes https://github.com/llvm/llvm-project/issues/184759.
---
clang-tools-extra/clangd/index/remote/CMakeLists.txt | 3 +++
.../clangd/index/remote/marshalling/CMakeLists.txt | 3 +++
clang-tools-extra/clangd/index/remote/monitor/CMakeLists.txt | 3 +++
clang-tools-extra/clangd/index/remote/server/CMakeLists.txt | 3 +++
clang/cmake/modules/AddGRPC.cmake | 5 ++++-
5 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/clang-tools-extra/clangd/index/remote/CMakeLists.txt b/clang-tools-extra/clangd/index/remote/CMakeLists.txt
index 28df71855a142..ef4d04b47dae2 100644
--- a/clang-tools-extra/clangd/index/remote/CMakeLists.txt
+++ b/clang-tools-extra/clangd/index/remote/CMakeLists.txt
@@ -32,6 +32,9 @@ if (CLANGD_ENABLE_REMOTE)
DEPENDS
clangdRemoteIndexProto
clangdRemoteIndexServiceProto
+
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
)
clang_target_link_libraries(clangdRemoteIndex
diff --git a/clang-tools-extra/clangd/index/remote/marshalling/CMakeLists.txt b/clang-tools-extra/clangd/index/remote/marshalling/CMakeLists.txt
index d7e37003e5f98..74963e838677c 100644
--- a/clang-tools-extra/clangd/index/remote/marshalling/CMakeLists.txt
+++ b/clang-tools-extra/clangd/index/remote/marshalling/CMakeLists.txt
@@ -8,4 +8,7 @@ add_clang_library(clangdRemoteMarshalling STATIC
DEPENDS
clangdRemoteIndexProto
+
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
)
diff --git a/clang-tools-extra/clangd/index/remote/monitor/CMakeLists.txt b/clang-tools-extra/clangd/index/remote/monitor/CMakeLists.txt
index 194c7d5128a98..53351ae901b3d 100644
--- a/clang-tools-extra/clangd/index/remote/monitor/CMakeLists.txt
+++ b/clang-tools-extra/clangd/index/remote/monitor/CMakeLists.txt
@@ -6,6 +6,9 @@ add_clang_executable(clangd-index-server-monitor
DEPENDS
clangdRemoteIndexServiceProto
+
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
)
target_link_libraries(clangd-index-server-monitor
diff --git a/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt b/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
index 3bea34826f8a1..12090d83928fd 100644
--- a/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
+++ b/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
@@ -7,6 +7,9 @@ add_clang_executable(clangd-index-server
DEPENDS
clangdRemoteIndexProto
clangdRemoteIndexServiceProto
+
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
)
target_link_libraries(clangd-index-server
diff --git a/clang/cmake/modules/AddGRPC.cmake b/clang/cmake/modules/AddGRPC.cmake
index 8989bd757d247..5d752bf86459d 100644
--- a/clang/cmake/modules/AddGRPC.cmake
+++ b/clang/cmake/modules/AddGRPC.cmake
@@ -7,5 +7,8 @@ function(generate_clang_protos_library LibraryName ProtoFile)
add_clang_library(${LibraryName} ${ProtoSource}
PARTIAL_SOURCES_INTENDED
- LINK_LIBS PUBLIC grpc++ protobuf)
+ LINK_LIBS PUBLIC grpc++ protobuf
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
+ )
endfunction()
>From 26a3164979df4cb7aa5fe3f40a9b099d954234bd Mon Sep 17 00:00:00 2001
From: Alexis Engelke <engelke at in.tum.de>
Date: Sat, 7 Mar 2026 13:03:01 +0000
Subject: [PATCH 2/3] Also disable for clangd binary
---
clang-tools-extra/clangd/tool/CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/clang-tools-extra/clangd/tool/CMakeLists.txt b/clang-tools-extra/clangd/tool/CMakeLists.txt
index 850a82833e444..1bd6a1f864dd3 100644
--- a/clang-tools-extra/clangd/tool/CMakeLists.txt
+++ b/clang-tools-extra/clangd/tool/CMakeLists.txt
@@ -4,6 +4,9 @@ set(LLVM_OPTIONAL_SOURCES ClangdToolMain.cpp)
add_clang_library(clangdMain STATIC
ClangdMain.cpp
Check.cpp
+
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
)
add_clang_tool(clangd
>From be338014a503d2d69d35ed5443b817f69e465c2f Mon Sep 17 00:00:00 2001
From: Alexis Engelke <engelke at in.tum.de>
Date: Sat, 7 Mar 2026 13:04:40 +0000
Subject: [PATCH 3/3] more fix
---
clang-tools-extra/clangd/index/dex/dexp/CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/clang-tools-extra/clangd/index/dex/dexp/CMakeLists.txt b/clang-tools-extra/clangd/index/dex/dexp/CMakeLists.txt
index 4fe42cb8786f1..ae11c43fda86a 100644
--- a/clang-tools-extra/clangd/index/dex/dexp/CMakeLists.txt
+++ b/clang-tools-extra/clangd/index/dex/dexp/CMakeLists.txt
@@ -5,6 +5,9 @@ set(LLVM_LINK_COMPONENTS
add_clang_executable(dexp
Dexp.cpp
+
+ # Disable PCH, gRPC adds -pthread.
+ DISABLE_PCH_REUSE
)
clang_target_link_libraries(dexp
More information about the cfe-commits
mailing list