# Copyright 2016 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("common") {
  deps = [
    ":async_holder",
    ":story_provider_watcher_base",
    ":teardown",
  ]
}

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

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

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

  deps = [
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//peridot/lib/fidl:array_to_string",
    "//peridot/public/lib:fidl",
  ]
}

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

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

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

  public_deps = [
    "//peridot/lib/fidl:json_xdr",
  ]
}
