[PATCH] D83817: [clangd] Add option to use remote index as static index
Kirill Bobyrev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 27 02:24:29 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG37ac559fccd4: [clangd] Add option to use remote index as static index (authored by kbobyrev).
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/Features.inc.in
clang-tools-extra/clangd/tool/CMakeLists.txt
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"
@@ -449,6 +450,21 @@
init(true),
};
+#ifdef CLANGD_ENABLE_REMOTE
+opt<std::string> RemoteIndexAddress{
+ "remote-index-address",
+ cat(Features),
+ desc("Address of the remote index server"),
+};
+
+// FIXME(kirillbobyrev): Should this be the location of compile_commands.json?
+opt<std::string> ProjectRoot{
+ "project-root",
+ cat(Features),
+ desc("Path to the project root. Requires remote-index-address to be set."),
+};
+#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 +696,23 @@
if (Sync)
AsyncIndexLoad.wait();
}
+#ifdef CLANGD_ENABLE_REMOTE
+ if (RemoteIndexAddress.empty() != ProjectRoot.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()) {
+ log("Connecting to remote index at {0}", RemoteIndexAddress);
+ StaticIdx = remote::getClient(RemoteIndexAddress, ProjectRoot);
+ EnableBackgroundIndex = false;
+ } else {
+ elog("When enabling remote index, IndexFile should not be specified. "
+ "Only one can be used at time. Remote index will ignored.");
+ }
+ }
+#endif
Opts.StaticIndex = StaticIdx.get();
Opts.AsyncThreadsCount = WorkerThreadsCount;
Opts.BuildRecoveryAST = RecoveryAST;
Index: clang-tools-extra/clangd/tool/CMakeLists.txt
===================================================================
--- clang-tools-extra/clangd/tool/CMakeLists.txt
+++ clang-tools-extra/clangd/tool/CMakeLists.txt
@@ -27,6 +27,7 @@
clangToolingCore
clangToolingRefactoring
clangToolingSyntax
+ clangdRemoteIndex
)
target_link_libraries(clangd
PRIVATE
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@
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D83817.280826.patch
Type: text/x-patch
Size: 2688 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200727/e3eb4a25/attachment.bin>
More information about the cfe-commits
mailing list