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

declare_args() {
  # Board name used for paving and amber updates.
  board_name = ""

  # Human readable board description corresponding to the board name.
  board_description = ""

  # Amount of rotation in degrees to apply to a board. Expected values are 0,
  # 90, 180, or 270.
  board_display_rotation = 0

  # Configs that are added when targeting this board.
  board_configs = []

  # A list of driver package labels to include in the 'base' package set. Used
  # by the board definition rather than the product definition.
  board_driver_package_labels = []

  # A list of scopes that describe drivers provided by the board, which are
  # added to the product assembly configuration as "product-provided" drivers.
  # These will later be migrated to a "board-provided" driver input to assembly,
  # but that mechanism is still under development.
  #
  # Each scope added to this list needs to be in the following form:
  #   {
  #     # This is the label that creates the package, this can not be a group
  #     package_target = "//gn/label/that/to/the/driver:package"
  #
  #     # These are paths to the driver components within the above package.
  #     driver_components = [
  #       "meta/driver_1.cm",
  #       "meta/driver_2.cm",
  #     ]
  #   }
  board_provided_drivers = []

  # A list of package labels to include in the 'base' package set. Used by the
  # board definition rather than the product definition.
  board_package_labels = []

  # A list of package labels to include in the recovery package set. Used by the
  # board definition rather than the product definition.
  board_recovery_package_labels = []

  # A list of binary labels to include in the ZBI.
  board_bootfs_labels = []

  # A list of binary host tool labels to also build.
  board_host_labels = []

  # List of kernel command line arguments to bake into the zedboot image that are
  # required by this board. See also zedboot_cmdline_args in
  # //build/images/zedboot/BUILD.gn
  board_zedboot_cmdline_args = []

  # A list of binary labels to include in the zedboot ZBI.
  board_zedboot_bootfs_labels = []

  # A list of binary labels to include in the recovery ZBI.
  board_recovery_bootfs_labels = []

  # A list of fshost options to add to the fshost config.
  board_fshost_config = {
  }

  # A list of fshost options to add to the fshost config in the zedboot image.
  board_zedboot_fshost_config = {
  }

  # A list of binary labels to include in the system_image package.
  board_system_image_deps = []

  # Core realm shards specific to this board. See //src/sys/core for more
  # context.
  board_core_realm_shards = []

  # A list of paths to the unlock credentials file necessary to unlock this
  # board's fastboot protocol.
  board_fastboot_unlock_credentials = []

  # List of paths to board-specific tools to include in the build output.
  #
  # Most development tools can just be used in-tree and do not need to be
  # included here. This arg is only meant for tools which may need to be
  # distributed along with the build files, for example tools for flashing
  # from SoC recovery mode.
  #
  # Assets included in this way are included best-effort only and do not form
  # any kind of stable contract for users of the archive.
  board_tools = []

  # Whether or not the board pulls in the system-update-configurator component.
  board_supports_update_configurator = false

  # BoardInformation file for use with Product Assembly
  board_information_for_assembly = false

  # Whether or not the board supports emulator/physical devices.
  # This is used to determine if product bundle metadata should generate a
  # physical/virtual device spec or both.
  board_is_emu = false
  board_is_phys = true

  # The images config information used during assembly.
  images_config_label = false

  # The partitions config information used to create an update package and
  # product bundle.
  partitions_config_label = "//boards/partitions:default"
  partitions_config_contents = []
}
