#
# Copyright 2019 The Abseil Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test")

# Internal-only implementation classes for Abseil Random
load(
    "//absl:copts/configure_copts.bzl",
    "ABSL_DEFAULT_COPTS",
    "ABSL_DEFAULT_LINKOPTS",
    "ABSL_RANDOM_RANDEN_COPTS",
    "ABSL_TEST_COPTS",
    "absl_random_randen_copts_init",
)

package(default_visibility = [
    "//absl/random:__pkg__",
])

licenses(["notice"])

cc_library(
    name = "traits",
    hdrs = ["traits.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = ["//absl/base:config"],
)

cc_library(
    name = "distribution_caller",
    hdrs = ["distribution_caller.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        "//absl/base:config",
        "//absl/base:fast_type_id",
        "//absl/utility",
    ],
)

cc_library(
    name = "fast_uniform_bits",
    hdrs = [
        "fast_uniform_bits.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        "//absl/base:config",
        "//absl/meta:type_traits",
    ],
)

cc_library(
    name = "seed_material",
    srcs = [
        "seed_material.cc",
    ],
    hdrs = [
        "seed_material.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS + select({
        "//absl:msvc_compiler": ["-DEFAULTLIB:bcrypt.lib"],
        "//absl:clang-cl_compiler": ["-DEFAULTLIB:bcrypt.lib"],
        "//conditions:default": [],
    }),
    deps = [
        ":fast_uniform_bits",
        "//absl/base:core_headers",
        "//absl/base:dynamic_annotations",
        "//absl/base:raw_logging_internal",
        "//absl/strings",
        "//absl/types:optional",
        "//absl/types:span",
    ],
)

cc_library(
    name = "pool_urbg",
    srcs = [
        "pool_urbg.cc",
    ],
    hdrs = [
        "pool_urbg.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = select({
        "//absl:msvc_compiler": [],
        "//absl:clang-cl_compiler": [],
        "//absl:wasm": [],
        "//conditions:default": ["-pthread"],
    }) + ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":randen",
        ":seed_material",
        ":traits",
        "//absl/base",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/base:endian",
        "//absl/base:raw_logging_internal",
        "//absl/random:seed_gen_exception",
        "//absl/types:span",
    ],
)

cc_library(
    name = "explicit_seed_seq",
    testonly = 1,
    hdrs = [
        "explicit_seed_seq.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        "//absl/base:config",
        "//absl/base:endian",
    ],
)

