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_as_fuzzer", 37 ":spvtools_binary_parser_fuzzer", 38 ":spvtools_dis_fuzzer", 39 ":spvtools_opt_legalization_fuzzer", 40 ":spvtools_opt_performance_fuzzer", 41 ":spvtools_opt_size_fuzzer", 42 ":spvtools_val_fuzzer", 43 ] 44 } 45} 46 47template("spvtools_fuzzer") { 48 source_set(target_name) { 49 testonly = true 50 sources = invoker.sources 51 sources += [ "random_generator.cpp" ] 52 deps = [ 53 "../..:spvtools", 54 "../..:spvtools_opt", 55 "../..:spvtools_val", 56 ] 57 if (defined(invoker.deps)) { 58 deps += invoker.deps 59 } 60 61 configs -= [ "//build/config/compiler:chromium_code" ] 62 configs += [ 63 "//build/config/compiler:no_chromium_code", 64 ":fuzzer_config", 65 ] 66 } 67} 68 69spvtools_fuzzer("spvtools_as_fuzzer_src") { 70 sources = [ 71 "spvtools_as_fuzzer.cpp", 72 ] 73} 74 75spvtools_fuzzer("spvtools_binary_parser_fuzzer_src") { 76 sources = [ 77 "spvtools_binary_parser_fuzzer.cpp", 78 ] 79} 80 81spvtools_fuzzer("spvtools_dis_fuzzer_src") { 82 sources = [ 83 "spvtools_dis_fuzzer.cpp", 84 ] 85} 86 87spvtools_fuzzer("spvtools_opt_performance_fuzzer_src") { 88 sources = [ 89 "spvtools_opt_performance_fuzzer.cpp", 90 "spvtools_opt_fuzzer_common.cpp", 91 ] 92} 93 94spvtools_fuzzer("spvtools_opt_legalization_fuzzer_src") { 95 sources = [ 96 "spvtools_opt_legalization_fuzzer.cpp", 97 "spvtools_opt_fuzzer_common.cpp", 98 ] 99} 100 101spvtools_fuzzer("spvtools_opt_size_fuzzer_src") { 102 sources = [ 103 "spvtools_opt_size_fuzzer.cpp", 104 "spvtools_opt_fuzzer_common.cpp", 105 ] 106} 107 108spvtools_fuzzer("spvtools_val_fuzzer_src") { 109 sources = [ 110 "spvtools_val_fuzzer.cpp", 111 ] 112} 113 114if (!build_with_chromium || use_fuzzing_engine) { 115 fuzzer_test("spvtools_as_fuzzer") { 116 sources = [] 117 deps = [ 118 ":spvtools_as_fuzzer_src", 119 ] 120 # Intentionally doesn't use the seed corpus, because it consumes 121 # part of the input as not part of the file. 122 } 123 124 fuzzer_test("spvtools_binary_parser_fuzzer") { 125 sources = [] 126 deps = [ 127 ":spvtools_binary_parser_fuzzer_src", 128 ] 129 # Intentionally doesn't use the seed corpus, because it consumes 130 # part of the input as not part of the file. 131 } 132 133 fuzzer_test("spvtools_dis_fuzzer") { 134 sources = [] 135 deps = [ 136 ":spvtools_dis_fuzzer_src", 137 ] 138 # Intentionally doesn't use the seed corpus, because it consumes 139 # part of the input as not part of the file. 140 } 141 142 fuzzer_test("spvtools_opt_performance_fuzzer") { 143 sources = [] 144 deps = [ 145 ":spvtools_opt_performance_fuzzer_src", 146 ] 147 seed_corpus = "corpora/spv" 148 } 149 150 fuzzer_test("spvtools_opt_legalization_fuzzer") { 151 sources = [] 152 deps = [ 153 ":spvtools_opt_legalization_fuzzer_src", 154 ] 155 seed_corpus = "corpora/spv" 156 } 157 158 fuzzer_test("spvtools_opt_size_fuzzer") { 159 sources = [] 160 deps = [ 161 ":spvtools_opt_size_fuzzer_src", 162 ] 163 seed_corpus = "corpora/spv" 164 } 165 166 fuzzer_test("spvtools_val_fuzzer") { 167 sources = [] 168 deps = [ 169 ":spvtools_val_fuzzer_src", 170 ] 171 seed_corpus = "corpora/spv" 172 } 173} 174