# 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/drivers.gni")

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

group("fifo") {
  deps = [ ":demo-fifo" ]
}

fuchsia_driver("demo-fifo-driver") {
  output_name = "demo-fifo"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [ "demo-fifo.c" ]
  deps = [
    ":demo-fifo-bind",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
  ]
}

fuchsia_driver_component("demo-fifo") {
  component_name = "demo-fifo"
  deps = [ ":demo-fifo-driver" ]
  colocate = true
}

group("tests") {
  testonly = true
  deps = [ ":demo-fifo-bind_test" ]
}
