blob: 1f1b3b3d11429865b1f33cce3387e84657504f1c [file] [log] [blame]
# Copyright 2021 The Fuchsia Authors
#
# Use of this source code is governed by a MIT-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/MIT
import("//build/zbi/zbi_input.gni")
# Defines a kernel package, a directory namespace within a STORAGE_KERNEL ZBI
# item in the BOOTFS format, for a dependent zbi() target. This namespace -
# given by $target_name - is comprised of the resource() targets - or those
# that contribute resource()-like metadata - within the dependency graph.
#
# Parameters
#
# * deps
# - Required: Dependencies to reach all `resource()` targets and the like.
# Note that this should *not* reach another kernel_package() target (or,
# equivalently, a zbi_input() with $prefix set) as the $target_name
# prefix would *not* compound the prefix on a target in this $deps list.
# Instead, distribution_manifest() targets with $prefix set can be used
# to "layer" the kernel-package prefix on a prefixed collection inside.
# - Type: list(label)
#
# * data_deps
# - Optional: The usual GN meaning, though in this case no resource()
# targets in its graph will contribute to the dependent ZBI.
# - Type: list(label)
#
# * prefix
# - Optional: The directory prefix for files reached by `deps`.
# This should be left to the default for actual kernel packages,
# and used only for special cases that go outside package selection.
# - Type: string
# - Default: "$target_name"
#
# * metadata, testonly, visibility
# - Optional: The usual GN meanings.
#
template("kernel_package") {
zbi_input(target_name) {
forward_variables_from(invoker,
[
"data_deps",
"deps",
"prefix",
"testonly",
"visibility",
])
args = [
# Package entries are relatively small and should compress quickly
# enough.
"--compressed=max",
"--files-type=kernel",
]
# This prefix will apply in the zbi command line to the zbi_input_args
# elements that come directly from this zbi_input() target, i.e. via the
# implicit distribution_manifest() collection done here. But it won't
# apply to the zbi_input_args metadata found in deps/data_deps, which
# appear *before* this target's zbi_input_args in the zbi() collection.
if (!defined(prefix)) {
prefix = target_name
}
}
}