/* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package { // See: http://go/android-license-faq // Inherits all licenses from parent to get Apache 2.0 and package name. default_applicable_licenses: [ "packages_modules_NeuralNetworks_runtime_license", ], } cc_library_static { name: "libneuralnetworks_fuzzer_proto", host_supported: true, vendor_available: true, owner: "google", srcs: ["Model.proto"], proto: { type: "full", export_proto_headers: true, }, shared_libs: ["libprotobuf-cpp-full"], } cc_library_static { name: "libneuralnetworks_fuzzer_harness", host_supported: true, vendor_available: true, owner: "google", srcs: [ "Converter.cpp", "FuzzHarness.cpp", "StaticAssert.cpp", ], shared_libs: [ "libprotobuf-cpp-full", ], static_libs: [ "libneuralnetworks_common", "libneuralnetworks_generated_test_harness", "neuralnetworks_types", ], whole_static_libs: [ "libneuralnetworks_fuzzer_proto", "libprotobuf-mutator", ], target: { android: { shared_libs: [ "libnativewindow", ], }, }, } filegroup { name: "libneuralnetworks_fuzzer_corpus", srcs: ["corpus/*"], } cc_defaults { name: "libneuralnetworks_fuzzer_defaults", host_supported: true, shared_libs: ["libprotobuf-cpp-full"], static_libs: ["libneuralnetworks_fuzzer_harness"], corpus: [":libneuralnetworks_fuzzer_corpus"], } // The following host binary is disabled because the genrule that uses this // binary (below) is disabled and because this binary is 300MB large currently. cc_binary_host { name: "libneuralnetworks_fuzzer_generate_corpus", enabled: false, owner: "google", srcs: [ "GenerateCorpus.cpp", "StaticAssert.cpp", ], shared_libs: ["libprotobuf-cpp-full"], static_libs: [ "libneuralnetworks_fuzzer_proto", "libneuralnetworks_generated_test_harness", ], whole_static_libs: [ "neuralnetworks_generated_V1_0_example", "neuralnetworks_generated_V1_1_example", "neuralnetworks_generated_V1_2_example", "neuralnetworks_generated_V1_3_example", ], } // This genrule generates a zip file of 5000+ test cases from the NNAPI test // generator. It has been disabled for the time being because cc_fuzz is // currently not able to accept a zip file as a fuzzer seed corpus. // Alternatively, gensrcs could be used to generate each test case individually; // however, the corpus only seems to be able to accept ~500 files. genrule { name: "libneuralnetworks_fuzzer_seed_corpus", enabled: false, tools: [ "libneuralnetworks_fuzzer_generate_corpus", "soong_zip", ], out: ["libneuralnetworks_fuzzer_seed_corpus.zip"], cmd: "mkdir $(genDir)/corpus && " + "$(location libneuralnetworks_fuzzer_generate_corpus) $(genDir)/corpus && " + "$(location soong_zip) -o $(out) -C $(genDir)/corpus -D $(genDir)/corpus", }