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

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

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

  public_deps = [
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/fxl",
  ]
}

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

  public_deps = [
    "//zircon/public/lib/zx",
  ]
}

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

  public_deps = [
    "//garnet/public/lib/fxl",
  ]
}

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

source_set("unittests") {
  testonly = true

  sources = [
    "string_escape_unittest.cc",
  ]

  public_deps = [
    ":util",
    "//garnet/public/lib/fxl",
    "//third_party/googletest:gtest",
  ]
}

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

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