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