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

driver_bind_rules("aml_light_bind") {
  rules = "aml_light.bind"
  bind_output = "aml-light.bindbc"
  tests = "bind_tests.json"
  deps = [
    "//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_bindlib",
    "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_bindlib",
    "//src/devices/bind/fuchsia.amlogic.platform",
    "//src/devices/bind/fuchsia.gpio",
    "//src/devices/bind/fuchsia.platform",
    "//src/devices/bind/fuchsia.pwm",
  ]
}

fuchsia_driver("aml-light-driver") {
  output_name = "aml-light"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [ "aml-light.cc" ]
  public_deps = [ "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_cpp" ]
  deps = [
    ":aml_light_bind",
    "//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_cpp",
    "//sdk/fidl/fuchsia.hardware.light:fuchsia.hardware.light_cpp",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zx",
  ]
}

fuchsia_driver_component("aml-light") {
  component_name = "aml-light"
  deps = [ ":aml-light-driver" ]
  info = "aml-light-info.json"
  manifest = "meta/aml-light.cml"
}

fuchsia_driver_package("package") {
  package_name = "aml-light"
  driver_components = [ ":aml-light" ]
}

test("aml-light-test") {
  output_name = "aml-light-test"
  sources = [
    "aml-light-test.cc",
    "aml-light.cc",
  ]
  deps = [
    ":aml_light_bind",
    "//sdk/fidl/fuchsia.hardware.gpio:fuchsia.hardware.gpio_cpp",
    "//sdk/fidl/fuchsia.hardware.light:fuchsia.hardware.light_cpp",
    "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_cpp_testing",
    "//sdk/lib/async_patterns/testing/cpp",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/gpio/testing/fake-gpio",
    "//src/devices/lib/amlogic",
    "//src/devices/testing/no_ddk",
    "//src/lib/ddk",
    "//src/lib/ddk:ddk-metadata-headers",
    "//src/lib/ddktl",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/mock-function",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zx",
    "//zircon/system/ulib/zxtest",
  ]
}

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

group("tests") {
  testonly = true
  deps = [
    ":aml-light-test-package",
    ":aml_light_bind_test",
  ]
}
