# 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/components/fuchsia_unittest_component.gni")
import("//build/fuzz.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_fuzzer.gni")
import("//build/rust/rustc_library.gni")
import("//build/rust/rustc_macro.gni")
import("//src/storage/fs_test/suite.gni")
import("//src/storage/testing/driver_test_realm.gni")
import("//tools/cmc/build/expect_includes.gni")

fxfs_deps = [
  ":fxfs_macros",
  "//sdk/fidl/fuchsia.io:fuchsia.io_rust",
  "//src/lib/diagnostics/inspect/rust",
  "//src/lib/fuchsia-async",
  "//src/lib/mundane",
  "//src/storage/fxfs/crypto",
  "//src/storage/fxfs/trace",
  "//src/storage/fxfs/unicode",
  "//src/storage/lib/fsverity-merkle",
  "//src/storage/lib/storage_device",
  "//src/storage/type-fprint:fprint",
  "//third_party/rust_crates:anyhow",
  "//third_party/rust_crates:assert_matches",
  "//third_party/rust_crates:async-trait",
  "//third_party/rust_crates:bincode",
  "//third_party/rust_crates:bit-vec",
  "//third_party/rust_crates:byteorder",
  "//third_party/rust_crates:either",
  "//third_party/rust_crates:event-listener",
  "//third_party/rust_crates:futures",
  "//third_party/rust_crates:linked-hash-map",
  "//third_party/rust_crates:num-traits",
  "//third_party/rust_crates:once_cell",
  "//third_party/rust_crates:rand",
  "//third_party/rust_crates:rustc-hash",
  "//third_party/rust_crates:scopeguard",
  "//third_party/rust_crates:serde",
  "//third_party/rust_crates:static_assertions",
  "//third_party/rust_crates:thiserror",
  "//third_party/rust_crates:tracing",
  "//third_party/rust_crates:uuid",
  "//third_party/rust_crates:zerocopy_0_0_0_alpha_0",
]

fxfs_test_deps = [
  "//src/lib/fuchsia",
  "//src/storage/fxfs/crypto/insecure",
]

fxfs_sources = [
  "src/checksum.rs",
  "src/debug_assert_not_too_long.rs",
  "src/drop_event.rs",
  "src/errors.rs",
  "src/filesystem.rs",
  "src/fsck.rs",
  "src/fsck/errors.rs",
  "src/fsck/store_scanner.rs",
  "src/fsck/tests.rs",
  "src/lib.rs",
  "src/log.rs",
  "src/lsm_tree.rs",
  "src/lsm_tree/bloom_filter.rs",
  "src/lsm_tree/cache.rs",
  "src/lsm_tree/merge.rs",
  "src/lsm_tree/persistent_layer.rs",
  "src/lsm_tree/skip_list_layer.rs",
  "src/lsm_tree/types.rs",
  "src/metrics.rs",
  "src/object_handle.rs",
  "src/object_store.rs",
  "src/object_store/allocator.rs",
  "src/object_store/allocator/merge.rs",
  "src/object_store/allocator/strategy.rs",
  "src/object_store/caching_object_handle.rs",
  "src/object_store/data_object_handle.rs",
  "src/object_store/directory.rs",
  "src/object_store/extent_record.rs",
  "src/object_store/flush.rs",
  "src/object_store/graveyard.rs",
  "src/object_store/journal.rs",
  "src/object_store/journal/bootstrap_handle.rs",
  "src/object_store/journal/checksum_list.rs",
  "src/object_store/journal/reader.rs",
  "src/object_store/journal/super_block.rs",
  "src/object_store/journal/writer.rs",
  "src/object_store/key_manager.rs",
  "src/object_store/merge.rs",
  "src/object_store/object_manager.rs",
  "src/object_store/object_record.rs",
  "src/object_store/project_id.rs",
  "src/object_store/store_object_handle.rs",
  "src/object_store/transaction.rs",
  "src/object_store/tree.rs",
  "src/object_store/tree_cache.rs",
  "src/object_store/volume.rs",
  "src/range.rs",
  "src/round.rs",
  "src/serialized_types.rs",
  "src/serialized_types/test_traits.rs",
  "src/serialized_types/tests.rs",
  "src/serialized_types/traits.rs",
  "src/serialized_types/types.rs",
  "src/testing.rs",
  "src/testing/fake_object.rs",
  "src/testing/writer.rs",
]

if (is_fuchsia) {
  fxfs_deps += [
    "//src/lib/zircon/rust:fuchsia-zircon",
    "//third_party/rust_crates:scopeguard",
  ]
  if (is_debug) {
    fxfs_deps += [ "//src/lib/debug/rust" ]
  }
  fxfs_test_deps += [
    "//src/storage/blobfs/bin:blobfs-component",
    "//third_party/zstd",
  ]
}

rustc_macro("fxfs_macros") {
  edition = "2021"
  name = "fxfs_macros"
  deps = [
    "//third_party/rust_crates:proc-macro2",
    "//third_party/rust_crates:quote",

    # FIXME(https://fxbug.dev/332277415): Please update to syn 2.x.
    # "//third_party/rust_crates:syn",
    "//third_party/rust_crates:syn-v1_0_98",
  ]
  source_root = "macros/macros.rs"
  sources = [ "macros/macros.rs" ]
}

rustc_library("lib") {
  edition = "2021"
  with_unit_tests = true
  name = "fxfs"

  deps = fxfs_deps
  sources = fxfs_sources
  test_deps = fxfs_test_deps
}

fuchsia_unittest_component("fxfs-test") {
  deps = [ ":lib_test" ]
}

fuchsia_unittest_component("fxfs-crypto-test") {
  deps = [ "crypto:crypto_test" ]
}

