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

# Please do not add more entries to this list. We plan to remove
# abseil-cpp from the Fuchsia platform source tree once cobalt
# moves out-of-tree.

declare_args() {
  # F2FS debug message for bringup product
  f2fs_bu_debug = false
}

static_library("f2fs") {

  sources = [
    "f2fs.cc",
    "vnode.cc",
    "mkfs.cc",
    "bcache.cc",
    "super.cc",
    "dir.cc",
    "file.cc",
    "dir_hash.cc",
    "data.cc",
    "segment.cc",
    "node.cc",
    "namei.cc",
    "checkpoint.cc",
    "recovery.cc",
    "third_party/ext2_hash/hash.h",
    "third_party/ext2_hash/hash.cc",
  ]

  public = [
    "f2fs_types.h",
    "f2fs_lib.h",
    "f2fs_layout.h",
    "f2fs_internal.h",
    "vnode.h",
    "mkfs.h",
    "bcache.h",
    "node.h",
    "dir.h",
    "file.h",
    "segment.h",
    "node.h",
    "f2fs.h",
  ]

  public_deps = [
    "//zircon/public/lib/fbl",

    # bcache.h includes fs/transaction/device_transaction_handler.h & storage/buffer/...
    "//src/lib/storage/vfs/cpp/transaction",
    "//zircon/system/ulib/storage/buffer",

    # bcache.h includes fuchsia/hardware/block/c/fidl.h.
    "//sdk/fidl/fuchsia.hardware.block:fuchsia.hardware.block_c",

    # fsck.h includes block-client/cpp/block-device.h
    "//zircon/system/ulib/block-client",

    "//zircon/public/lib/zircon-internal",
    "//src/lib/storage/vfs/cpp",
  ]

  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
    "//sdk/fidl/fuchsia.io",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fidl",
    "//zircon/public/lib/zx",
    "//sdk/lib/fdio",
    "//zircon/system/ulib/async-default",
    "//zircon/system/ulib/async-loop",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fdio-caller",
    "//zircon/system/ulib/fidl-utils",
    "//zircon/system/ulib/storage-metrics",
    "//zircon/system/ulib/trace",
    "//zircon/system/ulib/trace-engine",
    "//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
    "//sdk/lib/syslog/cpp",
    "//src/lib/storage/vfs/cpp/metrics:metrics-cobalt",
  ]

  if (f2fs_bu_debug) {
    defines = [
      "F2FS_BU_DEBUG",
    ]
  }

  # TODO(fxbug.dev/69585): This target uses raw zx::channel with LLCPP which is deprecated.
  # Please migrate to typed channel APIs (fidl::ClientEnd<T>, fidl::ServerEnd<T>).
  # See linked bug for details.
  configs += [ "//build/cpp:fidl-llcpp-deprecated-raw-channels" ]
}
