tvl-depot/absl/random/internal/BUILD.bazel
Abseil Team b19ba96766 Export of internal Abseil changes
--
a3e58c1870a9626039f4d178d2d599319bd9f8a8 by Matt Kulukundis <kfm@google.com>:

Allow MakeCordFromExternal to take a zero arg releaser.

PiperOrigin-RevId: 298650274

--
01897c4a9bb99f3dc329a794019498ad345ddebd by Samuel Benzaquen <sbenza@google.com>:

Reduce library bloat for absl::Flag by moving the definition of base virtual functions to a .cc file.
This removes the duplicate symbols in user translation units and  has the side effect of moving the vtable definition too (re key function)

PiperOrigin-RevId: 298617920

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

Import GitHub #596: Unbreak stacktrace code for UWP apps

PiperOrigin-RevId: 298600834

--
cd5cf6f8c87b35b85a9584e94da2a99057345b73 by Gennadiy Rozental <rogeeff@google.com>:

Use union of heap allocated pointer, one word atomic and two word atomic to represent flags value.

Any type T, which is trivially copy-able and with with sizeof(T) <= 8, will be stored in atomic int64_t.
Any type T, which is trivially copy-able and with with 8 < sizeof(T) <= 16, will be stored in atomic AlignedTwoWords.

We also introducing value storage type to distinguish these cases.

PiperOrigin-RevId: 298497200

--
f8fe7bd53bfed601f002f521e34ab4bc083fc28b by Matthew Brown <matthewbr@google.com>:

Ensure a deep copy and proper equality on absl::Status::ErasePayload

PiperOrigin-RevId: 298482742

--
a5c9ccddf4b04f444e3f7e27dbc14faf1fcb5373 by Gennadiy Rozental <rogeeff@google.com>:

Change ChunkIterator implementation to use fixed capacity collection of CordRep*. We can now assume that depth never exceeds 91. That makes comparison operator exception safe.

I've tested that with this CL we do not observe an overhead of chunk_end. Compiler optimized this iterator completely.

PiperOrigin-RevId: 298458472

--
327ea5e8910bc388b03389c730763f9823abfce5 by Abseil Team <absl-team@google.com>:

Minor cleanups in b-tree code:
- Rename some variables: fix issues of different param names between definition/declaration, move away from `x` as a default meaningless variable name.
- Make init_leaf/init_internal be non-static methods (they already take the node as the first parameter).
- In internal_emplace/try_shrink, update root/rightmost the same way as in insert_unique/insert_multi.
- Replace a TODO with a comment.

PiperOrigin-RevId: 298432836

--
8020ce9ec8558ee712d9733ae3d660ac1d3ffe1a by Abseil Team <absl-team@google.com>:

Guard against unnecessary copy in case the buffer is empty. This is important in cases were the user is explicitly tuning their chunks to match PiecewiseChunkSize().

PiperOrigin-RevId: 298366044

--
89324441d1c0c697c90ba7d8fc63639805fcaa9d by Abseil Team <absl-team@google.com>:

Internal change

PiperOrigin-RevId: 298219363
GitOrigin-RevId: a3e58c1870a9626039f4d178d2d599319bd9f8a8
Change-Id: I28dffc684b6fd0292b94807b88ec6664d5d0e183
2020-03-03 17:32:55 -05:00

736 lines
16 KiB
Text

#
# 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__",
],
deps = ["//absl/base:config"],
)
cc_library(
name = "distributions",
hdrs = ["distributions.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":distribution_caller",
":traits",
":uniform_helper",
"//absl/base",
"//absl/meta:type_traits",
"//absl/strings",
],
)
cc_library(
name = "fast_uniform_bits",
hdrs = [
"fast_uniform_bits.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
visibility = [
"//absl/random:__pkg__",
],
deps = ["//absl/base:config"],
)
cc_library(
name = "seed_material",
srcs = [
"seed_material.cc",
],
hdrs = [
"seed_material.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS + select({
"//absl:windows": ["-DEFAULTLIB:bcrypt.lib"],
"//conditions:default": [],
}),
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,
deps = ["//absl/base:config"],
)
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/base:bits",
"//absl/meta:type_traits",
],
)
cc_library(
name = "fastmath",
hdrs = [
"fastmath.h",
],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = ["//absl/base:bits"],
)
cc_library(
name = "wide_multiply",
hdrs = ["wide_multiply.h"],
copts = ABSL_DEFAULT_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":traits",
"//absl/base:bits",
"//absl/base:config",
"//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/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",
],
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_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: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:config",
"//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: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/base:bits",
"//absl/flags:flag",
"@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 = "mocking_bit_gen_base",
hdrs = ["mocking_bit_gen_base.h"],
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
"//absl/random",
"//absl/strings",
],
)
cc_library(
name = "mock_overload_set",
testonly = 1,
hdrs = ["mock_overload_set.h"],
visibility = [
"//absl/random:__pkg__",
],
deps = [
"//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 = [
":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_test(
name = "wide_multiply_test",
size = "small",
srcs = ["wide_multiply_test.cc"],
copts = ABSL_TEST_COPTS,
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":wide_multiply",
"//absl/base: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: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 = [
"//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",
size = "small",
srcs = ["iostream_state_saver_test.cc"],
linkopts = ABSL_DEFAULT_LINKOPTS,
deps = [
":iostream_state_saver",
"@com_google_googletest//:gtest_main",
],
)