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