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

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

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

board_name = "x64"
board_description = "A generic x64 device"

_bootfs_deps = [
  # Use legacy serial for bootfs.
  "//boards/kernel_cmdline:serial-legacy",
]

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

# Supports both physical and virtual devices.
board_is_emu = true

bazel_product_bundle_board = "x64"
