# 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")
import("//build/test.gni")
import("//src/sys/build/components.gni")

group("tests") {
  testonly = true
  deps = [
    ":mt8167_bind_test",
    ":mt8167s-ref-test",
  ]
}

bind_rules("mt8167_bind") {
  rules = "mt8167.bind"
  output = "mt8167_bind.h"
  tests = "bind_tests.json"
  deps = [
    "//src/devices/bind/fuchsia.google.platform",
    "//src/devices/bind/fuchsia.mediatek.platform",
    "//src/devices/bind/fuchsia.platform",
  ]
}

driver_module("mt8167s_ref") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  if (is_fuchsia) {
    configs += [ "//build/unification/config:zircon-migrated" ]
  }
  sources = [
    "mt8167-audio.cc",
    "mt8167-backlight.cc",
    "mt8167-buttons.cc",
    "mt8167-clk.cc",
    "mt8167-display.cc",
    "mt8167-gpio.cc",
    "mt8167-gpu.cc",
    "mt8167-i2c.cc",
    "mt8167-msdc0.cc",
    "mt8167-msdc2.cc",
    "mt8167-power.cc",
    "mt8167-soc.cc",
    "mt8167-sysmem.cc",
    "mt8167-thermal.cc",
    "mt8167-touch.cc",
    "mt8167-usb.cc",
    "mt8167.cc",
  ]
  deps = [
    ":mt8167_bind",
    "//sdk/banjo/fuchsia.hardware.clockimpl",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//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.power",
    "//sdk/banjo/fuchsia.hardware.powerimpl",
    "//sdk/banjo/fuchsia.sysmem",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//src/devices/lib/driver",
    "//src/devices/lib/focaltech",
    "//src/devices/lib/mmio",
    "//src/devices/lib/mt8167",
    "//src/graphics/display/lib/device-protocol-display",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
  ]

  # TODO(fxbug.dev/47406): restore some form of data dependency on cleo and mt8167s_ref
  # boot shims.
}

test("mt8167s-ref-test-bin") {
  if (is_fuchsia) {
    configs += [
      "//build/unification/config:zircon-migrated",
      "//build/config:all_source",
    ]
  }
  if (is_fuchsia) {
    fdio_config = [ "//build/config/fuchsia:fdio_config" ]
    if (configs + fdio_config - fdio_config != configs) {
      configs -= fdio_config
    }
  }
  output_name = "mt8167s-ref-test"
  sources = [
    "mt8167-audio.cc",
    "mt8167-backlight.cc",
    "mt8167-buttons.cc",
    "mt8167-clk.cc",
    "mt8167-display.cc",
    "mt8167-gpio.cc",
    "mt8167-gpu.cc",
    "mt8167-i2c.cc",
    "mt8167-msdc0.cc",
    "mt8167-msdc2.cc",
    "mt8167-power.cc",
    "mt8167-soc.cc",
    "mt8167-sysmem.cc",
    "mt8167-test.cc",
    "mt8167-thermal.cc",
    "mt8167-touch.cc",
    "mt8167-usb.cc",
    "mt8167.cc",
  ]
  deps = [
    ":mt8167_bind",
    "//sdk/banjo/fuchsia.hardware.clockimpl",
    "//sdk/banjo/fuchsia.hardware.gpio:fuchsia.hardware.gpio_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//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.power",
    "//sdk/banjo/fuchsia.hardware.powerimpl",
    "//sdk/banjo/fuchsia.sysmem",
    "//sdk/fidl/fuchsia.hardware.thermal:fuchsia.hardware.thermal_c",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/devices/lib/focaltech",
    "//src/devices/lib/mmio",
    "//src/devices/lib/mt8167",
    "//src/graphics/display/lib/device-protocol-display",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/mmio-ptr:mmio-ptr-fake",
  ]
}

fuchsia_unittest_package("mt8167s-ref-test") {
  deps = [ ":mt8167s-ref-test-bin" ]
}
