# 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/config/fuchsia/rules.gni")
import("//build/unification/images/migrated_manifest.gni")

driver_module("vim2") {
  defines = [ "_ALL_SOURCE" ]
  configs += [ "//build/config/fuchsia:enable_zircon_asserts" ]
  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  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-sd.cc",
    "vim-sdio.cc",
    "vim-sysmem.cc",
    "vim-thermal.cc",
    "vim-uart.cc",
    "vim-usb.cc",
    "vim-video.cc",
    "vim.cc",
  ]
  deps = [
    "//sdk/banjo/ddk.protocol.ethernet",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.gpioimpl",
    "//sdk/banjo/ddk.protocol.iommu",
    "//sdk/banjo/ddk.protocol.platform.bus",
    "//sdk/banjo/ddk.protocol.platform.device",
    "//sdk/banjo/ddk.protocol.scpi",
    "//sdk/banjo/ddk.protocol.sdmmc",
    "//sdk/banjo/ddk.protocol.serial",
    "//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",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/ddktl",
    "//zircon/public/lib/mmio",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
  ]
}

migrated_manifest("vim2-manifest") {
  deps = [ ":vim2" ]
}
