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

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

absl_source_set("absl_check") {
  public = [ "absl_check.h" ]
  deps = [ "//third_party/abseil-cpp/absl/log/internal:check_impl" ]
}

absl_source_set("absl_log") {
  public = [ "absl_log.h" ]
  deps = [ "//third_party/abseil-cpp/absl/log/internal:log_impl" ]
}

absl_source_set("check") {
  public = [ "check.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/log/internal:check_impl",
    "//third_party/abseil-cpp/absl/log/internal:check_op",
    "//third_party/abseil-cpp/absl/log/internal:conditions",
    "//third_party/abseil-cpp/absl/log/internal:log_message",
    "//third_party/abseil-cpp/absl/log/internal:strip",
  ]
}

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

absl_source_set("flags") {
  sources = [ "flags.cc" ]
  public = [ "flags.h" ]
  deps = [
    ":globals",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/flags:flag",
    "//third_party/abseil-cpp/absl/flags:marshalling",
    "//third_party/abseil-cpp/absl/log/internal:config",
    "//third_party/abseil-cpp/absl/log/internal:flags",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

absl_source_set("globals") {
  sources = [ "globals.cc" ]
  public = [ "globals.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:atomic_hook",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/hash",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

absl_source_set("initialize") {
  sources = [ "initialize.cc" ]
  public = [ "initialize.h" ]
  deps = [
    ":globals",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/log/internal:globals",
    "//third_party/abseil-cpp/absl/time",
  ]
}

absl_source_set("log") {
  public = [ "log.h" ]
  deps = [ "//third_party/abseil-cpp/absl/log/internal:log_impl" ]
}

absl_source_set("log_entry") {
  sources = [ "log_entry.cc" ]
  public = [ "log_entry.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/log/internal:config",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/time",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

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

absl_source_set("log_sink_registry") {
  public = [ "log_sink_registry.h" ]
  deps = [
    ":log_sink",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/log/internal:log_sink_set",
  ]
}

absl_source_set("log_streamer") {
  public = [ "log_streamer.h" ]
  deps = [
    ":absl_log",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:internal",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/utility",
  ]
}

absl_source_set("scoped_mock_log") {
  testonly = true
  sources = [ "scoped_mock_log.cc" ]
  public = [ "scoped_mock_log.h" ]
  deps = [
    ":log_entry",
    ":log_sink",
    ":log_sink_registry",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("structured") {
  testonly = true
  public = [ "structured.h" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/log/internal:structured",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

absl_test("absl_check_test") {
  sources = [ "absl_check_test.cc" ]
  if (is_ios) {
    sources = []
  }
  deps = [
    ":absl_check",
    ":check_test_impl",
  ]
}

absl_test("absl_log_basic_test") {
  sources = [ "absl_log_basic_test.cc" ]
  deps = [
    ":absl_log",
    ":log_basic_test_impl",
  ]
}

absl_test("check_test") {
  sources = [ "check_test.cc" ]
  if (is_ios) {
    sources = []
  }
  deps = [
    ":check",
    ":check_test_impl",
  ]
}

absl_source_set("check_test_impl") {
  testonly = true
  public = [ "check_test_impl.h" ]
  visibility = [ ":*" ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/status",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

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

absl_test("flags_test") {
  sources = [ "flags_test.cc" ]
  deps = [
    ":flags",
    ":globals",
    ":log",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/flags:flag",
    "//third_party/abseil-cpp/absl/flags:reflection",
    "//third_party/abseil-cpp/absl/log/internal:flags",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

absl_test("globals_test") {
  sources = [ "globals_test.cc" ]
  deps = [
    ":globals",
    ":log",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/log/internal:globals",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
  ]
}

absl_test("log_basic_test") {
  sources = [ "log_basic_test.cc" ]
  deps = [
    ":log",
    ":log_basic_test_impl",
  ]
}

absl_source_set("log_basic_test_impl") {
  public = [ "log_basic_test_impl.h" ]
  testonly = true
  visibility = [ ":*" ]
  deps = [
    ":globals",
    ":log_entry",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/log/internal:test_actions",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

absl_test("log_entry_test") {
  sources = [ "log_entry_test.cc" ]
  deps = [
    ":log_entry",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/log/internal:append_truncated",
    "//third_party/abseil-cpp/absl/log/internal:format",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/time",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_test("log_format_test") {
  sources = [ "log_format_test.cc" ]
  deps = [
    ":check",
    ":log",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:str_format",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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

if (!use_cobalt_customizations) {
absl_test("log_sink_test") {
  sources = [ "log_sink_test.cc" ]
  if (is_ios) {
    sources = []
  }
  deps = [
    ":log",
    ":log_sink",
    ":log_sink_registry",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/log/internal:test_actions",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}
}

absl_test("log_streamer_test") {
  sources = [ "log_streamer_test.cc" ]
  deps = [
    ":log",
    ":log_streamer",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/base",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/log/internal:test_actions",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/abseil-cpp/absl/strings",
  ]
}

absl_test("log_modifier_methods_test") {
  sources = [ "log_modifier_methods_test.cc" ]
  deps = [
    ":log",
    ":log_sink",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/log/internal:test_actions",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/time",
  ]
}

absl_test("scoped_mock_log_test") {
  sources = [ "scoped_mock_log_test.cc" ]
  if (is_ios) {
    sources = []
  }
  deps = [
    ":globals",
    ":log",
    ":scoped_mock_log",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_test("stripping_test") {
  sources = [ "stripping_test.cc" ]
  deps = [
    ":check",
    ":log",
    "//third_party/abseil-cpp/absl/base:log_severity",
    "//third_party/abseil-cpp/absl/base:strerror",
    "//third_party/abseil-cpp/absl/flags:program_name",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:str_format",
  ]
}

absl_test("structured_test") {
  sources = [ "structured_test.cc" ]
  deps = [
    ":log",
    ":scoped_mock_log",
    ":structured",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//third_party/abseil-cpp/absl/log/internal:test_matchers",
  ]
}
