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

group("tools") {
  testonly = true

  public_deps = [
    "//tools/build/ninjago/buildstats",
    "//tools/build/ninjago/ninjatrace",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":build_tests",
    "ninjago:tests",
  ]
}

go_library("build") {
  sources = [
    "args.go",
    "args_test.go",
    "binaries.go",
    "binaries_test.go",
    "checkout_artifacts.go",
    "images.go",
    "modules.go",
    "prebuilt_binaries.go",
    "test_durations.go",
    "test_durations_test.go",
    "tests.go",
    "tests_test.go",
    "tools.go",
    "util.go",
    "util_test.go",
  ]
  deps = [ "//tools/lib/osmisc" ]
}

go_test("build_tests") {
  gopackages = [ "go.fuchsia.dev/fuchsia/tools/build" ]
  deps = [ ":build" ]
}
