kbobyrev updated this revision to Diff 279472.
kbobyrev added a comment.
Rebase on top of master.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D83817/new/
https://reviews.llvm.org/D83817
Files:
clang-tools-extra/clangd/CMakeLists.txt
clang-tools-extra/clangd/Features.inc.in
clang-tools-extra/clangd/tool/ClangdMain.cpp
Index: clang-tools-extra/clangd/tool/ClangdMain.cpp
===================================================================
--- clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -14,6 +14,7 @@
#include "Transport.h"
#include "index/Background.h"
#include "index/Serialization.h"
+#include "index/remote/Client.h"
#include "refactor/Rename.h"
#include "support/Path.h"
#include "support/Shutdown.h"
@@ -64,6 +65,7 @@
OptionCategory Features("clangd feature options");
OptionCategory Misc("clangd miscellaneous options");
OptionCategory Protocol("clangd protocol and logging options");
+OptionCategory Remote("clangd remote index options");
const OptionCategory *ClangdCategories[] = {&Features, &Protocol,
&CompileCommands, &Misc};
@@ -449,6 +451,23 @@
init(true),
};
+#ifdef CLANGD_ENABLE_REMOTE
+opt<std::string> RemoteIndexAddress{
+ "remote-index-address",
+ cat(Remote),
+ desc("Address of the remote index server"),
+ Hidden,
+};
+
+// FIXME(kirillbobyrev): Should this be the location of compile_commands.json?
+opt<std::string> ProjectPath{
+ "project-path",
+ cat(Remote),
+ desc("Path to the project root. Requires remote-index-address to be set."),
+ Hidden,
+};
+#endif
+
/// Supports a test URI scheme with relaxed constraints for lit tests.
/// The path in a test URI will be combined with a platform-specific fake
/// directory to form an absolute path. For example, test:///a.cpp is resolved
@@ -680,6 +699,20 @@
if (Sync)
AsyncIndexLoad.wait();
}
+ if (RemoteIndexAddress.empty() != ProjectPath.empty()) {
+ llvm::errs() << "remote-index-address and project-path have to be "
+ "specified at the same time.";
+ return 1;
+ }
+ if (!RemoteIndexAddress.empty()) {
+ if (!IndexFile.empty()) {
+ llvm::errs() << "When remote index is enabled, IndexFile should not be "
+ "specified. Only one can be used at time.";
+ return 1;
+ }
+ log("Connecting to remote index at {0}", RemoteIndexAddress);
+ StaticIdx = remote::getClient(RemoteIndexAddress, ProjectPath);
+ }
Opts.StaticIndex = StaticIdx.get();
Opts.AsyncThreadsCount = WorkerThreadsCount;
Opts.BuildRecoveryAST = RecoveryAST;
Index: clang-tools-extra/clangd/Features.inc.in
===================================================================
--- clang-tools-extra/clangd/Features.inc.in
+++ clang-tools-extra/clangd/Features.inc.in
@@ -1 +1,2 @@
#define CLANGD_BUILD_XPC @CLANGD_BUILD_XPC@
+#define CLANGD_ENABLE_REMOTE @CLANGD_ENABLE_REMTE@
Index: clang-tools-extra/clangd/CMakeLists.txt
===================================================================
--- clang-tools-extra/clangd/CMakeLists.txt
+++ clang-tools-extra/clangd/CMakeLists.txt
@@ -114,6 +114,15 @@
omp_gen
)
+# FIXME(kirillbobyrev): Document this in the LLVM docs once remote index is stable.
+option(CLANGD_ENABLE_REMOTE "Use gRPC library to enable remote index support for Clangd" OFF)
+set(GRPC_INSTALL_PATH "" CACHE PATH "Path to gRPC library manual installation.")
+
+if (CLANGD_ENABLE_REMOTE)
+ include(FindGRPC)
+endif()
+add_subdirectory(index/remote)
+
clang_target_link_libraries(clangDaemon
PRIVATE
clangAST
@@ -131,6 +140,7 @@
clangToolingInclusions
clangToolingRefactoring
clangToolingSyntax
+ clangdRemoteIndex
)
add_subdirectory(refactor/tweaks)
@@ -153,12 +163,4 @@
add_subdirectory(unittests)
endif()
-# FIXME(kirillbobyrev): Document this in the LLVM docs once remote index is stable.
-option(CLANGD_ENABLE_REMOTE "Use gRPC library to enable remote index support for Clangd" OFF)
-set(GRPC_INSTALL_PATH "" CACHE PATH "Path to gRPC library manual installation.")
-
-if (CLANGD_ENABLE_REMOTE)
- include(FindGRPC)
-endif()
-add_subdirectory(index/remote)
add_subdirectory(index/dex/dexp)
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits