[PATCH] D98404: [clangd] Optionally add reflection for clangd-index-server
Kirill Bobyrev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 11 04:00:53 PST 2021
kbobyrev updated this revision to Diff 329913.
kbobyrev marked 2 inline comments as done.
kbobyrev added a comment.
Address review comments.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D98404/new/
https://reviews.llvm.org/D98404
Files:
clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
clang-tools-extra/clangd/index/remote/server/Server.cpp
llvm/cmake/modules/FindGRPC.cmake
Index: llvm/cmake/modules/FindGRPC.cmake
===================================================================
--- llvm/cmake/modules/FindGRPC.cmake
+++ llvm/cmake/modules/FindGRPC.cmake
@@ -22,6 +22,10 @@
add_library(protobuf ALIAS protobuf::libprotobuf)
set_target_properties(gRPC::grpc++ PROPERTIES IMPORTED_GLOBAL TRUE)
add_library(grpc++ ALIAS gRPC::grpc++)
+ if (ENABLE_GRPC_REFLECTION)
+ set_target_properties(gRPC::grpc++_reflection PROPERTIES IMPORTED_GLOBAL TRUE)
+ add_library(grpc++_reflection ALIAS gRPC::grpc++_reflection)
+ endif()
set(GRPC_CPP_PLUGIN $<TARGET_FILE:gRPC::grpc_cpp_plugin>)
set(PROTOC ${Protobuf_PROTOC_EXECUTABLE})
@@ -71,12 +75,21 @@
add_library(grpc++ UNKNOWN IMPORTED GLOBAL)
message(STATUS "Using grpc++: " ${GRPC_LIBRARY})
set_target_properties(grpc++ PROPERTIES IMPORTED_LOCATION ${GRPC_LIBRARY})
+ if (ENABLE_GRPC_REFLECTION)
+ find_library(GRPC_REFLECTION_LIBRARY grpc++_reflection $GRPC_OPTS REQUIRED)
+ add_library(grpc++_reflection UNKNOWN IMPORTED GLOBAL)
+ set_target_properties(grpc++_reflection PROPERTIES IMPORTED_LOCATION ${GRPC_REFLECTION_LIBRARY})
+ endif()
find_library(PROTOBUF_LIBRARY protobuf $PROTOBUF_OPTS REQUIRED)
message(STATUS "Using protobuf: " ${PROTOBUF_LIBRARY})
add_library(protobuf UNKNOWN IMPORTED GLOBAL)
set_target_properties(protobuf PROPERTIES IMPORTED_LOCATION ${PROTOBUF_LIBRARY})
endif()
+if (ENABLE_GRPC_REFLECTION)
+ set(REFLECTION_LIBRARY grpc++_reflection)
+endif()
+
# Proto headers are generated in ${CMAKE_CURRENT_BINARY_DIR}.
# Libraries that use these headers should adjust the include path.
# If the "GRPC" argument is given, services are also generated.
Index: clang-tools-extra/clangd/index/remote/server/Server.cpp
===================================================================
--- clang-tools-extra/clangd/index/remote/server/Server.cpp
+++ clang-tools-extra/clangd/index/remote/server/Server.cpp
@@ -35,6 +35,10 @@
#include <memory>
#include <thread>
+#ifdef ENABLE_GRPC_REFLECTION
+#include <grpc++/ext/proto_server_reflection_plugin.h>
+#endif
+
namespace clang {
namespace clangd {
namespace remote {
@@ -313,6 +317,9 @@
RemoteIndexServer Service(Index, IndexRoot);
grpc::EnableDefaultHealthCheckService(true);
+#ifdef ENABLE_GRPC_REFLECTION
+ grpc::reflection::InitProtoReflectionServerBuilderPlugin();
+#endif
grpc::ServerBuilder Builder;
Builder.AddListeningPort(ServerAddress.str(),
grpc::InsecureServerCredentials());
Index: clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
===================================================================
--- clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
+++ clang-tools-extra/clangd/index/remote/server/CMakeLists.txt
@@ -9,6 +9,10 @@
RemoteIndexServiceProto
)
+if (ENABLE_GRPC_REFLECTION)
+ add_definitions(-DENABLE_GRPC_REFLECTION)
+endif()
+
target_link_libraries(clangd-index-server
PRIVATE
clangDaemon
@@ -17,4 +21,6 @@
RemoteIndexProto
RemoteIndexServiceProto
clangdRemoteMarshalling
+
+ ${REFLECTION_LIBRARY}
)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98404.329913.patch
Type: text/x-patch
Size: 3125 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210311/f7f731cd/attachment.bin>
More information about the cfe-commits
mailing list