# 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/bind/bind.gni")
import("//build/drivers.gni")
import("//src/devices/bus/drivers/pci/pci.gni")

driver_bind_rules("qemu-riscv64_bind") {
  rules = "qemu-riscv64.bind"
  tests = "bind_tests.json"
  deps = [
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_bindlib",
    "//src/devices/bind/fuchsia.platform",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":qemu-riscv64_bind_test" ]
}

fuchsia_driver("qemu-riscv64-driver") {
  output_name = "qemu-riscv64"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [
    "pciroot.cc",
    "qemu-riscv64.cc",
    "rtc.cc",
    "sysmem.cc",
  ]
  deps = [
    ":qemu-riscv64_bind",
    "//sdk/banjo/fuchsia.hardware.iommu:fuchsia.hardware.iommu_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.pci:fuchsia.hardware.pci_cpp",
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_cpp",
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
    "//sdk/lib/driver/component/cpp",
    "//src/devices/bind/fuchsia:fuchsia_cpp",
    "//src/devices/bind/fuchsia.google.platform:fuchsia.google.platform_cpp",
    "//src/devices/bind/fuchsia.platform:fuchsia.platform_cpp",
    "//src/devices/lib/driver",
    "//src/devices/lib/driver:driver_runtime",
    "//src/devices/pci/lib/pci",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/zx",
  ]
}

fuchsia_driver_component("qemu-riscv64") {
  component_name = "qemu-riscv64"
  deps = [ ":qemu-riscv64-driver" ]
  info = "qemu-riscv64-info.json"
  manifest = "meta/qemu-riscv64.cml"
}

fuchsia_driver_package("package") {
  package_name = "qemu-riscv64"
  driver_components = [ ":qemu-riscv64" ]
}
