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

bind_rules("aml-pwm-init-bind") {
  rules = "aml-pwm-init.bind"
  output = "aml-pwm-init-bind.h"
  tests = "bind-tests.json"
  deps = [
    "//src/devices/bind/amlogic.platform",
    "//src/devices/bind/fuchsia.composite",
  ]
}

driver_module("aml-pwm-init") {
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  configs += [ "//build/unification/config:zircon-migrated" ]
  sources = [ "aml-pwm-init.cc" ]
  deps = [
    ":aml-pwm-init-bind",
    "//sdk/banjo/ddk.protocol.composite",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.pwm",
    "//src/devices/lib/amlogic",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zircon-internal",
  ]
}

test("aml-pwm-init-test") {
  configs += [ "//build/unification/config:zircon-migrated" ]
  output_name = "aml-pwm-init-test"
  sources = [
    "aml-pwm-init-test.cc",
    "aml-pwm-init.cc",
  ]
  deps = [
    ":aml-pwm-init-bind",
    "//sdk/banjo/ddk.protocol.composite",
    "//sdk/banjo/ddk.protocol.gpio",
    "//sdk/banjo/ddk.protocol.gpio:ddk.protocol.gpio_mock",
    "//sdk/banjo/ddk.protocol.pwm",
    "//sdk/banjo/ddk.protocol.pwm:ddk.protocol.pwm_mock",
    "//src/devices/lib/amlogic",
    "//src/devices/testing/fake_ddk",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/mock-function",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/public/lib/zxtest",
  ]
}

unittest_package("aml-pwm-init-test-package") {
  package_name = "aml-pwm-init-test"
  deps = [
    ":aml-pwm-init-bind_test",
    ":aml-pwm-init-test",
  ]

  tests = [
    {
      name = "aml-pwm-init-test"
      environments = basic_envs
    },
  ]
}

group("tests") {
  testonly = true
  deps = [ ":aml-pwm-init-test-package" ]
}
