# Copyright 2021 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/x64/BUILD.gn

# This file defines base configs used on multiple x64-based targets.

import("//build/board.gni")
import("//build/suspend/config.gni")

has_board = true

# We also use this board for virtualization
add_qemu_to_build_archives = true

target_cpu = "x64"

# Drivers and tools to include on bootfs.
_bootfs_deps = [
  # Tools
  "//src/devices/pci/bin:bootfs",
  "//src/media/audio/bin/ihda",

  # Configs
  "//src/power/power-manager:base_config",
]

board_bootfs_labels += _bootfs_deps
board_recovery_bootfs_labels += _bootfs_deps
board_zedboot_bootfs_labels += _bootfs_deps

board_driver_package_labels += [
  "//src/devices/acpi:drivers",
  "//src/graphics/drivers/msd-intel-gen",
]

board_package_labels += [
  # The following are all config_data entries, only.
  "//src/factory/factory_store_providers/config/qemu",
]

# userspace PCI migration flags
# https://fxbug.dev/42108122
platform_enable_user_pci = true

# This will enable suspend only if the enable_suspend flag is set to true
board_bootfs_labels += [ "//boards/kernel_cmdline:enable-suspend-from-board" ]
partitions_config_label = "//boards/partitions:x64"
partitions_config_contents += [ "$root_build_dir/fuchsia.esp.blk" ]

use_vbmeta = true
avb_key =
    "//third_party/android/platform/external/avb/test/data/testkey_atx_psk.pem"
avb_atx_metadata =
    "//third_party/android/platform/external/avb/test/data/atx_metadata.bin"

blobfs_capacity = 10485760000  # 10000 MiB
max_blob_contents_size =
    5216665600  # 4975 MiB. Leaves 50 MiB for the update package.

build_uefi_disk = true
use_gigaboot = true
assembly_generate_fvm_fastboot = true

# Some users leave a USB key (containing zedboot) plugged into their
# device at all times. To avoid unintentionally breaking remote workflows,
# we permit multiple GPT devices.
board_fshost_config.gpt_all = true
board_zedboot_fshost_config.gpt_all = true

zircon_a_partition = "zircon-a"
zircon_b_partition = "zircon-b"
zircon_r_partition = "zircon-r"
vbmeta_a_partition = "vbmeta_a"
vbmeta_b_partition = "vbmeta_b"
vbmeta_r_partition = "vbmeta_r"
fvm_partition = "fvm"
fxfs_partition = "fvm"
active_partition = "a"
fastboot_product = "gigaboot"
