• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2018 Google Inc. All rights reserved.
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("//testing/libfuzzer/fuzzer_test.gni")
16import("//testing/test.gni")
17
18config("fuzzer_config") {
19  configs = [ "../..:spvtools_internal_config" ]
20}
21
22group("fuzzers") {
23  testonly = true
24  deps = []
25
26  if (!build_with_chromium || use_fuzzing_engine) {
27    deps += [ ":fuzzers_bin" ]
28  }
29}
30
31if (!build_with_chromium || use_fuzzing_engine) {
32  group("fuzzers_bin") {
33    testonly = true
34
35    deps = [
36      ":spvtools_binary_parser_fuzzer",
37      ":spvtools_opt_legalization_fuzzer",
38      ":spvtools_opt_performance_fuzzer",
39      ":spvtools_opt_size_fuzzer",
40      ":spvtools_val_fuzzer",
41    ]
42  }
43}
44
45template("spvtools_fuzzer") {
46  source_set(target_name) {
47    testonly = true
48    sources = invoker.sources
49    deps = [
50      "../..:spvtools",
51      "../..:spvtools_opt",
52      "../..:spvtools_val",
53    ]
54    if (defined(invoker.deps)) {
55      deps += invoker.deps
56    }
57
58    configs -= [ "//build/config/compiler:chromium_code" ]
59    configs += [
60      "//build/config/compiler:no_chromium_code",
61      ":fuzzer_config",
62    ]
63  }
64}
65
66spvtools_fuzzer("spvtools_binary_parser_fuzzer_src") {
67  sources = [
68    "spvtools_binary_parser_fuzzer.cpp",
69  ]
70}
71
72spvtools_fuzzer("spvtools_opt_performance_fuzzer_src") {
73  sources = [
74    "spvtools_opt_performance_fuzzer.cpp",
75  ]
76}
77
78spvtools_fuzzer("spvtools_opt_legalization_fuzzer_src") {
79  sources = [
80    "spvtools_opt_legalization_fuzzer.cpp",
81  ]
82}
83
84spvtools_fuzzer("spvtools_opt_size_fuzzer_src") {
85  sources = [
86    "spvtools_opt_size_fuzzer.cpp",
87  ]
88}
89
90spvtools_fuzzer("spvtools_val_fuzzer_src") {
91  sources = [
92    "spvtools_val_fuzzer.cpp",
93  ]
94}
95
96if (!build_with_chromium || use_fuzzing_engine) {
97  fuzzer_test("spvtools_binary_parser_fuzzer") {
98    sources = []
99    deps = [
100      ":spvtools_binary_parser_fuzzer_src",
101    ]
102    # Intentionally doesn't use the seed corpus, because it consumes
103    #  part of the input as not part of the file.
104  }
105
106  fuzzer_test("spvtools_opt_performance_fuzzer") {
107    sources = []
108    deps = [
109      ":spvtools_opt_performance_fuzzer_src",
110    ]
111    seed_corpus = "corpora/spv"
112  }
113
114  fuzzer_test("spvtools_opt_legalization_fuzzer") {
115    sources = []
116    deps = [
117      ":spvtools_opt_legalization_fuzzer_src",
118    ]
119    seed_corpus = "corpora/spv"
120  }
121
122  fuzzer_test("spvtools_opt_size_fuzzer") {
123    sources = []
124    deps = [
125      ":spvtools_opt_size_fuzzer_src",
126    ]
127    seed_corpus = "corpora/spv"
128  }
129
130  fuzzer_test("spvtools_val_fuzzer") {
131    sources = []
132    deps = [
133      ":spvtools_val_fuzzer_src",
134    ]
135    seed_corpus = "corpora/spv"
136  }
137}
138