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

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

absl_source_set("strings") {
  sources = [
    "ascii.cc",
    "charconv.cc",
    "escaping.cc",
    "internal/charconv_bigint.cc",
    "internal/charconv_bigint.h",
    "internal/charconv_parse.cc",
    "internal/charconv_parse.h",
    "internal/memutil.cc",
    "internal/memutil.h",
    "internal/stl_type_traits.h",
    "internal/str_join_internal.h",
    "internal/str_split_internal.h",
    "match.cc",
    "numbers.cc",
    "str_cat.cc",
    "str_replace.cc",
    "str_split.cc",
    "string_view.cc",
    "substitute.cc",
  ]
  public = [
    "ascii.h",
    "charconv.h",
    "escaping.h",
    "internal/string_constant.h",
    "match.h",
    "numbers.h",
    "str_cat.h",
    "str_join.h",
    "str_replace.h",
    "str_split.h",
    "string_view.h",
    "strip.h",
    "substitute.h",
  ]
  deps = [
    ":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:endian",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/base:throw_delegate",
    "//third_party/abseil-cpp/absl/memory",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/numeric:bits",
    "//third_party/abseil-cpp/absl/numeric:int128",
  ]
}

absl_source_set("internal") {
  sources = [
    "internal/escaping.cc",
    "internal/ostringstream.cc",
    "internal/utf8.cc",
  ]
  public = [
    "internal/char_map.h",
    "internal/escaping.h",
    "internal/ostringstream.h",
    "internal/resize_uninitialized.h",
    "internal/utf8.h",
  ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:endian",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/meta:type_traits",
  ]
}

absl_source_set("str_format") {
  public = [ "str_format.h" ]
  deps = [ ":str_format_internal" ]
}

