| # Copyright 2026 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.gni") |
| |
| # Defines a kernel image, i.e., a (bootable) ZBI containing a KERNEL item. |
| # |
| # Parameters |
| # |
| # * deps |
| # - Required: Dependencies reaching `zbi_input()` targets, comprising the |
| # image contents. |
| # - Type: list(label) |
| # |
| # * output_name, testonly, visibility |
| # - Optional: The usual GN meanings. |
| # |
| template("kernel_image") { |
| assert( |
| current_toolchain == default_toolchain, |
| "kernel_image($target_name) should only be evaluated in the default toolchain, not $current_toolchain") |
| |
| zbi(target_name) { |
| forward_variables_from(invoker, |
| [ |
| "testonly", |
| "visibility", |
| "output_name", |
| "deps", |
| ]) |
| if (!defined(output_name)) { |
| output_name = target_name |
| } |
| |
| compress = "zstd.max" |
| |
| output_dir = root_out_dir |
| output_extension = "zbi" |
| output_path = rebase_path("$output_dir/$output_name.$output_extension", |
| root_build_dir) |
| metadata = { |
| # For the //:images build_api_module(). |
| images = [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| name = "kernel" |
| tags = [ "incomplete" ] |
| type = "zbi" |
| path = output_path |
| cpu = current_cpu |
| }, |
| ] |
| } |
| } |
| } |