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

import("//build/assembly/board_configuration.gni")
import("//build/assembly/board_input_bundle.gni")

assert(current_toolchain == default_toolchain,
       "The riscv64 board can only be defined in the default toolchain.")
assert(current_cpu == "riscv64",
       "The riscv64 board can only be defined in an riscv64 toolchain.")

board_configuration("riscv64") {
  provided_features = [
    "fuchsia::driver_framework_v2_support",
    "fuchsia::network_require_netstack3",

    # TODO: b/299320231 - Remove when ring is supported on riscv64.
    "fuchsia::soft_crypto",

    # See: b/308199171
    "fuchsia::utc_start_at_startup",
  ]

  input_bundles = [
    ":main_bundle",
    "//boards/emulation/virtio",
  ]

  filesystems = {
    fvm = {
      sparse_output = {
      }
    }
    fxfs = {
    }
  }
}

board_input_bundle("main_bundle") {
  configuration = {
    power_manager =
        "//src/power/power-manager/node_config/base_node_config.json5"
  }
  drivers = [
    {
      package_target = "//src/devices/bus/drivers/pci:package"
      package_set = "bootfs"
      driver_components = [ "meta/bus-pci.cm" ]
    },
    {
      package_target = "//src/devices/board/drivers/qemu-riscv64:package"
      package_set = "bootfs"
      driver_components = [ "meta/qemu-riscv64.cm" ]
    },
  ]
}
