# 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/host.gni")
import("//build/rust/rustc_binary.gni")

if (is_host) {
  rustc_binary("make-fuchsia-vol") {
    edition = "2021"
    sources = [ "src/main.rs" ]
    data_deps = [
      "//src/storage/bin/fvm",
      "//zircon/third_party/uapp/mkfs-msdosfs",
    ]
    deps = [
      "//third_party/rust_crates:anyhow",
      "//third_party/rust_crates:argh",
      "//third_party/rust_crates:byteorder",
      "//third_party/rust_crates:camino",
      "//third_party/rust_crates:crc",
      "//third_party/rust_crates:fatfs",
      "//third_party/rust_crates:gpt",
      "//third_party/rust_crates:rand",
      "//third_party/rust_crates:rand_xorshift",
      "//third_party/rust_crates:serde",
      "//third_party/rust_crates:serde_json",
      "//third_party/rust_crates:uuid",
    ]
    with_unit_tests = true
    test_deps = [
      ":test_bin",
      ":test_data",
      "//third_party/rust_crates:zstd",
      "//third_party/zstd",
    ]
  }

  host_test_data("test_data") {
    sources = [
      "test_data/golden",
      "test_data/images.json",
    ]
    outputs =
        [ "$root_out_dir/make-fuchsia-vol_test_data/{{source_file_part}}" ]
  }

  host_test_data("test_bin") {
    sources = [ "$root_out_dir/mkfs-msdosfs" ]
    outputs =
        [ "$root_out_dir/make-fuchsia-vol_test_data/host_x64/mkfs-msdosfs" ]
    deps = [ "//zircon/third_party/uapp/mkfs-msdosfs" ]
  }
}

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

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