# 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("machina_board_bind") {
  rules = "machina_board.bind"
  tests = "bind_tests.json"
  deps = [
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_bindlib",
    "//src/devices/bind/fuchsia.google.platform",
  ]
}

group("tests") {
  testonly = true
  deps = [ ":machina_board_bind_test" ]
}

fuchsia_driver("machina-driver") {
  output_name = "machina"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [
    "machina-sysmem.cc",
    "machina.cc",
  ]
  deps = [
    ":machina_board_bind",
    "//sdk/fidl/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_cpp",
    "//sdk/fidl/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_cpp",
    "//src/devices/lib/driver",
    "//src/devices/lib/driver:driver_runtime",
    "//src/lib/ddk",
  ]
}

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

fuchsia_driver_package("package") {
  package_name = "machina"
  driver_components = [ ":machina" ]
}
