blob: be6a04b96f13cda8dc4112815e25bc350da063a6 [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.
# Build arguments used in the context of verified boot.
# See [this document](https://android.googlesource.com/platform/external/avb/+/HEAD/README.md)
# for more information.
import("//build/testing/verify_files_match.gni")
import("//build/zircon/tools.gni")
import("//src/developer/ffx/build/ffx_action.gni")
declare_args() {
# If true, then a vbmeta image will be generated for provided ZBI
# and the paving script will pave vbmeta images to the target device.
use_vbmeta = false
# a key which will be used to sign VBMETA and images for AVB
avb_key = ""
# AVB metadata which will be used to validate public key
avb_atx_metadata = ""
# Partition name from where image will be verified
zvb_partition_name = "zircon"
# Board level extra vbmeta descriptors to be combined into the top-level
# vbmeta struct (these are in json format)
#
# see //build/images/vbmeta/README.md for more information about these.
board_extra_vbmeta_descriptors = []
# DEPRECATED: Remove when no boards set a value for these.
board_extra_vbmeta_images = []
avb_algorithm = "DEPRECATED"
}
# Template for producing VBMETA image for AVB
#
# Parameters
#
# output_name (optional, default: target_name)
#
# zbi (required)
# [list-of-strings] path to a ZBI image to be included in AVB chain.
# Must only contain a single entry.
#
# deps (usually required)
# testonly, metadata
# Usual GN meaning.
template("vbmeta") {
if (defined(invoker.output_name)) {
output_file = invoker.output_name
} else {
output_file = target_name
}
output_file += ".vbmeta"
salt_file = output_file + ".salt"
zbi = invoker.zbi
assert([ zbi[0] ] == zbi, "zbi parameter must contain a single entry")
assert(avb_key != "", "avb_key must be specified")
assert(avb_atx_metadata != "", "avb metadata must be specified")
output_file = "$root_out_dir/$output_file"
salt_file = "$root_out_dir/$salt_file"
ffx_action(target_name) {
forward_variables_from(invoker,
[
"testonly",
"visibility",
"deps",
"metadata",
])
args = [
"--config",
"assembly_enabled=true",
"assembly",
"vbmeta",
"sign",
"--key",
rebase_path(avb_key, root_build_dir),
"--key-metadata",
rebase_path(avb_atx_metadata, root_build_dir),
"--name",
zvb_partition_name,
"--image-path",
rebase_path(zbi[0], root_build_dir),
"--output",
rebase_path(output_file, root_build_dir),
"--salt-outfile",
rebase_path(salt_file, root_build_dir),
]
inputs = [
avb_key,
avb_atx_metadata,
zbi[0],
]
# Add any json-format descriptors to the arguments list directly.
foreach(descriptor_file, board_extra_vbmeta_descriptors) {
args += [
"--additional-descriptor",
rebase_path(descriptor_file, root_build_dir),
]
inputs += [ descriptor_file ]
}
outputs = [
output_file,
salt_file,
]
}
}
# DEPRECATED: Remove when no boards set a value for this.
not_needed([
"board_extra_vbmeta_images",
"avb_algorithm",
])