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