# 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/components.gni")
import("//build/config/fuchsia/rules.gni")
import("//build/drivers/fuchsia_driver_component.gni")
import("//build/test.gni")

driver_bind_rules("dw_i2c-bind") {
  rules = "dw_i2c.bind"
  header_output = "dw_i2c-bind.h"
  tests = "tests.json"
  deps = [ "//src/devices/bind/fuchsia.platform" ]
}

driver_module("dw-i2c-driver") {
  output_name = "dw-i2c"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "dw-i2c.cc" ]
  deps = [
    ":dw_i2c-bind",
    "//sdk/banjo/fuchsia.hardware.i2c:fuchsia.hardware.i2c_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.i2cimpl:fuchsia.hardware.i2cimpl_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",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/driver",
    "//src/devices/lib/mmio",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/sync",
  ]
}

fuchsia_driver_component("dw-i2c") {
  component_name = "dw-i2c"
  deps = [ ":dw-i2c-driver" ]
}

test("dw-i2c-test-bin") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "dw-i2c-test"
  sources = [
    "dw-i2c-test.cc",
    "dw-i2c.cc",
  ]
  deps = [
    ":dw_i2c-bind",
    "//sdk/banjo/fuchsia.hardware.i2c:fuchsia.hardware.i2c_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.i2cimpl:fuchsia.hardware.i2cimpl_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",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/mmio",
    "//src/devices/testing/fake_ddk",
    "//src/devices/testing/mock-mmio-reg",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/mock-function",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

fuchsia_unittest_package("dw-i2c-test") {
  deps = [ ":dw-i2c-test-bin" ]
  test_specs = {
    environments = basic_envs
  }
}

group("tests") {
  testonly = true
  deps = [ ":dw-i2c-test" ]
}
