# Copyright 2017 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")

go_library("make-fuchsia-vol_lib") {
  name = "make-fuchsia-vol"
  deps = [ "//src/lib/thinfs:thinfs_lib" ]
  sources = [
    "abr.go",
    "abr_test.go",
    "disk.go",
    "disk_test.go",
    "make-fuchsia-vol.go",
    "make-fuchsia-vol_test.go",
  ]
}

go_binary("make-fuchsia-vol") {
  gopackage = "make-fuchsia-vol"

  deps = [ ":make-fuchsia-vol_lib" ]
}

if (is_host) {
  go_test("make-fuchsia-vol-tests") {
    gopackages = [ "make-fuchsia-vol" ]
    deps = [ ":make-fuchsia-vol_lib" ]
  }
}

install_host_tools("host") {
  deps = [ ":make-fuchsia-vol" ]
  outputs = [ "make-fuchsia-vol" ]
}

group("tests") {
  testonly = true
  deps = [ ":make-fuchsia-vol-tests($host_toolchain)" ]
}