fuchsia_unittest_component("fxfs-make-blob-image-test") {
  deps = [
    "make-blob-image:make-blob-image_test",
    "//src/sys/test_runners:tmp_storage",
  ]
}

storage_driver_test_realm_v2_component("fxfs-platform-test") {
  deps = [ "platform:platform_test" ]
  manifest = "platform/meta/fxfs-platform-test.cml"
}

fuchsia_test_package("fxfs-tests") {
  test_components = [
    ":fxfs-test",
    ":fxfs-crypto-test",
    ":fxfs-make-blob-image-test",
    ":fxfs-platform-test",
  ]
  test_specs = {
    log_settings = {
      # We expect some tests to produce ERROR logs
      max_severity = "ERROR"
    }
  }
}

rustc_binary("fxfs") {
  edition = "2021"
  deps = [
    ":lib",
    "//src/lib/diagnostics/inspect/runtime/rust",
    "//src/lib/diagnostics/inspect/rust",
    "//src/lib/diagnostics/log/rust",
    "//src/lib/fuchsia-async",
    "//src/lib/fuchsia-component",
    "//src/lib/fuchsia-runtime",
    "//src/lib/trace/rust:trace-provider",
    "//src/storage/fxfs/platform",
    "//third_party/rust_crates:anyhow",
  ]
  sources = [ "src/main.rs" ]

  configs += [
    # Optimize for size
    "//build/config/rust:bootfs",
  ]

  # Add thinlto config if lto variants are not used.
  if (!is_lto_variant) {
    # Optimize for speed (Fxfs is split into several crates; apply optimizations across them).
    configs += [ "//build/config/lto:thinlto" ]
  }
}

fuchsia_component("fxfs_component") {
  component_name = "fxfs"
  deps = [ ":fxfs" ]
  manifest = "meta/fxfs.cml"
}

fuchsia_package("package") {
  package_name = "fxfs"
  deps = [ ":fxfs_component" ]
}

fuchsia_shell_package("fxfs-bin") {
  deps = [ ":fxfs" ]
}

fs_test_config("fxfs") {
  is_multi_volume = true

  # See MAX_FILE_SIZE in filesystem.rs.
  max_file_size = 9223372036854771712
  supports_fsck_after_every_transaction = true

  # TODO(https://fxbug.dev/42063349) Add support for block sizes greater than the page size.
  max_block_size = 4096
  supports_hard_links = true
  supports_inspect = true
  supports_resize = true
  supports_mmap = true
  supports_mmap_shared_write = true
  supports_shutdown_on_no_connections = true
  timestamp_granularity = 1
  disk_format = 12  # See //src/storage/lib/fs_management/cpp/format.h
  uses_crypt = true

  options = [
    {
      description = "Fxfs"
      use_fvm = false
      has_min_volume_size = true

      device_block_count = 24576
      device_block_size = 512
    },
  ]
}

test("fxfs-interop-fs") {
  sources = [ "test/fs_test.cc" ]
  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_cpp",
    "//sdk/lib/component/incoming/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/storage/fs_test",
    "//src/storage/fs_test:test_crypt_service",
    "//src/storage/fxfs",
    "//src/storage/lib/block_client/cpp",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fdio-caller",
  ]

  # TODO(https://fxbug.dev/42085293): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-vla-cxx-extension" ]
}

storage_driver_test_realm_v2_component("fxfs-interop-fs-tests") {
  deps = [
    ":fxfs-interop-fs",
    ":test_fxfs_component_manifest_shard",
  ]
}

expect_includes("test_fxfs_component_manifest_shard") {
  testonly = true
  includes = [ "meta/test_fxfs.shard.cml" ]
}

fs_test_suite("fxfs") {
  deps = [
    ":fxfs_component",
    ":fxfs_fs_test_config",
    "//src/storage/fxfs",
    "//src/storage/fxfs-crypt",
  ]
  extra_components = [ ":fxfs-interop-fs-tests" ]
  component_deps = [
    ":test_fxfs_component_manifest_shard",
    "//src/storage/fs_test:test_crypt_service",
  ]
}

slow_fs_test_suite("fxfs") {
  deps = [
    ":fxfs_component",
    ":fxfs_fs_test_config",
    "//src/storage/fxfs",
    "//src/storage/fxfs-crypt",
  ]
  component_deps = [
    ":test_fxfs_component_manifest_shard",
    "//src/storage/fs_test:test_crypt_service",
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":fxfs-fs-tests",
    ":fxfs-fuzzers",
    ":fxfs-slow-fs-tests",
    ":fxfs-tests",
    ":fxfs_component",
    ":lib_test($host_toolchain)",
    "//src/storage/fxfs/tools:tests",
    "//src/storage/fxfs/trace:tests",
    "//src/storage/fxfs/unicode:tests",
  ]
}

#################
## Fuzzers
#################

_fuzzers = [
  "fuzz_lsm_tree_actions",
  "fuzz_journal",
  "fuzz_journal_bytes",
]

foreach(fuzzer, _fuzzers) {
  rustc_fuzzer(fuzzer) {
    edition = "2021"
    deps = fxfs_deps + [
             "//src/lib/fuzzing/rust:fuzz",
             "//third_party/rust_crates:arbitrary",
             "//third_party/rust_crates:futures",
           ]
    sources = fxfs_sources
  }

  fuchsia_fuzzer_component("${fuzzer}_component") {
    manifest = "meta/${fuzzer}.cml"
    deps = [ ":$fuzzer" ]
  }
}

fuchsia_fuzzer_package("fxfs-fuzzers") {
  rust_fuzzer_components = []
  foreach(fuzzer, _fuzzers) {
    rust_fuzzer_components += [ ":${fuzzer}_component" ]
  }
}

group("fuzzers") {
  testonly = true
  deps = [ ":fxfs-fuzzers" ]
}
