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

library("paver") {
  sources = [
    "device-partitioner.cpp",
    "pave-utils.cpp",
    "paver.cpp",
    "provider.cpp",
    "stream-reader.cpp",
  ]
  deps = [
    "$zx/system/fidl/fuchsia-device:c",
    "$zx/system/fidl/fuchsia-hardware-block:c",
    "$zx/system/fidl/fuchsia-hardware-block-partition:c",
    "$zx/system/fidl/fuchsia-hardware-block-volume:c",
    "$zx/system/fidl/fuchsia-hardware-nand:c",
    "$zx/system/fidl/fuchsia-hardware-skipblock:c",
    "$zx/system/fidl/fuchsia-hardware-zxcrypt:c",
    "$zx/system/fidl/fuchsia-paver:c",
    "$zx/system/fidl/fuchsia-sysinfo:c",
    "$zx/system/ulib/fidl-async",
    "$zx/system/ulib/block-client",
    "$zx/system/ulib/chromeos-disk-setup",
    "$zx/system/ulib/crypto",
    "$zx/system/ulib/ddk",
    "$zx/system/ulib/digest",
    "$zx/system/ulib/fdio",
    "$zx/system/ulib/fidl",
    "$zx/system/ulib/fidl-async",
    "$zx/system/ulib/fs",
    "$zx/system/ulib/fs-management",
    "$zx/system/ulib/fvm",
    "$zx/system/ulib/fzl",
    "$zx/system/ulib/gpt",
    "$zx/system/ulib/ramdevice-client:static",
    "$zx/system/ulib/svc",
    "$zx/system/ulib/sync",
    "$zx/system/ulib/zircon",
    "$zx/system/ulib/zx",
    "$zx/system/ulib/zxcrypt:zxcrypt-fdio",
    "$zx/third_party/ulib/cksum",
    "$zx/third_party/ulib/lz4",
    "$zx/third_party/ulib/uboringssl",
  ]
  public_deps = [
    "$zx/system/fidl/fuchsia-hardware-block:c",
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/gpt",
  ]
}

test("paver-test") {
  output_name = "paver-test"
  sources = [
    "test/device-partitioner-test.cpp",
    "test/fvm-test.cpp",
    "test/paversvc-test.cpp",
    "test/stream-reader-test.cpp",
    "test/test-utils.cpp",
  ]
  include_dirs = [ "." ]
  deps = [
    ":paver",
    "$zx/system/fidl/fuchsia-device:c",
    "$zx/system/fidl/fuchsia-hardware-nand:c",
    "$zx/system/fidl/fuchsia-paver:c",
    "$zx/system/fidl/fuchsia-sysinfo:c",
    "$zx/system/ulib/async",
    "$zx/system/ulib/async-loop",
    "$zx/system/ulib/async-loop:async-loop-cpp",
    "$zx/system/ulib/fbl",
    "$zx/system/ulib/fidl-utils",
    "$zx/system/ulib/fs-management",
    "$zx/system/ulib/fvm",
    "$zx/system/ulib/fzl",
    "$zx/system/ulib/gpt",
    "$zx/system/ulib/ramdevice-client:static",
    "$zx/system/ulib/svc",
    "$zx/system/ulib/zxtest",
  ]
}
