# Copyright 2021 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/components.gni")
import("//build/rust/rustc_binary.gni")
import("//src/developer/ffx/build/ffx_plugin.gni")

ffx_plugin("ffx_storage_blackout_blobfs_checkerboard") {
  version = "0.1.0"
  edition = "2021"
  args_sources = [ "src/args.rs" ]
  sources = [ "src/lib.rs" ]
  deps = [
    "//src/lib/fuchsia-async",
    "//tools/blackout/blackout-host",
  ]
}

rustc_binary("blackout-blobfs-checkerboard-target-bin") {
  output_name = "blackout_blobfs_checkerboard_target_bin"
  with_unit_tests = true
  testonly = true
  edition = "2021"
  deps = [
    "//src/lib/fuchsia",
    "//src/lib/fuchsia-fs",
    "//src/lib/storage/fs_management/rust:fs_management",
    "//src/sys/pkg/lib/fuchsia-merkle",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:async-trait",
    "//third_party/rust_crates:byteorder",
    "//third_party/rust_crates:log",
    "//third_party/rust_crates:rand",
    "//tools/blackout/blackout-target",
  ]
  data_deps = [ "//src/storage/bin/blobfs" ]
  source_root = "src/target.rs"

  sources = [ "src/target.rs" ]
}

fuchsia_component("blackout-blobfs-checkerboard-target-component") {
  testonly = true
  deps = [ ":blackout-blobfs-checkerboard-target-bin" ]
  manifest = "meta/blackout_blobfs_checkerboard_target.cml"
}

fuchsia_package("blackout-blobfs-checkerboard-target") {
  testonly = true
  deps = [ ":blackout-blobfs-checkerboard-target-component" ]
}

group("blobfs-checkerboard") {
  testonly = true
  public_deps = [ ":blackout-blobfs-checkerboard-target" ]
}

group("integration") {
  testonly = true
  public_deps = [ ":blackout-blobfs-checkerboard-target" ]
}
