# 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 = [ ":cros_camera_test" ]
}

pkg_config("target_defaults") {
  pkg_deps = [
    "gbm",
    "libbrillo",
    "libcros_camera",
    "libcros_camera_android_deps",
    "libdrm",
    "libexif",
    "libsync",
    "libyuv",
  ]
  configs = [ "//camera/build:cros_camera_common" ]
}

executable("cros_camera_test") {
  sources = [
    "//camera/common/utils/camera_hal_enumerator.cc",
    "//camera/common/utils/cros_camera_mojo_utils.cc",
    "//camera/common/vendor_tag_manager.cc",
    "camera3_device_connector.cc",
    "camera3_device_impl.cc",
    "camera3_device_test.cc",
    "camera3_exif_validator.cc",
    "camera3_face_test.cc",
    "camera3_frame_test.cc",
    "camera3_module_connector.cc",
    "camera3_module_test.cc",
    "camera3_perf_log.cc",
    "camera3_preview_test.cc",
    "camera3_recording_test.cc",
    "camera3_reprocessing_test.cc",
    "camera3_service.cc",
    "camera3_still_capture_test.cc",
    "camera3_stream_test.cc",
    "camera3_test_data_forwarder.cc",
    "camera3_test_gralloc.cc",
  ]
  configs += [
    "//common-mk:test",
    ":target_defaults",
  ]
  libs = [
    "dl",
    "jpeg",
  ]
}
