xref: /aosp_15_r20/external/cronet/third_party/abseil-cpp/absl/hash/BUILD.bazel (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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
17load(
18    "//absl:copts/configure_copts.bzl",
19    "ABSL_DEFAULT_COPTS",
20    "ABSL_DEFAULT_LINKOPTS",
21    "ABSL_TEST_COPTS",
22)
23
24package(
25    default_visibility = ["//visibility:public"],
26    features = [
27        "header_modules",
28        "layering_check",
29        "parse_headers",
30    ],
31)
32
33licenses(["notice"])
34
35cc_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
62cc_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        "@com_google_googletest//:gtest",
73    ],
74)
75
76cc_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/base:core_headers",
90        "//absl/container:btree",
91        "//absl/container:flat_hash_map",
92        "//absl/container:flat_hash_set",
93        "//absl/container:node_hash_map",
94        "//absl/container:node_hash_set",
95        "//absl/memory",
96        "//absl/meta:type_traits",
97        "//absl/numeric:int128",
98        "//absl/strings:cord_test_helpers",
99        "//absl/strings:string_view",
100        "//absl/types:optional",
101        "//absl/types:variant",
102        "@com_google_googletest//:gtest",
103        "@com_google_googletest//:gtest_main",
104    ],
105)
106
107cc_test(
108    name = "hash_instantiated_test",
109    srcs = [
110        "hash_instantiated_test.cc",
111        "internal/hash_test.h",
112    ],
113    copts = ABSL_TEST_COPTS,
114    linkopts = ABSL_DEFAULT_LINKOPTS,
115    deps = [
116        ":hash",
117        ":hash_testing",
118        "//absl/base:config",
119        "//absl/container:btree",
120        "//absl/container:flat_hash_map",
121        "//absl/container:flat_hash_set",
122        "//absl/container:node_hash_map",
123        "//absl/container:node_hash_set",
124        "@com_google_googletest//:gtest",
125        "@com_google_googletest//:gtest_main",
126    ],
127)
128
129cc_binary(
130    name = "hash_benchmark",
131    testonly = True,
132    srcs = ["hash_benchmark.cc"],
133    copts = ABSL_TEST_COPTS,
134    linkopts = ABSL_DEFAULT_LINKOPTS,
135    tags = ["benchmark"],
136    visibility = ["//visibility:private"],
137    deps = [
138        ":hash",
139        "//absl/base:core_headers",
140        "//absl/container:flat_hash_set",
141        "//absl/random",
142        "//absl/strings",
143        "//absl/strings:cord",
144        "//absl/strings:cord_test_helpers",
145        "@com_github_google_benchmark//:benchmark_main",
146    ],
147)
148
149cc_library(
150    name = "spy_hash_state",
151    testonly = True,
152    hdrs = ["internal/spy_hash_state.h"],
153    copts = ABSL_DEFAULT_COPTS,
154    linkopts = ABSL_DEFAULT_LINKOPTS,
155    visibility = ["//visibility:private"],
156    deps = [
157        ":hash",
158        "//absl/strings",
159        "//absl/strings:str_format",
160    ],
161)
162
163cc_library(
164    name = "city",
165    srcs = ["internal/city.cc"],
166    hdrs = [
167        "internal/city.h",
168    ],
169    copts = ABSL_DEFAULT_COPTS,
170    linkopts = ABSL_DEFAULT_LINKOPTS,
171    deps = [
172        "//absl/base:config",
173        "//absl/base:core_headers",
174        "//absl/base:endian",
175    ],
176)
177
178cc_test(
179    name = "city_test",
180    srcs = ["internal/city_test.cc"],
181    copts = ABSL_TEST_COPTS,
182    linkopts = ABSL_DEFAULT_LINKOPTS,
183    deps = [
184        ":city",
185        "@com_google_googletest//:gtest",
186        "@com_google_googletest//:gtest_main",
187    ],
188)
189
190cc_library(
191    name = "low_level_hash",
192    srcs = ["internal/low_level_hash.cc"],
193    hdrs = ["internal/low_level_hash.h"],
194    copts = ABSL_DEFAULT_COPTS,
195    linkopts = ABSL_DEFAULT_LINKOPTS,
196    visibility = ["//visibility:private"],
197    deps = [
198        "//absl/base:config",
199        "//absl/base:endian",
200        "//absl/base:prefetch",
201        "//absl/numeric:int128",
202    ],
203)
204
205cc_test(
206    name = "low_level_hash_test",
207    srcs = ["internal/low_level_hash_test.cc"],
208    copts = ABSL_TEST_COPTS,
209    linkopts = ABSL_DEFAULT_LINKOPTS,
210    visibility = ["//visibility:private"],
211    deps = [
212        ":low_level_hash",
213        "//absl/strings",
214        "@com_google_googletest//:gtest",
215        "@com_google_googletest//:gtest_main",
216    ],
217)
218