• 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/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