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