cc_library(
    name = "sequence_urbg",
    testonly = 1,
    hdrs = [
        "sequence_urbg.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = ["//absl/base:config"],
)

cc_library(
    name = "salted_seed_seq",
    hdrs = [
        "salted_seed_seq.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":seed_material",
        "//absl/container:inlined_vector",
        "//absl/meta:type_traits",
        "//absl/types:optional",
        "//absl/types:span",
    ],
)

cc_library(
    name = "iostream_state_saver",
    hdrs = ["iostream_state_saver.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        "//absl/meta:type_traits",
        "//absl/numeric:int128",
    ],
)

cc_library(
    name = "generate_real",
    hdrs = [
        "generate_real.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":fastmath",
        ":traits",
        "//absl/meta:type_traits",
        "//absl/numeric:bits",
    ],
)

cc_library(
    name = "fastmath",
    hdrs = [
        "fastmath.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = ["//absl/numeric:bits"],
)

cc_library(
    name = "wide_multiply",
    hdrs = ["wide_multiply.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":traits",
        "//absl/base:config",
        "//absl/numeric:bits",
        "//absl/numeric:int128",
    ],
)

cc_library(
    name = "nonsecure_base",
    hdrs = ["nonsecure_base.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":pool_urbg",
        ":salted_seed_seq",
        ":seed_material",
        "//absl/base:core_headers",
        "//absl/meta:type_traits",
        "//absl/types:optional",
        "//absl/types:span",
    ],
)

cc_library(
    name = "pcg_engine",
    hdrs = ["pcg_engine.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":fastmath",
        ":iostream_state_saver",
        "//absl/base:config",
        "//absl/meta:type_traits",
        "//absl/numeric:bits",
        "//absl/numeric:int128",
    ],
)

cc_library(
    name = "randen_engine",
    hdrs = ["randen_engine.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":iostream_state_saver",
        ":randen",
        "//absl/base:endian",
        "//absl/meta:type_traits",
    ],
)

cc_library(
    name = "platform",
    srcs = [
        "randen_round_keys.cc",
    ],
    hdrs = [
        "randen_traits.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    textual_hdrs = [
        "platform.h",
    ],
    deps = ["//absl/base:config"],
)

cc_library(
    name = "randen",
    srcs = [
        "randen.cc",
    ],
    hdrs = [
        "randen.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":platform",
        ":randen_hwaes",
        ":randen_slow",
        "//absl/base:raw_logging_internal",
    ],
)

cc_library(
    name = "randen_slow",
    srcs = ["randen_slow.cc"],
    hdrs = ["randen_slow.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":platform",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/base:endian",
        "//absl/numeric:int128",
    ],
)

absl_random_randen_copts_init()

cc_library(
    name = "randen_hwaes",
    srcs = [
        "randen_detect.cc",
    ],
    hdrs = [
        "randen_detect.h",
        "randen_hwaes.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":platform",
        ":randen_hwaes_impl",
        "//absl/base:config",
    ],
)

# build with --save_temps to see assembly language output.
cc_library(
    name = "randen_hwaes_impl",
    srcs = [
        "randen_hwaes.cc",
        "randen_hwaes.h",
    ],
    copts = ABSL_DEFAULT_COPTS + ABSL_RANDOM_RANDEN_COPTS + select({
        "//absl:msvc_compiler": [],
        "//absl:clang-cl_compiler": [],
        "//conditions:default": ["-Wno-pass-failed"],
    }),
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":platform",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/numeric:int128",
    ],
)

cc_binary(
    name = "gaussian_distribution_gentables",
    srcs = [
        "gaussian_distribution_gentables.cc",
    ],
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        "//absl/base:core_headers",
        "//absl/random:distributions",
    ],
)

cc_library(
    name = "distribution_test_util",
    testonly = 1,
    srcs = [
        "chi_square.cc",
        "distribution_test_util.cc",
    ],
    hdrs = [
        "chi_square.h",
        "distribution_test_util.h",
    ],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/base:raw_logging_internal",
        "//absl/strings",
        "//absl/strings:str_format",
        "//absl/types:span",
    ],
)

# Common tags for tests, etc.
ABSL_RANDOM_NONPORTABLE_TAGS = [
    "no_test_android_arm",
    "no_test_android_arm64",
    "no_test_android_x86",
    "no_test_darwin_x86_64",
    "no_test_ios_x86_64",
    "no_test_loonix",
    "no_test_msvc_x64",
    "no_test_wasm",
]

