# Copyright 2019 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/package.gni")

demo_name = "camera_demo"

executable("demo_bin") {
  output_name = demo_name

  sources = [
    "main.cc",
  ]

  deps = [
    "./stream_provider",
    "./text_node",
    "//garnet/public/lib/fsl",
    "//garnet/public/lib/ui/base_view/cpp",
    "//garnet/public/lib/ui/scenic/cpp",
    "//sdk/fidl/fuchsia.camera2",
    "//sdk/fidl/fuchsia.ui.gfx",
    "//sdk/lib/fidl/cpp",
    "//src/lib/fxl",
    "//src/lib/ui/scenic/cpp",
    "//src/ui/lib/glm_workaround",
    "//zircon/public/lib/async-loop-cpp",
    "//zircon/public/lib/fzl",
  ]
}

package("${demo_name}") {
  deps = [
    ":demo_bin",
  ]

  binary = demo_name

  meta = [
    {
      path = rebase_path("meta/demo.cmx")
      dest = "${demo_name}.cmx"
    },
  ]
}

group("demo") {
  public_deps = [
    ":${demo_name}"
  ]
}
