tvl-depot/absl/random/internal/BUILD.bazel
Abseil Team 1948f6f967 Export of internal Abseil changes
--
bc74316103bbda92541896f588f71c9d45bea768 by Gennadiy Civil <misterg@google.com>:

Manually fixing the BUILD.bazel files

--
d41bf9ea916a0dc8c69e6ba77f58f9d55649880e by Shaindel Schwartz <shaindel@google.com>:

Minor cleanup to miscellaneous BUILD files.

PiperOrigin-RevId: 266420157

--
08a8dc2cbd48d27e1115809f9ca8d178551cd66e by Gennadiy Civil <misterg@google.com>:

Internal Change
BEGIN_PUBLIC
Internal Change
END_PUBLIC

--
8617d58fde1ece40e4aa79eaa5e250b42d19835f by Shaindel Schwartz <shaindel@google.com>:

Internal Change
BEGIN_PUBLIC
Internal Change
END_PUBLIC

--
3a0fc7d48bdc70c4f7dffc219578693dea84eb2d by Derek Mauro <dmauro@google.com>:

Implement absl::string_view::at()

PiperOrigin-RevId: 266024644

--
ba53a9da8ede8fe7b8971eaab6b3a1fa34763ff6 by Andy Soffer <asoffer@google.com>:

Remove forcing of optimization levels in MSVC.

PiperOrigin-RevId: 265927588

--
df86f2046b54bba7da2e345040806d43470de5c0 by Shaindel Schwartz <shaindel@google.com>:

Internal change

PiperOrigin-RevId: 265811077

--
e2e3a6e8194363e7c6377672560c806d638a7c74 by Derek Mauro <dmauro@google.com>:

Remove ABI unsafe mixed exceptions mode compilation.
Testing will now be done on CI with the exceptions flag set globally.

PiperOrigin-RevId: 265796079
GitOrigin-RevId: bc74316103bbda92541896f588f71c9d45bea768
Change-Id: Ibccd00f4829520454aa55c4f55c7cb2dc9c6b65a
2019-08-30 15:38:01 -04:00

678 lines
15 KiB
Python

#
# 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"]) # Apache 2.0
cc_library(
name = "traits",
hdrs = ["traits.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/random:__pkg__",
],
deps = ["//absl/base:config"],
)
cc_library(
name = "distribution_caller",
hdrs = ["distribution_caller.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/random:__pkg__",
],
)
cc_library(
name = "distributions",
hdrs = ["distributions.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":distribution_caller",
":fast_uniform_bits",
":fastmath",
":traits",
":uniform_helper",
"//absl/meta:type_traits",
"//absl/strings",
"//absl/types:span",
],
)
cc_library(
name = "fast_uniform_bits",
hdrs = [
"fast_uniform_bits.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/random:__pkg__",
],
)
cc_library(
name = "seed_material",
srcs = [
"seed_material.cc",
],
hdrs = [
"seed_material.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":fast_uniform_bits",
"//absl/base:core_headers",
"//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:windows": [],
"//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,
)
cc_library(
name = "sequence_urbg",
testonly = 1,
hdrs = [
"sequence_urbg.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
)
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 = "distribution_impl",
hdrs = [
"distribution_impl.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":fastmath",
":traits",
"//absl/base:bits",
"//absl/base:config",
"//absl/numeric:int128",
],
)
cc_library(
name = "fastmath",
hdrs = [
"fastmath.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = ["//absl/base:bits"],
)
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/strings",
"//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:int128",
],
)
cc_library(
name = "randen_engine",
hdrs = ["randen_engine.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":iostream_state_saver",
":randen",
"//absl/meta:type_traits",
],
)
cc_library(
name = "platform",
hdrs = [
"randen_traits.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
textual_hdrs = [
"randen-keys.inc",
"platform.h",
],
)
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_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",
],
)
# 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:windows": [],
"//conditions:default": ["-Wno-pass-failed"],
}),
# copts in RANDEN_HWAES_COPTS can make this target unusable as a module
# leading to a Clang diagnostic. Furthermore, it only has a private header
# anyway and thus there wouldn't be any gain from using it as a module.
features = ["-header_modules"],
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":platform",
"//absl/base:core_headers",
],
)
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: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 = "distribution_impl_test",
size = "small",
srcs = ["distribution_impl_test.cc"],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":distribution_impl",
"//absl/base:bits",
"//absl/flags:flag",
"//absl/numeric:int128",
"@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_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 = [
":randen_slow",
"@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_library(
name = "nanobenchmark",
srcs = ["nanobenchmark.cc"],
linkopts = ABSL_DEFAULT_LINKOPTS,
textual_hdrs = ["nanobenchmark.h"],
deps = [
":platform",
":randen_engine",
"//absl/base:raw_logging_internal",
],
)
cc_library(
name = "uniform_helper",
hdrs = ["uniform_helper.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":distribution_impl",
":fast_uniform_bits",
":iostream_state_saver",
":traits",
"//absl/base:core_headers",
"//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",
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",
size = "small",
srcs = ["iostream_state_saver_test.cc"],
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":iostream_state_saver",
"@com_google_googletest//:gtest_main",
],
)