Compiler projects using llvm
source_set("sources") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  defines = [ "UBSAN_CAN_USE_CXXABI" ]
  deps = [
    "//compiler-rt/lib/interception:sources",
    "//compiler-rt/lib/sanitizer_common:sources",
  ]
  sources = [
    "ubsan_diag.cpp",
    "ubsan_diag.h",
    "ubsan_flags.cpp",
    "ubsan_flags.h",
    "ubsan_handlers.cpp",
    "ubsan_handlers.h",
    "ubsan_init.cpp",
    "ubsan_init.h",
    "ubsan_monitor.cpp",
    "ubsan_monitor.h",
    "ubsan_platform.h",
    "ubsan_signals_standalone.h",
    "ubsan_type_hash.h",
    "ubsan_value.cpp",
    "ubsan_value.h",
  ]
}

source_set("weak_interception") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  sources = [ "ubsan_win_weak_interception.cpp" ]
  defines = [ "SANITIZER_DYNAMIC" ]
}

source_set("dll_thunk") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  sources = [ "ubsan_win_dll_thunk.cpp" ]
  defines = [ "SANITIZER_DLL_THUNK" ]
}

source_set("dynamic_runtime_thunk") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  defines = [ "SANITIZER_DYNAMIC_RUNTIME_THUNK" ]
  sources = [ "ubsan_win_dynamic_runtime_thunk.cpp" ]
}

# Unreferenced; at the moment exists to make sync_source_lists_from_cmake happy.
source_set("standalone_sources") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs -= [ "//llvm/utils/gn/build:no_rtti" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  defines = [ "UBSAN_CAN_USE_CXXABI" ]
  sources = [
    "ubsan_diag_standalone.cpp",
    "ubsan_init_standalone.cpp",
    "ubsan_signals_standalone.cpp",
  ]
}

source_set("cxx_sources") {
  configs -= [ "//llvm/utils/gn/build:llvm_code" ]
  configs -= [ "//llvm/utils/gn/build:no_rtti" ]
  configs += [ "//llvm/utils/gn/build:crt_code" ]
  defines = [ "UBSAN_CAN_USE_CXXABI" ]
  sources = [
    "ubsan_handlers_cxx.cpp",
    "ubsan_handlers_cxx.h",
    "ubsan_type_hash.cpp",
    "ubsan_type_hash_itanium.cpp",
    "ubsan_type_hash_win.cpp",
  ]
}