--- /dev/null
+static_library("clangd") {
+ output_name = "clangDaemon"
+ configs += [ "//llvm/utils/gn/build:clang_code" ]
+ deps = [
+ "//clang-tools-extra/clang-tidy/abseil",
+ "//clang-tools-extra/clang-tidy/android",
+ "//clang-tools-extra/clang-tidy/boost",
+ "//clang-tools-extra/clang-tidy/bugprone",
+ "//clang-tools-extra/clang-tidy/cert",
+ "//clang-tools-extra/clang-tidy/cppcoreguidelines",
+ "//clang-tools-extra/clang-tidy/fuchsia",
+ "//clang-tools-extra/clang-tidy/google",
+ "//clang-tools-extra/clang-tidy/hicpp",
+ "//clang-tools-extra/clang-tidy/llvm",
+ "//clang-tools-extra/clang-tidy/misc",
+ "//clang-tools-extra/clang-tidy/modernize",
+ "//clang-tools-extra/clang-tidy/objc",
+ "//clang-tools-extra/clang-tidy/performance",
+ "//clang-tools-extra/clang-tidy/portability",
+ "//clang-tools-extra/clang-tidy/readability",
+ "//clang-tools-extra/clang-tidy/zircon",
+ "//clang/lib/AST",
+ "//clang/lib/ASTMatchers",
+ "//clang/lib/Basic",
+ "//clang/lib/Driver",
+ "//clang/lib/Format",
+ "//clang/lib/Frontend",
+ "//clang/lib/Index",
+ "//clang/lib/Lex",
+ "//clang/lib/Sema",
+ "//clang/lib/Serialization",
+ "//clang/lib/Tooling",
+ "//clang/lib/Tooling/Core",
+ "//clang/lib/Tooling/Inclusions",
+ "//clang/lib/Tooling/Refactoring",
+ "//llvm/lib/Support",
+ "//llvm/utils/gn/build/libs/atomic",
+ "//llvm/utils/gn/build/libs/pthread",
+ ]
+ include_dirs = [ "." ]
+ sources = [
+ "AST.cpp",
+ "Cancellation.cpp",
+ "ClangdLSPServer.cpp",
+ "ClangdServer.cpp",
+ "ClangdUnit.cpp",
+ "CodeComplete.cpp",
+ "CodeCompletionStrings.cpp",
+ "Compiler.cpp",
+ "Context.cpp",
+ "Diagnostics.cpp",
+ "DraftStore.cpp",
+ "ExpectedTypes.cpp",
+ "FS.cpp",
+ "FSProvider.cpp",
+ "FileDistance.cpp",
+ "FindSymbols.cpp",
+ "FuzzyMatch.cpp",
+ "GlobalCompilationDatabase.cpp",
+ "Headers.cpp",
+ "IncludeFixer.cpp",
+ "JSONTransport.cpp",
+ "Logger.cpp",
+ "Protocol.cpp",
+ "Quality.cpp",
+ "RIFF.cpp",
+ "Selection.cpp",
+ "SourceCode.cpp",
+ "TUScheduler.cpp",
+ "Threading.cpp",
+ "Trace.cpp",
+ "URI.cpp",
+ "XRefs.cpp",
+ "index/Background.cpp",
+ "index/BackgroundIndexStorage.cpp",
+ "index/CanonicalIncludes.cpp",
+ "index/FileIndex.cpp",
+ "index/Index.cpp",
+ "index/IndexAction.cpp",
+ "index/MemIndex.cpp",
+ "index/Merge.cpp",
+ "index/Ref.cpp",
+ "index/Serialization.cpp",
+ "index/Symbol.cpp",
+ "index/SymbolCollector.cpp",
+ "index/SymbolID.cpp",
+ "index/SymbolLocation.cpp",
+ "index/SymbolOrigin.cpp",
+ "index/YAMLSerialization.cpp",
+ "index/dex/Dex.cpp",
+ "index/dex/Iterator.cpp",
+ "index/dex/PostingList.cpp",
+ "index/dex/Trigram.cpp",
+ "refactor/Tweak.cpp",
+ ]
+}
--- /dev/null
+import("//llvm/utils/gn/build/write_cmake_config.gni")
+
+declare_args() {
+ # Whether to build clangd's XPC components.
+ clangd_build_xpc = false
+}
+
+write_cmake_config("features") {
+ # FIXME: Try moving Features.inc.in to tools, seems like a better location.
+ input = "../Features.inc.in"
+ output = "$target_gen_dir/Features.inc"
+ values = []
+ if (clangd_build_xpc) {
+ values += [ "CLANGD_BUILD_XPC=1" ]
+ } else {
+ values += [ "CLANGD_BUILD_XPC=0" ]
+ }
+}
+
+executable("clangd") {
+ configs += [ "//llvm/utils/gn/build:clang_code" ]
+ deps = [
+ ":features",
+ "//clang-tools-extra/clang-tidy",
+ "//clang-tools-extra/clangd",
+ "//clang-tools-extra/clangd/refactor/tweaks",
+ "//clang/lib/AST",
+ "//clang/lib/Basic",
+ "//clang/lib/Format",
+ "//clang/lib/Frontend",
+ "//clang/lib/Sema",
+ "//clang/lib/Tooling",
+ "//clang/lib/Tooling/Core",
+ "//llvm/lib/Support",
+ ]
+
+ include_dirs = [
+ "..",
+
+ # To pick up the generated inc files.
+ "$target_gen_dir",
+ ]
+ sources = [
+ "ClangdMain.cpp",
+ ]
+
+ if (clangd_build_xpc) {
+ # FIXME: Depend on clangdXpcJsonConversions, clangdXpcTransport
+ }
+}