Author: Kirill Bobyrev Date: 2021-03-10T09:07:39+01:00 New Revision: 8080ea4c4b8c456c72c617587cc32f174b3105c1
URL: https://github.com/llvm/llvm-project/commit/8080ea4c4b8c456c72c617587cc32f174b3105c1 DIFF: https://github.com/llvm/llvm-project/commit/8080ea4c4b8c456c72c617587cc32f174b3105c1.diff LOG: [clangd] Enable reflection for clangd-index-server This allows sending requests through CLI and more debugging opportunities. Example: ```bash $ grpc_cli ls localhost:50051 clang.clangd.remote.v1.SymbolIndex grpc.reflection.v1alpha.ServerReflection grpc.health.v1.Health ``` Added: Modified: clang-tools-extra/clangd/index/remote/server/CMakeLists.txt clang-tools-extra/clangd/index/remote/server/Server.cpp llvm/cmake/modules/FindGRPC.cmake Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt b/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt index e6959db6bbd8..3ba0c476df0c 100644 --- a/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt +++ b/clang-tools-extra/clangd/index/remote/server/CMakeLists.txt @@ -17,4 +17,6 @@ target_link_libraries(clangd-index-server RemoteIndexProto RemoteIndexServiceProto clangdRemoteMarshalling + + grpc++_reflection ) diff --git a/clang-tools-extra/clangd/index/remote/server/Server.cpp b/clang-tools-extra/clangd/index/remote/server/Server.cpp index 3de2c38f7c08..768f3c9fd143 100644 --- a/clang-tools-extra/clangd/index/remote/server/Server.cpp +++ b/clang-tools-extra/clangd/index/remote/server/Server.cpp @@ -30,6 +30,7 @@ #include "llvm/Support/VirtualFileSystem.h" #include <chrono> +#include <grpc++/ext/proto_server_reflection_plugin.h> #include <grpc++/grpc++.h> #include <grpc++/health_check_service_interface.h> #include <memory> @@ -313,6 +314,7 @@ void runServerAndWait(clangd::SymbolIndex &Index, llvm::StringRef ServerAddress, RemoteIndexServer Service(Index, IndexRoot); grpc::EnableDefaultHealthCheckService(true); + grpc::reflection::InitProtoReflectionServerBuilderPlugin(); grpc::ServerBuilder Builder; Builder.AddListeningPort(ServerAddress.str(), grpc::InsecureServerCredentials()); diff --git a/llvm/cmake/modules/FindGRPC.cmake b/llvm/cmake/modules/FindGRPC.cmake index 8fdb3506dff1..d39d10e4e93c 100644 --- a/llvm/cmake/modules/FindGRPC.cmake +++ b/llvm/cmake/modules/FindGRPC.cmake @@ -22,6 +22,8 @@ if (GRPC_INSTALL_PATH) add_library(protobuf ALIAS protobuf::libprotobuf) set_target_properties(gRPC::grpc++ PROPERTIES IMPORTED_GLOBAL TRUE) add_library(grpc++ ALIAS gRPC::grpc++) + set_target_properties(gRPC::grpc++_reflection PROPERTIES IMPORTED_GLOBAL TRUE) + add_library(grpc++_reflection ALIAS gRPC::grpc++_reflection) set(GRPC_CPP_PLUGIN $<TARGET_FILE:gRPC::grpc_cpp_plugin>) set(PROTOC ${Protobuf_PROTOC_EXECUTABLE}) @@ -71,6 +73,9 @@ else() add_library(grpc++ UNKNOWN IMPORTED GLOBAL) message(STATUS "Using grpc++: " ${GRPC_LIBRARY}) set_target_properties(grpc++ PROPERTIES IMPORTED_LOCATION ${GRPC_LIBRARY}) + 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}) find_library(PROTOBUF_LIBRARY protobuf $PROTOBUF_OPTS REQUIRED) message(STATUS "Using protobuf: " ${PROTOBUF_LIBRARY}) add_library(protobuf UNKNOWN IMPORTED GLOBAL) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits