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

# Please do not add more entries to this list. We plan to remove
# abseil-cpp from the Fuchsia platform source tree once cobalt
# moves out-of-tree.
visibility = [
  "$cobalt_root/*",
  "//third_party/abseil-cpp/*",
  "//third_party/tink/*",
]

source_set("traits") {
  public = [ "traits.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [ "../../base:config" ]
}

source_set("distribution_caller") {
  public = [ "distribution_caller.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    "../../base:config",
    "../../base:fast_type_id",
    "../../utility",
  ]
}

source_set("fast_uniform_bits") {
  public = [ "fast_uniform_bits.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    "../../base:config",
    "../../meta:type_traits",
  ]
}

source_set("seed_material") {
  sources = [ "seed_material.cc" ]
  public = [ "seed_material.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":fast_uniform_bits",
    "../../base:core_headers",
    "../../base:dynamic_annotations",
    "../../base:raw_logging_internal",
    "../../strings",
    "../../types:optional",
    "../../types:span",
  ]
}

source_set("pool_urbg") {
  sources = [ "pool_urbg.cc" ]
  public = [ "pool_urbg.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":randen",
    ":seed_material",
    ":traits",
    "../../base",
    "../../base:config",
    "../../base:core_headers",
    "../../base:endian",
    "../../base:raw_logging_internal",
    "../../random:seed_gen_exception",
    "../../types:span",
  ]
}

source_set("salted_seed_seq") {
  public = [ "salted_seed_seq.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":seed_material",
    "../../container:inlined_vector",
    "../../meta:type_traits",
    "../../types:optional",
    "../../types:span",
  ]
}

source_set("iostream_state_saver") {
  public = [ "iostream_state_saver.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    "../../meta:type_traits",
    "../../numeric:int128",
  ]
}

source_set("generate_real") {
  public = [ "generate_real.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":fastmath",
    ":traits",
    "../../meta:type_traits",
    "../../numeric:bits",
  ]
}

source_set("fastmath") {
  public = [ "fastmath.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [ "../../numeric:bits" ]
}

source_set("wide_multiply") {
  public = [ "wide_multiply.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":traits",
    "../../base:config",
    "../../numeric:bits",
    "../../numeric:int128",
  ]
}

source_set("nonsecure_base") {
  public = [ "nonsecure_base.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":pool_urbg",
    ":salted_seed_seq",
    ":seed_material",
    "../../base:core_headers",
    "../../meta:type_traits",
    "../../types:optional",
    "../../types:span",
  ]
}

source_set("pcg_engine") {
  public = [ "pcg_engine.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":fastmath",
    ":iostream_state_saver",
    "../../base:config",
    "../../meta:type_traits",
    "../../numeric:bits",
    "../../numeric:int128",
  ]
}

source_set("randen_engine") {
  public = [ "randen_engine.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":iostream_state_saver",
    ":randen",
    "../../base:endian",
    "../../meta:type_traits",
  ]
}

source_set("platform") {
  sources = [ "randen_round_keys.cc" ]
  public = [
    "platform.h",
    "randen_traits.h",
  ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [ "../../base:config" ]
}

source_set("randen") {
  sources = [ "randen.cc" ]
  public = [ "randen.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":platform",
    ":randen_hwaes",
    ":randen_slow",
    "../../base:raw_logging_internal",
  ]
}

source_set("randen_slow") {
  sources = [ "randen_slow.cc" ]
  public = [ "randen_slow.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":platform",
    "../../base:config",
    "../../base:core_headers",
    "../../base:endian",
    "../../numeric:int128",
  ]
}

source_set("randen_hwaes") {
  sources = [ "randen_detect.cc" ]
  public = [
    "randen_detect.h",
    "randen_hwaes.h",
  ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":platform",
    ":randen_hwaes_impl",
    "../../base:config",
  ]
}

# build with --save_temps to see assembly language output.
source_set("randen_hwaes_impl") {
  sources = [
    "randen_hwaes.cc",
    "randen_hwaes.h",
  ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":platform",
    "../../base:config",
    "../../base:core_headers",
    "../../numeric:int128",
  ]
}

source_set("mock_helpers") {
  public = [ "mock_helpers.h" ]
  deps = [
    "../../base:fast_type_id",
    "../../types:optional",
  ]
}

source_set("uniform_helper") {
  public = [ "uniform_helper.h" ]
  public_configs = [ "//third_party/abseil-cpp:abseil_config" ]
  deps = [
    ":traits",
    "../../base:config",
    "../../meta:type_traits",
  ]
}
