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

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

group("swap_cpp") {
  testonly = true
  deps = [
    ":module",
    ":swap_module1",
    ":swap_module2",
    ":swap_recipe",
  ]
}

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

  sources = [
    "swap_module1.cc",
  ]
  deps = [
    ":module",
    "//peridot/public/lib/app_driver/cpp:app_driver",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]
}

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

  sources = [
    "swap_module2.cc",
  ]
  deps = [
    ":module",
    "//peridot/public/lib/app_driver/cpp:app_driver",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]
}

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

  public_deps = [
    "//garnet/public/lib/ui/base_view/cpp",
    "//peridot/lib/fidl:single_service_app",
    "//zircon/public/lib/zx",
  ]

  deps = [
    "//peridot/public/lib/app_driver/cpp",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.ui.gfx",
    "//sdk/fidl/fuchsia.ui.scenic",
  ]
}

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

  sources = [
    "swap_recipe.cc",
  ]
  deps = [
    "//garnet/public/lib/ui/base_view/cpp",
    "//peridot/lib/fidl:single_service_app",
    "//peridot/public/lib/app_driver/cpp",
    "//sdk/fidl/fuchsia.modular",
    "//sdk/fidl/fuchsia.ui.gfx",
    "//sdk/fidl/fuchsia.ui.views",
    "//sdk/lib/ui/scenic/cpp",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/trace-provider",
  ]
}
