# # 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. # absl_cc_library( NAME random_random HDRS "random.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_internal_nonsecure_base absl::random_internal_pcg_engine absl::random_internal_pool_urbg absl::random_internal_randen_engine absl::random_seed_sequences ) absl_cc_library( NAME random_distributions SRCS "discrete_distribution.cc" "gaussian_distribution.cc" HDRS "bernoulli_distribution.h" "beta_distribution.h" "discrete_distribution.h" "distribution_format_traits.h" "distributions.h" "exponential_distribution.h" "gaussian_distribution.h" "log_uniform_int_distribution.h" "poisson_distribution.h" "uniform_int_distribution.h" "uniform_real_distribution.h" "zipf_distribution.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::base_internal absl::core_headers absl::random_internal_generate_real absl::random_internal_distributions absl::random_internal_fast_uniform_bits absl::random_internal_fastmath absl::random_internal_iostream_state_saver absl::random_internal_traits absl::random_internal_uniform_helper absl::random_internal_wide_multiply absl::strings absl::span absl::type_traits ) absl_cc_library( NAME random_seed_gen_exception SRCS "seed_gen_exception.cc" HDRS "seed_gen_exception.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::config ) absl_cc_library( NAME random_seed_sequences SRCS "seed_sequences.cc" HDRS "seed_sequences.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::inlined_vector absl::random_internal_nonsecure_base absl::random_internal_pool_urbg absl::random_internal_salted_seed_seq absl::random_internal_seed_material absl::random_seed_gen_exception absl::span ) absl_cc_test( NAME random_bernoulli_distribution_test SRCS "bernoulli_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_random absl::random_internal_sequence_urbg gmock gtest_main ) absl_cc_test( NAME random_beta_distribution_test SRCS "beta_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_random absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::raw_logging_internal absl::strings absl::str_format gmock gtest_main ) absl_cc_test( NAME random_distributions_test SRCS "distributions_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_random absl::random_internal_distribution_test_util gmock gtest_main ) absl_cc_test( NAME random_generators_test SRCS "generators_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} absl::random_distributions absl::random_random absl::raw_logging_internal gmock gtest_main ) absl_cc_test( NAME random_log_uniform_int_distribution_test SRCS "log_uniform_int_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} absl::core_headers absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::raw_logging_internal absl::strings absl::str_format gmock gtest_main ) absl_cc_test( NAME random_discrete_distribution_test SRCS "discrete_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::raw_logging_internal absl::strings gmock gtest_main ) absl_cc_test( NAME random_poisson_distribution_test SRCS "poisson_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_random absl::core_headers absl::flat_hash_map absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::raw_logging_internal absl::strings absl::str_format gmock gtest_main ) absl_cc_test( NAME random_exponential_distribution_test SRCS "exponential_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::raw_logging_internal absl::strings absl::str_format gmock gtest_main ) absl_cc_test( NAME random_gaussian_distribution_test SRCS "gaussian_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::raw_logging_internal absl::strings absl::str_format gmock gtest_main ) absl_cc_test( NAME random_uniform_int_distribution_test SRCS "uniform_int_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::raw_logging_internal absl::strings gmock gtest_main ) absl_cc_test( NAME random_uniform_real_distribution_test SRCS "uniform_real_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::strings gmock gtest_main ) absl_cc_test( NAME random_zipf_distribution_test SRCS "zipf_distribution_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_distributions absl::random_internal_distribution_test_util absl::random_internal_sequence_urbg absl::random_random absl::raw_logging_internal absl::strings gmock gtest_main ) absl_cc_test( NAME random_examples_test SRCS "examples_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_random gtest_main ) absl_cc_test( NAME random_seed_sequences_test SRCS "seed_sequences_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_seed_sequences absl::random_internal_nonsecure_base absl::random_random gmock gtest_main ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_traits HDRS "internal/traits.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::config ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_distribution_caller HDRS "internal/distribution_caller.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_distributions HDRS "internal/distributions.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_distribution_caller absl::random_internal_fast_uniform_bits absl::random_internal_fastmath absl::random_internal_traits absl::random_internal_uniform_helper absl::span absl::strings absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_fast_uniform_bits HDRS "internal/fast_uniform_bits.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_seed_material SRCS "internal/seed_material.cc" HDRS "internal/seed_material.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::optional absl::random_internal_fast_uniform_bits absl::raw_logging_internal absl::span absl::strings ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_pool_urbg SRCS "internal/pool_urbg.cc" HDRS "internal/pool_urbg.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::base absl::config absl::core_headers absl::endian absl::random_internal_randen absl::random_internal_seed_material absl::random_internal_traits absl::random_seed_gen_exception absl::raw_logging_internal absl::span ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_explicit_seed_seq HDRS "internal/random_internal_explicit_seed_seq.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} TESTONLY ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_sequence_urbg HDRS "internal/sequence_urbg.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} TESTONLY ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_salted_seed_seq HDRS "internal/salted_seed_seq.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::inlined_vector absl::optional absl::span absl::random_internal_seed_material absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_iostream_state_saver HDRS "internal/iostream_state_saver.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::int128 absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_generate_real HDRS "internal/generate_real.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::bits absl::random_internal_fastmath absl::random_internal_traits absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_wide_multiply HDRS "internal/wide_multiply.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::bits absl::config absl::int128 ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_fastmath HDRS "internal/fastmath.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::bits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_nonsecure_base HDRS "internal/nonsecure_base.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::optional absl::random_internal_pool_urbg absl::random_internal_salted_seed_seq absl::random_internal_seed_material absl::span absl::strings absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_pcg_engine HDRS "internal/pcg_engine.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::config absl::int128 absl::random_internal_fastmath absl::random_internal_iostream_state_saver absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_randen_engine HDRS "internal/randen_engine.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_iostream_state_saver absl::random_internal_randen absl::raw_logging_internal absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_platform HDRS "internal/randen_traits.h" "internal/randen-keys.inc" "internal/platform.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_randen SRCS "internal/randen.cc" HDRS "internal/randen.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_platform absl::random_internal_randen_hwaes absl::random_internal_randen_slow ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_randen_slow SRCS "internal/randen_slow.cc" HDRS "internal/randen_slow.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_platform ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_randen_hwaes SRCS "internal/randen_detect.cc" HDRS "internal/randen_detect.h" "internal/randen_hwaes.h" COPTS ${ABSL_DEFAULT_COPTS} ${ABSL_RANDOM_RANDEN_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_platform absl::random_internal_randen_hwaes_impl ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_randen_hwaes_impl SRCS "internal/randen_hwaes.cc" "internal/randen_hwaes.h" COPTS ${ABSL_DEFAULT_COPTS} ${ABSL_RANDOM_RANDEN_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_platform ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_distribution_test_util SRCS "internal/chi_square.cc" "internal/distribution_test_util.cc" HDRS "internal/chi_square.h" "internal/distribution_test_util.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::raw_logging_internal absl::strings absl::str_format absl::span ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_traits_test SRCS "internal/traits_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_traits gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_generate_real_test SRCS "internal/generate_real_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::bits absl::flags absl::random_internal_generate_real gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_distribution_test_util_test SRCS "internal/distribution_test_util_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_distribution_test_util gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_fastmath_test SRCS "internal/fastmath_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_fastmath gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_explicit_seed_seq_test SRCS "internal/explicit_seed_seq_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_explicit_seed_seq absl::random_seed_sequences gmock gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_salted_seed_seq_test SRCS "internal/salted_seed_seq_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_salted_seed_seq gmock gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_chi_square_test SRCS "internal/chi_square_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::random_internal_distribution_test_util gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_fast_uniform_bits_test SRCS "internal/fast_uniform_bits_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_fast_uniform_bits gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_nonsecure_base_test SRCS "internal/nonsecure_base_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_nonsecure_base absl::random_random absl::random_distributions absl::random_seed_sequences absl::strings gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_seed_material_test SRCS "internal/seed_material_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_seed_material gmock gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_pool_urbg_test SRCS "internal/pool_urbg_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_pool_urbg absl::span absl::type_traits gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_pcg_engine_test SRCS "internal/pcg_engine_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_explicit_seed_seq absl::random_internal_pcg_engine absl::time gmock gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_randen_engine_test SRCS "internal/randen_engine_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_explicit_seed_seq absl::random_internal_randen_engine absl::raw_logging_internal absl::strings absl::time gmock gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_randen_test SRCS "internal/randen_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_randen absl::type_traits gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_randen_slow_test SRCS "internal/randen_slow_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_randen_slow gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_randen_hwaes_test SRCS "internal/randen_hwaes_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_platform absl::random_internal_randen_hwaes absl::random_internal_randen_hwaes_impl absl::raw_logging_internal absl::str_format gmock gtest ) # Internal-only target, do not depend on directly. absl_cc_library( NAME random_internal_uniform_helper HDRS "internal/uniform_helper.h" COPTS ${ABSL_DEFAULT_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::core_headers absl::random_internal_fast_uniform_bits absl::random_internal_iostream_state_saver absl::random_internal_traits absl::type_traits ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_iostream_state_saver_test SRCS "internal/iostream_state_saver_test.cc" COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_iostream_state_saver gtest_main ) # Internal-only target, do not depend on directly. absl_cc_test( NAME random_internal_wide_multiply_test SRCS internal/wide_multiply_test.cc COPTS ${ABSL_TEST_COPTS} LINKOPTS ${ABSL_DEFAULT_LINKOPTS} DEPS absl::random_internal_wide_multiply absl::bits absl::int128 gtest_main )