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