blob: 0dc63da5c190f1cd22a5c53cec4f371fb8aff60e [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/fuzz.gni")
group("fuzzers") {
testonly = true
deps = [
":hermetic_tests",
# This is an example, but doesn't have a test spec.
"rust:toy-example",
]
}
# This target is the same as the one above; whether fuzzers or unit tests are built depends on which
# toolchain variant is active. Typically, you should include fuzzers in your package's tests.
group("hermetic_tests") {
testonly = true
deps = [ ":fuzzing-examples" ]
}
fuchsia_fuzzer_component("crash-fuzzer-component") {
component_name = "crash_fuzzer"
manifest = "cpp/meta/crash_fuzzer.cml"
deps = [ "cpp:crash_fuzzer" ]
}
fuchsia_fuzzer_component("overflow-fuzzer-component") {
component_name = "overflow_fuzzer"
manifest = "cpp/meta/overflow_fuzzer.cml"
deps = [ "cpp:overflow_fuzzer" ]
}
fuchsia_fuzzer_component("corpus-fuzzer-component") {
component_name = "corpus_fuzzer"
manifest = "cpp/meta/corpus_fuzzer.cml"
deps = [
"cpp:corpus_fuzzer",
"cpp/example-corpus",
]
}
fuchsia_fuzzer_component("corpus-fuzzer-without-corpus-component") {
component_name = "corpus_fuzzer_without_corpus"
manifest = "cpp/meta/corpus_fuzzer_without_corpus.cml"
deps = [ "cpp:corpus_fuzzer_without_corpus" ]
}
fuchsia_fuzzer_component("dictionary-fuzzer-component") {
component_name = "dictionary_fuzzer"
manifest = "cpp/meta/dictionary_fuzzer.cml"
deps = [
"cpp:dictionary_fuzzer",
"cpp:dictionary_fuzzer-dictionary",
"cpp/example-corpus",
]
}
fuchsia_fuzzer_component("dictionary-fuzzer-without-dictionary-component") {
component_name = "dictionary_fuzzer_without_dictionary"
manifest = "cpp/meta/dictionary_fuzzer_without_dictionary.cml"
deps = [
"cpp:dictionary_fuzzer_without_dictionary",
"cpp/example-corpus",
]
}
fuchsia_fuzzer_component("fuzzed-data-provider-fuzzer-component") {
component_name = "fuzzed_data_provider_fuzzer"
manifest = "cpp/meta/fuzzed_data_provider_fuzzer.cml"
deps = [ "cpp:fuzzed_data_provider_fuzzer" ]
}
fuchsia_fuzzer_component("noop-fuzzer-component") {
component_name = "noop_fuzzer"
manifest = "cpp/meta/noop_fuzzer.cml"
deps = [ "cpp:noop_fuzzer" ]
}
fuchsia_fuzzer_component("out-of-memory-fuzzer-component") {
component_name = "out_of_memory_fuzzer"
manifest = "cpp/meta/out_of_memory_fuzzer.cml"
deps = [ "cpp:out_of_memory_fuzzer" ]
}
fuchsia_fuzzer_component("echo-fuzzer-component") {
component_name = "echo-fuzzer"
manifest = "fidl/meta/echo-fuzzer.cml"
deps = [ "fidl:echo-fuzzer" ]
}
fuchsia_fuzzer_component("toy-example-arbitrary-component") {
component_name = "toy_example_arbitrary"
manifest = "rust/meta/toy_example_arbitrary.cml"
deps = [ "rust:toy_example_arbitrary" ]
}
fuchsia_fuzzer_component("toy-example-raw-bytes-component") {
component_name = "toy_example_raw_bytes"
manifest = "rust/meta/toy_example_raw_bytes.cml"
deps = [ "rust:toy_example_raw_bytes" ]
}
fuchsia_fuzzer_component("toy-example-with-main-component") {
component_name = "toy_example_with_main"
manifest = "rust/meta/toy_example_with_main.cml"
deps = [ "rust:toy_example_with_main" ]
}
fuchsia_fuzzer_package("fuzzing-examples") {
# Packages can have non-default names.
package_name = "example-fuzzers"
# Fuzzers are defined for each supported language
cpp_fuzzer_components = [
":crash-fuzzer-component",
":overflow-fuzzer-component",
":corpus-fuzzer-component",
":corpus-fuzzer-without-corpus-component",
":dictionary-fuzzer-component",
":dictionary-fuzzer-without-dictionary-component",
":fuzzed-data-provider-fuzzer-component",
":noop-fuzzer-component",
":out-of-memory-fuzzer-component",
":echo-fuzzer-component",
]
# A fuzzers package can have fuzzers for multiple languages.
rust_fuzzer_components = [
":toy-example-arbitrary-component",
":toy-example-raw-bytes-component",
":toy-example-with-main-component",
]
deps = [ "zx" ]
}