# Copyright 2018 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")
import("//build/package.gni")

source_set("overnet") {
  public_deps = [
    "datagram_stream:lib",
    "endpoint:lib",
    "environment:lib",
    "labels:lib",
    "links:lib",
    "packet_protocol:lib",
    "protocol:lib",
    "routing:lib",
    "vocabulary:lib",
  ]
}

executable("overnet_unittests") {
  testonly = true

  deps = [
    "datagram_stream:tests",
    "endpoint:tests",
    "environment:tests",
    "labels:tests",
    "links:tests",
    "packet_protocol:tests",
    "protocol:tests",
    "routing:tests",
    "testing:run_all_tests",
    "testing:tests",
    "vocabulary:tests",
  ]
}

group("host_tests") {
  deps = [
    ":overnet_unittests($host_toolchain)",
  ]
  testonly = true
}

package("overnet_tests") {
  testonly = true

  deps = [
    ":overnet_unittests",
  ]

  tests = [
    {
      name = "overnet_unittests"
    },
  ]
}

fuzz_package("overnet_fuzzers") {
  targets = [ "packet_protocol:packet_protocol_fuzzer" ]
  sanitizers = [ "asan" ]
  fuzz_host = true
}
