# Copyright 2019 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.

static_library("minfs") {
  friend = [
    "test:*",
    "allocator/test:*",
  ]
  visibility = [
    "//src/devices/block/bin/disk-inspect",
    "//src/storage/*",
    "//zircon/system/ulib/fvm-host",
    "//zircon/system/utest/fvm",
    "//zircon/system/utest/minfs-micro-benchmark",
    "//zircon/tools/minfs",
  ]
  public = [
    "bcache.h",
    "format.h",
    "fsck.h",
    "minfs.h",
    "transaction_limits.h",
  ]
  sources = [
    "allocator/allocator.h",
    "allocator/allocator_common.cc",
    "allocator/allocator_reservation.cc",
    "allocator/inode_manager.h",
    "allocator/metadata.cc",
    "allocator/metadata.h",
    "allocator/storage.h",
    "allocator/storage_common.cc",
    "allocator_reservation.h",
    "block_utils.h",
    "buffer_view.cc",
    "buffer_view.h",
    "directory.cc",
    "directory.h",
    "file.cc",
    "file.h",
    "fsck.cc",
    "inspector.h",
    "inspector/disk_struct.h",
    "inspector/loader.h",
    "inspector/parser.h",
    "inspector_inode.h",
    "inspector_inode_table.h",
    "inspector_private.h",
    "inspector_superblock.h",
    "lazy_buffer.cc",
    "lazy_buffer.h",
    "lazy_reader.cc",
    "lazy_reader.h",
    "metrics.cc",
    "metrics.h",
    "minfs.cc",
    "minfs_private.h",
    "minfs_private.h",
    "pending_work.h",
    "resizeable_array_buffer.cc",
    "resizeable_array_buffer.h",
    "resizeable_buffer.h",
    "resizeable_vmo_buffer.h",
    "superblock.h",
    "transaction_limits.cc",
    "unowned_vmo_buffer.h",
    "vnode.cc",
    "vnode.h",
    "vnode_allocation.h",
    "vnode_mapper.cc",
    "vnode_mapper.h",
    "writeback.cc",
    "writeback.h",
  ]
  public_deps = [
    "//zircon/public/lib/fbl",

    # bcache.h includes fs/transaction/device_transaction_handler.h & storage/buffer/...
    "//zircon/system/ulib/fs/transaction",
    "//zircon/system/ulib/storage/buffer",
  ]
  deps = [
    "//zircon/public/lib/fit",
    "//zircon/public/lib/safemath",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zxc",
    "//zircon/system/ulib/bitmap",
    "//zircon/system/ulib/disk_inspector",
    "//zircon/system/ulib/fs",
    "//zircon/system/ulib/fvm",
    "//zircon/system/ulib/range",
    "//zircon/system/ulib/storage/operation",
    "//zircon/third_party/ulib/cksum",
  ]
  if (is_fuchsia) {
    public += [
      "command_handler.h",
      "minfs_inspector.h",
    ]
    sources += [
      "allocator/allocator.cc",
      "allocator/inode_manager.cc",
      "allocator/storage.cc",
      "bcache.cc",
      "inspector.cc",
      "inspector/command_handler.cc",
      "inspector/disk_struct.cc",
      "inspector/loader.cc",
      "inspector/minfs_inspector.cc",
      "inspector/parser.cc",
      "inspector_inode.cc",
      "inspector_inode_table.cc",
      "inspector_superblock.cc",
      "resizeable_vmo_buffer.cc",
      "superblock.cc",
      "vnode_allocation.cc",
    ]
    public_deps += [
      # bcache.h includes fuchsia/hardware/block/c/fidl.h.
      "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_c",

      # fsck.h includes block-client/cpp/block-device.h
      "//zircon/system/ulib/block-client",

      # minfs_inspector.h includes fs/journal/format.h
      "//zircon/system/ulib/fs/journal",
    ]
    deps += [
      "//sdk/fidl/fuchsia.device:fuchsia.device_c",
      "//sdk/fidl/fuchsia.device:fuchsia.device_llcpp",
      "//sdk/fidl/fuchsia.hardware.block.volume:fuchsia.hardware.block.volume_c",
      "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
      "//sdk/fidl/fuchsia.minfs:fuchsia.minfs_llcpp",
      "//zircon/public/lib/async",
      "//zircon/public/lib/async-cpp",
      "//zircon/public/lib/fidl",
      "//zircon/public/lib/sync",
      "//zircon/public/lib/zx",
      "//zircon/system/ulib/async-default",
      "//zircon/system/ulib/async-loop",
      "//zircon/system/ulib/async-loop:async-loop-cpp",
      "//zircon/system/ulib/async-loop:async-loop-default",
      "//zircon/system/ulib/fdio-caller",
      "//zircon/system/ulib/fidl-utils",
      "//zircon/system/ulib/fvm",
      "//zircon/system/ulib/fzl",
      "//zircon/system/ulib/storage-metrics",
      "//zircon/system/ulib/trace",
      "//zircon/system/ulib/trace-engine",
    ]
  } else {
    public += [ "host.h" ]
    sources += [
      "allocator/allocator_host.cc",
      "allocator/inode_manager_host.cc",
      "allocator/storage_host.cc",
      "bcache_host.cc",
      "host.cc",
      "superblock_host.cc",
    ]
    deps += [
      "//zircon/system/ulib/fs/journal",
      "//zircon/system/ulib/zircon:zircon-headers",
    ]
  }
  configs += [
    # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
    "//build/config:Wno-conversion",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "test:minfs-fuzzers",
    "test:minfs-tests",
    "test:minfs-host($host_toolchain)",
  ]
}
