# 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.

##########################################
# Though under //zircon, this build file #
# is meant to be used in the Fuchsia GN  #
# build.                                 #
# See fxbug.dev/36548.                   #
##########################################

assert(!defined(zx) || zx != "/",
       "This file can only be used in the Fuchsia GN build.")

import("//build/unification/zx_library.gni")

# MTD Redundant Storage (mtd-rs)
#
# This library requires an environment with mtd/mtd-user.h and MTD support.

zx_library("nand-redundant-storage") {
  sdk = "source"
  sdk_headers = [
    "lib/nand-redundant-storage/nand-redundant-storage-interface.h",
    "lib/nand-redundant-storage/nand-redundant-storage.h",
  ]
  host = true

  if (current_os == "linux") {
    sources = [
      "file-nand-rs.cc",
      "nand-rs-header.cc",
      "nand-rs.cc",
    ]
  }

  public_deps = [ "//zircon/system/ulib/mtd" ]

  deps = [
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/mtd",
    "//zircon/third_party/ulib/cksum",
  ]
}

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