1# 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# 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 16load( 17 "//absl:copts/configure_copts.bzl", 18 "ABSL_DEFAULT_COPTS", 19 "ABSL_DEFAULT_LINKOPTS", 20 "ABSL_TEST_COPTS", 21) 22 23package( 24 default_visibility = ["//visibility:public"], 25 features = [ 26 "header_modules", 27 "layering_check", 28 "parse_headers", 29 ], 30) 31 32licenses(["notice"]) 33 34cc_library( 35 name = "any", 36 hdrs = ["any.h"], 37 copts = ABSL_DEFAULT_COPTS, 38 linkopts = ABSL_DEFAULT_LINKOPTS, 39 deps = [ 40 ":bad_any_cast", 41 "//absl/base:config", 42 "//absl/base:core_headers", 43 "//absl/base:fast_type_id", 44 "//absl/meta:type_traits", 45 "//absl/utility", 46 ], 47) 48 49cc_library( 50 name = "bad_any_cast", 51 hdrs = ["bad_any_cast.h"], 52 copts = ABSL_DEFAULT_COPTS, 53 linkopts = ABSL_DEFAULT_LINKOPTS, 54 deps = [ 55 ":bad_any_cast_impl", 56 "//absl/base:config", 57 ], 58) 59 60cc_library( 61 name = "bad_any_cast_impl", 62 srcs = [ 63 "bad_any_cast.cc", 64 "bad_any_cast.h", 65 ], 66 copts = ABSL_DEFAULT_COPTS, 67 linkopts = ABSL_DEFAULT_LINKOPTS, 68 visibility = ["//visibility:private"], 69 deps = [ 70 "//absl/base:config", 71 "//absl/base:raw_logging_internal", 72 ], 73) 74 75cc_test( 76 name = "any_test", 77 size = "small", 78 srcs = [ 79 "any_test.cc", 80 ], 81 copts = ABSL_TEST_COPTS, 82 linkopts = ABSL_DEFAULT_LINKOPTS, 83 deps = [ 84 ":any", 85 "//absl/base:config", 86 "//absl/base:exception_testing", 87 "//absl/container:test_instance_tracker", 88 "//absl/log", 89 "@com_google_googletest//:gtest", 90 "@com_google_googletest//:gtest_main", 91 ], 92) 93 94cc_test( 95 name = "any_exception_safety_test", 96 srcs = ["any_exception_safety_test.cc"], 97 copts = ABSL_TEST_COPTS, 98 linkopts = ABSL_DEFAULT_LINKOPTS, 99 deps = [ 100 ":any", 101 "//absl/base:config", 102 "//absl/base:exception_safety_testing", 103 "@com_google_googletest//:gtest", 104 "@com_google_googletest//:gtest_main", 105 ], 106) 107 108cc_library( 109 name = "span", 110 srcs = [ 111 "internal/span.h", 112 ], 113 hdrs = [ 114 "span.h", 115 ], 116 copts = ABSL_DEFAULT_COPTS, 117 linkopts = ABSL_DEFAULT_LINKOPTS, 118 deps = [ 119 "//absl/algorithm", 120 "//absl/base:core_headers", 121 "//absl/base:nullability", 122 "//absl/base:throw_delegate", 123 "//absl/meta:type_traits", 124 ], 125) 126 127cc_test( 128 name = "span_test", 129 size = "small", 130 srcs = ["span_test.cc"], 131 copts = ABSL_TEST_COPTS, 132 linkopts = ABSL_DEFAULT_LINKOPTS, 133 deps = [ 134 ":span", 135 "//absl/base:config", 136 "//absl/base:core_headers", 137 "//absl/base:exception_testing", 138 "//absl/container:fixed_array", 139 "//absl/container:inlined_vector", 140 "//absl/hash:hash_testing", 141 "//absl/meta:type_traits", 142 "//absl/strings", 143 "@com_google_googletest//:gtest", 144 "@com_google_googletest//:gtest_main", 145 ], 146) 147 148cc_library( 149 name = "optional", 150 srcs = ["internal/optional.h"], 151 hdrs = ["optional.h"], 152 copts = ABSL_DEFAULT_COPTS, 153 linkopts = ABSL_DEFAULT_LINKOPTS, 154 deps = [ 155 ":bad_optional_access", 156 "//absl/base:base_internal", 157 "//absl/base:config", 158 "//absl/base:core_headers", 159 "//absl/base:nullability", 160 "//absl/memory", 161 "//absl/meta:type_traits", 162 "//absl/utility", 163 ], 164) 165 166cc_library( 167 name = "bad_optional_access", 168 srcs = ["bad_optional_access.cc"], 169 hdrs = ["bad_optional_access.h"], 170 copts = ABSL_DEFAULT_COPTS, 171 linkopts = ABSL_DEFAULT_LINKOPTS, 172 deps = [ 173 "//absl/base:config", 174 "//absl/base:raw_logging_internal", 175 ], 176) 177 178cc_library( 179 name = "bad_variant_access", 180 srcs = ["bad_variant_access.cc"], 181 hdrs = ["bad_variant_access.h"], 182 copts = ABSL_DEFAULT_COPTS, 183 linkopts = ABSL_DEFAULT_LINKOPTS, 184 deps = [ 185 "//absl/base:config", 186 "//absl/base:raw_logging_internal", 187 ], 188) 189 190cc_test( 191 name = "optional_test", 192 size = "small", 193 srcs = [ 194 "optional_test.cc", 195 ], 196 copts = ABSL_TEST_COPTS, 197 linkopts = ABSL_DEFAULT_LINKOPTS, 198 deps = [ 199 ":optional", 200 "//absl/base:config", 201 "//absl/log", 202 "//absl/meta:type_traits", 203 "//absl/strings", 204 "@com_google_googletest//:gtest", 205 "@com_google_googletest//:gtest_main", 206 ], 207) 208 209cc_test( 210 name = "optional_exception_safety_test", 211 srcs = [ 212 "optional_exception_safety_test.cc", 213 ], 214 copts = ABSL_TEST_COPTS, 215 linkopts = ABSL_DEFAULT_LINKOPTS, 216 deps = [ 217 ":optional", 218 "//absl/base:config", 219 "//absl/base:exception_safety_testing", 220 "@com_google_googletest//:gtest", 221 "@com_google_googletest//:gtest_main", 222 ], 223) 224 225cc_library( 226 name = "variant", 227 srcs = ["internal/variant.h"], 228 hdrs = ["variant.h"], 229 copts = ABSL_DEFAULT_COPTS, 230 linkopts = ABSL_DEFAULT_LINKOPTS, 231 deps = [ 232 ":bad_variant_access", 233 "//absl/base:base_internal", 234 "//absl/base:config", 235 "//absl/base:core_headers", 236 "//absl/meta:type_traits", 237 "//absl/utility", 238 ], 239) 240 241cc_test( 242 name = "variant_test", 243 size = "small", 244 srcs = ["variant_test.cc"], 245 copts = ABSL_TEST_COPTS, 246 linkopts = ABSL_DEFAULT_LINKOPTS, 247 deps = [ 248 ":variant", 249 "//absl/base:config", 250 "//absl/base:core_headers", 251 "//absl/memory", 252 "//absl/meta:type_traits", 253 "//absl/strings", 254 "@com_google_googletest//:gtest", 255 "@com_google_googletest//:gtest_main", 256 ], 257) 258 259cc_test( 260 name = "variant_benchmark", 261 srcs = [ 262 "variant_benchmark.cc", 263 ], 264 copts = ABSL_TEST_COPTS, 265 linkopts = ABSL_DEFAULT_LINKOPTS, 266 tags = ["benchmark"], 267 deps = [ 268 ":variant", 269 "//absl/utility", 270 "@com_github_google_benchmark//:benchmark_main", 271 "@com_google_googletest//:gtest", 272 ], 273) 274 275cc_test( 276 name = "variant_exception_safety_test", 277 size = "small", 278 srcs = [ 279 "variant_exception_safety_test.cc", 280 ], 281 copts = ABSL_TEST_COPTS, 282 linkopts = ABSL_DEFAULT_LINKOPTS, 283 deps = [ 284 ":variant", 285 "//absl/base:config", 286 "//absl/base:exception_safety_testing", 287 "//absl/memory", 288 "@com_google_googletest//:gtest", 289 "@com_google_googletest//:gtest_main", 290 ], 291) 292 293cc_library( 294 name = "compare", 295 hdrs = ["compare.h"], 296 copts = ABSL_DEFAULT_COPTS, 297 linkopts = ABSL_DEFAULT_LINKOPTS, 298 deps = [ 299 "//absl/base:config", 300 "//absl/base:core_headers", 301 "//absl/meta:type_traits", 302 ], 303) 304 305cc_test( 306 name = "compare_test", 307 size = "small", 308 srcs = [ 309 "compare_test.cc", 310 ], 311 copts = ABSL_TEST_COPTS, 312 deps = [ 313 ":compare", 314 "//absl/base", 315 "@com_google_googletest//:gtest", 316 "@com_google_googletest//:gtest_main", 317 ], 318) 319