# 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("//src/sys/core/build/core_shard.gni")

group("camera") {
  testonly = true
  deps = [
    ":tools",
    "bin",
    "drivers",
    "lib",
    "testing",
  ]
}

group("tests") {
  testonly = true
  deps = [
    "bin:tests",
    "drivers:tests",
    "lib:tests",
  ]
}

group("drivers") {
  deps = [
    "drivers/bus/aml_mipicsi:aml_mipicsi_driver",
    "drivers/controller/sherlock:sherlock-camera-controller",
    "drivers/hw_accel/gdc:driver",
    "drivers/hw_accel/ge2d:ge2d-driver",
    "drivers/sensors/imx227:driver",
    "drivers/usb_video:driver",
  ]
}

group("service") {
  public_deps = [
    "//src/camera/bin/device",
    "//src/camera/bin/device_watcher",
  ]
}

# Add targets here that are useful for general development.
group("tools") {
  testonly = true
  public_deps = [
    "//src/camera/bin/benchmark",
    "//src/camera/bin/sensor_cli",
  ]
}

# The camera service is not relevant to all configurations, so products
# that require it should include this shard to expose its protocols.
core_shard("camera_core_shard") {
  shard_file = "meta/camera.core_shard.cml"
}
