# 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("ramdisk_bind") {
  rules = "ramdisk.bind"
  header_output = "ramdisk_bind.h"
  bind_output = "ramdisk.bindbc"
  tests = "bind_tests.json"
  deps = [ "//src/devices/bind/fuchsia.platform" ]
}

fuchsia_driver("ramdisk-driver") {
  output_name = "ramdisk"
  configs += [
    "//build/config:all_source",
    "//build/config/fuchsia:enable_zircon_asserts",
  ]
  sources = [
    "ramdisk-controller.cc",
    "ramdisk.cc",
  ]
  deps = [
    ":ramdisk_bind",
    "//sdk/banjo/fuchsia.hardware.block:fuchsia.hardware.block_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.block.partition:fuchsia.hardware.block.partition_banjo_cpp",
    "//sdk/fidl/fuchsia.hardware.ramdisk:fuchsia.hardware.ramdisk_llcpp",
    "//src/devices/lib/dev-operation",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/system/ulib/fbl",
    "//zircon/system/ulib/fidl-utils",
    "//zircon/system/ulib/fzl",
    "//zircon/system/ulib/sync",
    "//zircon/system/ulib/zircon-internal",
    "//zircon/system/ulib/zxc",
  ]
}

fuchsia_driver_component("ramdisk") {
  component_name = "ramdisk"
  deps = [ ":ramdisk-driver" ]
  info = "ramdisk-info.json"
  colocate = true
}

group("tests") {
  testonly = true
  deps = [
    ":ramdisk_bind_test",
    "test:tests",
  ]
}
