# 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/unification/zx_library.gni")

if (is_fuchsia) {
  zx_library("disk_inspector") {
    sdk = "source"
    sdk_headers = [
      "disk_inspector/inspector_transaction_handler.h",
      "disk_inspector/command_handler.h",
      "disk_inspector/command.h",
      "disk_inspector/common_types.h",
      "disk_inspector/disk_inspector.h",
      "disk_inspector/disk_obj.h",
      "disk_inspector/disk_struct.h",
      "disk_inspector/supported_types.h",
      "disk_inspector/type_utils.h",
      "disk_inspector/buffer_factory.h",
      "disk_inspector/vmo_buffer_factory.h",
      "disk_inspector/loader.h",
    ]
    static = true
    sources = [
      "command.cc",
      "disk_inspector.cc",
      "disk_struct.cc",
      "loader.cc",
      "vmo_buffer_factory.cc",
    ]

    public_deps = [ "//zircon/public/lib/fbl" ]
    deps = [
      "//sdk/lib/syslog/cpp",
      "//zircon/public/lib/fbl",
    ]

    if (is_fuchsia) {
      sources += [ "inspector_transaction_handler.cc" ]

      public_deps += [
        "//sdk/lib/fit-promise",
        "//src/lib/storage/vfs/cpp",
        "//src/lib/storage/vfs/cpp/transaction",
        "//zircon/system/ulib/block-client",
        "//zircon/system/ulib/storage/buffer",
      ]

      deps += [
        "//sdk/lib/fdio",
        "//zircon/public/lib/safemath",
        "//zircon/system/ulib/storage/operation",
      ]
    }
  }
} else {
  config("headers_config") {
    include_dirs = [ "include" ]
  }

  source_set("disk_inspector") {
    public = [
      "include/disk_inspector/buffer_factory.h",
      "include/disk_inspector/command.h",
      "include/disk_inspector/command_handler.h",
      "include/disk_inspector/common_types.h",
      "include/disk_inspector/disk_inspector.h",
      "include/disk_inspector/disk_obj.h",
      "include/disk_inspector/disk_struct.h",
      "include/disk_inspector/inspector_transaction_handler.h",
      "include/disk_inspector/loader.h",
      "include/disk_inspector/supported_types.h",
      "include/disk_inspector/type_utils.h",
      "include/disk_inspector/vmo_buffer_factory.h",
    ]

    public_configs = [ ":headers_config" ]

    public_deps = [
      "//sdk/lib/fit-promise",
      "//src/lib/storage/vfs/cpp/transaction",
    ]
  }
}
