# 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($host_toolchain)",
    "//tools/build/ninjago/ninjatrace($host_toolchain)",
  ]
}

group("tests") {
  testonly = true

  deps = [
    ":build_tests",
    "fx-set:tests",
    "ninjago:tests",
  ]
}

go_library("build") {
  sources = [
    "archives.go",
    "args.go",
    "args_test.go",
    "assembly_input_archives.go",
    "assembly_manifest.go",
    "binaries.go",
    "binaries_test.go",
    "blob.go",
    "boot_tests.go",
    "checkout_artifacts.go",
    "client.go",
    "clippy.go",
    "images.go",
    "licenses.go",
    "modules.go",
    "package_manifest.go",
    "package_manifest_test.go",
    "package_repositories.go",
    "prebuilt_binaries.go",
    "product_bundles.go",
    "product_size_checker_output.go",
    "sdk_archives.go",
    "test_durations.go",
    "test_durations_test.go",
    "test_list.go",
    "test_list_test.go",
    "tests.go",
    "tests_test.go",
    "tools.go",
    "tools_test.go",
  ]
  deps = [
    "//third_party/golibs:github.com/google/go-cmp",
    "//third_party/golibs:golang.org/x/exp",
    "//tools/lib/hostplatform",
    "//tools/lib/jsonutil",
    "//tools/lib/osmisc",
  ]
}

go_test("build_tests") {
  library = ":build"
}
