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

group("pseudo_dir") {
  public_deps = [
    ":pseudo_dir_server",
    ":pseudo_dir_utils",
  ]
}

source_set("pseudo_dir_utils") {
  sources = [
    "pseudo_dir_utils.cc",
    "pseudo_dir_utils.h",
  ]

  public_deps = [
    "//sdk/lib/vfs/cpp",
    "//src/lib/fxl",
  ]
}

source_set("pseudo_dir_server") {
  sources = [
    "pseudo_dir_server.cc",
    "pseudo_dir_server.h",
  ]

  public_deps = [
    "//sdk/lib/fdio:fdio_sdk",
    "//sdk/lib/syslog/cpp",
    "//sdk/lib/vfs/cpp",
    "//src/lib/files",
    "//src/lib/fsl",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]
}

source_set("unittests") {
  testonly = true

  sources = [
    "pseudo_dir_server_unittest.cc",
    "pseudo_dir_utils_unittest.cc",
  ]

  deps = [
    ":pseudo_dir",
    "//garnet/public/lib/gtest",
    "//third_party/googletest:gtest",
  ]
}
