# 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/components.gni")
import("//build/components/fuchsia_shell_package.gni")
import("//build/host.gni")
import("//build/test.gni")

executable("bin") {
  output_name = "disk-extract"
  sources = [
    "main.cc",
    "parse.cc",
  ]
  deps = [
    "//sdk/lib/fdio",
    "//src/storage/extractor/cpp:disk_extractor",
  ]
}

fuchsia_shell_package("disk-extract") {
  deps = [ ":bin" ]
  manifest = "meta/disk_extract.cml"
}

install_host_tools("disk_extract_host") {
  deps = [ ":bin($host_toolchain)" ]
  outputs = [ "disk-extract" ]
}

test("disk_extract_unit_test") {
  testonly = true
  sources = [
    "parse.cc",
    "parse_test.cc",
  ]
  deps = [
    "//sdk/fidl/fuchsia.fs",
    "//sdk/lib/fdio",
    "//src/lib/fxl/test:gtest_main",
    "//src/storage/extractor/cpp:disk_extractor",
    "//third_party/googletest:gtest",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/zxc",
  ]
}

fuchsia_component("disk_extract_unit_test_component") {
  testonly = true
  manifest = "meta/bin_tests.cml"
  deps = [ ":disk_extract_unit_test" ]
}

fuchsia_test_package("disk-extract-unit-test") {
  test_components = [ ":disk_extract_unit_test_component" ]
}
