# 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("//flutter/third_party/abseil-cpp/absl.gni")

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

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

absl_source_set("check") {
  public = [ "check.h" ]
  deps = [
    "//flutter/third_party/abseil-cpp/absl/log/internal:check_impl",
    "//flutter/third_party/abseil-cpp/absl/log/internal:check_op",
    "//flutter/third_party/abseil-cpp/absl/log/internal:conditions",
    "//flutter/third_party/abseil-cpp/absl/log/internal:log_message",
    "//flutter/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",
    "//flutter/third_party/abseil-cpp/absl/base:config",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/strings",
  ]
}

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

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

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

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

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

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

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

absl_source_set("log_streamer") {
  public = [ "log_streamer.h" ]
  deps = [
    ":absl_log",
    "//flutter/third_party/abseil-cpp/absl/base:config",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/strings:internal",
    "//flutter/third_party/abseil-cpp/absl/strings:string_view",
    "//flutter/third_party/abseil-cpp/absl/types:optional",
    "//flutter/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",
    "//flutter/third_party/abseil-cpp/absl/base:config",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//flutter/third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

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

absl_source_set("absl_vlog_is_on") {
  public = [ "absl_vlog_is_on.h" ]
  visibility = [ "./*" ]
  deps = [
    "//flutter/third_party/abseil-cpp/absl/base:config",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/log/internal:vlog_config",
    "//flutter/third_party/abseil-cpp/absl/strings",
  ]
}

absl_source_set("vlog_is_on") {
  public = [ "vlog_is_on.h" ]
  visibility = [ "./*" ]
  deps = [ ":absl_vlog_is_on" ]
}

absl_test("vlog_is_on_test") {
  sources = [ "vlog_is_on_test.cc" ]
  deps = [
    ":flags",
    ":globals",
    ":log",
    ":scoped_mock_log",
    ":vlog_is_on",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/flags:flag",
    "//flutter/third_party/abseil-cpp/absl/types:optional",
  ]
}

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.inc" ]
  visibility = [ ":*" ]
  deps = [
    "//flutter/third_party/abseil-cpp/absl/base:config",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//flutter/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",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_helpers",
  ]
}

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

absl_test("globals_test") {
  sources = [ "globals_test.cc" ]
  deps = [
    ":globals",
    ":log",
    ":scoped_mock_log",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/log/internal:globals",
    "//flutter/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.inc" ]
  testonly = true
  visibility = [ ":*" ]
  deps = [
    ":globals",
    ":log_entry",
    ":scoped_mock_log",
    "//flutter/third_party/abseil-cpp/absl/base",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_actions",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//flutter/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",
    "//flutter/third_party/abseil-cpp/absl/base:config",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/log/internal:append_truncated",
    "//flutter/third_party/abseil-cpp/absl/log/internal:format",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//flutter/third_party/abseil-cpp/absl/strings",
    "//flutter/third_party/abseil-cpp/absl/strings:string_view",
    "//flutter/third_party/abseil-cpp/absl/time",
    "//flutter/third_party/abseil-cpp/absl/types:span",
  ]
}

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

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

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

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

absl_test("log_modifier_methods_test") {
  sources = [ "log_modifier_methods_test.cc" ]
  deps = [
    ":log",
    ":log_sink",
    ":scoped_mock_log",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_actions",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//flutter/third_party/abseil-cpp/absl/strings",
    "//flutter/third_party/abseil-cpp/absl/strings:string_view",
    "//flutter/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",
    "//flutter/third_party/abseil-cpp/absl/base:core_headers",
    "//flutter/third_party/abseil-cpp/absl/base:log_severity",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_helpers",
    "//flutter/third_party/abseil-cpp/absl/log/internal:test_matchers",
    "//flutter/third_party/abseil-cpp/absl/memory",
    "//flutter/third_party/abseil-cpp/absl/strings",
    "//flutter/third_party/abseil-cpp/absl/strings:string_view",
    "//flutter/third_party/abseil-cpp/absl/synchronization",
  ]
}

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

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