# 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",
    "//sdk/banjo/fuchsia.hardware.gdc",
    "//sdk/banjo/fuchsia.hardware.ge2d",
    "//sdk/banjo/fuchsia.hardware.isp",
    "//sdk/banjo/fuchsia.hardware.platform.bus:fuchsia.hardware.platform.bus_banjo_cpp",
    "//sdk/banjo/fuchsia.hardware.sysmem",
    "//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",
  ]
}
