# Copyright 2019 The Chromium OS 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("//common-mk/pkg_config.gni")

group("all") {
  deps = [
    ":camera_characteristics_test",
    ":media_v4l2_is_capture_device",
    ":media_v4l2_test",
  ]
}

executable("camera_characteristics_test") {
  sources = [
    "//camera/hal/usb/camera_characteristics.cc",
    "camera_characteristics_test.cc",
  ]
  configs += [
    "//common-mk:test",
    "//camera/build:cros_camera_common",
  ]
  pkg_deps = [
    "libbrillo",
    "libchrome",
    "re2",
  ]
}

executable("media_v4l2_is_capture_device") {
  sources = [
    "media_v4l2_device.cc",
    "media_v4l2_is_capture_device.cc",
  ]
  configs += [ "//camera/build:cros_camera_common" ]
}

executable("media_v4l2_test") {
  sources = [
    "//camera/hal/usb/camera_characteristics.cc",
    "media_v4l2_device.cc",
    "media_v4l2_test.cc",
  ]

  configs += [
    "//common-mk:test",
    "//camera/build:cros_camera_common",
  ]

  pkg_deps = [
    "libbrillo",
    "libchrome",
    "libcros_config",
    "libyuv",
    "re2",
  ]
}
