1# Copyright 2018 The Chromium Authors 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import("//third_party/abseil-cpp/absl.gni") 6 7absl_source_set("traits") { 8 public = [ "traits.h" ] 9 deps = [ 10 "//third_party/abseil-cpp/absl/base:config", 11 "//third_party/abseil-cpp/absl/numeric:bits", 12 "//third_party/abseil-cpp/absl/numeric:int128", 13 ] 14 visibility = ["//third_party/abseil-cpp/absl/random/*"] 15} 16 17absl_source_set("distribution_caller") { 18 public = [ "distribution_caller.h" ] 19 deps = [ 20 "//third_party/abseil-cpp/absl/base:config", 21 "//third_party/abseil-cpp/absl/base:fast_type_id", 22 "//third_party/abseil-cpp/absl/utility", 23 ] 24 visibility = ["//third_party/abseil-cpp/absl/random/*"] 25} 26 27absl_source_set("fast_uniform_bits") { 28 public = [ "fast_uniform_bits.h" ] 29 deps = [ 30 ":traits", 31 "//third_party/abseil-cpp/absl/base:config", 32 "//third_party/abseil-cpp/absl/meta:type_traits", 33 ] 34 visibility = ["//third_party/abseil-cpp/absl/random/*"] 35} 36 37absl_source_set("seed_material") { 38 public = [ "seed_material.h" ] 39 sources = [ "seed_material.cc" ] 40 if (is_win) { 41 # TODO(mbonadei): In the bazel file this is -DEFAULTLIB:bcrypt.lib. 42 libs = [ "bcrypt.lib" ] 43 } 44 deps = [ 45 ":fast_uniform_bits", 46 "//third_party/abseil-cpp/absl/base:core_headers", 47 "//third_party/abseil-cpp/absl/base:dynamic_annotations", 48 "//third_party/abseil-cpp/absl/base:raw_logging_internal", 49 "//third_party/abseil-cpp/absl/strings", 50 "//third_party/abseil-cpp/absl/types:optional", 51 "//third_party/abseil-cpp/absl/types:span", 52 ] 53 visibility = ["//third_party/abseil-cpp/absl/random/*"] 54} 55 56absl_source_set("pool_urbg") { 57 public = [ "pool_urbg.h" ] 58 sources = [ "pool_urbg.cc" ] 59 deps = [ 60 ":randen", 61 ":seed_material", 62 ":traits", 63 "//third_party/abseil-cpp/absl/base", 64 "//third_party/abseil-cpp/absl/base:config", 65 "//third_party/abseil-cpp/absl/base:core_headers", 66 "//third_party/abseil-cpp/absl/base:endian", 67 "//third_party/abseil-cpp/absl/base:raw_logging_internal", 68 "//third_party/abseil-cpp/absl/random:seed_gen_exception", 69 "//third_party/abseil-cpp/absl/types:span", 70 ] 71 visibility = ["//third_party/abseil-cpp/absl/random/*"] 72} 73 74absl_source_set("explicit_seed_seq") { 75 testonly = true 76 public = [ "explicit_seed_seq.h" ] 77 deps = [ 78 "//third_party/abseil-cpp/absl/base:config", 79 "//third_party/abseil-cpp/absl/base:endian", 80 ] 81 visibility = ["//third_party/abseil-cpp/absl/random/*"] 82} 83 84absl_source_set("sequence_urbg") { 85 testonly = true 86 public = [ "sequence_urbg.h" ] 87 deps = [ "//third_party/abseil-cpp/absl/base:config" ] 88 visibility = ["//third_party/abseil-cpp/absl/random/*"] 89} 90 91absl_source_set("salted_seed_seq") { 92 public = [ "salted_seed_seq.h" ] 93 deps = [ 94 ":seed_material", 95 "//third_party/abseil-cpp/absl/container:inlined_vector", 96 "//third_party/abseil-cpp/absl/meta:type_traits", 97 "//third_party/abseil-cpp/absl/types:optional", 98 "//third_party/abseil-cpp/absl/types:span", 99 ] 100 visibility = ["//third_party/abseil-cpp/absl/random/*"] 101} 102 103absl_source_set("iostream_state_saver") { 104 public = [ "iostream_state_saver.h" ] 105 deps = [ 106 "//third_party/abseil-cpp/absl/meta:type_traits", 107 "//third_party/abseil-cpp/absl/numeric:int128", 108 ] 109 visibility = ["//third_party/abseil-cpp/absl/random/*"] 110} 111 112absl_source_set("generate_real") { 113 public = [ "generate_real.h" ] 114 deps = [ 115 ":fastmath", 116 ":traits", 117 "//third_party/abseil-cpp/absl/meta:type_traits", 118 "//third_party/abseil-cpp/absl/numeric:bits", 119 ] 120 visibility = ["//third_party/abseil-cpp/absl/random/*"] 121} 122 123absl_source_set("fastmath") { 124 public = [ "fastmath.h" ] 125 deps = [ "//third_party/abseil-cpp/absl/numeric:bits" ] 126 visibility = ["//third_party/abseil-cpp/absl/random/*"] 127} 128 129absl_source_set("wide_multiply") { 130 public = [ "wide_multiply.h" ] 131 deps = [ 132 ":traits", 133 "//third_party/abseil-cpp/absl/base:config", 134 "//third_party/abseil-cpp/absl/numeric:bits", 135 "//third_party/abseil-cpp/absl/numeric:int128", 136 ] 137 visibility = ["//third_party/abseil-cpp/absl/random/*"] 138} 139 140absl_source_set("nonsecure_base") { 141 public = [ "nonsecure_base.h" ] 142 deps = [ 143 ":pool_urbg", 144 ":salted_seed_seq", 145 ":seed_material", 146 "//third_party/abseil-cpp/absl/base:core_headers", 147 "//third_party/abseil-cpp/absl/container:inlined_vector", 148 "//third_party/abseil-cpp/absl/meta:type_traits", 149 "//third_party/abseil-cpp/absl/types:span", 150 ] 151 visibility = ["//third_party/abseil-cpp/absl/random/*"] 152} 153 154absl_source_set("pcg_engine") { 155 public = [ "pcg_engine.h" ] 156 deps = [ 157 ":fastmath", 158 ":iostream_state_saver", 159 "//third_party/abseil-cpp/absl/base:config", 160 "//third_party/abseil-cpp/absl/meta:type_traits", 161 "//third_party/abseil-cpp/absl/numeric:bits", 162 "//third_party/abseil-cpp/absl/numeric:int128", 163 ] 164 visibility = ["//third_party/abseil-cpp/absl/random/*"] 165} 166 167absl_source_set("randen_engine") { 168 public = [ "randen_engine.h" ] 169 deps = [ 170 ":iostream_state_saver", 171 ":randen", 172 "//third_party/abseil-cpp/absl/base:endian", 173 "//third_party/abseil-cpp/absl/meta:type_traits", 174 ] 175 visibility = ["//third_party/abseil-cpp/absl/random/*"] 176} 177 178absl_source_set("platform") { 179 public = [ 180 "platform.h", 181 "randen_traits.h", 182 ] 183 sources = [ "randen_round_keys.cc" ] 184 deps = [ 185 "//build:chromeos_buildflags", 186 "//third_party/abseil-cpp/absl/base:config", 187 ] 188 visibility = ["//third_party/abseil-cpp/absl/random/*"] 189} 190 191absl_source_set("randen") { 192 public = [ "randen.h" ] 193 sources = [ "randen.cc" ] 194 deps = [ 195 ":platform", 196 ":randen_hwaes", 197 ":randen_slow", 198 "//third_party/abseil-cpp/absl/base:raw_logging_internal", 199 ] 200 visibility = ["//third_party/abseil-cpp/absl/random/*"] 201} 202 203absl_source_set("randen_slow") { 204 public = [ "randen_slow.h" ] 205 sources = [ "randen_slow.cc" ] 206 deps = [ 207 ":platform", 208 "//third_party/abseil-cpp/absl/base:config", 209 "//third_party/abseil-cpp/absl/base:core_headers", 210 "//third_party/abseil-cpp/absl/base:endian", 211 "//third_party/abseil-cpp/absl/numeric:int128", 212 ] 213 visibility = ["//third_party/abseil-cpp/absl/random/*"] 214} 215 216absl_source_set("randen_hwaes") { 217 public = [ 218 "randen_detect.h", 219 "randen_hwaes.h", 220 ] 221 sources = [ "randen_detect.cc" ] 222 deps = [ 223 ":platform", 224 ":randen_hwaes_impl", 225 "//third_party/abseil-cpp/absl/base:config", 226 ] 227 visibility = ["//third_party/abseil-cpp/absl/random/*"] 228} 229 230absl_source_set("randen_hwaes_impl") { 231 sources = [ 232 "randen_hwaes.cc", 233 "randen_hwaes.h", 234 ] 235 deps = [ 236 ":platform", 237 "//third_party/abseil-cpp/absl/base:config", 238 "//third_party/abseil-cpp/absl/base:core_headers", 239 "//third_party/abseil-cpp/absl/numeric:int128", 240 ] 241 visibility = ["//third_party/abseil-cpp/absl/random/*"] 242} 243 244executable("gaussian_distribution_gentables") { 245 sources = [ "gaussian_distribution_gentables.cc" ] 246 deps = [ 247 "//third_party/abseil-cpp/absl/base:core_headers", 248 "//third_party/abseil-cpp/absl/random:distributions", 249 ] 250 visibility = ["//third_party/abseil-cpp/absl/random/*"] 251} 252 253absl_source_set("distribution_test_util") { 254 testonly = true 255 public = [ 256 "chi_square.h", 257 "distribution_test_util.h", 258 ] 259 sources = [ 260 "chi_square.cc", 261 "distribution_test_util.cc", 262 ] 263 deps = [ 264 "//third_party/abseil-cpp/absl/base:config", 265 "//third_party/abseil-cpp/absl/base:core_headers", 266 "//third_party/abseil-cpp/absl/base:raw_logging_internal", 267 "//third_party/abseil-cpp/absl/strings", 268 "//third_party/abseil-cpp/absl/strings:str_format", 269 "//third_party/abseil-cpp/absl/types:span", 270 ] 271 visibility = ["//third_party/abseil-cpp/absl/random/*"] 272} 273 274# TODO(danilchap): Enable when can be compiled on all chromium bots. 275# nanobenchmark uses platform specific functions to take accurate current time, 276# and fallbacks to clock_gettime. Several chromium configurations lack both 277# dedicated code and the clock_gettime system function. 278# absl_source_set("nanobenchmark") { 279# sources = [ "nanobenchmark.cc" ] 280# deps = [ 281# ":platform", 282# ":randen_engine", 283# "//third_party/abseil-cpp/absl/base:config", 284# "//third_party/abseil-cpp/absl/base:core_headers", 285# "//third_party/abseil-cpp/absl/base:raw_logging_internal", 286# ] 287# } 288 289absl_source_set("uniform_helper") { 290 public = [ "uniform_helper.h" ] 291 deps = [ 292 ":traits", 293 "//third_party/abseil-cpp/absl/base:config", 294 "//third_party/abseil-cpp/absl/meta:type_traits", 295 "//third_party/abseil-cpp/absl/numeric:int128", 296 ] 297 visibility = ["//third_party/abseil-cpp/absl/random/*"] 298} 299