# 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")

# libmemfs-cpp.a: The C++ client library.
#
# Used to implement the C++ components of Memfs, which
# can be plugged into ulib/fs.
zx_library("memfs-cpp") {
  sdk = "source"
  sdk_headers = [ "lib/memfs/cpp/vnode.h" ]
  sources = [
    "directory.cc",
    "dnode.cc",
    "file.cc",
    "include/lib/memfs/memfs.h",
    "memfs.cc",
    "vmo.cc",
  ]
  public_deps = [
    # <lib/memfs/cpp/vnode.h> has #include <lib/fdio/io.h>
    "//sdk/lib/fdio",

    # <lib/memfs/cpp/vnode.h> has #include <fbl/ref_ptr.h>
    "//zircon/public/lib/fbl",

    # <lib/memfs/cpp/vnode.h> has #include <lib/zx/vmo.h>
    "//zircon/public/lib/zx",

    # <lib/memfs/cpp/vnode.h> has #include <fs/vfs.h> and many other <fs/*.h>
    "//zircon/system/ulib/fs",
  ]
  deps = [
    "//sdk/fidl/fuchsia.io:fuchsia.io_llcpp",
    "//sdk/lib/syslog/cpp",
    "//zircon/public/lib/async",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/sync",
  ]

  # TODO(fxbug.dev/58162): delete the below and fix compiler warnings
  configs += [ "//build/config:Wno-conversion" ]
}

# libmemfs.so: The C ABI client library.
#
# Used to create local temporary filesystems.
zx_library("memfs") {
  sdk = "shared"
  sdk_publishable = true
  sdk_headers = [ "lib/memfs/memfs.h" ]
  shared = true
  sources = [ "memfs-local.cc" ]
  public_deps = [
    # <lib/memfs/memfs.h> has #include <lib/async/dispatcher.h>.
    "//zircon/public/lib/async",
    "//zircon/public/lib/fit",

    # <lib/memfs/memfs.h> has #include <lib/sync/completion.h>.
    "//zircon/public/lib/sync",
  ]
  deps = [
    ":memfs-cpp",
    "//sdk/lib/fdio",
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/fs",
  ]
  runtime_deps = [
    "//sdk/lib/fdio:fdio_sdk",
    "//zircon/system/ulib/trace-engine:trace-engine_sdk",
  ]
}

group("tests") {
  testonly = true
  deps = [ "test:tests" ]
}