absl_source_set("str_format_internal") {
  sources = [
    "internal/str_format/arg.cc",
    "internal/str_format/bind.cc",
    "internal/str_format/extension.cc",
    "internal/str_format/float_conversion.cc",
    "internal/str_format/output.cc",
    "internal/str_format/parser.cc",
  ]
  public = [
    "internal/str_format/arg.h",
    "internal/str_format/bind.h",
    "internal/str_format/checker.h",
    "internal/str_format/extension.h",
    "internal/str_format/float_conversion.h",
    "internal/str_format/output.h",
    "internal/str_format/parser.h",
  ]
  visibility = [ ":*" ]
  deps = [
    ":strings",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/functional:function_ref",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/numeric:bits",
    "//third_party/abseil-cpp/absl/numeric:int128",
    "//third_party/abseil-cpp/absl/numeric:representation",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_source_set("cord_internal") {
  sources = [
    "internal/cord_internal.cc",
    "internal/cord_rep_consume.cc",
    "internal/cord_rep_ring.cc",
  ]
  public = [
    "internal/cord_internal.h",
    "internal/cord_rep_consume.h",
    "internal/cord_rep_flat.h",
    "internal/cord_rep_ring.h",
    "internal/cord_rep_ring_reader.h",
  ]
  visibility = [ ":*" ]
  deps = [
    ":strings",
    "//third_party/abseil-cpp/absl/base:base_internal",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:endian",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/base:throw_delegate",
    "//third_party/abseil-cpp/absl/container:compressed_tuple",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/container:layout",
    "//third_party/abseil-cpp/absl/functional:function_ref",
    "//third_party/abseil-cpp/absl/meta:type_traits",
  ]
}

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

absl_source_set("cordz_update_tracker_test") {
  testonly = true
  sources = ["internal/cordz_update_tracker_test.cc"]
  deps = [
    ":cordz_update_tracker",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/synchronization",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("cord") {
  sources = [ "cord.cc" ]
  public = [ "cord.h" ]
  deps = [
    ":cord_internal",
    ":cordz_functions",
    ":cordz_info",
    ":cordz_statistics",
    ":cordz_update_scope",
    ":cordz_update_tracker",
    ":internal",
    ":str_format",
    ":strings",
    "//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:endian",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/container:fixed_array",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/functional:function_ref",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/types:optional",
  ]
}

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

absl_source_set("cordz_info") {
  sources = ["internal/cordz_info.cc"]
  public = ["internal/cordz_info.h"]
  visibility = [ "//third_party/abseil-cpp/*" ]
  deps = [
    ":cord_internal",
    ":cordz_functions",
    ":cordz_handle",
    ":cordz_statistics",
    ":cordz_update_tracker",
    "//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",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/debugging:stacktrace",
    "//third_party/abseil-cpp/absl/synchronization",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_source_set("cordz_update_scope") {
  public = ["internal/cordz_update_scope.h"]
  visibility = [ "//third_party/abseil-cpp/*" ]
  deps = [
    ":cord_internal",
    ":cordz_info",
    ":cordz_update_tracker",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}

absl_source_set("cordz_update_scope_test") {
  testonly = true
  sources = ["internal/cordz_update_scope_test.cc"]
  deps = [
    ":cord_internal",
    ":cordz_info",
    ":cordz_test_helpers",
    ":cordz_update_scope",
    ":cordz_update_tracker",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

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

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

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

absl_source_set("cordz_functions_test") {
  testonly = true
  sources = [ "internal/cordz_functions_test.cc" ]
  deps = [
    ":cordz_functions",
    ":cordz_test_helpers",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# TODO(b/186638384): Re-enable when random is compilable on win32-archive-rel bot
# absl_source_set("cordz_handle_test") {
#   testonly = true
#   sources = [ "internal/cordz_handle_test.cc" ]
#   deps = [
#     ":cordz_handle",
#     "//third_party/abseil-cpp/absl/base:config",
#     "//third_party/abseil-cpp/absl/memory",
#     "//third_party/abseil-cpp/absl/random",
#     "//third_party/abseil-cpp/absl/random:distributions",
#     "//third_party/abseil-cpp/absl/synchronization",
#     "//third_party/abseil-cpp/absl/synchronization:thread_pool",
#     "//third_party/abseil-cpp/absl/time",
#     "//third_party/googletest:gmock",
#     "//third_party/googletest:gtest",
#   ]
# }

absl_source_set("cordz_info_test") {
  testonly = true
  sources = [ "internal/cordz_info_test.cc" ]
  deps = [
    ":cord_internal",
    ":cordz_handle",
    ":cordz_info",
    ":cordz_statistics",
    ":cordz_test_helpers",
    ":cordz_update_tracker",
    ":strings",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/debugging:stacktrace",
    "//third_party/abseil-cpp/absl/debugging:symbolize",
    "//third_party/abseil-cpp/absl/types:span",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("cordz_info_statistics_test") {
  testonly = true
  sources = [ "internal/cordz_info_statistics_test.cc" ]
  deps = [
    ":cord",
    ":cord_internal",
    ":cordz_info",
    ":cordz_sample_token",
    ":cordz_statistics",
    ":cordz_update_scope",
    ":cordz_update_tracker",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/synchronization",
    "//third_party/abseil-cpp/absl/synchronization:thread_pool",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

# TODO(b/186638384): Re-enable when random is compilable on win32-archive-rel bot
# absl_source_set("cordz_sample_token_test") {
#   testonly = true
#   sources = [ "internal/cordz_sample_token_test.cc" ]
#   deps = [
#     ":cord_internal",
#     ":cordz_handle",
#     ":cordz_info",
#     ":cordz_sample_token",
#     ":cordz_test_helpers",
#     "//third_party/abseil-cpp/absl/base:config",
#     "//third_party/abseil-cpp/absl/memory",
#     "//third_party/abseil-cpp/absl/random",
#     "//third_party/abseil-cpp/absl/synchronization",
#     "//third_party/abseil-cpp/absl/synchronization:thread_pool",
#     "//third_party/abseil-cpp/absl/time",
#     "//third_party/googletest:gmock",
#     "//third_party/googletest:gtest",
#   ]
# }

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

absl_source_set("cordz_test_helpers") {
  testonly = true
  public = ["cordz_test_helpers.h"]
  deps = [
    ":cord",
    ":cord_internal",
    ":cordz_info",
    ":cordz_sample_token",
    ":cordz_statistics",
    ":cordz_update_tracker",
    ":strings",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("cordz_test") {
  testonly = true
  sources = ["cordz_test.cc"]
  deps = [
    ":cord",
    ":cord_test_helpers",
    ":cordz_functions",
    ":cordz_info",
    ":cordz_sample_token",
    ":cordz_statistics",
    ":cordz_test_helpers",
    ":cordz_update_tracker",
    ":strings",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("cord_rep_consume_test") {
  testonly = true
  sources = ["internal/cord_rep_consume_test.cc"]
  deps = [
    ":cord_internal",
    ":strings",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/abseil-cpp/absl/debugging:leak_check",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

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

absl_source_set("ascii_test") {
  testonly = true
  sources = [ "ascii_test.cc" ]
  deps = [
    ":strings",
    "//third_party/abseil-cpp/absl/base:core_headers",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("match_test") {
  testonly = true
  sources = [ "match_test.cc" ]
  deps = [
    ":strings",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("str_replace_test") {
  testonly = true
  sources = [ "str_replace_test.cc" ]
  deps = [
    ":strings",
    "//third_party/googletest:gtest",
  ]
}

absl_source_set("string_view_test") {
  testonly = true
  sources = [ "string_view_test.cc" ]
  deps = [
    ":strings",
    "//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/googletest:gtest",
  ]
}
