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