# Copyright 2020 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("//build/rust/rustc_fuzzer.gni")
import("//build/rust/rustc_library.gni")

fatfs_deps = [
  "//sdk/fidl/fuchsia.fs:fuchsia.fs-rustc",
  "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
  "//sdk/fidl/fuchsia.mem:fuchsia.mem-rustc",
  "//src/lib/fidl/rust/fidl",
  "//src/lib/fuchsia-async",
  "//src/lib/storage/block_client/rust:remote-block-device",
  "//src/lib/storage/vfs/rust:vfs",
  "//src/lib/syslog/rust:syslog",
  "//src/lib/zircon/rust:fuchsia-zircon",
  "//third_party/rust_crates:anyhow",
  "//third_party/rust_crates:async-trait",
  "//third_party/rust_crates:chrono",
  "//third_party/rust_crates:fatfs",
  "//third_party/rust_crates:futures",
  "//third_party/rust_crates:scopeguard",
  "//third_party/rust_crates:static_assertions",
]

fatfs_sources = [
  "src/directory.rs",
  "src/file.rs",
  "src/filesystem.rs",
  "src/lib.rs",
  "src/node.rs",
  "src/refs.rs",
  "src/types.rs",
  "src/util.rs",
]

rustc_library("lib") {
  edition = "2018"
  with_unit_tests = true
  name = "fuchsia_fatfs"

  deps = fatfs_deps
  sources = fatfs_sources
}

fuchsia_component("fuchsia-fatfs-test") {
  testonly = true
  deps = [ ":lib_test" ]
  manifest = "meta/fuchsia_fatfs_lib_test.cml"
}

fuchsia_test_package("fuchsia-fatfs-tests") {
  test_components = [ ":fuchsia-fatfs-test" ]
}

rustc_fuzzer("fat-fuzzer") {
  rustfunction = "fuzz_fatfs"

  corpus = "corpus"
  options = [
    "-rss_limit_mb=3072",

    # Set a reasonably low per-task timeout in case the filesystem has problems that cause infinite
    # loops in the fuzzing code (e.g. cycles in the directory tree).
    "-timeout=60",
  ]

  sources = [ "src/fuzzer.rs" ] + fatfs_sources
  deps = fatfs_deps

  non_rust_deps = [ "//zircon/system/ulib/syslog" ]
}

fuzzers_package("fuchsia-fatfs-fuzzer") {
  rust_fuzzers = [ ":fat-fuzzer" ]
}

group("tests") {
  testonly = true
  deps = [
    ":fuchsia-fatfs-fuzzer",
    ":fuchsia-fatfs-tests",
    "//src/storage/fuchsia-fatfs/mounter:tests",
  ]
}

rustc_binary("fatfs") {
  edition = "2018"

  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.fs:fuchsia.fs-rustc",
    "//sdk/fidl/fuchsia.io:fuchsia.io-rustc",
    "//src/lib/fidl/rust/fidl",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/storage/block_client/rust:remote-block-device",
    "//src/lib/storage/vfs/rust:vfs",
    "//src/lib/syslog/rust:syslog",
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:anyhow",
    "//third_party/rust_crates:futures",
  ]

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

fuchsia_package("fuchsia-fatfs") {
  deps = [ "//src/storage/fuchsia-fatfs/mounter:fatfs-mounter" ]
}
