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

#  ________  _________  ________  ________
# |\   ____\|\___   ___\\   __  \|\   __  \
# \ \  \___|\|___ \  \_\ \  \|\  \ \  \|\  \
#  \ \_____  \   \ \  \ \ \  \\\  \ \   ____\
#   \|____|\  \   \ \  \ \ \  \\\  \ \  \___|
#     ____\_\  \   \ \__\ \ \_______\ \__\
#    |\_________\   \|__|  \|_______|\|__|
#    \|_________|
#
# Every new addition to this gni file is an instance of tech-debt that must be
# cleaned up to have a proper platform+product interface. Instead add new items
# to the the board definition in:
#
#   //boards/arm64/BUILD.gn

import("common/arm64-common.gni")

# Board configuration for Product Assembly
board_configuration_label = "//boards/arm64"

board_name = "arm64"
board_description = "A generic emulated arm64 device."

# Supports only virtual devices.
board_is_emu = true
board_is_phys = false

# Build a UEFI image for virtualized platforms.
build_uefi_disk = true
use_gigaboot = true
use_vbmeta = true
avb_atx_metadata =
    "//third_party/android/platform/external/avb/test/data/atx_metadata.bin"
avb_key =
    "//third_party/android/platform/external/avb/test/data/testkey_atx_psk.pem"

partitions_config_label = "//boards/partitions:arm64"
partitions_config_contents += [ "$root_build_dir/fuchsia.esp.blk" ]

bazel_product_bundle_board = "arm64"
