| # 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 |
| } |
| } |
| } |