import("//compiler-rt/gen_version_script.gni")
import("//compiler-rt/target.gni")

if (current_cpu == "x64") {
  hwasan_name = "hwasan_aliases"
} else {
  hwasan_name = "hwasan"
}

gen_version_script("version_script") {
  extra = "hwasan.syms.extra"
  output = "$target_gen_dir/hwasan.vers"
  libs = [
    ":hwasan",
    ":hwasan_cxx",
  ]
  lib_names = [
    "$hwasan_name",
    "${hwasan_name}_cxx",
  ]
}

source_set("sources") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  defines = [ "HWASAN_WITH_INTERCEPTORS=1" ]
  if (current_cpu == "x64") {
    defines += [ "HWASAN_ALIASING_MODE" ]
  }
  deps = [
    "//compiler-rt/lib/interception:sources",
    "//compiler-rt/lib/lsan:common_sources",
    "//compiler-rt/lib/sanitizer_common:sources",
    "//compiler-rt/lib/ubsan:sources",
  ]
  sources = [
    "hwasan.cpp",
    "hwasan.h",
    "hwasan_allocation_functions.cpp",
    "hwasan_allocator.cpp",
    "hwasan_allocator.h",
    "hwasan_dynamic_shadow.cpp",
    "hwasan_dynamic_shadow.h",
    "hwasan_exceptions.cpp",
    "hwasan_flags.h",
    "hwasan_fuchsia.cpp",
    "hwasan_globals.cpp",
    "hwasan_globals.h",
    "hwasan_interceptors.cpp",
    "hwasan_interceptors_vfork.S",
    "hwasan_interface_internal.h",
    "hwasan_linux.cpp",
    "hwasan_malloc_bisect.h",
    "hwasan_mapping.h",
    "hwasan_memintrinsics.cpp",
    "hwasan_poisoning.cpp",
    "hwasan_poisoning.h",
    "hwasan_report.cpp",
    "hwasan_report.h",
    "hwasan_setjmp_aarch64.S",
    "hwasan_setjmp_riscv64.S",
    "hwasan_setjmp_x86_64.S",
    "hwasan_tag_mismatch_aarch64.S",
    "hwasan_tag_mismatch_riscv64.S",
    "hwasan_thread.cpp",
    "hwasan_thread.h",
    "hwasan_thread_list.cpp",
    "hwasan_thread_list.h",
    "hwasan_type_test.cpp",
  ]
}

source_set("cxx_sources") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  defines = [ "HWASAN_WITH_INTERCEPTORS=1" ]
  deps = [ "//compiler-rt/lib/ubsan:cxx_sources" ]
  sources = [ "hwasan_new_delete.cpp" ]
}

static_library("hwasan") {
  output_dir = crt_current_out_dir
  output_name = "clang_rt.$hwasan_name$crt_current_target_suffix"
  complete_static_lib = true
  configs -= [
    "//llvm/utils/gn/build:llvm_code",
    "//llvm/utils/gn/build:thin_archive",
  ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  deps = [ ":sources" ]
}

static_library("hwasan_cxx") {
  output_dir = crt_current_out_dir
  output_name = "clang_rt.${hwasan_name}_cxx$crt_current_target_suffix"
  complete_static_lib = true
  configs -= [
    "//llvm/utils/gn/build:llvm_code",
    "//llvm/utils/gn/build:thin_archive",
  ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  deps = [ ":cxx_sources" ]
}

shared_library("hwasan_shared") {
  output_dir = crt_current_out_dir
  output_name = "clang_rt.$hwasan_name$crt_current_target_suffix"
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  deps = [
    ":cxx_sources",
    ":sources",
    ":version_script",
  ]
  inputs = [ "$target_gen_dir/hwasan.vers" ]
  ldflags = [
    "-Wl,--version-script," + rebase_path(inputs[0], root_build_dir),
    "-Wl,-z,global",
  ]
}

static_library("hwasan_preinit") {
  output_dir = crt_current_out_dir
  output_name = "clang_rt.${hwasan_name}_preinit$crt_current_target_suffix"
  complete_static_lib = true
  configs -= [
    "//llvm/utils/gn/build:llvm_code",
    "//llvm/utils/gn/build:thin_archive",
  ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  sources = [ "hwasan_preinit.cpp" ]
}
