# 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/cpp/sdk_source_set.gni")
import("//build/test.gni")
import("//src/sys/build/components.gni")

sdk_source_set("cpp") {
  category = "partner"

  sdk_name = "vfs_cpp"

  include_base = "//sdk"
  sources = [
    "composed_service_dir.cc",
    "composed_service_dir.h",
    "flags.h",
    "internal/connection.cc",
    "internal/connection.h",
    "internal/directory.cc",
    "internal/directory.h",
    "internal/directory_connection.cc",
    "internal/directory_connection.h",
    "internal/dirent_filler.cc",
    "internal/dirent_filler.h",
    "internal/file.cc",
    "internal/file.h",
    "internal/file_connection.cc",
    "internal/file_connection.h",
    "internal/node.cc",
    "internal/node.h",
    "internal/node_connection.cc",
    "internal/node_connection.h",
    "lazy_dir.cc",
    "lazy_dir.h",
    "node_kind.h",
    "pseudo_dir.cc",
    "pseudo_dir.h",
    "pseudo_file.cc",
    "pseudo_file.h",
    "remote_dir.cc",
    "remote_dir.h",
    "service.cc",
    "service.h",
    "vmo_file.cc",
    "vmo_file.h",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.io",
    "//sdk/fidl/fuchsia.io2",
    "//sdk/lib/fdio",
    "//sdk/lib/fidl/cpp",
    "//zircon/public/lib/async",
    "//zircon/public/lib/zx",
  ]

  public_configs = [ "//sdk/config" ]

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

test("vfs_cpp_unittests") {
  sources = [
    "composed_service_dir_unittest.cc",
    "internal/connection_unittest.cc",
    "internal/file_unittest.cc",
    "lazy_dir_unittest.cc",
    "pseudo_dir_unittest.cc",
    "pseudo_file_unittest.cc",
    "remote_dir_unittest.cc",
    "service_unittest.cc",
    "vmo_file_unittest.cc",
  ]

  deps = [
    ":cpp",
    "testing",
    "//garnet/public/lib/gtest",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/testing/fidl:placeholders",
  ]

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

fuchsia_unittest_package("vfs_cpp_tests") {
  deps = [ ":vfs_cpp_unittests" ]
  manifest = "meta/vfs_cpp_unittests.cmx"
}
