# 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",
    ":names",
    ":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("names") {
  sources = [
    "names.h",
  ]
}

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/fidl/fuchsia.modular",
  ]
}

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

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

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

  public_deps = [
    "//peridot/lib/fidl:json_xdr",
    "//peridot/public/fidl/fuchsia.modular.auth",
  ]
}
