import("//llvm/utils/gn/build/buildflags.gni")
import("//llvm/utils/gn/build/mac_sdk.gni")
import("//llvm/utils/gn/build/toolchain/compiler.gni")
import("//llvm/utils/gn/build/toolchain/target_flags.gni")

config("compiler_defaults") {
  defines = []

  if (!llvm_enable_assertions) {
    defines += [ "NDEBUG" ]
  }

  asmflags = target_flags
  cflags = target_flags
  ldflags = target_flags + target_ldflags

  if (host_os == "mac" && clang_base_path != "") {
    cflags += [
      "-isysroot",
      mac_sdk_path,
    ]
  }

  if (host_os != "win") {
    if (is_debug) {
      cflags += [ "-g" ]
    }
    if (is_optimized) {
      cflags += [ "-O3" ]
    }
    cflags += [ "-fdiagnostics-color" ]
    cflags_cc = [
      "-std=c++11",
      "-fvisibility-inlines-hidden",
    ]
  } else {
    if (is_debug) {
      cflags += [
        "/Zi",
        "/FS",
      ]
      ldflags += [ "/DEBUG" ]
    }
    if (is_optimized) {
      cflags += [
        "/O2",
        "/Zc:inline",
      ]
      ldflags += [
        "/OPT:REF",
        "/OPT:ICF",
      ]
    }
    defines += [
      "_CRT_SECURE_NO_DEPRECATE",
      "_CRT_SECURE_NO_WARNINGS",
      "_CRT_NONSTDC_NO_DEPRECATE",
      "_CRT_NONSTDC_NO_WARNINGS",
      "_SCL_SECURE_NO_DEPRECATE",
      "_SCL_SECURE_NO_WARNINGS",

      "_HAS_EXCEPTIONS=0",
      "_UNICODE",
      "UNICODE",
    ]
    cflags += [ "/EHs-c-" ]

    # The MSVC default value (1 MB) is not enough for parsing recursive C++
    # templates in Clang.
    ldflags += [ "/STACK:10000000" ]
  }

  # Warning setup.
  if (host_os == "win" && !is_clang) {
    cflags += [
      # Suppress ''modifier' : used more than once' (__forceinline and inline).
      "-wd4141",

      # Suppress 'conversion from 'type1' to 'type2', possible loss of data'.
      "-wd4244",

      # Suppress 'conversion from 'size_t' to 'type', possible loss of data'.
      "-wd4267",

      # Suppress 'no matching operator delete found'.
      "-wd4291",

      # Suppress 'noexcept used with no exception handling mode specified'.
      "-wd4577",

      # Suppress 'destructor was implicitly defined as deleted'.
      "-wd4624",

      # Suppress 'unsafe mix of type <type> and type <type> in operation'.
      "-wd4805",
    ]
  } else {
    if (host_os == "win") {
      cflags += [ "/W4" ]
    } else {
      cflags += [
        "-Wall",
        "-Wextra",
      ]
    }
    cflags += [ "-Wno-unused-parameter" ]
    if (is_clang) {
      cflags += [
        "-Wdelete-non-virtual-dtor",
        "-Wstring-conversion",
      ]
    } else {
      cflags += [
        # GCC's -Wcomment complains about // comments ending with '\' if the
        # next line is also a // comment.
        "-Wno-comment",

        # Disable gcc's potentially uninitialized use analysis as it presents
        # lots of false positives.
        "-Wno-maybe-uninitialized",
      ]
      cflags_cc += [
        # The LLVM libraries have no stable C++ API, so -Wnoexcept-type is not
        # useful.
        "-Wno-noexcept-type",
      ]
    }
    if (is_clang && use_goma) {
      # goma converts all paths to lowercase on the server, breaking this
      # warning.
      cflags += [ "-Wno-nonportable-include-path" ]
    }
  }

  # On Windows, the linker is not invoked through the compiler driver.
  if (use_lld && host_os != "win") {
    ldflags += [ "-fuse-ld=lld" ]
  }
}

config("no_exceptions") {
  if (host_os != "win") {
    cflags_cc = [ "-fno-exceptions" ]
  }
}

config("no_rtti") {
  if (current_os == "win") {
    cflags_cc = [ "/GR-" ]
  } else {
    cflags_cc = [ "-fno-rtti" ]
  }
}

# To make an archive that can be distributed, you need to remove this config and
# set complete_static_lib.
config("thin_archive") {
  if (current_os != "win" && current_os != "mac") {
    arflags = [ "-T" ]
  }
}

config("llvm_code") {
  include_dirs = [
    "//llvm/include",
    "$root_gen_dir/llvm/include",
  ]
}

config("lld_code") {
  include_dirs = [
    "//lld/include",
    "$root_gen_dir/lld/include",
  ]
}

config("clang_code") {
  if (host_os != "win") {
    cflags = [ "-fno-strict-aliasing" ]
  }
  include_dirs = [
    "//clang/include",
    "$root_gen_dir/clang/include",
  ]
}

config("crt_code") {
  include_dirs = [ "//compiler-rt/lib" ]
  cflags = [
    "-fPIC",
    "-funwind-tables",
    "-gline-tables-only",
  ]
}

config("warn_covered_switch_default") {
  if (is_clang) {
    cflags = [ "-Wcovered-switch-default" ]
  }
}
