# Copyright 2020 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/package.gni")
import("//build/rust/rustc_binary.gni")
import("//build/rust/rustc_library.gni")
import("//build/test/test_package.gni")

rustc_library("disk_extractor_lib") {
  name = "disk_extractor_lib"
  version = "0.1.0"
  with_unit_tests = true
  edition = "2018"

  deps = [
    "//src/lib/zerocopy",
    "//third_party/rust_crates:bincode",
    "//third_party/rust_crates:bitfield",
    "//third_party/rust_crates:crc",
    "//third_party/rust_crates:flate2",
    "//third_party/rust_crates:thiserror",
  ]

  test_deps = [ "//third_party/rust_crates:tempfile" ]

  sources = [
    "src/error.rs",
    "src/extent.rs",
    "src/extent_cluster.rs",
    "src/extractor.rs",
    "src/format.rs",
    "src/lib.rs",
    "src/options.rs",
    "src/properties.rs",
    "src/utils.rs",
  ]
}

test_package("disk-extractor-lib-tests") {
  deps = [ ":disk_extractor_lib_test" ]
  tests = [
    {
      name = "disk_extractor_lib_lib_test"
      dest = "disk-extractor-lib-unit-tests"
    },
  ]
}

group("tests") {
  testonly = true
  deps = [
    ":disk-extractor-lib-tests",
    ":disk_extractor_lib_test($host_toolchain)",
    "bin:disk-extract-unit-test",
    "c:disk-extractor-c-lib-unit-test",
    "cpp:disk-extractor-unit-test",
  ]
}
