1*9356374aSAndroid Build Coastguard Worker# 2*9356374aSAndroid Build Coastguard Worker# Copyright 2019 The Abseil Authors. 3*9356374aSAndroid Build Coastguard Worker# 4*9356374aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*9356374aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*9356374aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*9356374aSAndroid Build Coastguard Worker# 8*9356374aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 9*9356374aSAndroid Build Coastguard Worker# 10*9356374aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*9356374aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*9356374aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*9356374aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*9356374aSAndroid Build Coastguard Worker# limitations under the License. 15*9356374aSAndroid Build Coastguard Worker# 16*9356374aSAndroid Build Coastguard Worker 17*9356374aSAndroid Build Coastguard Workerload( 18*9356374aSAndroid Build Coastguard Worker "//absl:copts/configure_copts.bzl", 19*9356374aSAndroid Build Coastguard Worker "ABSL_DEFAULT_COPTS", 20*9356374aSAndroid Build Coastguard Worker "ABSL_DEFAULT_LINKOPTS", 21*9356374aSAndroid Build Coastguard Worker "ABSL_TEST_COPTS", 22*9356374aSAndroid Build Coastguard Worker) 23*9356374aSAndroid Build Coastguard Worker 24*9356374aSAndroid Build Coastguard Workerpackage( 25*9356374aSAndroid Build Coastguard Worker default_visibility = ["//visibility:public"], 26*9356374aSAndroid Build Coastguard Worker features = [ 27*9356374aSAndroid Build Coastguard Worker "header_modules", 28*9356374aSAndroid Build Coastguard Worker "layering_check", 29*9356374aSAndroid Build Coastguard Worker "parse_headers", 30*9356374aSAndroid Build Coastguard Worker ], 31*9356374aSAndroid Build Coastguard Worker) 32*9356374aSAndroid Build Coastguard Worker 33*9356374aSAndroid Build Coastguard Workerlicenses(["notice"]) 34*9356374aSAndroid Build Coastguard Worker 35*9356374aSAndroid Build Coastguard Workercc_library( 36*9356374aSAndroid Build Coastguard Worker name = "hash", 37*9356374aSAndroid Build Coastguard Worker srcs = [ 38*9356374aSAndroid Build Coastguard Worker "internal/hash.cc", 39*9356374aSAndroid Build Coastguard Worker "internal/hash.h", 40*9356374aSAndroid Build Coastguard Worker ], 41*9356374aSAndroid Build Coastguard Worker hdrs = ["hash.h"], 42*9356374aSAndroid Build Coastguard Worker copts = ABSL_DEFAULT_COPTS, 43*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 44*9356374aSAndroid Build Coastguard Worker deps = [ 45*9356374aSAndroid Build Coastguard Worker ":city", 46*9356374aSAndroid Build Coastguard Worker ":low_level_hash", 47*9356374aSAndroid Build Coastguard Worker "//absl/base:config", 48*9356374aSAndroid Build Coastguard Worker "//absl/base:core_headers", 49*9356374aSAndroid Build Coastguard Worker "//absl/base:endian", 50*9356374aSAndroid Build Coastguard Worker "//absl/container:fixed_array", 51*9356374aSAndroid Build Coastguard Worker "//absl/functional:function_ref", 52*9356374aSAndroid Build Coastguard Worker "//absl/meta:type_traits", 53*9356374aSAndroid Build Coastguard Worker "//absl/numeric:bits", 54*9356374aSAndroid Build Coastguard Worker "//absl/numeric:int128", 55*9356374aSAndroid Build Coastguard Worker "//absl/strings", 56*9356374aSAndroid Build Coastguard Worker "//absl/types:optional", 57*9356374aSAndroid Build Coastguard Worker "//absl/types:variant", 58*9356374aSAndroid Build Coastguard Worker "//absl/utility", 59*9356374aSAndroid Build Coastguard Worker ], 60*9356374aSAndroid Build Coastguard Worker) 61*9356374aSAndroid Build Coastguard Worker 62*9356374aSAndroid Build Coastguard Workercc_library( 63*9356374aSAndroid Build Coastguard Worker name = "hash_testing", 64*9356374aSAndroid Build Coastguard Worker testonly = True, 65*9356374aSAndroid Build Coastguard Worker hdrs = ["hash_testing.h"], 66*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 67*9356374aSAndroid Build Coastguard Worker deps = [ 68*9356374aSAndroid Build Coastguard Worker ":spy_hash_state", 69*9356374aSAndroid Build Coastguard Worker "//absl/meta:type_traits", 70*9356374aSAndroid Build Coastguard Worker "//absl/strings", 71*9356374aSAndroid Build Coastguard Worker "//absl/types:variant", 72*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest", 73*9356374aSAndroid Build Coastguard Worker ], 74*9356374aSAndroid Build Coastguard Worker) 75*9356374aSAndroid Build Coastguard Worker 76*9356374aSAndroid Build Coastguard Workercc_test( 77*9356374aSAndroid Build Coastguard Worker name = "hash_test", 78*9356374aSAndroid Build Coastguard Worker srcs = [ 79*9356374aSAndroid Build Coastguard Worker "hash_test.cc", 80*9356374aSAndroid Build Coastguard Worker "internal/hash_test.h", 81*9356374aSAndroid Build Coastguard Worker ], 82*9356374aSAndroid Build Coastguard Worker copts = ABSL_TEST_COPTS, 83*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 84*9356374aSAndroid Build Coastguard Worker deps = [ 85*9356374aSAndroid Build Coastguard Worker ":hash", 86*9356374aSAndroid Build Coastguard Worker ":hash_testing", 87*9356374aSAndroid Build Coastguard Worker ":spy_hash_state", 88*9356374aSAndroid Build Coastguard Worker "//absl/base:config", 89*9356374aSAndroid Build Coastguard Worker "//absl/base:core_headers", 90*9356374aSAndroid Build Coastguard Worker "//absl/container:btree", 91*9356374aSAndroid Build Coastguard Worker "//absl/container:flat_hash_map", 92*9356374aSAndroid Build Coastguard Worker "//absl/container:flat_hash_set", 93*9356374aSAndroid Build Coastguard Worker "//absl/container:node_hash_map", 94*9356374aSAndroid Build Coastguard Worker "//absl/container:node_hash_set", 95*9356374aSAndroid Build Coastguard Worker "//absl/memory", 96*9356374aSAndroid Build Coastguard Worker "//absl/meta:type_traits", 97*9356374aSAndroid Build Coastguard Worker "//absl/numeric:int128", 98*9356374aSAndroid Build Coastguard Worker "//absl/strings:cord_test_helpers", 99*9356374aSAndroid Build Coastguard Worker "//absl/strings:string_view", 100*9356374aSAndroid Build Coastguard Worker "//absl/types:optional", 101*9356374aSAndroid Build Coastguard Worker "//absl/types:variant", 102*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest", 103*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest_main", 104*9356374aSAndroid Build Coastguard Worker ], 105*9356374aSAndroid Build Coastguard Worker) 106*9356374aSAndroid Build Coastguard Worker 107*9356374aSAndroid Build Coastguard Workercc_test( 108*9356374aSAndroid Build Coastguard Worker name = "hash_instantiated_test", 109*9356374aSAndroid Build Coastguard Worker srcs = [ 110*9356374aSAndroid Build Coastguard Worker "hash_instantiated_test.cc", 111*9356374aSAndroid Build Coastguard Worker "internal/hash_test.h", 112*9356374aSAndroid Build Coastguard Worker ], 113*9356374aSAndroid Build Coastguard Worker copts = ABSL_TEST_COPTS, 114*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 115*9356374aSAndroid Build Coastguard Worker deps = [ 116*9356374aSAndroid Build Coastguard Worker ":hash", 117*9356374aSAndroid Build Coastguard Worker ":hash_testing", 118*9356374aSAndroid Build Coastguard Worker "//absl/base:config", 119*9356374aSAndroid Build Coastguard Worker "//absl/container:btree", 120*9356374aSAndroid Build Coastguard Worker "//absl/container:flat_hash_map", 121*9356374aSAndroid Build Coastguard Worker "//absl/container:flat_hash_set", 122*9356374aSAndroid Build Coastguard Worker "//absl/container:node_hash_map", 123*9356374aSAndroid Build Coastguard Worker "//absl/container:node_hash_set", 124*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest", 125*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest_main", 126*9356374aSAndroid Build Coastguard Worker ], 127*9356374aSAndroid Build Coastguard Worker) 128*9356374aSAndroid Build Coastguard Worker 129*9356374aSAndroid Build Coastguard Workercc_binary( 130*9356374aSAndroid Build Coastguard Worker name = "hash_benchmark", 131*9356374aSAndroid Build Coastguard Worker testonly = True, 132*9356374aSAndroid Build Coastguard Worker srcs = ["hash_benchmark.cc"], 133*9356374aSAndroid Build Coastguard Worker copts = ABSL_TEST_COPTS, 134*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 135*9356374aSAndroid Build Coastguard Worker tags = ["benchmark"], 136*9356374aSAndroid Build Coastguard Worker visibility = ["//visibility:private"], 137*9356374aSAndroid Build Coastguard Worker deps = [ 138*9356374aSAndroid Build Coastguard Worker ":hash", 139*9356374aSAndroid Build Coastguard Worker "//absl/base:core_headers", 140*9356374aSAndroid Build Coastguard Worker "//absl/container:flat_hash_set", 141*9356374aSAndroid Build Coastguard Worker "//absl/random", 142*9356374aSAndroid Build Coastguard Worker "//absl/strings", 143*9356374aSAndroid Build Coastguard Worker "//absl/strings:cord", 144*9356374aSAndroid Build Coastguard Worker "//absl/strings:cord_test_helpers", 145*9356374aSAndroid Build Coastguard Worker "@com_github_google_benchmark//:benchmark_main", 146*9356374aSAndroid Build Coastguard Worker ], 147*9356374aSAndroid Build Coastguard Worker) 148*9356374aSAndroid Build Coastguard Worker 149*9356374aSAndroid Build Coastguard Workercc_library( 150*9356374aSAndroid Build Coastguard Worker name = "spy_hash_state", 151*9356374aSAndroid Build Coastguard Worker testonly = True, 152*9356374aSAndroid Build Coastguard Worker hdrs = ["internal/spy_hash_state.h"], 153*9356374aSAndroid Build Coastguard Worker copts = ABSL_DEFAULT_COPTS, 154*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 155*9356374aSAndroid Build Coastguard Worker visibility = ["//visibility:private"], 156*9356374aSAndroid Build Coastguard Worker deps = [ 157*9356374aSAndroid Build Coastguard Worker ":hash", 158*9356374aSAndroid Build Coastguard Worker "//absl/strings", 159*9356374aSAndroid Build Coastguard Worker "//absl/strings:str_format", 160*9356374aSAndroid Build Coastguard Worker ], 161*9356374aSAndroid Build Coastguard Worker) 162*9356374aSAndroid Build Coastguard Worker 163*9356374aSAndroid Build Coastguard Workercc_library( 164*9356374aSAndroid Build Coastguard Worker name = "city", 165*9356374aSAndroid Build Coastguard Worker srcs = ["internal/city.cc"], 166*9356374aSAndroid Build Coastguard Worker hdrs = [ 167*9356374aSAndroid Build Coastguard Worker "internal/city.h", 168*9356374aSAndroid Build Coastguard Worker ], 169*9356374aSAndroid Build Coastguard Worker copts = ABSL_DEFAULT_COPTS, 170*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 171*9356374aSAndroid Build Coastguard Worker deps = [ 172*9356374aSAndroid Build Coastguard Worker "//absl/base:config", 173*9356374aSAndroid Build Coastguard Worker "//absl/base:core_headers", 174*9356374aSAndroid Build Coastguard Worker "//absl/base:endian", 175*9356374aSAndroid Build Coastguard Worker ], 176*9356374aSAndroid Build Coastguard Worker) 177*9356374aSAndroid Build Coastguard Worker 178*9356374aSAndroid Build Coastguard Workercc_test( 179*9356374aSAndroid Build Coastguard Worker name = "city_test", 180*9356374aSAndroid Build Coastguard Worker srcs = ["internal/city_test.cc"], 181*9356374aSAndroid Build Coastguard Worker copts = ABSL_TEST_COPTS, 182*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 183*9356374aSAndroid Build Coastguard Worker deps = [ 184*9356374aSAndroid Build Coastguard Worker ":city", 185*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest", 186*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest_main", 187*9356374aSAndroid Build Coastguard Worker ], 188*9356374aSAndroid Build Coastguard Worker) 189*9356374aSAndroid Build Coastguard Worker 190*9356374aSAndroid Build Coastguard Workercc_library( 191*9356374aSAndroid Build Coastguard Worker name = "low_level_hash", 192*9356374aSAndroid Build Coastguard Worker srcs = ["internal/low_level_hash.cc"], 193*9356374aSAndroid Build Coastguard Worker hdrs = ["internal/low_level_hash.h"], 194*9356374aSAndroid Build Coastguard Worker copts = ABSL_DEFAULT_COPTS, 195*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 196*9356374aSAndroid Build Coastguard Worker visibility = ["//visibility:private"], 197*9356374aSAndroid Build Coastguard Worker deps = [ 198*9356374aSAndroid Build Coastguard Worker "//absl/base:config", 199*9356374aSAndroid Build Coastguard Worker "//absl/base:endian", 200*9356374aSAndroid Build Coastguard Worker "//absl/base:prefetch", 201*9356374aSAndroid Build Coastguard Worker "//absl/numeric:int128", 202*9356374aSAndroid Build Coastguard Worker ], 203*9356374aSAndroid Build Coastguard Worker) 204*9356374aSAndroid Build Coastguard Worker 205*9356374aSAndroid Build Coastguard Workercc_test( 206*9356374aSAndroid Build Coastguard Worker name = "low_level_hash_test", 207*9356374aSAndroid Build Coastguard Worker srcs = ["internal/low_level_hash_test.cc"], 208*9356374aSAndroid Build Coastguard Worker copts = ABSL_TEST_COPTS, 209*9356374aSAndroid Build Coastguard Worker linkopts = ABSL_DEFAULT_LINKOPTS, 210*9356374aSAndroid Build Coastguard Worker visibility = ["//visibility:private"], 211*9356374aSAndroid Build Coastguard Worker deps = [ 212*9356374aSAndroid Build Coastguard Worker ":low_level_hash", 213*9356374aSAndroid Build Coastguard Worker "//absl/strings", 214*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest", 215*9356374aSAndroid Build Coastguard Worker "@com_google_googletest//:gtest_main", 216*9356374aSAndroid Build Coastguard Worker ], 217*9356374aSAndroid Build Coastguard Worker) 218