# 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("nand-bind") {
  rules = "nand.bind"
  output = "nand-bind.h"
  tests = "bind-tests.json"
  deps = [ "//src/devices/bind/fuchsia.rawnand" ]
}

source_set("common") {
  configs += [ "//build/config:all_source" ]
  sources = [ "nand.cc" ]
  deps = [
    ":nand-bind",
    "//sdk/banjo/fuchsia.hardware.nand",
    "//sdk/banjo/fuchsia.hardware.platform.device:fuchsia.hardware.platform.device_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.rawnand",
    "//sdk/fidl/fuchsia.hardware.nand:fuchsia.hardware.nand_c",
    "//src/devices/lib/dev-operation",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/sync",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/fzl",
  ]
}

driver_module("nand") {
  deps = [
    ":common",
    "//src/devices/lib/driver",
  ]
}

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