# Copyright 2020 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/fuzzing/fuzzer.gni")

fuzzer("crash_fuzzer") {
  sources = [ "crash.cc" ]
}

fuzzer("overflow_fuzzer") {
  sources = [ "overflow.cc" ]
}

fuzzer("corpus_fuzzer") {
  sources = [ "corpus.cc" ]
  corpus = "example-corpus"
}

# Same as `corpus_fuzzer`, but without the seed corpus. This can be used to illustrate the
# difference providing a seed corpus can make on fuzzer coverage.
fuzzer("corpus_fuzzer_without_corpus") {
  sources = [ "corpus.cc" ]
}

fuzzer("dictionary_fuzzer") {
  sources = [ "dictionary.cc" ]
  dictionary = "example-dictionary"
  corpus = "example-corpus"
}

# Same as `dictionary_fuzzer`, but without the dictionary. This can be used to illustrate the
# difference providing a dictionary can make on fuzzer performance.
fuzzer("dictionary_fuzzer_without_dictionary") {
  sources = [ "corpus.cc" ]
  corpus = "example-corpus"
}

fuzzer("fuzzed_data_provider_fuzzer") {
  sources = [ "fuzzed-data-provider.cc" ]
}

fuzzer("noop_fuzzer") {
  sources = [ "noop.cc" ]
}

fuzzer("extended_sandbox") {
  sources = [ "extended_sandbox.cc" ]
  deps = [ "//src/lib/files" ]
  features = [ "isolated-cache-storage" ]
}

# Uses non-default output name. See the corresponding scope in //examples/fuzzer:fuzzing-examples
fuzzer("oom_fuzzer") {
  output_name = "out_of_memory_fuzzer"
  sources = [ "oom.cc" ]
}
