# 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",
    "//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" ]
}
