# 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")

bind_rules("ramdisk_bind") {
  rules = "ramdisk.bind"
  output = "ramdisk_bind.h"
  tests = "bind_tests.json"
  deps = [ "//src/devices/bind/fuchsia.misc" ]
}

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

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