# 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("util") {
  public_deps = [
    ":pseudo_dir_server",
    ":pseudo_dir_utils",
    ":string_escape",
  ]
}

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

  public_deps = [
    "//src/lib/fxl",
  ]
}

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 = [
    "//garnet/public/lib/fsl",
    "//sdk/lib/vfs/cpp",
    "//src/lib/files",
    "//src/lib/fxl",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

source_set("ptr") {
  sources = [
    "ptr.h",
  ]
}

source_set("unittests") {
  testonly = true

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

  public_deps = [
    ":util",
    "//peridot/lib/testing:test_with_ledger",
    "//src/lib/fxl",
    "//third_party/googletest:gtest",
  ]
}

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

  public_deps = [
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
