# Copyright 2018 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("simple_agent") {
  deprecated_bare_package_url = "//build"

  meta = [
    {
      path = "meta/simple_agent.cmx"
      dest = "simple_agent.cmx"
    },
  ]

  sources = [
    "simple_agent.cc",
    "simple_impl.cc",
    "simple_impl.h",
  ]

  deps = [
    ":interfaces",
    "//garnet/public/lib/component/cpp",
    "//peridot/public/lib/app_driver/cpp",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

executable_package("simple_module") {
  deprecated_bare_package_url = "//build"

  meta = [
    {
      path = "meta/simple_module.cmx"
      dest = "simple_module.cmx"
    },
  ]

  sources = [
    "simple_module.cc",
  ]

  deps = [
    ":interfaces",
    "//garnet/public/lib/component/cpp",
    "//peridot/public/lib/app_driver/cpp:module_driver",
    "//peridot/public/lib/message_queue/cpp",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

fidl("interfaces") {
  cpp_legacy_callbacks = true

  name = "fuchsia.modular.examples.simple"

  sources = [
    "simple.fidl",
  ]
}
