//===--- Feature.cpp - Compile-time configuration ------------------------===//
//
// 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 "Feature.h"
#include "clang/Basic/Version.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/Host.h"

namespace clang {
namespace clangd {

std::string versionString() { return clang::getClangToolFullVersion("clangd"); }

std::string platformString() {
  static std::string PlatformString = []() {
    std::string Host = llvm::sys::getProcessTriple();
    std::string Target = llvm::sys::getDefaultTargetTriple();
    if (Host != Target) {
      Host += "; target=";
      Host += Target;
    }
    return Host;
  }();
  return PlatformString;
}

std::string featureString() {
  return
#if defined(_WIN32)
      "windows"
#elif defined(__APPLE__)
      "mac"
#elif defined(__linux__)
      "linux"
#elif defined(LLVM_ON_UNIX)
      "unix"
#else
      "unknown"
#endif

#ifndef NDEBUG
      "+debug"
#endif
#if LLVM_ADDRESS_SANITIZER_BUILD
      "+asan"
#endif
#if LLVM_THREAD_SANITIZER_BUILD
      "+tsan"
#endif
#if LLVM_MEMORY_SANITIZER_BUILD
      "+msan"
#endif

#if CLANGD_ENABLE_REMOTE
      "+grpc"
#endif
#if CLANGD_BUILD_XPC
      "+xpc"
#endif

#if !CLANGD_TIDY_CHECKS
      "-tidy"
#endif
      ;
}

} // namespace clangd
} // namespace clang
