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

group("tests") {
  testonly = true
  deps = [
    ":camera_controller_bind_test",
    "sherlock:tests",
    "test:tests",
  ]
}

bind_rules("camera_controller_bind") {
  rules = "camera_controller.bind"
  output = "bind.h"
  tests = "bind_tests.json"
  deps = [ "//src/devices/bind/fuchsia.composite" ]
}

source_set("source") {
  defines = [ camera_debug_define ]
  visibility = [ "../*" ]
  sources = [
    "controller_device.cc",
    "controller_device.h",
    "controller_protocol.cc",
    "controller_protocol.h",
    "gdc_node.cc",
    "gdc_node.h",
    "ge2d_node.cc",
    "ge2d_node.h",
    "graph_utils.cc",
    "graph_utils.h",
    "input_node.cc",
    "input_node.h",
    "memory_allocation.cc",
    "memory_allocation.h",
    "output_node.cc",
    "output_node.h",
    "pipeline_manager.cc",
    "pipeline_manager.h",
    "processing_node.cc",
    "processing_node.h",
    "stream_protocol.cc",
    "stream_protocol.h",
  ]
  deps = [
    ":camera_controller_bind",
    "//zircon/public/lib/safemath",
  ]
  public_deps = [
    "//sdk/banjo/fuchsia.hardware.camerahwaccel:fuchsia.hardware.camerahwaccel_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.gdc:fuchsia.hardware.gdc_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.ge2d:fuchsia.hardware.ge2d_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.isp:fuchsia.hardware.isp_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.sysmem:fuchsia.hardware.sysmem_banjo_cpp",
    "//sdk/fidl/fuchsia.camera2",
    "//sdk/fidl/fuchsia.camera2.hal",

    # The LLCPP bindings for fuchsia.hardware.camera is used by controller_device.h
    "//sdk/fidl/fuchsia.hardware.camera:fuchsia.hardware.camera_llcpp",
    "//sdk/fidl/fuchsia.sysmem:fuchsia.sysmem_c",
    "//sdk/lib/fit",
    "//sdk/lib/fit-promise",
    "//sdk/lib/syslog/cpp",
    "//src/camera/drivers/controller/configs",
    "//src/camera/lib/format_conversion",
    "//src/devices/bus/lib/device-protocol-pdev",
    "//src/devices/bus/lib/device-protocol-platform-device",
    "//src/devices/lib/driver",
    "//src/devices/lib/sysmem",
    "//src/lib/ddk",
    "//src/lib/ddktl",
    "//src/lib/fsl",
    "//src/lib/fxl",
    "//zircon/public/lib/async-cpp",
    "//zircon/public/lib/fbl",
    "//zircon/public/lib/hwreg",
    "//zircon/public/lib/zircon-internal",
    "//zircon/public/lib/zx",
    "//zircon/system/ulib/async-loop:async-loop-cpp",
    "//zircon/system/ulib/async-loop:async-loop-default",
    "//zircon/system/ulib/fidl-utils",
    "//zircon/system/ulib/image-format",
    "//zircon/system/ulib/syslog",
    "//zircon/system/ulib/trace:trace-driver",
  ]
}
