1fd4e5da5Sopenharmony_ci# Copyright 2018 Google Inc. All rights reserved.
2fd4e5da5Sopenharmony_ci#
3fd4e5da5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
4fd4e5da5Sopenharmony_ci# you may not use this file except in compliance with the License.
5fd4e5da5Sopenharmony_ci# You may obtain a copy of the License at
6fd4e5da5Sopenharmony_ci#
7fd4e5da5Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
8fd4e5da5Sopenharmony_ci#
9fd4e5da5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
10fd4e5da5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
11fd4e5da5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12fd4e5da5Sopenharmony_ci# See the License for the specific language governing permissions and
13fd4e5da5Sopenharmony_ci# limitations under the License.
14fd4e5da5Sopenharmony_ci
15fd4e5da5Sopenharmony_ciimport("//testing/libfuzzer/fuzzer_test.gni")
16fd4e5da5Sopenharmony_ciimport("//testing/test.gni")
17fd4e5da5Sopenharmony_ci
18fd4e5da5Sopenharmony_ciconfig("fuzzer_config") {
19fd4e5da5Sopenharmony_ci  configs = [ "../..:spvtools_internal_config" ]
20fd4e5da5Sopenharmony_ci}
21fd4e5da5Sopenharmony_ci
22fd4e5da5Sopenharmony_cigroup("fuzzers") {
23fd4e5da5Sopenharmony_ci  testonly = true
24fd4e5da5Sopenharmony_ci  deps = []
25fd4e5da5Sopenharmony_ci
26fd4e5da5Sopenharmony_ci  if (!build_with_chromium || use_fuzzing_engine) {
27fd4e5da5Sopenharmony_ci    deps += [ ":fuzzers_bin" ]
28fd4e5da5Sopenharmony_ci  }
29fd4e5da5Sopenharmony_ci}
30fd4e5da5Sopenharmony_ci
31fd4e5da5Sopenharmony_ciif (!build_with_chromium || use_fuzzing_engine) {
32fd4e5da5Sopenharmony_ci  group("fuzzers_bin") {
33fd4e5da5Sopenharmony_ci    testonly = true
34fd4e5da5Sopenharmony_ci
35fd4e5da5Sopenharmony_ci    deps = [
36fd4e5da5Sopenharmony_ci      ":spvtools_as_fuzzer",
37fd4e5da5Sopenharmony_ci      ":spvtools_binary_parser_fuzzer",
38fd4e5da5Sopenharmony_ci      ":spvtools_dis_fuzzer",
39fd4e5da5Sopenharmony_ci      ":spvtools_opt_legalization_fuzzer",
40fd4e5da5Sopenharmony_ci      ":spvtools_opt_performance_fuzzer",
41fd4e5da5Sopenharmony_ci      ":spvtools_opt_size_fuzzer",
42fd4e5da5Sopenharmony_ci      ":spvtools_val_fuzzer",
43fd4e5da5Sopenharmony_ci    ]
44fd4e5da5Sopenharmony_ci  }
45fd4e5da5Sopenharmony_ci}
46fd4e5da5Sopenharmony_ci
47fd4e5da5Sopenharmony_citemplate("spvtools_fuzzer") {
48fd4e5da5Sopenharmony_ci  source_set(target_name) {
49fd4e5da5Sopenharmony_ci    testonly = true
50fd4e5da5Sopenharmony_ci    sources = invoker.sources
51fd4e5da5Sopenharmony_ci    sources += [ "random_generator.cpp" ]
52fd4e5da5Sopenharmony_ci    deps = [
53fd4e5da5Sopenharmony_ci      "../..:spvtools",
54fd4e5da5Sopenharmony_ci      "../..:spvtools_opt",
55fd4e5da5Sopenharmony_ci      "../..:spvtools_val",
56fd4e5da5Sopenharmony_ci    ]
57fd4e5da5Sopenharmony_ci    if (defined(invoker.deps)) {
58fd4e5da5Sopenharmony_ci      deps += invoker.deps
59fd4e5da5Sopenharmony_ci    }
60fd4e5da5Sopenharmony_ci
61fd4e5da5Sopenharmony_ci    configs -= [ "//build/config/compiler:chromium_code" ]
62fd4e5da5Sopenharmony_ci    configs += [
63fd4e5da5Sopenharmony_ci      "//build/config/compiler:no_chromium_code",
64fd4e5da5Sopenharmony_ci      ":fuzzer_config",
65fd4e5da5Sopenharmony_ci    ]
66fd4e5da5Sopenharmony_ci  }
67fd4e5da5Sopenharmony_ci}
68fd4e5da5Sopenharmony_ci
69fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_as_fuzzer_src") {
70fd4e5da5Sopenharmony_ci  sources = [ "spvtools_as_fuzzer.cpp" ]
71fd4e5da5Sopenharmony_ci}
72fd4e5da5Sopenharmony_ci
73fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_binary_parser_fuzzer_src") {
74fd4e5da5Sopenharmony_ci  sources = [ "spvtools_binary_parser_fuzzer.cpp" ]
75fd4e5da5Sopenharmony_ci}
76fd4e5da5Sopenharmony_ci
77fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_dis_fuzzer_src") {
78fd4e5da5Sopenharmony_ci  sources = [ "spvtools_dis_fuzzer.cpp" ]
79fd4e5da5Sopenharmony_ci}
80fd4e5da5Sopenharmony_ci
81fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_opt_performance_fuzzer_src") {
82fd4e5da5Sopenharmony_ci  sources = [
83fd4e5da5Sopenharmony_ci    "spvtools_opt_fuzzer_common.cpp",
84fd4e5da5Sopenharmony_ci    "spvtools_opt_performance_fuzzer.cpp",
85fd4e5da5Sopenharmony_ci  ]
86fd4e5da5Sopenharmony_ci}
87fd4e5da5Sopenharmony_ci
88fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_opt_legalization_fuzzer_src") {
89fd4e5da5Sopenharmony_ci  sources = [
90fd4e5da5Sopenharmony_ci    "spvtools_opt_fuzzer_common.cpp",
91fd4e5da5Sopenharmony_ci    "spvtools_opt_legalization_fuzzer.cpp",
92fd4e5da5Sopenharmony_ci  ]
93fd4e5da5Sopenharmony_ci}
94fd4e5da5Sopenharmony_ci
95fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_opt_size_fuzzer_src") {
96fd4e5da5Sopenharmony_ci  sources = [
97fd4e5da5Sopenharmony_ci    "spvtools_opt_fuzzer_common.cpp",
98fd4e5da5Sopenharmony_ci    "spvtools_opt_size_fuzzer.cpp",
99fd4e5da5Sopenharmony_ci  ]
100fd4e5da5Sopenharmony_ci}
101fd4e5da5Sopenharmony_ci
102fd4e5da5Sopenharmony_cispvtools_fuzzer("spvtools_val_fuzzer_src") {
103fd4e5da5Sopenharmony_ci  sources = [ "spvtools_val_fuzzer.cpp" ]
104fd4e5da5Sopenharmony_ci}
105fd4e5da5Sopenharmony_ci
106fd4e5da5Sopenharmony_ciif (!build_with_chromium || use_fuzzing_engine) {
107fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_as_fuzzer") {
108fd4e5da5Sopenharmony_ci    sources = []
109fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_as_fuzzer_src" ]
110fd4e5da5Sopenharmony_ci
111fd4e5da5Sopenharmony_ci    # Intentionally doesn't use the seed corpus, because it consumes
112fd4e5da5Sopenharmony_ci    #  part of the input as not part of the file.
113fd4e5da5Sopenharmony_ci  }
114fd4e5da5Sopenharmony_ci
115fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_binary_parser_fuzzer") {
116fd4e5da5Sopenharmony_ci    sources = []
117fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_binary_parser_fuzzer_src" ]
118fd4e5da5Sopenharmony_ci
119fd4e5da5Sopenharmony_ci    # Intentionally doesn't use the seed corpus, because it consumes
120fd4e5da5Sopenharmony_ci    #  part of the input as not part of the file.
121fd4e5da5Sopenharmony_ci  }
122fd4e5da5Sopenharmony_ci
123fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_dis_fuzzer") {
124fd4e5da5Sopenharmony_ci    sources = []
125fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_dis_fuzzer_src" ]
126fd4e5da5Sopenharmony_ci
127fd4e5da5Sopenharmony_ci    # Intentionally doesn't use the seed corpus, because it consumes
128fd4e5da5Sopenharmony_ci    #  part of the input as not part of the file.
129fd4e5da5Sopenharmony_ci  }
130fd4e5da5Sopenharmony_ci
131fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_opt_performance_fuzzer") {
132fd4e5da5Sopenharmony_ci    sources = []
133fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_opt_performance_fuzzer_src" ]
134fd4e5da5Sopenharmony_ci    seed_corpus = "corpora/spv"
135fd4e5da5Sopenharmony_ci  }
136fd4e5da5Sopenharmony_ci
137fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_opt_legalization_fuzzer") {
138fd4e5da5Sopenharmony_ci    sources = []
139fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_opt_legalization_fuzzer_src" ]
140fd4e5da5Sopenharmony_ci    seed_corpus = "corpora/spv"
141fd4e5da5Sopenharmony_ci  }
142fd4e5da5Sopenharmony_ci
143fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_opt_size_fuzzer") {
144fd4e5da5Sopenharmony_ci    sources = []
145fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_opt_size_fuzzer_src" ]
146fd4e5da5Sopenharmony_ci    seed_corpus = "corpora/spv"
147fd4e5da5Sopenharmony_ci  }
148fd4e5da5Sopenharmony_ci
149fd4e5da5Sopenharmony_ci  fuzzer_test("spvtools_val_fuzzer") {
150fd4e5da5Sopenharmony_ci    sources = []
151fd4e5da5Sopenharmony_ci    deps = [ ":spvtools_val_fuzzer_src" ]
152fd4e5da5Sopenharmony_ci    seed_corpus = "corpora/spv"
153fd4e5da5Sopenharmony_ci  }
154fd4e5da5Sopenharmony_ci}
155