# Copyright 2018 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#
# Generated file. DO NOT EDIT.

import("//third_party/abseil-cpp/absl.gni")

absl_source_set("stacktrace") {
  sources = [
    "internal/stacktrace_aarch64-inl.inc",
    "internal/stacktrace_arm-inl.inc",
    "internal/stacktrace_config.h",
    "internal/stacktrace_emscripten-inl.inc",
    "internal/stacktrace_generic-inl.inc",
    "internal/stacktrace_powerpc-inl.inc",
    "internal/stacktrace_riscv-inl.inc",
    "internal/stacktrace_unimplemented-inl.inc",
    "internal/stacktrace_win32-inl.inc",
    "internal/stacktrace_x86-inl.inc",
    "stacktrace.cc",
  ]
  public = [ "stacktrace.h" ]
  deps = [
    ":debugging_internal",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
    "//third_party/abseil-cpp/absl/base:malloc_internal",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
  ]
}

absl_test("stacktrace_test") {
  sources = [ "stacktrace_test.cc" ]
  deps = [
    ":stacktrace",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:errno_saver",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_source_set("symbolize") {
  sources = [
    "symbolize.cc",
    "symbolize_darwin.inc",
    "symbolize_elf.inc",
    "symbolize_emscripten.inc",
    "symbolize_unimplemented.inc",
    "symbolize_win32.inc",
  ]
  public = [
    "internal/symbolize.h",
    "symbolize.h",
  ]
  deps = [
    ":debugging_internal",
    ":demangle_internal",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
    "//third_party/abseil-cpp/absl/base:malloc_internal",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

# symbolize_test is excluded because defines its own main function
# absl_test("symbolize_test")

absl_source_set("examine_stack") {
  sources = [ "internal/examine_stack.cc" ]
  public = [ "internal/examine_stack.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/log/internal:*",
  ]
  deps = [
    ":stacktrace",
    ":symbolize",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
  ]
}

absl_source_set("failure_signal_handler") {
  sources = [ "failure_signal_handler.cc" ]
  public = [ "failure_signal_handler.h" ]
  deps = [
    ":examine_stack",
    ":stacktrace",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
  ]
}

# failure_signal_handler_test is excluded because defines its own main function
# absl_test("failure_signal_handler_test")

absl_source_set("debugging_internal") {
  sources = [
    "internal/address_is_readable.cc",
    "internal/elf_mem_image.cc",
    "internal/vdso_support.cc",
  ]
  public = [
    "internal/address_is_readable.h",
    "internal/addresses.h",
    "internal/elf_mem_image.h",
    "internal/vdso_support.h",
  ]
  visibility = [ ":*" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
    "//third_party/abseil-cpp/absl/base:errno_saver",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
  ]
}

absl_source_set("demangle_internal") {
  sources = [ "internal/demangle.cc" ]
  public = [ "internal/demangle.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/container:*",
  ]
  deps = [
    ":demangle_rust",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:nullability",
    "//third_party/abseil-cpp/absl/numeric:bits",
  ]
}

# Disabled because this test relies on RTTI
# absl_test("demangle_test")

absl_source_set("bounded_utf8_length_sequence") {
  public = [ "internal/bounded_utf8_length_sequence.h" ]
  visibility = [ ":*" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/numeric:bits",
  ]
}

absl_test("bounded_utf8_length_sequence_test") {
  sources = [ "internal/bounded_utf8_length_sequence_test.cc" ]
  deps = [
    ":bounded_utf8_length_sequence",
    "//third_party/abseil-cpp/absl/base:config",
  ]
}

absl_source_set("decode_rust_punycode") {
  sources = [ "internal/decode_rust_punycode.cc" ]
  public = [ "internal/decode_rust_punycode.h" ]
  visibility = [ ":*" ]
  deps = [
    ":bounded_utf8_length_sequence",
    ":utf8_for_code_point",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:nullability",
  ]
}

absl_test("decode_rust_punycode_test") {
  sources = [ "internal/decode_rust_punycode_test.cc" ]
  deps = [
    ":decode_rust_punycode",
    "//third_party/abseil-cpp/absl/base:config",
  ]
}

absl_source_set("demangle_rust") {
  sources = [ "internal/demangle_rust.cc" ]
  public = [ "internal/demangle_rust.h" ]
  visibility = [ ":*" ]
  deps = [
    ":decode_rust_punycode",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}

absl_test("demangle_rust_test") {
  sources = [ "internal/demangle_rust_test.cc" ]
  deps = [
    ":demangle_rust",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}

absl_source_set("utf8_for_code_point") {
  sources = [ "internal/utf8_for_code_point.cc" ]
  public = [ "internal/utf8_for_code_point.h" ]
  visibility = [ ":*" ]
  deps = [ "//third_party/abseil-cpp/absl/base:config" ]
}

absl_test("utf8_for_code_point_test") {
  sources = [ "internal/utf8_for_code_point_test.cc" ]
  deps = [
    ":utf8_for_code_point",
    "//third_party/abseil-cpp/absl/base:config",
  ]
}

absl_source_set("leak_check") {
  sources = [ "leak_check.cc" ]
  public = [ "leak_check.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}

absl_test("leak_check_test") {
  sources = [ "leak_check_test.cc" ]
  deps = [
    ":leak_check",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/log",
  ]
}

absl_source_set("stack_consumption") {
  testonly = true
  sources = [ "internal/stack_consumption.cc" ]
  public = [ "internal/stack_consumption.h" ]
  visibility = [ ":*" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
  ]
}

absl_test("stack_consumption_test") {
  sources = [ "internal/stack_consumption_test.cc" ]
  deps = [
    ":stack_consumption",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/log",
  ]
}
