# 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("traits") {
  public = [ "traits.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//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("distribution_caller") {
  public = [ "distribution_caller.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:fast_type_id",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/random:mocking_access",
    "//third_party/abseil-cpp/absl/utility",
  ]
}

absl_source_set("fast_uniform_bits") {
  public = [ "fast_uniform_bits.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":traits",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/meta:type_traits",
  ]
}

absl_source_set("seed_material") {
  sources = [ "seed_material.cc" ]
  public = [ "seed_material.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":fast_uniform_bits",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:dynamic_annotations",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:span",
  ]
  if (is_win) {
    libs = [ "bcrypt.lib" ]
  }
}

absl_source_set("entropy_pool") {
  sources = [ "entropy_pool.cc" ]
  public = [ "entropy_pool.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":platform",
    ":randen",
    ":seed_material",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//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/random:seed_gen_exception",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_source_set("explicit_seed_seq") {
  testonly = true
  public = [ "explicit_seed_seq.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:endian",
  ]
}

absl_source_set("sequence_urbg") {
  testonly = true
  public = [ "sequence_urbg.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [ "//third_party/abseil-cpp/absl/base:config" ]
}

absl_source_set("salted_seed_seq") {
  public = [ "salted_seed_seq.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":seed_material",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/types:optional",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_source_set("iostream_state_saver") {
  public = [ "iostream_state_saver.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/numeric:int128",
  ]
}

absl_source_set("generate_real") {
  public = [ "generate_real.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":fastmath",
    ":traits",
    "//third_party/abseil-cpp/absl/meta:type_traits",
    "//third_party/abseil-cpp/absl/numeric:bits",
  ]
}

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

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

absl_source_set("nonsecure_base") {
  public = [ "nonsecure_base.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":entropy_pool",
    ":salted_seed_seq",
    ":seed_material",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/container:inlined_vector",
    "//third_party/abseil-cpp/absl/meta:type_traits",
  ]
}

absl_source_set("pcg_engine") {
  public = [ "pcg_engine.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":fastmath",
    ":iostream_state_saver",
    "//third_party/abseil-cpp/absl/base:config",
    "//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("randen_engine") {
  public = [ "randen_engine.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":iostream_state_saver",
    ":randen",
    "//third_party/abseil-cpp/absl/base:endian",
    "//third_party/abseil-cpp/absl/meta:type_traits",
  ]
}

absl_source_set("platform") {
  sources = [ "randen_round_keys.cc" ]
  public = [
    "platform.h",
    "randen_traits.h",
  ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [ "//third_party/abseil-cpp/absl/base:config" ]
}

absl_source_set("randen") {
  sources = [ "randen.cc" ]
  public = [ "randen.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":platform",
    ":randen_hwaes",
    ":randen_hwaes_impl",
    ":randen_slow",
    "//third_party/abseil-cpp/absl/base:config",
  ]
}

absl_source_set("randen_slow") {
  sources = [ "randen_slow.cc" ]
  public = [ "randen_slow.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":platform",
    "//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/numeric:int128",
  ]
}

absl_source_set("randen_hwaes") {
  sources = [ "randen_detect.cc" ]
  public = [ "randen_detect.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":platform",
    "//third_party/abseil-cpp/absl/base:config",
  ]
}

absl_source_set("randen_hwaes_impl") {
  sources = [ "randen_hwaes.cc" ]
  public = [ "randen_hwaes.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":platform",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/numeric:int128",
  ]
}

absl_source_set("distribution_test_util") {
  testonly = true
  sources = [
    "chi_square.cc",
    "distribution_test_util.cc",
  ]
  public = [
    "chi_square.h",
    "distribution_test_util.h",
  ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  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",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:str_format",
    "//third_party/abseil-cpp/absl/strings:string_view",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_test("traits_test") {
  sources = [ "traits_test.cc" ]
  deps = [ ":traits" ]
}

absl_test("generate_real_test") {
  sources = [ "generate_real_test.cc" ]
  deps = [
    ":generate_real",
    "//third_party/abseil-cpp/absl/flags:flag",
    "//third_party/abseil-cpp/absl/numeric:bits",
  ]
}

absl_test("distribution_test_util_test") {
  sources = [ "distribution_test_util_test.cc" ]
  deps = [ ":distribution_test_util" ]
}

absl_test("fastmath_test") {
  sources = [ "fastmath_test.cc" ]
  deps = [ ":fastmath" ]
}

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

absl_test("salted_seed_seq_test") {
  sources = [ "salted_seed_seq_test.cc" ]
  deps = [
    ":salted_seed_seq",
    ":seed_material",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}

absl_test("chi_square_test") {
  sources = [ "chi_square_test.cc" ]
  deps = [
    ":distribution_test_util",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/base:core_headers",
  ]
}

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

absl_source_set("mock_helpers") {
  public = [ "mock_helpers.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:fast_type_id",
    "//third_party/abseil-cpp/absl/random:mocking_access",
  ]
}

absl_source_set("mock_overload_set") {
  testonly = true
  public = [ "mock_overload_set.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":mock_helpers",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/random:mocking_bit_gen",
    "//third_party/googletest:gmock",
    "//third_party/googletest:gtest",
  ]
}

absl_test("nonsecure_base_test") {
  sources = [ "nonsecure_base_test.cc" ]
  deps = [
    ":nonsecure_base",
    "//third_party/abseil-cpp/absl/algorithm:container",
    "//third_party/abseil-cpp/absl/container:flat_hash_set",
    "//third_party/abseil-cpp/absl/random",
    "//third_party/abseil-cpp/absl/random:distributions",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_test("seed_material_test") {
  sources = [ "seed_material_test.cc" ]
  deps = [
    ":seed_material",
    "//third_party/abseil-cpp/absl/types:span",
  ]
}

absl_test("entropy_pool_test") {
  sources = [ "entropy_pool_test.cc" ]
  deps = [
    ":entropy_pool",
    "//third_party/abseil-cpp/absl/container:flat_hash_set",
    "//third_party/abseil-cpp/absl/synchronization",
  ]
}

absl_test("pcg_engine_test") {
  sources = [ "pcg_engine_test.cc" ]
  deps = [
    ":explicit_seed_seq",
    ":pcg_engine",
  ]
}

absl_test("randen_engine_test") {
  sources = [ "randen_engine_test.cc" ]
  deps = [
    ":explicit_seed_seq",
    ":randen_engine",
    "//third_party/abseil-cpp/absl/log",
    "//third_party/abseil-cpp/absl/time",
  ]
}

absl_test("randen_test") {
  sources = [ "randen_test.cc" ]
  deps = [ ":randen" ]
}

absl_test("randen_slow_test") {
  sources = [ "randen_slow_test.cc" ]
  deps = [
    ":platform",
    ":randen_slow",
  ]
}

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

absl_test("wide_multiply_test") {
  sources = [ "wide_multiply_test.cc" ]
  deps = [
    ":traits",
    ":wide_multiply",
    "//third_party/abseil-cpp/absl/numeric:int128",
  ]
}

# Only used for benchmarking
# absl_source_set("nanobenchmark")

absl_source_set("uniform_helper") {
  public = [ "uniform_helper.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":traits",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/meta:type_traits",
  ]
}

absl_source_set("mock_validators") {
  public = [ "mock_validators.h" ]
  visibility = [
    ":*",
    "//third_party/abseil-cpp/absl/random:*",
  ]
  deps = [
    ":iostream_state_saver",
    ":uniform_helper",
    "//third_party/abseil-cpp/absl/base:config",
    "//third_party/abseil-cpp/absl/base:raw_logging_internal",
    "//third_party/abseil-cpp/absl/strings",
    "//third_party/abseil-cpp/absl/strings:string_view",
  ]
}

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

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

absl_test("iostream_state_saver_test") {
  sources = [ "iostream_state_saver_test.cc" ]
  deps = [ ":iostream_state_saver" ]
}

absl_test("uniform_helper_test") {
  sources = [ "uniform_helper_test.cc" ]
  deps = [ ":uniform_helper" ]
}
