blob: 14da9db60c68f0fa38e74304d8626b7c85b9335f [file] [log] [blame]
Corentin Wallez5929a042021-03-15 08:43:11 +00001# Copyright 2021 The Tint Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import("//build_overrides/build.gni")
16import("../tint_overrides_with_defaults.gni")
17
18# Fuzzers - Libfuzzer based fuzzing targets for Chromium
19# To run the fuzzers outside of Chromium, use the CMake based builds.
20
21if (build_with_chromium) {
22 import("//testing/libfuzzer/fuzzer_test.gni")
23
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +000024 fuzzer_corpus_wgsl_dir = "${target_gen_dir}/fuzzer_corpus_wgsl"
25 action("tint_generate_wgsl_corpus") {
26 script = "generate_wgsl_corpus.py"
27 sources = [ "generate_wgsl_corpus.py" ]
Alastair Donaldson86dc8872021-07-16 20:56:55 +000028 args = [
29 rebase_path("${tint_root_dir}/test", root_build_dir),
30 rebase_path(fuzzer_corpus_wgsl_dir, root_build_dir),
31 ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +000032 outputs = [ fuzzer_corpus_wgsl_dir ]
33 }
34
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +000035 fuzzer_corpus_spirv_dir = "${target_gen_dir}/fuzzer_corpus_spirv"
36 action("tint_generate_spirv_corpus") {
Alastair Donaldsonbbda5722021-07-14 13:04:31 +000037 # The spirv-as tool is used to turn SPIR-V assembly files into binary form.
38 # When cross compiling, it is important that spirv-as is built for the
39 # *host* tool chain, and that the host version of spirv-as is used to
40 # prepare the corpus.
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +000041 spirv_as_target = "${tint_spirv_tools_dir}/:spirv-as(${host_toolchain})"
42 spirv_as_out_dir = get_label_info(spirv_as_target, "root_out_dir")
43 deps = [ spirv_as_target ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +000044 script = "generate_spirv_corpus.py"
45 sources = [ "generate_spirv_corpus.py" ]
Alastair Donaldson86dc8872021-07-16 20:56:55 +000046 args = [
47 rebase_path("${tint_root_dir}/test", root_build_dir),
48 rebase_path(fuzzer_corpus_spirv_dir, root_build_dir),
49 rebase_path("${spirv_as_out_dir}/spirv-as", root_build_dir),
50 ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +000051 outputs = [ fuzzer_corpus_spirv_dir ]
52 }
53
Alastair Donaldson86dc8872021-07-16 20:56:55 +000054 tint_ast_fuzzer_common_libfuzzer_options = [
55 "cross_over=0",
56 "max_len=1000000",
57 "mutate_depth=1",
58 "tint_enable_all_mutations=false",
59 "tint_mutation_batch_size=5",
60 ]
61
62 tint_spirv_tools_fuzzer_common_libfuzzer_options = [
63 "cross_over=0",
64 "max_len=1000000",
65 "mutate_depth=1",
66 "tint_enable_all_fuzzer_passes=true",
67 "tint_enable_all_reduce_passes=true",
68 "tint_mutator_cache_size=30",
69 "tint_mutator_type=fuzz,opt,reduce",
70 "tint_opt_batch_size=5",
71 "tint_reduction_batch_size=5",
72 "tint_repeated_pass_strategy=looped",
73 "tint_transformation_batch_size=5",
74 ]
75
Alastair Donaldson1f0200a2021-07-29 11:58:18 +000076 tint_regex_fuzzer_common_libfuzzer_options = [
77 "cross_over=0",
78 "max_len=100000",
79 "mutate_depth=1",
80 ]
81
Corentin Wallez5929a042021-03-15 08:43:11 +000082 # fuzzer_test doesn't have configs members, so need to define them in an empty
83 # source_set.
84
85 source_set("tint_fuzzer_common") {
86 public_configs = [
Corentin Wallezc205c282021-03-15 15:09:11 +000087 "${tint_root_dir}/src:tint_config",
88 "${tint_root_dir}/src:tint_common_config",
Corentin Wallez5929a042021-03-15 08:43:11 +000089 ]
90
Corentin Wallez98c2cf02021-04-21 14:58:42 +000091 public_deps = [
92 "${tint_root_dir}/src:libtint",
93 "${tint_spirv_tools_dir}/:spvtools_val",
94 ]
Corentin Wallez5929a042021-03-15 08:43:11 +000095
96 sources = [
Corentin Wallezc205c282021-03-15 15:09:11 +000097 "tint_common_fuzzer.cc",
98 "tint_common_fuzzer.h",
Corentin Wallez5929a042021-03-15 08:43:11 +000099 ]
100 }
101
102 if (tint_build_wgsl_reader) {
103 fuzzer_test("tint_wgsl_reader_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000104 sources = [ "tint_wgsl_reader_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000105 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000106 dict = "dictionary.txt"
107 seed_corpus = fuzzer_corpus_wgsl_dir
108 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000109 }
110 }
111
112 if (tint_build_wgsl_reader && tint_build_wgsl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000113 fuzzer_test("tint_ast_wgsl_writer_fuzzer") {
114 sources = []
115 deps = [ "tint_ast_fuzzer:tint_ast_fuzzer" ]
116 libfuzzer_options = tint_ast_fuzzer_common_libfuzzer_options +
117 [ "tint_fuzzing_target=wgsl" ]
118 seed_corpus = fuzzer_corpus_wgsl_dir
119 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
120 }
121
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000122 fuzzer_test("tint_regex_wgsl_writer_fuzzer") {
123 sources = []
124 deps = [ "tint_regex_fuzzer:tint_regex_fuzzer" ]
125 libfuzzer_options = tint_regex_fuzzer_common_libfuzzer_options +
126 [ "tint_fuzzing_target=wgsl" ]
127 seed_corpus = fuzzer_corpus_wgsl_dir
128 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
129 }
130
Corentin Wallez5929a042021-03-15 08:43:11 +0000131 fuzzer_test("tint_wgsl_reader_wgsl_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000132 sources = [ "tint_wgsl_reader_wgsl_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000133 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000134 dict = "dictionary.txt"
135 seed_corpus = fuzzer_corpus_wgsl_dir
136 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000137 }
138 }
139
140 if (tint_build_wgsl_reader && tint_build_spv_writer) {
Corentin Wallez5929a042021-03-15 08:43:11 +0000141 fuzzer_test("tint_all_transforms_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000142 sources = [ "tint_all_transforms_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000143 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000144 dict = "dictionary.txt"
145 seed_corpus = fuzzer_corpus_wgsl_dir
146 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000147 }
148
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000149 fuzzer_test("tint_ast_spv_writer_fuzzer") {
150 sources = []
151 deps = [ "tint_ast_fuzzer:tint_ast_fuzzer" ]
152 libfuzzer_options = tint_ast_fuzzer_common_libfuzzer_options +
153 [ "tint_fuzzing_target=spv" ]
154 seed_corpus = fuzzer_corpus_wgsl_dir
155 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
156 }
157
Ryan Harrisonb5c908f2021-04-28 15:35:43 +0000158 fuzzer_test("tint_binding_remapper_fuzzer") {
159 sources = [ "tint_binding_remapper_fuzzer.cc" ]
160 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000161 dict = "dictionary.txt"
162 seed_corpus = fuzzer_corpus_wgsl_dir
163 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Ryan Harrisonb5c908f2021-04-28 15:35:43 +0000164 }
165
Corentin Wallez5929a042021-03-15 08:43:11 +0000166 fuzzer_test("tint_first_index_offset_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000167 sources = [ "tint_first_index_offset_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000168 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000169 dict = "dictionary.txt"
170 seed_corpus = fuzzer_corpus_wgsl_dir
171 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000172 }
173
174 fuzzer_test("tint_inspector_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000175 sources = [ "tint_inspector_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000176 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000177 dict = "dictionary.txt"
178 seed_corpus = fuzzer_corpus_wgsl_dir
179 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000180 }
Ryan Harrisonfc579792021-04-29 20:12:05 +0000181
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000182 fuzzer_test("tint_regex_spv_writer_fuzzer") {
183 sources = []
184 deps = [ "tint_regex_fuzzer:tint_regex_fuzzer" ]
185 libfuzzer_options = tint_regex_fuzzer_common_libfuzzer_options +
186 [ "tint_fuzzing_target=spv" ]
187 seed_corpus = fuzzer_corpus_wgsl_dir
188 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
189 }
190
Ryan Harrisonbc5461d2021-04-29 20:43:45 +0000191 fuzzer_test("tint_renamer_fuzzer") {
192 sources = [ "tint_renamer_fuzzer.cc" ]
193 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000194 dict = "dictionary.txt"
195 seed_corpus = fuzzer_corpus_wgsl_dir
196 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Ryan Harrisonbc5461d2021-04-29 20:43:45 +0000197 }
198
Ben Clayton0273f1a2021-06-30 13:23:36 +0000199 fuzzer_test("tint_robustness_fuzzer") {
200 sources = [ "tint_robustness_fuzzer.cc" ]
201 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000202 dict = "dictionary.txt"
203 seed_corpus = fuzzer_corpus_wgsl_dir
204 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Ben Clayton0273f1a2021-06-30 13:23:36 +0000205 }
206
Ryan Harrison52456c62021-04-29 20:49:25 +0000207 fuzzer_test("tint_single_entry_point_fuzzer") {
208 sources = [ "tint_single_entry_point_fuzzer.cc" ]
209 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000210 dict = "dictionary.txt"
211 seed_corpus = fuzzer_corpus_wgsl_dir
212 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Ryan Harrison52456c62021-04-29 20:49:25 +0000213 }
214
Ryan Harrisona0174e62021-05-06 15:43:33 +0000215 fuzzer_test("tint_vertex_pulling_fuzzer") {
216 sources = [ "tint_vertex_pulling_fuzzer.cc" ]
217 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000218 dict = "dictionary.txt"
219 seed_corpus = fuzzer_corpus_wgsl_dir
220 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Ryan Harrisona0174e62021-05-06 15:43:33 +0000221 }
222
Ryan Harrisonbc5461d2021-04-29 20:43:45 +0000223 fuzzer_test("tint_wgsl_reader_spv_writer_fuzzer") {
224 sources = [ "tint_wgsl_reader_spv_writer_fuzzer.cc" ]
225 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000226 dict = "dictionary.txt"
227 seed_corpus = fuzzer_corpus_wgsl_dir
228 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Ryan Harrisonbc5461d2021-04-29 20:43:45 +0000229 }
Corentin Wallez5929a042021-03-15 08:43:11 +0000230 }
231
232 if (tint_build_wgsl_reader && tint_build_hlsl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000233 fuzzer_test("tint_ast_hlsl_writer_fuzzer") {
234 sources = []
235 deps = [ "tint_ast_fuzzer:tint_ast_fuzzer" ]
236 libfuzzer_options = tint_ast_fuzzer_common_libfuzzer_options +
237 [ "tint_fuzzing_target=hlsl" ]
238 seed_corpus = fuzzer_corpus_wgsl_dir
239 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
240 }
241
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000242 fuzzer_test("tint_regex_hlsl_writer_fuzzer") {
243 sources = []
244 deps = [ "tint_regex_fuzzer:tint_regex_fuzzer" ]
245 libfuzzer_options = tint_regex_fuzzer_common_libfuzzer_options +
246 [ "tint_fuzzing_target=hlsl" ]
247 seed_corpus = fuzzer_corpus_wgsl_dir
248 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
249 }
250
Corentin Wallez5929a042021-03-15 08:43:11 +0000251 fuzzer_test("tint_wgsl_reader_hlsl_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000252 sources = [ "tint_wgsl_reader_hlsl_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000253 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000254 dict = "dictionary.txt"
255 seed_corpus = fuzzer_corpus_wgsl_dir
256 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000257 }
258 }
259
260 if (tint_build_wgsl_reader && tint_build_msl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000261 fuzzer_test("tint_ast_msl_writer_fuzzer") {
262 sources = []
263 deps = [ "tint_ast_fuzzer:tint_ast_fuzzer" ]
264 libfuzzer_options = tint_ast_fuzzer_common_libfuzzer_options +
265 [ "tint_fuzzing_target=msl" ]
266 seed_corpus = fuzzer_corpus_wgsl_dir
267 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
268 }
269
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000270 fuzzer_test("tint_regex_msl_writer_fuzzer") {
271 sources = []
272 deps = [ "tint_regex_fuzzer:tint_regex_fuzzer" ]
273 libfuzzer_options = tint_regex_fuzzer_common_libfuzzer_options +
274 [ "tint_fuzzing_target=msl" ]
275 seed_corpus = fuzzer_corpus_wgsl_dir
276 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
277 }
278
Corentin Wallez5929a042021-03-15 08:43:11 +0000279 fuzzer_test("tint_wgsl_reader_msl_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000280 sources = [ "tint_wgsl_reader_msl_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000281 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000282 dict = "dictionary.txt"
283 seed_corpus = fuzzer_corpus_wgsl_dir
284 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000285 }
286 }
287
288 if (tint_build_spv_reader) {
289 fuzzer_test("tint_spv_reader_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000290 sources = [ "tint_spv_reader_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000291 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +0000292 seed_corpus = fuzzer_corpus_spirv_dir
293 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000294 }
295 }
296
297 if (tint_build_spv_reader && tint_build_wgsl_writer) {
298 fuzzer_test("tint_spv_reader_wgsl_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000299 sources = [ "tint_spv_reader_wgsl_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000300 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +0000301 seed_corpus = fuzzer_corpus_spirv_dir
302 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000303 }
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000304 fuzzer_test("tint_spirv_tools_wgsl_writer_fuzzer") {
305 sources = []
306 deps = [ "tint_spirv_tools_fuzzer:tint_spirv_tools_fuzzer" ]
307 libfuzzer_options = tint_spirv_tools_fuzzer_common_libfuzzer_options +
308 [ "tint_fuzzing_target=wgsl" ]
309 seed_corpus = fuzzer_corpus_spirv_dir
310 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
311 }
Corentin Wallez5929a042021-03-15 08:43:11 +0000312 }
313
314 if (tint_build_spv_reader && tint_build_spv_writer) {
315 fuzzer_test("tint_spv_reader_spv_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000316 sources = [ "tint_spv_reader_spv_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000317 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +0000318 seed_corpus = fuzzer_corpus_spirv_dir
319 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000320 }
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000321 fuzzer_test("tint_spirv_tools_spv_writer_fuzzer") {
322 sources = []
323 deps = [ "tint_spirv_tools_fuzzer:tint_spirv_tools_fuzzer" ]
324 libfuzzer_options = tint_spirv_tools_fuzzer_common_libfuzzer_options +
325 [ "tint_fuzzing_target=spv" ]
326 seed_corpus = fuzzer_corpus_spirv_dir
327 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
328 }
Corentin Wallez5929a042021-03-15 08:43:11 +0000329 }
330
331 if (tint_build_spv_reader && tint_build_hlsl_writer) {
332 fuzzer_test("tint_spv_reader_hlsl_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000333 sources = [ "tint_spv_reader_hlsl_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000334 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +0000335 seed_corpus = fuzzer_corpus_spirv_dir
336 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000337 }
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000338 fuzzer_test("tint_spirv_tools_hlsl_writer_fuzzer") {
339 sources = []
340 deps = [ "tint_spirv_tools_fuzzer:tint_spirv_tools_fuzzer" ]
341 libfuzzer_options = tint_spirv_tools_fuzzer_common_libfuzzer_options +
342 [ "tint_fuzzing_target=hlsl" ]
343 seed_corpus = fuzzer_corpus_spirv_dir
344 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
345 }
Corentin Wallez5929a042021-03-15 08:43:11 +0000346 }
347
348 if (tint_build_spv_reader && tint_build_msl_writer) {
349 fuzzer_test("tint_spv_reader_msl_writer_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000350 sources = [ "tint_spv_reader_msl_writer_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000351 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldson9f4d94d2021-07-13 19:42:22 +0000352 seed_corpus = fuzzer_corpus_spirv_dir
353 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000354 }
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000355 fuzzer_test("tint_spirv_tools_msl_writer_fuzzer") {
356 sources = []
357 deps = [ "tint_spirv_tools_fuzzer:tint_spirv_tools_fuzzer" ]
358 libfuzzer_options = tint_spirv_tools_fuzzer_common_libfuzzer_options +
359 [ "tint_fuzzing_target=msl" ]
360 seed_corpus = fuzzer_corpus_spirv_dir
361 seed_corpus_deps = [ ":tint_generate_spirv_corpus" ]
362 }
Corentin Wallez5929a042021-03-15 08:43:11 +0000363 }
364
365 if (tint_build_wgsl_reader && tint_build_wgsl_writer) {
366 fuzzer_test("tint_ast_clone_fuzzer") {
Corentin Wallezc205c282021-03-15 15:09:11 +0000367 sources = [ "tint_ast_clone_fuzzer.cc" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000368 deps = [ ":tint_fuzzer_common" ]
Alastair Donaldsonff0a8f02021-07-13 17:11:35 +0000369 dict = "dictionary.txt"
370 seed_corpus = fuzzer_corpus_wgsl_dir
371 seed_corpus_deps = [ ":tint_generate_wgsl_corpus" ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000372 }
373 }
374
375 group("fuzzers") {
376 testonly = true
377 deps = []
378
379 if (tint_build_wgsl_reader) {
380 deps += [ ":tint_wgsl_reader_fuzzer" ]
381 }
382 if (tint_build_wgsl_reader && tint_build_wgsl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000383 deps += [
384 ":tint_ast_wgsl_writer_fuzzer",
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000385 ":tint_regex_wgsl_writer_fuzzer",
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000386 ":tint_wgsl_reader_wgsl_writer_fuzzer",
387 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000388 }
389 if (tint_build_wgsl_reader && tint_build_spv_writer) {
390 deps += [
391 ":tint_all_transforms_fuzzer",
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000392 ":tint_ast_spv_writer_fuzzer",
Ryan Harrisonb5c908f2021-04-28 15:35:43 +0000393 ":tint_binding_remapper_fuzzer",
Corentin Wallez5929a042021-03-15 08:43:11 +0000394 ":tint_first_index_offset_fuzzer",
395 ":tint_inspector_fuzzer",
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000396 ":tint_regex_spv_writer_fuzzer",
Ryan Harrisonbc5461d2021-04-29 20:43:45 +0000397 ":tint_renamer_fuzzer",
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000398 ":tint_robustness_fuzzer",
Ryan Harrison52456c62021-04-29 20:49:25 +0000399 ":tint_single_entry_point_fuzzer",
Ryan Harrisona0174e62021-05-06 15:43:33 +0000400 ":tint_vertex_pulling_fuzzer",
Corentin Wallez5929a042021-03-15 08:43:11 +0000401 ":tint_wgsl_reader_spv_writer_fuzzer",
402 ]
403 }
404 if (tint_build_wgsl_reader && tint_build_hlsl_writer) {
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +0000405 deps += [
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000406 ":tint_ast_hlsl_writer_fuzzer",
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000407 ":tint_regex_hlsl_writer_fuzzer",
Ryan Harrisondcd6b4d2021-04-29 20:03:35 +0000408 ":tint_wgsl_reader_hlsl_writer_fuzzer",
409 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000410 }
411 if (tint_build_wgsl_reader && tint_build_msl_writer) {
Ryan Harrisonb67d0492021-04-29 20:06:25 +0000412 deps += [
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000413 ":tint_ast_msl_writer_fuzzer",
Alastair Donaldson1f0200a2021-07-29 11:58:18 +0000414 ":tint_regex_msl_writer_fuzzer",
Ryan Harrisonb67d0492021-04-29 20:06:25 +0000415 ":tint_wgsl_reader_msl_writer_fuzzer",
416 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000417 }
418 if (tint_build_spv_reader) {
419 deps += [ ":tint_spv_reader_fuzzer" ]
420 }
421 if (tint_build_spv_reader && tint_build_wgsl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000422 deps += [
423 ":tint_spirv_tools_wgsl_writer_fuzzer",
424 ":tint_spv_reader_wgsl_writer_fuzzer",
425 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000426 }
427 if (tint_build_spv_reader && tint_build_spv_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000428 deps += [
429 ":tint_spirv_tools_spv_writer_fuzzer",
430 ":tint_spv_reader_spv_writer_fuzzer",
431 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000432 }
433 if (tint_build_spv_reader && tint_build_hlsl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000434 deps += [
435 ":tint_spirv_tools_hlsl_writer_fuzzer",
436 ":tint_spv_reader_hlsl_writer_fuzzer",
437 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000438 }
439 if (tint_build_spv_reader && tint_build_msl_writer) {
Alastair Donaldson86dc8872021-07-16 20:56:55 +0000440 deps += [
441 ":tint_spirv_tools_msl_writer_fuzzer",
442 ":tint_spv_reader_msl_writer_fuzzer",
443 ]
Corentin Wallez5929a042021-03-15 08:43:11 +0000444 }
445 if (tint_build_wgsl_reader && tint_build_wgsl_writer) {
446 deps += [ ":tint_ast_clone_fuzzer" ]
447 }
448 }
449} else {
450 group("fuzzers") {
451 }
452}