cc_test(
    name = "traits_test",
    size = "small",
    srcs = ["traits_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":traits",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "generate_real_test",
    size = "small",
    srcs = [
        "generate_real_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":generate_real",
        "//absl/flags:flag",
        "//absl/numeric:bits",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "distribution_test_util_test",
    size = "small",
    srcs = ["distribution_test_util_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":distribution_test_util",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "fastmath_test",
    size = "small",
    srcs = ["fastmath_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":fastmath",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "explicit_seed_seq_test",
    size = "small",
    srcs = ["explicit_seed_seq_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":explicit_seed_seq",
        "//absl/random:seed_sequences",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "salted_seed_seq_test",
    size = "small",
    srcs = ["salted_seed_seq_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":salted_seed_seq",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "chi_square_test",
    size = "small",
    srcs = [
        "chi_square_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":distribution_test_util",
        "//absl/base:core_headers",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "fast_uniform_bits_test",
    size = "small",
    srcs = [
        "fast_uniform_bits_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":fast_uniform_bits",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_library(
    name = "mock_helpers",
    hdrs = ["mock_helpers.h"],
    deps = [
        "//absl/base:fast_type_id",
        "//absl/types:optional",
    ],
)

cc_library(
    name = "mock_overload_set",
    testonly = 1,
    hdrs = ["mock_overload_set.h"],
    deps = [
        ":mock_helpers",
        "//absl/random:mocking_bit_gen",
        "@com_google_googletest//:gtest",
    ],
)

cc_test(
    name = "nonsecure_base_test",
    size = "small",
    srcs = [
        "nonsecure_base_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":nonsecure_base",
        "//absl/random",
        "//absl/random:distributions",
        "//absl/random:seed_sequences",
        "//absl/strings",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "seed_material_test",
    size = "small",
    srcs = ["seed_material_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":seed_material",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "pool_urbg_test",
    size = "small",
    srcs = [
        "pool_urbg_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":pool_urbg",
        "//absl/meta:type_traits",
        "//absl/types:span",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "pcg_engine_test",
    size = "medium",  # Trying to measure accuracy.
    srcs = ["pcg_engine_test.cc"],
    copts = ABSL_TEST_COPTS,
    flaky = 1,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":explicit_seed_seq",
        ":pcg_engine",
        "//absl/time",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "randen_engine_test",
    size = "medium",
    srcs = [
        "randen_engine_test.cc",
    ],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":explicit_seed_seq",
        ":randen_engine",
        "//absl/base:raw_logging_internal",
        "//absl/strings",
        "//absl/time",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "randen_test",
    size = "small",
    srcs = ["randen_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":randen",
        "//absl/meta:type_traits",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "randen_slow_test",
    size = "small",
    srcs = ["randen_slow_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":platform",
        ":randen_slow",
        "//absl/base:endian",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "randen_hwaes_test",
    size = "small",
    srcs = ["randen_hwaes_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    tags = ABSL_RANDOM_NONPORTABLE_TAGS,
    deps = [
        ":platform",
        ":randen_hwaes",
        ":randen_hwaes_impl",  # build_cleaner: keep
        "//absl/base:raw_logging_internal",
        "//absl/strings:str_format",
        "@com_google_googletest//:gtest",
    ],
)

cc_test(
    name = "wide_multiply_test",
    size = "small",
    srcs = ["wide_multiply_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":wide_multiply",
        "//absl/numeric:bits",
        "//absl/numeric:int128",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_library(
    name = "nanobenchmark",
    srcs = ["nanobenchmark.cc"],
    linkopts = ABSL_DEFAULT_LINKOPTS,
    textual_hdrs = ["nanobenchmark.h"],
    deps = [
        ":platform",
        ":randen_engine",
        "//absl/base:config",
        "//absl/base:core_headers",
        "//absl/base:raw_logging_internal",
    ],
)

cc_library(
    name = "uniform_helper",
    hdrs = ["uniform_helper.h"],
    copts = ABSL_DEFAULT_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":traits",
        "//absl/base:config",
        "//absl/meta:type_traits",
    ],
)

cc_test(
    name = "nanobenchmark_test",
    size = "small",
    srcs = ["nanobenchmark_test.cc"],
    flaky = 1,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    tags = [
        "benchmark",
        "no_test_ios_x86_64",
        "no_test_loonix",  # Crashing.
    ],
    deps = [
        ":nanobenchmark",
        "//absl/base:raw_logging_internal",
        "//absl/strings",
    ],
)

cc_test(
    name = "randen_benchmarks",
    size = "medium",
    timeout = "long",
    srcs = ["randen_benchmarks.cc"],
    copts = ABSL_TEST_COPTS + ABSL_RANDOM_RANDEN_COPTS,
    flaky = 1,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    tags = ABSL_RANDOM_NONPORTABLE_TAGS + ["benchmark"],
    deps = [
        ":nanobenchmark",
        ":platform",
        ":randen",
        ":randen_engine",
        ":randen_hwaes",
        ":randen_hwaes_impl",
        ":randen_slow",
        "//absl/base:raw_logging_internal",
        "//absl/strings",
    ],
)

cc_test(
    name = "iostream_state_saver_test",
    srcs = ["iostream_state_saver_test.cc"],
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":iostream_state_saver",
        "@com_google_googletest//:gtest_main",
    ],
)

cc_test(
    name = "uniform_helper_test",
    size = "small",
    srcs = ["uniform_helper_test.cc"],
    copts = ABSL_TEST_COPTS,
    linkopts = ABSL_DEFAULT_LINKOPTS,
    deps = [
        ":uniform_helper",
        "@com_google_googletest//:gtest_main",
    ],
)
