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