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

import("//build/bind/bind.gni")
import("//build/config/fuchsia/rules.gni")

bind_rules("vim2-bind") {
  rules = "vim2.bind"
  output = "vim2-bind.h"
  tests = "bind-tests.json"
  deps = [
    "//src/devices/bind/fuchsia.khadas.platform",
    "//src/devices/bind/fuchsia.platform",
  ]
}

driver_module("vim2") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [
    "vim-canvas.cc",
    "vim-clk.cc",
    "vim-display.cc",
    "vim-emmc.cc",
    "vim-eth.cc",
    "vim-gpio.cc",
    "vim-i2c.cc",
    "vim-mali.cc",
    "vim-registers.cc",
    "vim-sd.cc",
    "vim-sdio.cc",
    "vim-sysmem.cc",
    "vim-thermal.cc",
    "vim-uart.cc",
    "vim-usb.cc",
    "vim-video.cc",
    "vim.cc",
  ]
  deps = [
    ":vim2-bind",
    "//sdk/banjo/fuchsia.hardware.ethernet",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.iommu",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.scpi",
    "//sdk/banjo/fuchsia.hardware.sdmmc",
    "//sdk/banjo/fuchsia.hardware.serial",
    "//sdk/banjo/fuchsia.sysmem:fuchsia.sysmem_banjo_c",
    "//sdk/fidl/fuchsia.hardware.serial:fuchsia.hardware.serial_c",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/broadcom",
    "//src/devices/lib/driver",
    "//src/devices/lib/metadata:llcpp",
    "//src/devices/lib/mmio",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",

    # TODO(fxb/38132): Migrate to the new bind rules and delete the below
    "//src/lib/ddk:ddk-deprecated-binding-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":vim2-bind_test" ]
}
