Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
Index: clangd/CMakeLists.txt
===================================================================
--- clangd/CMakeLists.txt	(nonexistent)
+++ clangd/CMakeLists.txt	(revision 40)
@@ -0,0 +1,224 @@
+# This is a no-op for building files in this dir, but is inherited by subdirs.
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+add_subdirectory(support)
+
+# Configure the Features.inc file.
+if (NOT DEFINED CLANGD_BUILD_XPC)
+  if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    set(CLANGD_BUILD_XPC_DEFAULT ON)
+  else ()
+    set(CLANGD_BUILD_XPC_DEFAULT OFF)
+  endif ()
+
+  llvm_canonicalize_cmake_booleans(CLANGD_BUILD_XPC_DEFAULT)
+
+  set(CLANGD_BUILD_XPC ${CLANGD_BUILD_XPC_DEFAULT} CACHE BOOL "Build XPC Support For Clangd." FORCE)
+  unset(CLANGD_BUILD_XPC_DEFAULT)
+endif ()
+
+# This involves generating and compiling large source files, which can run into toolchain limitations.
+option(CLANGD_DECISION_FOREST "Enable decision forest model for ranking code completion items" ON)
+option(CLANGD_MALLOC_TRIM "Call malloc_trim(3) periodically in Clangd. (only takes effect when using glibc)" ON)
+# -DCLANG_TIDY_CHECKS=Off avoids a dependency on clang-tidy, reducing rebuilds.
+option(CLANGD_TIDY_CHECKS "Link all clang-tidy checks into clangd" ON)
+
+llvm_canonicalize_cmake_booleans(
+  CLANGD_BUILD_XPC
+  CLANGD_ENABLE_REMOTE
+  ENABLE_GRPC_REFLECTION
+  CLANGD_MALLOC_TRIM
+  CLANGD_TIDY_CHECKS
+  LLVM_ENABLE_ZLIB
+  CLANGD_DECISION_FOREST
+)
+
+configure_file(
+  ${CMAKE_CURRENT_SOURCE_DIR}/Features.inc.in
+  ${CMAKE_CURRENT_BINARY_DIR}/Features.inc
+)
+
+set(LLVM_LINK_COMPONENTS
+  Support
+  AllTargetsInfos
+  FrontendOpenMP
+  Option
+  TargetParser
+  )
+
+set(COMPLETIONMODEL_SOURCES)
+if(CLANGD_DECISION_FOREST)
+  include(${CMAKE_CURRENT_SOURCE_DIR}/quality/CompletionModel.cmake)
+  gen_decision_forest(${CMAKE_CURRENT_SOURCE_DIR}/quality/model CompletionModel clang::clangd::Example)
+  list(APPEND COMPLETIONMODEL_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/CompletionModel.cpp)
+endif()
+
+if(MSVC AND NOT CLANG_CL)
+ set_source_files_properties(CompileCommands.cpp PROPERTIES COMPILE_FLAGS -wd4130) # disables C4130: logical operation on address of string constant
+endif()
+
+include_directories(BEFORE "${CMAKE_CURRENT_BINARY_DIR}/../clang-tidy")
+include_directories(BEFORE "${CMAKE_CURRENT_SOURCE_DIR}/../include-cleaner/include")
+
+add_clang_library(clangDaemon
+  AST.cpp
+  ASTSignals.cpp
+  ClangdLSPServer.cpp
+  ClangdServer.cpp
+  CodeComplete.cpp
+  CodeCompletionStrings.cpp
+  CollectMacros.cpp
+  CompileCommands.cpp
+  Compiler.cpp
+  Config.cpp
+  ConfigCompile.cpp
+  ConfigProvider.cpp
+  ConfigYAML.cpp
+  DecisionForest.cpp
+  Diagnostics.cpp
+  DraftStore.cpp
+  DumpAST.cpp
+  ExpectedTypes.cpp
+  FeatureModule.cpp
+  Feature.cpp
+  FindSymbols.cpp
+  FindTarget.cpp
+  FileDistance.cpp
+  Format.cpp
+  FS.cpp
+  FuzzyMatch.cpp
+  GlobalCompilationDatabase.cpp
+  Headers.cpp
+  HeaderSourceSwitch.cpp
+  HeuristicResolver.cpp
+  Hover.cpp
+  IncludeCleaner.cpp
+  IncludeFixer.cpp
+  InlayHints.cpp
+  JSONTransport.cpp
+  PathMapping.cpp
+  Protocol.cpp
+  Quality.cpp
+  ParsedAST.cpp
+  Preamble.cpp
+  RIFF.cpp
+  Selection.cpp
+  SemanticHighlighting.cpp
+  SemanticSelection.cpp
+  SourceCode.cpp
+  SystemIncludeExtractor.cpp
+  TidyProvider.cpp
+  TUScheduler.cpp
+  URI.cpp
+  XRefs.cpp
+  ${COMPLETIONMODEL_SOURCES}
+
+  index/Background.cpp
+  index/BackgroundIndexLoader.cpp
+  index/BackgroundIndexStorage.cpp
+  index/BackgroundQueue.cpp
+  index/BackgroundRebuild.cpp
+  index/CanonicalIncludes.cpp
+  index/FileIndex.cpp
+  index/Index.cpp
+  index/IndexAction.cpp
+  index/MemIndex.cpp
+  index/Merge.cpp
+  index/ProjectAware.cpp
+  index/Ref.cpp
+  index/Relation.cpp
+  index/Serialization.cpp
+  index/StdLib.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/InsertionPoint.cpp
+  refactor/Rename.cpp
+  refactor/Tweak.cpp
+
+  DEPENDS
+  omp_gen
+  )
+
+# Include generated CompletionModel headers.
+target_include_directories(clangDaemon PUBLIC
+  $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
+)
+
+clang_target_link_libraries(clangDaemon
+  PRIVATE
+  clangAST
+  clangASTMatchers
+  clangBasic
+  clangDriver
+  clangFormat
+  clangFrontend
+  clangIndex
+  clangLex
+  clangSema
+  clangSerialization
+  clangTooling
+  clangToolingCore
+  clangToolingInclusions
+  clangToolingInclusionsStdlib
+  clangToolingSyntax
+  )
+
+if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
+  target_link_libraries(clangDaemon PRIVATE atomic)
+endif()
+
+target_link_libraries(clangDaemon
+  PRIVATE
+  ${LLVM_PTHREAD_LIB}
+
+  clangIncludeCleaner
+  clangPseudo
+  clangTidy
+
+  clangdSupport
+  )
+if(CLANGD_TIDY_CHECKS)
+  target_link_libraries(clangDaemon PRIVATE ${ALL_CLANG_TIDY_CHECKS})
+endif()
+
+add_subdirectory(refactor/tweaks)
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
+  # FIXME: Make fuzzer not use linux-specific APIs, build it everywhere.
+  add_subdirectory(fuzzer)
+endif()
+add_subdirectory(tool)
+add_subdirectory(indexer)
+
+if (LLVM_INCLUDE_BENCHMARKS)
+  add_subdirectory(benchmarks)
+endif()
+if ( CLANGD_BUILD_XPC )
+  add_subdirectory(xpc)
+endif ()
+
+if (CLANGD_ENABLE_REMOTE)
+  include(AddGRPC)
+endif()
+
+if(CLANG_INCLUDE_TESTS)
+  add_subdirectory(test)
+  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.")
+
+add_subdirectory(index/remote)
+add_subdirectory(index/dex/dexp)