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/logging.h", 46 "util/rune.cc", 47 "util/strutil.cc", 48 "util/strutil.h", 49 "util/utf.h", 50 ], 51 hdrs = [ 52 "re2/filtered_re2.h", 53 "re2/re2.h", 54 "re2/set.h", 55 "re2/stringpiece.h", 56 ], 57 copts = select({ 58 # WebAssembly support for threads is... fraught at every level. 59 "@platforms//cpu:wasm32": [], 60 "@platforms//cpu:wasm64": [], 61 "@platforms//os:emscripten": [], 62 "@platforms//os:wasi": [], 63 "@platforms//os:windows": [], 64 "//conditions:default": ["-pthread"], 65 }), 66 linkopts = select({ 67 # macOS doesn't need `-pthread' when linking and it appears that 68 # older versions of Clang will warn about the unused command line 69 # argument, so just don't pass it. 70 "@platforms//os:macos": [], 71 # WebAssembly support for threads is... fraught at every level. 72 "@platforms//cpu:wasm32": [], 73 "@platforms//cpu:wasm64": [], 74 "@platforms//os:emscripten": [], 75 "@platforms//os:wasi": [], 76 "@platforms//os:windows": [], 77 "//conditions:default": ["-pthread"], 78 }), 79 visibility = ["//visibility:public"], 80 deps = [ 81 "@abseil-cpp//absl/base", 82 "@abseil-cpp//absl/base:core_headers", 83 "@abseil-cpp//absl/container:fixed_array", 84 "@abseil-cpp//absl/container:flat_hash_map", 85 "@abseil-cpp//absl/container:flat_hash_set", 86 "@abseil-cpp//absl/container:inlined_vector", 87 "@abseil-cpp//absl/strings", 88 "@abseil-cpp//absl/strings:str_format", 89 "@abseil-cpp//absl/synchronization", 90 "@abseil-cpp//absl/types:optional", 91 "@abseil-cpp//absl/types:span", 92 ], 93) 94 95cc_library( 96 name = "testing", 97 testonly = 1, 98 srcs = [ 99 "re2/testing/backtrack.cc", 100 "re2/testing/dump.cc", 101 "re2/testing/exhaustive_tester.cc", 102 "re2/testing/null_walker.cc", 103 "re2/testing/regexp_generator.cc", 104 "re2/testing/string_generator.cc", 105 "re2/testing/tester.cc", 106 "util/pcre.cc", 107 ], 108 hdrs = [ 109 "re2/testing/exhaustive_tester.h", 110 "re2/testing/regexp_generator.h", 111 "re2/testing/string_generator.h", 112 "re2/testing/tester.h", 113 "util/malloc_counter.h", 114 "util/pcre.h", 115 116 # Exposed for testing only. 117 "re2/bitmap256.h", 118 "re2/pod_array.h", 119 "re2/prefilter.h", 120 "re2/prefilter_tree.h", 121 "re2/prog.h", 122 "re2/regexp.h", 123 "re2/sparse_array.h", 124 "re2/sparse_set.h", 125 "re2/unicode_casefold.h", 126 "re2/unicode_groups.h", 127 "re2/walker-inl.h", 128 "util/logging.h", 129 "util/strutil.h", 130 "util/utf.h", 131 ], 132 visibility = [":__subpackages__"], 133 deps = [ 134 ":re2", 135 "@abseil-cpp//absl/base", 136 "@abseil-cpp//absl/base:core_headers", 137 "@abseil-cpp//absl/flags:flag", 138 "@abseil-cpp//absl/strings", 139 "@abseil-cpp//absl/strings:str_format", 140 "@googletest//:gtest", 141 ], 142) 143 144cc_test( 145 name = "charclass_test", 146 size = "small", 147 srcs = ["re2/testing/charclass_test.cc"], 148 deps = [ 149 ":testing", 150 "@abseil-cpp//absl/base:core_headers", 151 "@abseil-cpp//absl/strings:str_format", 152 "@googletest//:gtest", 153 "@googletest//:gtest_main", 154 ], 155) 156 157cc_test( 158 name = "compile_test", 159 size = "small", 160 srcs = ["re2/testing/compile_test.cc"], 161 deps = [ 162 ":testing", 163 "@abseil-cpp//absl/base:core_headers", 164 "@googletest//:gtest", 165 "@googletest//:gtest_main", 166 ], 167) 168 169cc_test( 170 name = "filtered_re2_test", 171 size = "small", 172 srcs = ["re2/testing/filtered_re2_test.cc"], 173 deps = [ 174 ":re2", 175 ":testing", 176 "@abseil-cpp//absl/base:core_headers", 177 "@googletest//:gtest", 178 "@googletest//:gtest_main", 179 ], 180) 181 182cc_test( 183 name = "mimics_pcre_test", 184 size = "small", 185 srcs = ["re2/testing/mimics_pcre_test.cc"], 186 deps = [ 187 ":testing", 188 "@abseil-cpp//absl/base:core_headers", 189 "@googletest//:gtest", 190 "@googletest//:gtest_main", 191 ], 192) 193 194cc_test( 195 name = "parse_test", 196 size = "small", 197 srcs = ["re2/testing/parse_test.cc"], 198 deps = [ 199 ":testing", 200 "@abseil-cpp//absl/base:core_headers", 201 "@googletest//:gtest", 202 "@googletest//:gtest_main", 203 ], 204) 205 206cc_test( 207 name = "possible_match_test", 208 size = "small", 209 srcs = ["re2/testing/possible_match_test.cc"], 210 deps = [ 211 ":re2", 212 ":testing", 213 "@abseil-cpp//absl/base:core_headers", 214 "@abseil-cpp//absl/strings", 215 "@googletest//:gtest", 216 "@googletest//:gtest_main", 217 ], 218) 219 220cc_test( 221 name = "re2_arg_test", 222 size = "small", 223 srcs = ["re2/testing/re2_arg_test.cc"], 224 deps = [ 225 ":re2", 226 ":testing", 227 "@abseil-cpp//absl/base:core_headers", 228 "@googletest//:gtest", 229 "@googletest//:gtest_main", 230 ], 231) 232 233cc_test( 234 name = "re2_test", 235 size = "small", 236 srcs = ["re2/testing/re2_test.cc"], 237 deps = [ 238 ":re2", 239 ":testing", 240 "@abseil-cpp//absl/base:core_headers", 241 "@abseil-cpp//absl/strings:str_format", 242 "@googletest//:gtest", 243 "@googletest//:gtest_main", 244 ], 245) 246 247cc_test( 248 name = "regexp_test", 249 size = "small", 250 srcs = ["re2/testing/regexp_test.cc"], 251 deps = [ 252 ":testing", 253 "@googletest//:gtest", 254 "@googletest//:gtest_main", 255 ], 256) 257 258cc_test( 259 name = "required_prefix_test", 260 size = "small", 261 srcs = ["re2/testing/required_prefix_test.cc"], 262 deps = [ 263 ":testing", 264 "@abseil-cpp//absl/base:core_headers", 265 "@googletest//:gtest", 266 "@googletest//:gtest_main", 267 ], 268) 269 270cc_test( 271 name = "search_test", 272 size = "small", 273 srcs = ["re2/testing/search_test.cc"], 274 deps = [ 275 ":testing", 276 "@abseil-cpp//absl/base:core_headers", 277 "@googletest//:gtest", 278 "@googletest//:gtest_main", 279 ], 280) 281 282cc_test( 283 name = "set_test", 284 size = "small", 285 srcs = ["re2/testing/set_test.cc"], 286 deps = [ 287 ":re2", 288 ":testing", 289 "@googletest//:gtest", 290 "@googletest//:gtest_main", 291 ], 292) 293 294cc_test( 295 name = "simplify_test", 296 size = "small", 297 srcs = ["re2/testing/simplify_test.cc"], 298 deps = [ 299 ":testing", 300 "@abseil-cpp//absl/base:core_headers", 301 "@googletest//:gtest", 302 "@googletest//:gtest_main", 303 ], 304) 305 306cc_test( 307 name = "string_generator_test", 308 size = "small", 309 srcs = ["re2/testing/string_generator_test.cc"], 310 deps = [ 311 ":testing", 312 "@googletest//:gtest", 313 "@googletest//:gtest_main", 314 ], 315) 316 317cc_test( 318 name = "dfa_test", 319 size = "large", 320 srcs = ["re2/testing/dfa_test.cc"], 321 deps = [ 322 ":re2", 323 ":testing", 324 "@abseil-cpp//absl/base:core_headers", 325 "@abseil-cpp//absl/flags:flag", 326 "@abseil-cpp//absl/strings:str_format", 327 "@googletest//:gtest", 328 "@googletest//:gtest_main", 329 ], 330) 331 332cc_test( 333 name = "exhaustive1_test", 334 size = "large", 335 srcs = ["re2/testing/exhaustive1_test.cc"], 336 deps = [ 337 ":testing", 338 "@googletest//:gtest", 339 "@googletest//:gtest_main", 340 ], 341) 342 343cc_test( 344 name = "exhaustive2_test", 345 size = "large", 346 srcs = ["re2/testing/exhaustive2_test.cc"], 347 deps = [ 348 ":testing", 349 "@googletest//:gtest", 350 "@googletest//:gtest_main", 351 ], 352) 353 354cc_test( 355 name = "exhaustive3_test", 356 size = "large", 357 srcs = ["re2/testing/exhaustive3_test.cc"], 358 deps = [ 359 ":testing", 360 "@googletest//:gtest", 361 "@googletest//:gtest_main", 362 ], 363) 364 365cc_test( 366 name = "exhaustive_test", 367 size = "large", 368 srcs = ["re2/testing/exhaustive_test.cc"], 369 deps = [ 370 ":testing", 371 "@googletest//:gtest", 372 "@googletest//:gtest_main", 373 ], 374) 375 376cc_test( 377 name = "random_test", 378 size = "large", 379 srcs = ["re2/testing/random_test.cc"], 380 deps = [ 381 ":testing", 382 "@abseil-cpp//absl/flags:flag", 383 "@abseil-cpp//absl/strings:str_format", 384 "@googletest//:gtest", 385 "@googletest//:gtest_main", 386 ], 387) 388 389cc_binary( 390 name = "regexp_benchmark", 391 testonly = 1, 392 srcs = ["re2/testing/regexp_benchmark.cc"], 393 deps = [ 394 ":re2", 395 ":testing", 396 "@abseil-cpp//absl/container:flat_hash_map", 397 "@abseil-cpp//absl/flags:flag", 398 "@abseil-cpp//absl/strings:str_format", 399 "@abseil-cpp//absl/synchronization", 400 "@google_benchmark//:benchmark_main", 401 ], 402) 403