# 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_service" ]
}

pkg_config("target_defaults") {
  include_dirs = [
    "//camera",
    "//camera/include",
  ]
  pkg_deps = [
    "cros-camera-android-headers",
    "libbrillo",
    "libcab",
    "libcamera_client",
    "libcamera_common",
    "libcamera_metadata",
    "libcbm",
    "libdrm",
    "libmojo",
    "libsync",
    "libyuv",
    "re2",
  ]
}

executable("cros_camera_service") {
  sources = [
    "//camera/common/ipc_util.cc",
    "//camera/common/utils/camera_config_impl.cc",
    "//camera/common/utils/camera_hal_enumerator.cc",
    "//camera/common/utils/cros_camera_mojo_utils.cc",
    "//camera/common/vendor_tag_manager.cc",
    "//camera/mojo/CameraMetadataTagsVerifier.cc",
    "camera3_callback_ops_delegate.cc",
    "camera3_device_ops_delegate.cc",
    "camera_device_adapter.cc",
    "camera_hal_adapter.cc",
    "camera_hal_server_impl.cc",
    "camera_hal_test_adapter.cc",
    "camera_metadata_inspector.cc",
    "camera_module_callbacks_associated_delegate.cc",
    "camera_module_callbacks_delegate.cc",
    "camera_module_delegate.cc",
    "camera_trace_event.cc",
    "cros_camera_main.cc",
    "frame_number_mapper.cc",
    "reprocess_effect/gpu_algo_manager.cc",
    "reprocess_effect/portrait_mode_effect.cc",
    "reprocess_effect/reprocess_effect_manager.cc",
    "scoped_yuv_buffer_handle.cc",
    "vendor_tag_ops_delegate.cc",
    "zsl_helper.cc",
  ]
  configs += [ ":target_defaults" ]
  libs = [
    "dl",
    "rt",
  ]
  deps = [
    "//camera/common:libcamera_metrics",
    "//camera/common/libcamera_ipc:libcamera_ipc",
    "//camera/common/libcamera_ipc:libcamera_ipc_mojom",
  ]
}
