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

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

  public_deps = [
    "//garnet/lib/media/camera/simple_camera_lib",
    "//garnet/public/fidl/fuchsia.simplecamera",
    "//garnet/public/lib/component/cpp",
    "//garnet/public/lib/fidl/cpp",
  ]
}

executable("bin") {
  output_name = "simple_camera_server_cpp"

  sources = [
    "simple_camera_server.cc",
  ]

  deps = [
    ":lib",
    "//zircon/public/lib/async-default",
    "//zircon/public/lib/async-loop-cpp",
  ]
}

package("simple_camera_server_cpp") {

  deps = [
    ":bin",
  ]
    meta = [ {
        path = rebase_path("meta/simple_camera_server_cpp.cmx")
        dest = "simple_camera_server_cpp.cmx"
      } ]

  binary = "simple_camera_server_cpp"
}
