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("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") 18 load( 19 "//absl:copts/configure_copts.bzl", 20 "ABSL_DEFAULT_COPTS", 21 "ABSL_DEFAULT_LINKOPTS", 22 "ABSL_TEST_COPTS", 23 ) 24 25 package(default_visibility = ["//visibility:public"]) 26 27 licenses(["notice"]) 28 29 cc_library( 30 name = "hash", 31 srcs = [ 32 "internal/hash.cc", 33 "internal/hash.h", 34 ], 35 hdrs = ["hash.h"], 36 copts = ABSL_DEFAULT_COPTS, 37 linkopts = ABSL_DEFAULT_LINKOPTS, 38 deps = [ 39 ":city", 40 "//absl/base:core_headers", 41 "//absl/base:endian", 42 "//absl/container:fixed_array", 43 "//absl/meta:type_traits", 44 "//absl/numeric:int128", 45 "//absl/strings", 46 "//absl/types:optional", 47 "//absl/types:variant", 48 "//absl/utility", 49 ], 50 ) 51 52 cc_library( 53 name = "hash_testing", 54 testonly = 1, 55 hdrs = ["hash_testing.h"], 56 linkopts = ABSL_DEFAULT_LINKOPTS, 57 deps = [ 58 ":spy_hash_state", 59 "//absl/meta:type_traits", 60 "//absl/strings", 61 "//absl/types:variant", 62 "@com_google_googletest//:gtest", 63 ], 64 ) 65 66 cc_test( 67 name = "hash_test", 68 srcs = ["hash_test.cc"], 69 copts = ABSL_TEST_COPTS, 70 linkopts = ABSL_DEFAULT_LINKOPTS, 71 deps = [ 72 ":hash", 73 ":hash_testing", 74 ":spy_hash_state", 75 "//absl/base:core_headers", 76 "//absl/container:flat_hash_set", 77 "//absl/meta:type_traits", 78 "//absl/numeric:int128", 79 "//absl/strings:cord_test_helpers", 80 "@com_google_googletest//:gtest_main", 81 ], 82 ) 83 84 cc_library( 85 name = "spy_hash_state", 86 testonly = 1, 87 hdrs = ["internal/spy_hash_state.h"], 88 copts = ABSL_DEFAULT_COPTS, 89 linkopts = ABSL_DEFAULT_LINKOPTS, 90 visibility = ["//visibility:private"], 91 deps = [ 92 ":hash", 93 "//absl/strings", 94 "//absl/strings:str_format", 95 ], 96 ) 97 98 cc_library( 99 name = "city", 100 srcs = ["internal/city.cc"], 101 hdrs = [ 102 "internal/city.h", 103 ], 104 copts = ABSL_DEFAULT_COPTS, 105 linkopts = ABSL_DEFAULT_LINKOPTS, 106 deps = [ 107 "//absl/base:config", 108 "//absl/base:core_headers", 109 "//absl/base:endian", 110 ], 111 ) 112 113 cc_test( 114 name = "city_test", 115 srcs = ["internal/city_test.cc"], 116 copts = ABSL_TEST_COPTS, 117 linkopts = ABSL_DEFAULT_LINKOPTS, 118 deps = [ 119 ":city", 120 "@com_google_googletest//:gtest_main", 121 ], 122 ) 123