# 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")

group("cpp") {
  public_deps = [
    ":agent_driver",
    ":app_driver",
    ":module_driver",
  ]
}

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

  public_deps = [
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/agent/cpp",
    "//peridot/public/lib/lifecycle/cpp",
  ]
}

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

  public_deps = [
    "//garnet/public/lib/component/cpp",
  ]

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

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

  public_deps = [
    "//garnet/public/fidl/fuchsia.ui.app",
    "//garnet/public/fidl/fuchsia.ui.viewsv1",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fidl/cpp",
    "//garnet/public/lib/fxl",
    "//peridot/public/fidl/fuchsia.modular",
    "//peridot/public/lib/lifecycle/cpp",
  ]
}
