# 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/sdk/sdk_host_tool.gni")
import("//build/testing/host_test.gni")

source_set("blobfs_creator") {
  visibility = [ "./*" ]
  sources = [
    "blobfs_creator.cc",
    "blobfs_creator.h",
  ]
  public_deps = [
    "//src/lib/chunked-compression:chunked-compression",
    "//src/lib/digest",
    "//src/storage/blobfs",
    "//src/storage/lib/host",
    "//zircon/system/ulib/fbl",
  ]
  deps = [
    "//sdk/lib/fit",
    "//zircon/system/ulib/bitmap",
  ]
}

executable("blobfs") {
  sources = [ "main.cc" ]
  deps = [
    ":blobfs_creator",
    "//src/storage/blobfs",
    "//zircon/system/ulib/fbl",
  ]

  if (!is_fuchsia) {
    deps += [ "//zircon/system/ulib/zx-panic-libc" ]

    # https://fxbug.dev/42056285: Optimizing for speed saves a considerable amount of
    # time when constructing blobfs images with a large number of blobs.
    configs -= [ "//build/config:default_optimize" ]
    configs += [ "//build/config:optimize_speed" ]

    exclude_toolchain_tags = [
      # TODO(https://fxbug.dev/42130760): blobfs performs poorly when built with asan
      "asan",

      # TODO(https://fxbug.dev/42137263): blobfs performs poorly when built with profile
      "profile",

      # TODO(https://fxbug.dev/42137263): blobfs performs poorly when built with coverage
      "coverage",
    ]
  }
}

sdk_host_tool("blobfs_sdk") {
  category = "partner"
  output_name = "blobfs"
  sdk_name = "blobfs_do_not_depend"
  deps = [ ":blobfs" ]
}
