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

group("fuzzer") {
  testonly = true
  deps = [
    ":tests",
    "go",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":example_fuzzers",
    "go:tests",
  ]
}

fuzzers_package("example_fuzzers") {
  fuzzers = [
    ":baz_fuzzer",
    ":overflow_fuzzer",
    ":trap_fuzzer",
    ":fuzzed_data_provider_fuzzer",
    ":corpus_fuzzer",
    ":oom_fuzzer",
  ]
  fuzz_host = true
}

fuzzer("oom_fuzzer") {
  sources = [ "oom.cc" ]
}

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

fuzzer("trap_fuzzer") {
  sources = [ "trap.cc" ]
}

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

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

fuzzer("baz_fuzzer") {
  sources = [ "target.cc" ]
  deps = [ ":baz" ]
}

source_set("baz") {
  sources = [ "baz.cc" ]
  deps = [ "//src/lib/fxl" ]
}
