diff --git a/clang-tools-extra/clangd/tool/CMakeLists.txt b/clang-tools-extra/clangd/tool/CMakeLists.txt --- a/clang-tools-extra/clangd/tool/CMakeLists.txt +++ b/clang-tools-extra/clangd/tool/CMakeLists.txt @@ -1,6 +1,13 @@ -add_clang_tool(clangd +# Needed by LLVM's CMake checks because this file defines multiple targets. +set(LLVM_OPTIONAL_SOURCES ClangdToolMain.cpp) + +add_clang_library(clangdMain ClangdMain.cpp Check.cpp + ) + +add_clang_tool(clangd + ClangdToolMain.cpp $ ) @@ -13,7 +20,7 @@ list(APPEND CLANGD_XPC_LIBS "clangdXpcJsonConversions" "clangdXpcTransport") endif() -clang_target_link_libraries(clangd +clang_target_link_libraries(clangdMain PRIVATE clangAST clangBasic @@ -25,14 +32,14 @@ clangToolingCore clangToolingRefactoring clangToolingSyntax - ) - -target_link_libraries(clangd - PRIVATE clangTidy - clangDaemon clangdRemoteIndex clangdSupport ${CLANGD_XPC_LIBS} ) + +clang_target_link_libraries(clangd + PRIVATE + clangdMain + ) diff --git a/clang-tools-extra/clangd/tool/ClangdMain.h b/clang-tools-extra/clangd/tool/ClangdMain.h new file mode 100644 --- /dev/null +++ b/clang-tools-extra/clangd/tool/ClangdMain.h @@ -0,0 +1,19 @@ +//===--- ClangdMain.h - clangd main function ------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANGD_TOOL_CLANGDMAIN_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANGD_TOOL_CLANGDMAIN_H + +namespace clang { +namespace clangd { +// clangd main function (clangd server loop) +int clangdMain(int argc, char *argv[]); +} // namespace clangd +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANGD_TOOL_CLANGDMAIN_H diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp --- a/clang-tools-extra/clangd/tool/ClangdMain.cpp +++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp @@ -6,6 +6,7 @@ // //===----------------------------------------------------------------------===// +#include "ClangdMain.h" #include "ClangdLSPServer.h" #include "CodeComplete.h" #include "Compiler.h" @@ -710,8 +711,6 @@ } }; } // namespace -} // namespace clangd -} // namespace clang enum class ErrorResultCode : int { NoShutdownRequest = 1, @@ -719,10 +718,7 @@ CheckFailed = 3 }; -int main(int argc, char *argv[]) { - using namespace clang; - using namespace clang::clangd; - +int clangdMain(int argc, char *argv[]) { llvm::InitializeAllTargetInfos(); llvm::sys::PrintStackTraceOnErrorSignal(argv[0]); llvm::sys::AddSignalHandler( @@ -1041,3 +1037,6 @@ return ExitCode; } + +} // namespace clangd +} // namespace clang diff --git a/clang-tools-extra/clangd/tool/ClangdToolMain.cpp b/clang-tools-extra/clangd/tool/ClangdToolMain.cpp new file mode 100644 --- /dev/null +++ b/clang-tools-extra/clangd/tool/ClangdToolMain.cpp @@ -0,0 +1,13 @@ +//===--- ClangdToolMain.cpp - clangd main function ------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "ClangdMain.h" + +int main(int argc, char **argv) { + return clang::clangd::clangdMain(argc, argv); +}