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