import("//clang/lib/ARCMigrate/enable.gni")
import("//clang/lib/StaticAnalyzer/Frontend/enable.gni")
import("//llvm/utils/gn/build/libs/xml/enable.gni")
import("//llvm/utils/gn/build/write_cmake_config.gni")
import("//llvm/version.gni")

config("Config_config") {
  visibility = [ ":Config" ]
  include_dirs = [ "$target_gen_dir/clang/include" ]
}

write_cmake_config("Config") {
  input = "config.h.cmake"
  output = "$target_gen_dir/config.h"
  values = [
    "BUG_REPORT_URL=https://bugs.llvm.org/",
    "CLANG_DEFAULT_LINKER=",
    "CLANG_DEFAULT_STD_C=",
    "CLANG_DEFAULT_STD_CXX=",
    "CLANG_DEFAULT_CXX_STDLIB=",
    "CLANG_DEFAULT_RTLIB=",
    "CLANG_DEFAULT_OBJCOPY=objcopy",
    "CLANG_DEFAULT_OPENMP_RUNTIME=libomp",
    "CLANG_OPENMP_NVPTX_DEFAULT_ARCH=sm_35",
    "CLANG_LIBDIR_SUFFIX=",
    "CLANG_RESOURCE_DIR=",
    "C_INCLUDE_DIRS=",
    "CLANG_CONFIG_FILE_SYSTEM_DIR=",
    "CLANG_CONFIG_FILE_USER_DIR=",
    "DEFAULT_SYSROOT=",
    "GCC_INSTALL_PREFIX=",
    "CLANG_ANALYZER_WITH_Z3=",
    "BACKEND_PACKAGE_STRING=LLVM ${llvm_version}svn",
    "ENABLE_LINKER_BUILD_ID=",
    "ENABLE_X86_RELAX_RELOCATIONS=",
    "ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=",
    "CLANG_ENABLE_OBJC_REWRITER=1",  # FIXME: flag?
  ]

  if (clang_enable_arcmt) {
    values += [ "CLANG_ENABLE_ARCMT=1" ]
  } else {
    values += [ "CLANG_ENABLE_ARCMT=" ]
  }

  if (clang_enable_static_analyzer) {
    values += [ "CLANG_ENABLE_STATIC_ANALYZER=1" ]
  } else {
    values += [ "CLANG_ENABLE_STATIC_ANALYZER=" ]
  }

  if (host_os != "win") {
    values += [ "CLANG_HAVE_RLIMITS=1" ]
  } else {
    values += [ "CLANG_HAVE_RLIMITS=" ]
  }

  if (llvm_enable_libxml2) {
    values += [ "CLANG_HAVE_LIBXML=1" ]
  } else {
    values += [ "CLANG_HAVE_LIBXML=" ]
  }

  if (host_os == "mac") {
    # FIXME: Hardcoding this isn't great, but assuming that the host ld version
    # has anything to do with the ld version where the built clang will run
    # isn't either. Probably want to make this a declare_args.
    values += [ "HOST_LINK_VERSION=305" ]
  } else {
    values += [ "HOST_LINK_VERSION=" ]
  }

  # Let targets depending on this find the generated file.
  public_configs = [ ":Config_config" ]
}
