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

import("//build/fidl/fidl.gni")
import("//peridot/build/executable_package.gni")

executable_package("story_info") {
  meta = [
    {
      path = "meta/story_info.cmx"
      dest = "story_info.cmx"
    },
  ]

  sources = [
    "link_watcher_impl.cc",
    "link_watcher_impl.h",
    "story_info.cc",
    "story_info.h",
    "story_info_main.cc",
    "story_watcher_impl.cc",
    "story_watcher_impl.h",
  ]

  deps = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fxl",
    "//garnet/public/lib/svc/cpp",

    # TODO(thatguy): Do not depend on constants_and_utils.
    "//peridot/bin/sessionmgr/storage:constants_and_utils",
    "//peridot/lib:maxwell_internal",
    "//peridot/lib/fidl:json_xdr",
    "//peridot/lib/rapidjson",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/app_driver/cpp:agent_driver",
    "//peridot/public/lib/context/cpp:context_metadata_builder",
    "//peridot/public/lib/entity/cpp",
    "//peridot/public/lib/entity/cpp:json",
    "//third_party/rapidjson",
    "//zircon/public/lib/async-loop-cpp",
  ]
}
