• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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