blob: 22f956045a0115a81c281a54e77cf4be5572ff76 [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.
import("//build/fidl/fidl.gni")
import("//src/sys/build/components.gni")
declare_args() {
# Set this to true when configuring gn args to enable blobfs page-in
# metrics recording.
# This will also increase the inspect VMO size for blobfs to 2 MiB,
# to accommodate the large number of metrics entries.
blobfs_page_in_metrics_recording = false
}
static_library("blobfs") {
friend = [
":decompressor_impl",
"test:*",
]
visibility = [
"//src/storage/*",
"//zircon/system/ulib/fvm-host",
"//zircon/system/utest/blobfs-bench",
"//zircon/system/utest/fs-management",
"//zircon/system/utest/fs-test-utils",
"//zircon/system/utest/fvm",
"//zircon/tools/blobfs",
]
public = [
"blob_layout.h",
"blobfs_inspector.h",
"cache_policy.h",
"common.h",
"format.h",
"fsck.h",
"fsck_host.h",
"host.h",
"mkfs.h",
"mount.h",
"node_finder.h",
]
sources = [
"allocator/extent_reserver.cc",
"allocator/extent_reserver.h",
"allocator/node_reserver.cc",
"allocator/node_reserver.h",
"blob_layout.cc",
"blobfs_checker.cc",
"common.cc",
"compression/chunked.cc",
"compression/chunked.h",
"compression/compressor.h",
"compression/decompressor.cc",
"compression/decompressor.h",
"compression/lz4.cc",
"compression/lz4.h",
"compression/seekable_decompressor.h",
"compression/zstd_plain.cc",
"compression/zstd_plain.h",
"compression/zstd_seekable.cc",
"compression/zstd_seekable.h",
"compression_settings.cc",
"inspector/blobfs_inspector.cc",
"inspector/parser.cc",
"inspector/parser.h",
"iterator/allocated_extent_iterator.cc",
"iterator/allocated_extent_iterator.h",
"iterator/allocated_node_iterator.cc",
"iterator/allocated_node_iterator.h",
"iterator/block_iterator.cc",
"iterator/block_iterator.h",
"iterator/block_iterator_provider.h",
"iterator/extent_iterator.h",
"iterator/vector_extent_iterator.cc",
"iterator/vector_extent_iterator.h",
]
public_deps = [
# format.h includes digest.h.
"//src/lib/digest",
"//src/storage/lib/watchdog",
"//zircon/public/lib/bitmap",
"//zircon/public/lib/fit",
"//zircon/public/lib/zxc",
"//zircon/system/ulib/fs",
"//zircon/system/ulib/fs/journal",
"//zircon/system/ulib/fs/transaction",
"//zircon/system/ulib/range",
"//zircon/system/ulib/storage/buffer",
]
deps = [
"compression/configs",
"//sdk/lib/syslog/cpp",
"//src/lib/chunked-compression",
"//src/lib/digest",
"//src/storage/fvm",
"//third_party/boringssl",
"//third_party/zstd:zstdseek",
"//zircon/public/lib/bitmap",
"//zircon/public/lib/cksum",
"//zircon/public/lib/fbl",
"//zircon/public/lib/fit",
"//zircon/public/lib/lz4",
"//zircon/public/lib/safemath",
"//zircon/public/lib/zircon-internal",
"//zircon/public/lib/zxc",
"//zircon/system/ulib/disk_inspector",
"//zircon/system/ulib/fs/journal",
"//zircon/system/ulib/fs/transaction",
"//zircon/system/ulib/range",
"//zircon/system/ulib/storage/buffer",
"//zircon/system/ulib/storage/operation",
]
if (is_fuchsia) {
sources += [
"allocator/allocator.cc",
"blob.cc",
"blob_cache.cc",
"blob_corruption_notifier.cc",
"blob_loader.cc",
"blob_verifier.cc",
"blobfs.cc",
"cache_node.cc",
"compression/blob_compressor.cc",
"compression/external_decompressor.cc",
"directory.cc",
"format.cc",
"fsck.cc",
"health_check_service.cc",
"iterator/node_populator.cc",
"metrics.cc",
"mount.cc",
"pager/page_watcher.cc",
"pager/transfer_buffer.cc",
"pager/user_pager.cc",
"query.cc",
"read_metrics.cc",
"runner.cc",
"transaction.cc",
"verification_metrics.cc",
]
public_deps += [
":fuchsia.blobfs.internal",
":fuchsia.blobfs.internal_llcpp",
"//sdk/fidl/fuchsia.blobfs:fuchsia.blobfs_llcpp",
"//sdk/fidl/fuchsia.fs:fuchsia.fs_llcpp",
"//src/sys/pkg/fidl/fuchsia.update.verify:fuchsia.update.verify_llcpp",
"//zircon/system/ulib/block-client",
"//zircon/system/ulib/fs/metrics:metrics-cobalt",
"//zircon/system/ulib/fs/metrics:metrics-composite-latency-event",
"//zircon/system/ulib/fs/metrics:metrics-inspect",
]
deps += [
"//sdk/fidl/fuchsia.blobfs:fuchsia.blobfs_c",
"//sdk/fidl/fuchsia.blobfs:fuchsia.blobfs_llcpp",
"//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
"//sdk/fidl/fuchsia.scheduler",
"//sdk/lib/fdio",
"//sdk/lib/sys/inspect/cpp",
"//sdk/lib/syslog/cpp",
"//third_party/zstd",
"//zircon/public/lib/async",
"//zircon/public/lib/async-cpp",
"//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/backtrace-request",
"//zircon/system/ulib/block-client",
"//zircon/system/ulib/fidl-async:fidl-async-cpp",
"//zircon/system/ulib/fidl-utils",
"//zircon/system/ulib/fzl",
"//zircon/system/ulib/id_allocator",
"//zircon/system/ulib/trace",
"//zircon/system/ulib/trace-engine",
"//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
]
} else {
sources += [
"fsck_host.cc",
"host.cc",
]
deps += [ "//zircon/system/ulib/fs-host" ]
}
configs += [
# TODO(fxbug.dev/58162): delete the below and fix compiler warnings
"//build/config:Wno-conversion",
]
if (blobfs_page_in_metrics_recording) {
defines = [
# Enable blobfs page-in metrics.
"BLOBFS_ENABLE_PAGE_IN_METRICS",
# The page-in metrics feature requires a large Inspect VMO (>512KB) for blobfs.
"BLOBFS_ENABLE_LARGE_INSPECT_VMO",
]
}
}
fidl("fuchsia.blobfs.internal") {
sources = [ "compression/decompressor_sandbox/decompressor.fidl" ]
public_deps = [ "//zircon/vdso/zx" ]
}
source_set("decompressor_impl") {
visibility = [ "./*" ]
sources = [
"compression/decompressor_sandbox/decompressor_impl.cc",
"compression/decompressor_sandbox/decompressor_impl.h",
]
deps = [
":blobfs",
":fuchsia.blobfs.internal",
":fuchsia.blobfs.internal_llcpp",
"//sdk/fidl/fuchsia.scheduler",
"//sdk/lib/fidl/cpp:cpp",
"//sdk/lib/sys/cpp:cpp",
"//sdk/lib/syslog/cpp:cpp",
"//src/lib/chunked-compression",
"//src/lib/digest",
"//zircon/public/lib/zxc",
"//zircon/system/ulib/fs/journal",
"//zircon/system/ulib/fzl",
"//zircon/system/ulib/trace",
]
}
executable("decompressor") {
sources = [ "compression/decompressor_sandbox/main.cc" ]
deps = [
":decompressor_impl",
":fuchsia.blobfs.internal",
"//sdk/lib/fidl/cpp:cpp",
"//sdk/lib/sys/cpp:cpp",
"//sdk/lib/syslog/cpp:cpp",
"//src/lib/digest",
"//zircon/public/lib/zxc",
"//zircon/system/ulib/async-loop:async-loop-cpp",
"//zircon/system/ulib/async-loop:async-loop-default",
"//zircon/system/ulib/fs/journal",
"//zircon/system/ulib/fzl",
"//zircon/system/ulib/trace",
"//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
]
}
fuchsia_component("decompressor-sandbox") {
manifest = "meta/decompressor_sandbox.cml"
deps = [ ":decompressor" ]
}
group("tests") {
testonly = true
deps = [ "test" ]
}