# 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")

if (build_with_chromium) {
  visibility = [
    "//third_party/webrtc/*",
    "//third_party/abseil-cpp/*",
    "//third_party/googletest:gtest",
  ]
} else {
  visibility = [ "*" ]
}

source_set("compressed_tuple") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/compressed_tuple.h",
  ]
  deps = [
    "../utility",
  ]
}

source_set("fixed_array") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "fixed_array.h",
  ]
  deps = [
    ":compressed_tuple",
    "../algorithm",
    "../base:core_headers",
    "../base:dynamic_annotations",
    "../base:throw_delegate",
    "../memory",
  ]
}

source_set("inlined_vector_internal") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/inlined_vector.h",
  ]
  deps = [
    "../meta:type_traits",
  ]
}

source_set("inlined_vector") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "inlined_vector.h",
  ]
  deps = [
    ":inlined_vector_internal",
    "../algorithm",
    "../base:core_headers",
    "../base:throw_delegate",
    "../memory",
  ]
}

source_set("counting_allocator") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/counting_allocator.h",
  ]
  visibility = []
  visibility += [ ":*" ]
}

source_set("test_instance_tracker") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "internal/test_instance_tracker.cc",
  ]
  public = [
    "internal/test_instance_tracker.h",
  ]
  visibility = []
  visibility += [ "../*" ]
}

source_set("flat_hash_map") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "flat_hash_map.h",
  ]
  deps = [
    ":container_memory",
    ":hash_function_defaults",
    ":raw_hash_map",
    "../algorithm:container",
    "../memory",
  ]
}

source_set("flat_hash_set") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "flat_hash_set.h",
  ]
  deps = [
    ":container_memory",
    ":hash_function_defaults",
    ":raw_hash_set",
    "../algorithm:container",
    "../base:core_headers",
    "../memory",
  ]
}

source_set("node_hash_map") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "node_hash_map.h",
  ]
  deps = [
    ":container_memory",
    ":hash_function_defaults",
    ":node_hash_policy",
    ":raw_hash_map",
    "../algorithm:container",
    "../memory",
  ]
}

source_set("node_hash_set") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "node_hash_set.h",
  ]
  deps = [
    ":container_memory",
    ":hash_function_defaults",
    ":node_hash_policy",
    ":raw_hash_set",
    "../algorithm:container",
    "../memory",
  ]
}

source_set("container_memory") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/container_memory.h",
  ]
  deps = [
    "../memory",
    "../utility",
  ]
}

source_set("hash_function_defaults") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/hash_function_defaults.h",
  ]
  deps = [
    "../base:config",
    "../hash",
    "../strings",
  ]
}

source_set("hash_generator_testing") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "internal/hash_generator_testing.cc",
  ]
  public = [
    "internal/hash_generator_testing.h",
  ]
  deps = [
    ":hash_policy_testing",
    "../meta:type_traits",
    "../strings",
  ]
}

source_set("hash_policy_testing") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/hash_policy_testing.h",
  ]
  deps = [
    "../hash",
    "../strings",
  ]
}

source_set("hash_policy_traits") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/hash_policy_traits.h",
  ]
  deps = [
    "../meta:type_traits",
  ]
}

source_set("hashtable_debug") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/hashtable_debug.h",
  ]
  deps = [
    ":hashtable_debug_hooks",
  ]
}

source_set("hashtable_debug_hooks") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/hashtable_debug_hooks.h",
  ]
}

source_set("hashtablez_sampler") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/hashtablez_sampler.h",
  ]
  sources = [
    "internal/hashtablez_sampler.cc",
    "internal/hashtablez_sampler_force_weak_definition.cc",
  ]
  deps = [
    ":have_sse",
    "../base",
    "../base:core_headers",
    "../debugging:stacktrace",
    "../memory",
    "../synchronization",
    "../utility",
  ]
}

source_set("node_hash_policy") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/node_hash_policy.h",
  ]
}

source_set("raw_hash_map") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/raw_hash_map.h",
  ]
  deps = [
    ":container_memory",
    ":raw_hash_set",
  ]
}

source_set("have_sse") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/have_sse.h",
  ]
  visibility = []
  visibility += [ ":*" ]
}

source_set("common") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/common.h",
  ]
  deps = [
    "../meta:type_traits",
    "../types:optional",
  ]
}

source_set("raw_hash_set") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  sources = [
    "internal/raw_hash_set.cc",
  ]
  public = [
    "internal/raw_hash_set.h",
  ]
  deps = [
    ":common",
    ":compressed_tuple",
    ":container_memory",
    ":hash_policy_traits",
    ":hashtable_debug_hooks",
    ":hashtablez_sampler",
    ":have_sse",
    ":layout",
    "../base:bits",
    "../base:config",
    "../base:core_headers",
    "../base:endian",
    "../memory",
    "../meta:type_traits",
    "../utility",
  ]
}

source_set("layout") {
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/layout.h",
  ]
  deps = [
    "../base:core_headers",
    "../meta:type_traits",
    "../strings",
    "../types:span",
    "../utility",
  ]
}

source_set("tracked") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/tracked.h",
  ]
}

source_set("unordered_map_constructor_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_map_constructor_test.h",
  ]
  deps = [
    ":hash_generator_testing",
    ":hash_policy_testing",
    "//testing/gtest",
  ]
}

source_set("unordered_map_lookup_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_map_lookup_test.h",
  ]
  deps = [
    ":hash_generator_testing",
    ":hash_policy_testing",
    "//testing/gtest",
  ]
}

source_set("unordered_map_modifiers_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_map_modifiers_test.h",
  ]
  deps = [
    ":hash_generator_testing",
    ":hash_policy_testing",
    "//testing/gtest",
  ]
}

source_set("unordered_set_constructor_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_set_constructor_test.h",
  ]
  deps = [
    ":hash_generator_testing",
    ":hash_policy_testing",
    "../meta:type_traits",
    "//testing/gtest",
  ]
}

source_set("unordered_set_members_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_set_members_test.h",
  ]
  deps = [
    "../meta:type_traits",
    "//testing/gtest",
  ]
}

source_set("unordered_map_members_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_map_members_test.h",
  ]
  deps = [
    "../meta:type_traits",
    "//testing/gtest",
  ]
}

source_set("unordered_set_lookup_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_set_lookup_test.h",
  ]
  deps = [
    ":hash_generator_testing",
    ":hash_policy_testing",
    "//testing/gtest",
  ]
}

source_set("unordered_set_modifiers_test") {
  testonly = true
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [
    "//build/config/compiler:no_chromium_code",
    "//third_party/abseil-cpp:absl_default_cflags_cc",
  ]
  public_configs = [ "//third_party/abseil-cpp:absl_include_config" ]
  public = [
    "internal/unordered_set_modifiers_test.h",
  ]
  deps = [
    ":hash_generator_testing",
    ":hash_policy_testing",
    "//testing/gtest",
  ]
}
