# 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 = [
      "//build/sdk/meta:rust",
      "//src/lib/assembly/partitions_config",
      "//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",
      "//third_party/rust_crates:zerocopy",
    ]
    with_unit_tests = true
    test_deps = [
      ":test_bin",
      ":test_data",
      "//third_party/rust_crates:camino",
      "//third_party/rust_crates:tempfile",
      "//third_party/rust_crates:zstd",
      "//third_party/zstd",
    ]
  }

  host_test_data("test_data") {
    sources = [
      "test_data/golden",
      "test_data/images.json",
      "test_data/product_bundle.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)" ]
}
