# 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/go/go_binary.gni")
import("//build/go/go_library.gni")
import("//build/go/go_test.gni")
import("//build/host.gni")

# This tool can only be built on the host
if (is_host) {
  go_library("main") {
    name = "main"
    source_dir = "."
    deps = [ "lib" ]
  }

  go_binary("undercoat") {
    gopackage = "main"
    deps = [ ":main" ]
  }

  go_test("undercoat_tests") {
    gopackages = [ "go.fuchsia.dev/fuchsia/tools/fuzz/lib" ]
    args = [ "-test.short" ]  # exclude end-to-end
    deps = [ "lib" ]
  }

  group("tests") {
    testonly = true

    deps = [ ":undercoat_tests" ]
  }
}

install_host_tools("fuzz") {
  deps = [ ":undercoat" ]
  outputs = [ "undercoat" ]
}
