# 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")

bind_rules("lp50xx_light-bind") {
  rules = "lp50xx_light.bind"
  output = "lp50xx_light-bind.h"
  tests = "tests.json"
  deps = [ "//src/devices/bind/fuchsia.ti.platform" ]
}

driver_module("lp50xx-light") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "lp50xx-light.cc" ]
  deps = [
    ":lp50xx_light-bind",
    "//sdk/banjo/fuchsia.hardware.gpio",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//sdk/fidl/fuchsia.hardware.light:fuchsia.hardware.light_llcpp",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/i2c/lib/device-protocol-i2c",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/hwreg-i2c",
  ]
}

test("lp50xx-light-test") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "lp50xx-light-test"
  sources = [
    "lp50xx-light-test.cc",
    "lp50xx-light.cc",
  ]
  deps = [
    ":lp50xx_light-bind",
    "//sdk/banjo/fuchsia.hardware.gpio",
    "//sdk/banjo/fuchsia.hardware.gpioimpl:fuchsia.hardware.gpioimpl_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.device",
    "//sdk/fidl/fuchsia.hardware.light:fuchsia.hardware.light_llcpp",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/i2c/lib/device-protocol-i2c",
    "//src/devices/i2c/testing/mock-i2c",
    "//src/devices/testing/fake_ddk",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
    "//zircon/system/ulib/hwreg-i2c",
  ]
}

fuchsia_unittest_package("lp50xx-light-test-package") {
  package_name = "lp50xx-light-test"
  deps = [ ":lp50xx-light-test" ]
}

group("tests") {
  testonly = true
  deps = [
    ":lp50xx-light-test-package",
    ":lp50xx_light-bind_test",
  ]
}
