1# Copyright 2009 The RE2 Authors. All Rights Reserved. 2# Use of this source code is governed by a BSD-style 3# license that can be found in the LICENSE file. 4 5# Bazel (http://bazel.build/) BUILD file for RE2. 6 7licenses(["notice"]) 8 9exports_files(["LICENSE"]) 10 11cc_library( 12 name = "re2", 13 srcs = [ 14 "re2/bitmap256.cc", 15 "re2/bitmap256.h", 16 "re2/bitstate.cc", 17 "re2/compile.cc", 18 "re2/dfa.cc", 19 "re2/filtered_re2.cc", 20 "re2/mimics_pcre.cc", 21 "re2/nfa.cc", 22 "re2/onepass.cc", 23 "re2/parse.cc", 24 "re2/perl_groups.cc", 25 "re2/pod_array.h", 26 "re2/prefilter.cc", 27 "re2/prefilter.h", 28 "re2/prefilter_tree.cc", 29 "re2/prefilter_tree.h", 30 "re2/prog.cc", 31 "re2/prog.h", 32 "re2/re2.cc", 33 "re2/regexp.cc", 34 "re2/regexp.h", 35 "re2/set.cc", 36 "re2/simplify.cc", 37 "re2/sparse_array.h", 38 "re2/sparse_set.h", 39 "re2/tostring.cc", 40 "re2/unicode_casefold.cc", 41 "re2/unicode_casefold.h", 42 "re2/unicode_groups.cc", 43 "re2/unicode_groups.h", 44 "re2/walker-inl.h", 45 "util/rune.cc", 46 "util/strutil.cc", 47 "util/strutil.h", 48 "util/utf.h", 49 ], 50 hdrs = [ 51 "re2/filtered_re2.h", 52 "re2/re2.h", 53 "re2/set.h", 54 "re2/stringpiece.h", 55 ], 56 copts = select({ 57 # WebAssembly support for threads is... fraught at every level. 58 "@platforms//cpu:wasm32": [], 59 "@platforms//cpu:wasm64": [], 60 "@platforms//os:emscripten": [], 61 "@platforms//os:wasi": [], 62 "@platforms//os:windows": [], 63 "//conditions:default": ["-pthread"], 64 }), 65 linkopts = select({ 66 # macOS doesn't need `-pthread' when linking and it appears that 67 # older versions of Clang will warn about the unused command line 68 # argument, so just don't pass it. 69 "@platforms//os:macos": [], 70 # WebAssembly support for threads is... fraught at every level. 71 "@platforms//cpu:wasm32": [], 72 "@platforms//cpu:wasm64": [], 73 "@platforms//os:emscripten": [], 74 "@platforms//os:wasi": [], 75 "@platforms//os:windows": [], 76 "//conditions:default": ["-pthread"], 77 }), 78 visibility = ["//visibility:public"], 79 deps = [ 80 "@abseil-cpp//absl/base", 81 "@abseil-cpp//absl/base:core_headers", 82 "@abseil-cpp//absl/container:fixed_array", 83 "@abseil-cpp//absl/container:flat_hash_map", 84 "@abseil-cpp//absl/container:flat_hash_set", 85 "@abseil-cpp//absl/container:inlined_vector", 86 "@abseil-cpp//absl/hash", 87 "@abseil-cpp//absl/log:absl_check", 88 "@abseil-cpp//absl/log:absl_log", 89 "@abseil-cpp//absl/strings", 90 "@abseil-cpp//absl/strings:str_format", 91 "@abseil-cpp//absl/synchronization", 92 "@abseil-cpp//absl/types:optional", 93 "@abseil-cpp//absl/types:span", 94 ], 95) 96 97cc_library( 98 name = "testing", 99 testonly = 1, 100 srcs = [ 101 "re2/testing/backtrack.cc", 102 "re2/testing/dump.cc", 103 "re2/testing/exhaustive_tester.cc", 104 "re2/testing/null_walker.cc", 105 "re2/testing/regexp_generator.cc", 106 "re2/testing/string_generator.cc", 107 "re2/testing/tester.cc", 108 "util/pcre.cc", 109 ], 110 hdrs = [ 111 "re2/testing/exhaustive_tester.h", 112 "re2/testing/regexp_generator.h", 113 "re2/testing/string_generator.h", 114 "re2/testing/tester.h", 115 "util/malloc_counter.h", 116 "util/pcre.h", 117 118 # Exposed for testing only. 119 "re2/bitmap256.h", 120 "re2/pod_array.h", 121 "re2/prefilter.h", 122 "re2/prefilter_tree.h", 123 "re2/prog.h", 124 "re2/regexp.h", 125 "re2/sparse_array.h", 126 "re2/sparse_set.h", 127 "re2/unicode_casefold.h", 128 "re2/unicode_groups.h", 129 "re2/walker-inl.h", 130 "util/strutil.h", 131 "util/utf.h", 132 ], 133 visibility = [":__subpackages__"], 134 deps = [ 135 ":re2", 136 "@abseil-cpp//absl/base", 137 "@abseil-cpp//absl/base:core_headers", 138 "@abseil-cpp//absl/container:flat_hash_set", 139 "@abseil-cpp//absl/flags:flag", 140 "@abseil-cpp//absl/log:absl_check", 141 "@abseil-cpp//absl/log:absl_log", 142 "@abseil-cpp//absl/strings", 143 "@abseil-cpp//absl/strings:str_format", 144 "@googletest//:gtest", 145 ], 146) 147 148cc_test( 149 name = "charclass_test", 150 size = "small", 151 srcs = ["re2/testing/charclass_test.cc"], 152 deps = [ 153 ":testing", 154 "@abseil-cpp//absl/base:core_headers", 155 "@abseil-cpp//absl/strings:str_format", 156 "@googletest//:gtest", 157 "@googletest//:gtest_main", 158 ], 159) 160 161cc_test( 162 name = "compile_test", 163 size = "small", 164 srcs = ["re2/testing/compile_test.cc"], 165 deps = [ 166 ":testing", 167 "@abseil-cpp//absl/base:core_headers", 168 "@abseil-cpp//absl/log:absl_check", 169 "@abseil-cpp//absl/log:absl_log", 170 "@abseil-cpp//absl/strings", 171 "@googletest//:gtest", 172 "@googletest//:gtest_main", 173 ], 174) 175 176cc_test( 177 name = "filtered_re2_test", 178 size = "small", 179 srcs = ["re2/testing/filtered_re2_test.cc"], 180 deps = [ 181 ":re2", 182 ":testing", 183 "@abseil-cpp//absl/base:core_headers", 184 "@abseil-cpp//absl/log:absl_check", 185 "@abseil-cpp//absl/log:absl_log", 186 "@googletest//:gtest", 187 "@googletest//:gtest_main", 188 ], 189) 190 191cc_test( 192 name = "mimics_pcre_test", 193 size = "small", 194 srcs = ["re2/testing/mimics_pcre_test.cc"], 195 deps = [ 196 ":testing", 197 "@abseil-cpp//absl/base:core_headers", 198 "@abseil-cpp//absl/log:absl_check", 199 "@abseil-cpp//absl/log:absl_log", 200 "@googletest//:gtest", 201 "@googletest//:gtest_main", 202 ], 203) 204 205cc_test( 206 name = "parse_test", 207 size = "small", 208 srcs = ["re2/testing/parse_test.cc"], 209 deps = [ 210 ":testing", 211 "@abseil-cpp//absl/base:core_headers", 212 "@abseil-cpp//absl/log:absl_check", 213 "@abseil-cpp//absl/log:absl_log", 214 "@googletest//:gtest", 215 "@googletest//:gtest_main", 216 ], 217) 218 219cc_test( 220 name = "possible_match_test", 221 size = "small", 222 srcs = ["re2/testing/possible_match_test.cc"], 223 deps = [ 224 ":re2", 225 ":testing", 226 "@abseil-cpp//absl/base:core_headers", 227 "@abseil-cpp//absl/log:absl_check", 228 "@abseil-cpp//absl/log:absl_log", 229 "@abseil-cpp//absl/strings", 230 "@googletest//:gtest", 231 "@googletest//:gtest_main", 232 ], 233) 234 235cc_test( 236 name = "re2_arg_test", 237 size = "small", 238 srcs = ["re2/testing/re2_arg_test.cc"], 239 deps = [ 240 ":re2", 241 ":testing", 242 "@abseil-cpp//absl/base:core_headers", 243 "@abseil-cpp//absl/log:absl_check", 244 "@abseil-cpp//absl/log:absl_log", 245 "@abseil-cpp//absl/types:optional", 246 "@googletest//:gtest", 247 "@googletest//:gtest_main", 248 ], 249) 250 251cc_test( 252 name = "re2_test", 253 size = "small", 254 srcs = ["re2/testing/re2_test.cc"], 255 deps = [ 256 ":re2", 257 ":testing", 258 "@abseil-cpp//absl/base:core_headers", 259 "@abseil-cpp//absl/log:absl_check", 260 "@abseil-cpp//absl/log:absl_log", 261 "@abseil-cpp//absl/strings", 262 "@abseil-cpp//absl/strings:str_format", 263 "@googletest//:gtest", 264 "@googletest//:gtest_main", 265 ], 266) 267 268cc_test( 269 name = "regexp_test", 270 size = "small", 271 srcs = ["re2/testing/regexp_test.cc"], 272 deps = [ 273 ":testing", 274 "@abseil-cpp//absl/log:absl_check", 275 "@abseil-cpp//absl/log:absl_log", 276 "@googletest//:gtest", 277 "@googletest//:gtest_main", 278 ], 279) 280 281cc_test( 282 name = "required_prefix_test", 283 size = "small", 284 srcs = ["re2/testing/required_prefix_test.cc"], 285 deps = [ 286 ":testing", 287 "@abseil-cpp//absl/base:core_headers", 288 "@abseil-cpp//absl/log:absl_check", 289 "@abseil-cpp//absl/log:absl_log", 290 "@googletest//:gtest", 291 "@googletest//:gtest_main", 292 ], 293) 294 295cc_test( 296 name = "search_test", 297 size = "small", 298 srcs = ["re2/testing/search_test.cc"], 299 deps = [ 300 ":testing", 301 "@abseil-cpp//absl/base:core_headers", 302 "@googletest//:gtest", 303 "@googletest//:gtest_main", 304 ], 305) 306 307cc_test( 308 name = "set_test", 309 size = "small", 310 srcs = ["re2/testing/set_test.cc"], 311 deps = [ 312 ":re2", 313 ":testing", 314 "@abseil-cpp//absl/log:absl_check", 315 "@abseil-cpp//absl/log:absl_log", 316 "@googletest//:gtest", 317 "@googletest//:gtest_main", 318 ], 319) 320 321cc_test( 322 name = "simplify_test", 323 size = "small", 324 srcs = ["re2/testing/simplify_test.cc"], 325 deps = [ 326 ":testing", 327 "@abseil-cpp//absl/base:core_headers", 328 "@abseil-cpp//absl/log:absl_check", 329 "@abseil-cpp//absl/log:absl_log", 330 "@googletest//:gtest", 331 "@googletest//:gtest_main", 332 ], 333) 334 335cc_test( 336 name = "string_generator_test", 337 size = "small", 338 srcs = ["re2/testing/string_generator_test.cc"], 339 deps = [ 340 ":testing", 341 "@abseil-cpp//absl/strings", 342 "@googletest//:gtest", 343 "@googletest//:gtest_main", 344 ], 345) 346 347cc_test( 348 name = "dfa_test", 349 size = "large", 350 srcs = ["re2/testing/dfa_test.cc"], 351 deps = [ 352 ":re2", 353 ":testing", 354 "@abseil-cpp//absl/base:core_headers", 355 "@abseil-cpp//absl/flags:flag", 356 "@abseil-cpp//absl/log:absl_check", 357 "@abseil-cpp//absl/log:absl_log", 358 "@abseil-cpp//absl/strings", 359 "@abseil-cpp//absl/strings:str_format", 360 "@googletest//:gtest", 361 "@googletest//:gtest_main", 362 ], 363) 364 365cc_test( 366 name = "exhaustive1_test", 367 size = "large", 368 srcs = ["re2/testing/exhaustive1_test.cc"], 369 deps = [ 370 ":testing", 371 "@googletest//:gtest", 372 "@googletest//:gtest_main", 373 ], 374) 375 376cc_test( 377 name = "exhaustive2_test", 378 size = "large", 379 srcs = ["re2/testing/exhaustive2_test.cc"], 380 deps = [ 381 ":testing", 382 "@googletest//:gtest", 383 "@googletest//:gtest_main", 384 ], 385) 386 387cc_test( 388 name = "exhaustive3_test", 389 size = "large", 390 srcs = ["re2/testing/exhaustive3_test.cc"], 391 deps = [ 392 ":testing", 393 "@googletest//:gtest", 394 "@googletest//:gtest_main", 395 ], 396) 397 398cc_test( 399 name = "exhaustive_test", 400 size = "large", 401 srcs = ["re2/testing/exhaustive_test.cc"], 402 deps = [ 403 ":testing", 404 "@googletest//:gtest", 405 "@googletest//:gtest_main", 406 ], 407) 408 409cc_test( 410 name = "random_test", 411 size = "large", 412 srcs = ["re2/testing/random_test.cc"], 413 deps = [ 414 ":testing", 415 "@abseil-cpp//absl/flags:flag", 416 "@abseil-cpp//absl/strings:str_format", 417 "@googletest//:gtest", 418 "@googletest//:gtest_main", 419 ], 420) 421 422cc_binary( 423 name = "regexp_benchmark", 424 testonly = 1, 425 srcs = ["re2/testing/regexp_benchmark.cc"], 426 deps = [ 427 ":re2", 428 ":testing", 429 "@abseil-cpp//absl/container:flat_hash_map", 430 "@abseil-cpp//absl/flags:flag", 431 "@abseil-cpp//absl/log:absl_check", 432 "@abseil-cpp//absl/log:absl_log", 433 "@abseil-cpp//absl/strings", 434 "@abseil-cpp//absl/strings:str_format", 435 "@abseil-cpp//absl/synchronization", 436 "@google_benchmark//:benchmark_main", 437 ], 438) 439