# Copyright 2021 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/assembly/bootfs_files_for_assembly.gni")
import("//build/components.gni")

group("common") {
  public_deps = [
    "//sdk/fidl/fuchsia.hardware.pwm:fuchsia.hardware.pwm_cpp",
    "//sdk/lib/component/incoming/cpp",
    "//src/devices/lib/amlogic",
  ]
}

executable("pwmctl") {
  output_name = "pwmctl"
  visibility = [ ":*" ]

  # configs += [ "//build/config:all_source" ]
  sources = [
    "main.cc",
    "pwmctl.cc",
  ]
  deps = [ ":common" ]
}

bootfs_files_for_assembly("bootfs") {
  deps = [ ":pwmctl" ]
}

executable("pwmctl-test-bin") {
  testonly = true

  # configs += [ "//build/config:all_source" ]
  sources = [
    "pwmctl-test.cc",
    "pwmctl.cc",
  ]
  deps = [
    ":common",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/zxtest",
  ]
}

fuchsia_unittest_package("pwmctl-test") {
  deps = [ ":pwmctl-test-bin" ]
}

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