blob: bf97e4ae7c3dacd46cd4248f336d143351e55e00 [file] [log] [blame]
# 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.
declare_args() {
# Set this to true when configuring gn args to enable minfs dirty cache.
# This is a compile time argument instead of mount time argument because
# we conditionally want to enable dirty cache only on specific
# configurations. Once it is enabled, we want the board to run all instances
# of minfs, including # data and all minfs created to run test, should enable
# dirty cache. This ensures that we run what we test.
minfs_enable_dirty_cache = false
}
static_library("minfs") {
friend = [
"test:*",
"allocator/test:*",
]
visibility = [
"//src/devices/block/bin/disk-inspect",
"//src/storage/*",
"//zircon/system/utest/fvm",
"//zircon/system/utest/minfs-micro-benchmark",
"//zircon/tools/minfs",
]
public = [
"bcache.h",
"format.h",
"fsck.h",
"metrics.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 = [
"//sdk/lib/syslog/cpp",
"//src/storage/fvm",
"//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/range",
"//zircon/system/ulib/storage/operation",
"//zircon/third_party/ulib/cksum",
]
if (is_fuchsia) {
if (minfs_enable_dirty_cache) {
defines = [
# Enable dirty cache only when we are running on fuchis and gn config
# asks us to enable.
"MINFS_ENABLE_DIRTY_CACHE",
]
}
public += [
"command_handler.h",
"minfs_inspector.h",
]
sources += [
"allocator/allocator.cc",
"allocator/inode_manager.cc",
"allocator/storage.cc",
"bcache.cc",
"file_target.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",
"minfs_target.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",
"//sdk/lib/syslog/cpp",
"//src/storage/fvm",
"//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/fs/metrics:metrics-cobalt",
"//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",
"file_host.cc",
"host.cc",
"minfs_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 = [
"allocator/test:minfs-allocator-tests",
"test:minfs-fuzzers",
"test:minfs-tests",
"test/host:minfs_host($host_toolchain)",
"//src/lib/isolated_devmgr/v2_component",
]
}