blob: a62522e469dd5c58856a8997ca512546bd7e025b [file] [log] [blame]
mistergc2e75482017-09-19 16:54:40 -04001#
2# Copyright 2017 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#
nik727338b70432019-03-08 10:27:53 -05008# https://www.apache.org/licenses/LICENSE-2.0
mistergc2e75482017-09-19 16:54:40 -04009#
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(
Abseil Team284378a2018-12-05 12:37:41 -080018 "//absl:copts/configure_copts.bzl",
mistergc2e75482017-09-19 16:54:40 -040019 "ABSL_DEFAULT_COPTS",
Abseil Team5b65c4a2019-03-27 08:05:41 -070020 "ABSL_DEFAULT_LINKOPTS",
mistergc2e75482017-09-19 16:54:40 -040021 "ABSL_TEST_COPTS",
22 "ABSL_EXCEPTIONS_FLAG",
Abseil Teamf0f15c22018-08-09 11:32:15 -070023 "ABSL_EXCEPTIONS_FLAG_LINKOPTS",
mistergc2e75482017-09-19 16:54:40 -040024)
mistergc2e75482017-09-19 16:54:40 -040025
26package(default_visibility = ["//visibility:public"])
27
28licenses(["notice"]) # Apache 2.0
29
30cc_library(
31 name = "any",
32 hdrs = ["any.h"],
Abseil Team92020a02018-06-08 08:14:48 -070033 copts = ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -070034 linkopts = ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -040035 deps = [
36 ":bad_any_cast",
37 "//absl/base:config",
38 "//absl/base:core_headers",
39 "//absl/meta:type_traits",
40 "//absl/utility",
41 ],
42)
43
44cc_library(
45 name = "bad_any_cast",
mistergc2e75482017-09-19 16:54:40 -040046 hdrs = ["bad_any_cast.h"],
Abseil Team92020a02018-06-08 08:14:48 -070047 copts = ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -070048 linkopts = ABSL_DEFAULT_LINKOPTS,
Abseil Team87a4c072018-06-25 09:18:19 -070049 deps = [
50 ":bad_any_cast_impl",
51 "//absl/base:config",
52 ],
Abseil Team92020a02018-06-08 08:14:48 -070053)
54
55cc_library(
56 name = "bad_any_cast_impl",
57 srcs = [
58 "bad_any_cast.cc",
59 "bad_any_cast.h",
60 ],
mistergc2e75482017-09-19 16:54:40 -040061 copts = ABSL_EXCEPTIONS_FLAG + ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -070062 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
Abseil Team92020a02018-06-08 08:14:48 -070063 visibility = ["//visibility:private"],
mistergc2e75482017-09-19 16:54:40 -040064 deps = [
65 "//absl/base",
66 "//absl/base:config",
67 ],
68)
69
70cc_test(
71 name = "any_test",
72 size = "small",
73 srcs = [
74 "any_test.cc",
75 ],
76 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -070077 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -040078 deps = [
79 ":any",
80 "//absl/base",
81 "//absl/base:config",
82 "//absl/base:exception_testing",
83 "//absl/container:test_instance_tracker",
Abseil Team2a62fbd2017-09-25 15:35:12 -070084 "@com_google_googletest//:gtest_main",
85 ],
mistergc2e75482017-09-19 16:54:40 -040086)
87
88cc_test(
89 name = "any_test_noexceptions",
90 size = "small",
91 srcs = [
92 "any_test.cc",
93 ],
94 copts = ABSL_TEST_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -070095 linkopts = ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -040096 deps = [
97 ":any",
98 "//absl/base",
99 "//absl/base:config",
100 "//absl/base:exception_testing",
101 "//absl/container:test_instance_tracker",
Abseil Team2a62fbd2017-09-25 15:35:12 -0700102 "@com_google_googletest//:gtest_main",
103 ],
mistergc2e75482017-09-19 16:54:40 -0400104)
105
Abseil Team4132ce22018-01-05 07:54:33 -0800106cc_test(
107 name = "any_exception_safety_test",
108 srcs = ["any_exception_safety_test.cc"],
109 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700110 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
Abseil Team4132ce22018-01-05 07:54:33 -0800111 deps = [
112 ":any",
113 "//absl/base:exception_safety_testing",
114 "@com_google_googletest//:gtest_main",
115 ],
116)
117
mistergc2e75482017-09-19 16:54:40 -0400118cc_library(
119 name = "span",
120 hdrs = ["span.h"],
121 copts = ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700122 linkopts = ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -0400123 deps = [
124 "//absl/algorithm",
125 "//absl/base:core_headers",
126 "//absl/base:throw_delegate",
127 "//absl/meta:type_traits",
mistergc2e75482017-09-19 16:54:40 -0400128 ],
129)
130
131cc_test(
132 name = "span_test",
133 size = "small",
134 srcs = ["span_test.cc"],
Loo Rong Jieda0d96c2018-01-25 09:58:03 +0800135 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700136 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -0400137 deps = [
138 ":span",
139 "//absl/base:config",
140 "//absl/base:core_headers",
141 "//absl/base:exception_testing",
142 "//absl/container:fixed_array",
143 "//absl/container:inlined_vector",
Abseil Teamf21d1872018-10-02 12:09:18 -0700144 "//absl/hash:hash_testing",
mistergc2e75482017-09-19 16:54:40 -0400145 "//absl/strings",
Abseil Team2a62fbd2017-09-25 15:35:12 -0700146 "@com_google_googletest//:gtest_main",
147 ],
mistergc2e75482017-09-19 16:54:40 -0400148)
149
150cc_test(
151 name = "span_test_noexceptions",
152 size = "small",
153 srcs = ["span_test.cc"],
154 copts = ABSL_TEST_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700155 linkopts = ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -0400156 deps = [
157 ":span",
158 "//absl/base:config",
159 "//absl/base:core_headers",
160 "//absl/base:exception_testing",
161 "//absl/container:fixed_array",
162 "//absl/container:inlined_vector",
Abseil Teamf21d1872018-10-02 12:09:18 -0700163 "//absl/hash:hash_testing",
mistergc2e75482017-09-19 16:54:40 -0400164 "//absl/strings",
Abseil Team2a62fbd2017-09-25 15:35:12 -0700165 "@com_google_googletest//:gtest_main",
166 ],
mistergc2e75482017-09-19 16:54:40 -0400167)
168
169cc_library(
170 name = "optional",
mistergc2e75482017-09-19 16:54:40 -0400171 hdrs = ["optional.h"],
172 copts = ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700173 linkopts = ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -0400174 deps = [
175 ":bad_optional_access",
Abseil Team5b65c4a2019-03-27 08:05:41 -0700176 "//absl/base:base_internal",
mistergc2e75482017-09-19 16:54:40 -0400177 "//absl/base:config",
Abseil Teamcc8dcd32018-10-31 08:10:03 -0700178 "//absl/base:core_headers",
mistergc2e75482017-09-19 16:54:40 -0400179 "//absl/memory",
180 "//absl/meta:type_traits",
181 "//absl/utility",
182 ],
183)
184
185cc_library(
186 name = "bad_optional_access",
187 srcs = ["bad_optional_access.cc"],
188 hdrs = ["bad_optional_access.h"],
189 copts = ABSL_DEFAULT_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700190 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -0400191 deps = [
192 "//absl/base",
193 "//absl/base:config",
194 ],
195)
196
Abseil Teamfaf0a1b2018-04-20 09:16:52 -0700197cc_library(
198 name = "bad_variant_access",
199 srcs = ["bad_variant_access.cc"],
200 hdrs = ["bad_variant_access.h"],
201 copts = ABSL_EXCEPTIONS_FLAG + ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700202 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
Abseil Teamfaf0a1b2018-04-20 09:16:52 -0700203 deps = [
204 "//absl/base",
205 "//absl/base:config",
206 ],
207)
208
mistergc2e75482017-09-19 16:54:40 -0400209cc_test(
210 name = "optional_test",
211 size = "small",
212 srcs = [
213 "optional_test.cc",
214 ],
215 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700216 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
mistergc2e75482017-09-19 16:54:40 -0400217 deps = [
218 ":optional",
219 "//absl/base",
220 "//absl/base:config",
221 "//absl/meta:type_traits",
222 "//absl/strings",
Abseil Team2a62fbd2017-09-25 15:35:12 -0700223 "@com_google_googletest//:gtest_main",
224 ],
mistergc2e75482017-09-19 16:54:40 -0400225)
Abseil Teamfaf0a1b2018-04-20 09:16:52 -0700226
Abseil Team7aacab82018-05-31 12:26:35 -0700227cc_test(
228 name = "optional_exception_safety_test",
229 srcs = [
230 "optional_exception_safety_test.cc",
231 ],
232 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700233 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
Abseil Team7aacab82018-05-31 12:26:35 -0700234 deps = [
235 ":optional",
236 "//absl/base:exception_safety_testing",
237 "@com_google_googletest//:gtest_main",
238 ],
239)
240
Abseil Teamfaf0a1b2018-04-20 09:16:52 -0700241cc_library(
242 name = "variant",
243 srcs = ["internal/variant.h"],
244 hdrs = ["variant.h"],
245 copts = ABSL_DEFAULT_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700246 linkopts = ABSL_DEFAULT_LINKOPTS,
Abseil Teamfaf0a1b2018-04-20 09:16:52 -0700247 deps = [
248 ":bad_variant_access",
249 "//absl/base:base_internal",
250 "//absl/base:config",
251 "//absl/base:core_headers",
252 "//absl/meta:type_traits",
253 "//absl/utility",
254 ],
255)
256
257cc_test(
258 name = "variant_test",
259 size = "small",
260 srcs = ["variant_test.cc"],
261 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700262 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
Abseil Teamfaf0a1b2018-04-20 09:16:52 -0700263 deps = [
264 ":variant",
265 "//absl/base:config",
266 "//absl/base:core_headers",
267 "//absl/memory",
268 "//absl/meta:type_traits",
269 "//absl/strings",
270 "@com_google_googletest//:gtest_main",
271 ],
272)
Abseil Team26b789f2018-05-04 09:58:56 -0700273
274cc_test(
Abseil Teameb686c02018-06-13 11:44:15 -0700275 name = "variant_benchmark",
276 srcs = [
277 "variant_benchmark.cc",
278 ],
279 copts = ABSL_TEST_COPTS,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700280 linkopts = ABSL_DEFAULT_LINKOPTS,
Abseil Team7efd8dc2018-06-26 10:45:35 -0700281 tags = ["benchmark"],
Abseil Teameb686c02018-06-13 11:44:15 -0700282 deps = [
283 ":variant",
284 "//absl/utility",
285 "@com_github_google_benchmark//:benchmark_main",
286 ],
287)
288
289cc_test(
Abseil Team26b789f2018-05-04 09:58:56 -0700290 name = "variant_exception_safety_test",
291 size = "small",
292 srcs = [
293 "variant_exception_safety_test.cc",
294 ],
295 copts = ABSL_TEST_COPTS + ABSL_EXCEPTIONS_FLAG,
Abseil Team5b65c4a2019-03-27 08:05:41 -0700296 linkopts = ABSL_EXCEPTIONS_FLAG_LINKOPTS + ABSL_DEFAULT_LINKOPTS,
Abseil Team26b789f2018-05-04 09:58:56 -0700297 deps = [
298 ":variant",
Abseil Team7b46e1d2018-11-13 13:22:00 -0800299 "//absl/base:config",
Abseil Team26b789f2018-05-04 09:58:56 -0700300 "//absl/base:exception_safety_testing",
301 "//absl/memory",
302 "@com_google_googletest//:gtest_main",
303 ],
304)