# Copyright 2020 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/components.gni")

group("virtual_camera") {
  public_deps = [ ":lib" ]
}

group("tests") {
  testonly = true
  deps = [ ":virtual_camera_unittest" ]
}

source_set("lib") {
  visibility = [ ":*" ]
  sources = [
    "virtual_camera_impl.cc",
    "virtual_camera_impl.h",
  ]
  public = [ "virtual_camera.h" ]
  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/camera/lib/fake_camera",
    "//src/camera/lib/fake_stream",
    "//zircon/system/ulib/async:async-cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/third_party/ulib/safemath",
  ]
  public_deps = [
    "//sdk/fidl/fuchsia.camera3:fuchsia.camera3_hlcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_hlcpp",
    "//sdk/lib/fit-promise",
    "//src/lib/fsl",
    "//zircon/system/ulib/fzl",
  ]
}

executable("virtual_camera_unittest_bin") {
  testonly = true
  sources = [ "virtual_camera_unittest.cc" ]
  deps = [
    ":lib",
    "//sdk/lib/sys/cpp",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
  ]
}

fuchsia_unittest_package("virtual_camera_unittest") {
  manifest = "meta/virtual_camera_unittest.cml"
  deps = [ ":virtual_camera_unittest_bin" ]
  test_type = "system"
}
