# clangd/support contains low-level support libraries that do not depend
# on clang either programmatically or conceptually.

set(LLVM_LINK_COMPONENTS
  Support
  )

if(CLANG_BUILT_STANDALONE)
  # needed to get HAVE_CXX_ATOMICS64_WITHOUT_LIB defined
  include(CheckAtomic)
endif()

set(CLANGD_ATOMIC_LIB "")
if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB OR NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
  list(APPEND CLANGD_ATOMIC_LIB "atomic")
endif()

add_clang_library(clangdSupport
  Cancellation.cpp
  Context.cpp
  FileCache.cpp
  Logger.cpp
  Markup.cpp
  MemoryTree.cpp
  Path.cpp
  Shutdown.cpp
  ThreadCrashReporter.cpp
  Threading.cpp
  ThreadsafeFS.cpp
  Trace.cpp

  LINK_LIBS
  ${LLVM_PTHREAD_LIB}
  ${CLANGD_ATOMIC_LIB}
  )
