# 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("fake_camera") {
  public_deps = [ ":lib" ]
}

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

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

executable("fake_camera_unittest_bin") {
  testonly = true
  sources = [ "fake_camera_unittest.cc" ]
  deps = [
    ":lib",
    "//sdk/fidl/fuchsia.sysmem",
    "//sdk/lib/sys/cpp",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
  ]
}

fuchsia_unittest_package("fake_camera_unittest") {
  manifest = "meta/fake_camera_unittest.cmx"
  deps = [ ":fake_camera_unittest_bin" ]
}
