# 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")
import("//src/camera/debug.gni")

group("device") {
  deps = [ ":camera_device" ]
}

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

source_set("lib") {
  sources = [
    "device_impl.cc",
    "device_impl.h",
    "device_impl_client.cc",
    "metrics_reporter.cc",
    "metrics_reporter.h",
    "stream_impl.cc",
    "stream_impl.h",
    "stream_impl_client.cc",
    "sysmem_allocator.cc",
    "sysmem_allocator.h",
    "util.h",
  ]

  deps = [
    "//sdk/lib/syslog/cpp",
    "//src/camera/lib/hanging_get_helper",
    "//src/lib/fsl",
    "//zircon/public/lib/fbl",
    "//zircon/system/ulib/async-loop:async-loop-default",
  ]

  public_deps = [
    "//sdk/fidl/fuchsia.camera2.hal",
    "//sdk/fidl/fuchsia.camera3",
    "//sdk/fidl/fuchsia.sysmem",
    "//sdk/fidl/fuchsia.ui.policy",
    "//sdk/lib/fidl/cpp",
    "//sdk/lib/fit-promise",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/inspect/cpp",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/trace",
  ]

  defines = [ camera_debug_define ]
}

executable("camera_device_bin") {
  sources = [ "main.cc" ]

  deps = [
    ":lib",
    "//sdk/lib/syslog/cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/trace-provider:trace-provider-with-fdio",
  ]

  defines = [ camera_debug_define ]
}

fuchsia_package_with_single_component("camera_device") {
  manifest = "meta/camera_device.cmx"
  deps = [ ":camera_device_bin" ]
}

executable("camera_device_unittest_bin") {
  testonly = true
  sources = [
    "device_impl_unittest.cc",
    "metrics_reporter_unittest.cc",
    "sysmem_allocator_unittest.cc",
    "util_unittest.cc",
  ]
  deps = [
    ":lib",
    "testing",
    "//sdk/fidl/fuchsia.camera2.hal",
    "//sdk/fidl/fuchsia.camera3",
    "//sdk/fidl/fuchsia.sysmem",
    "//sdk/lib/inspect/testing/cpp",
    "//sdk/lib/sys/cpp",
    "//sdk/lib/sys/cpp/testing:unit",
    "//src/camera/lib/fake_controller",
    "//src/lib/fsl",
    "//src/lib/fxl/test:gtest_main",
    "//src/lib/testing/loop_fixture",
    "//third_party/googletest:gmock",
  ]

  # Increase the default stack size from 256 KB because creating the configs can take up a very
  # large amount of stack and would otherwise cause crashes on ASAN builds.
  ldflags = [ "-Wl,-z,stack-size=0x100000" ]
}

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