# Copyright 2021 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("//camera/build/cc_embed_data.gni")
import("//common-mk/pkg_config.gni")

pkg_config("target_defaults") {
  configs = [ "//camera/build:cros_camera_common" ]
  pkg_deps = [
    "libcros_camera_android_deps",
    "libsync",
  ]
  defines = [
    "USE_IPU6=${use.ipu6}",
    "USE_IPU6EP=${use.ipu6ep}",
  ]
}

if (use.ipu6 || use.ipu6ep) {
  cc_embed_data("embedded_hdrnet_processor_shaders_ipu6") {
    sources = [
      "//camera/features/hdrnet/shaders/postprocess_ipu6.frag",
      "//camera/features/hdrnet/shaders/preprocess_ipu6.frag",
    ]
  }
}

source_set("hdrnet") {
  sources = [
    "//camera/features/hdrnet/hdrnet_processor_device_adapter.cc",
    "//camera/features/hdrnet/hdrnet_processor_impl.cc",
    "//camera/features/hdrnet/hdrnet_stream_manipulator.cc",
  ]
  libs = [ "gcam_cros" ]
  public_configs = [ ":target_defaults" ]

  # -fPIC needed by the libcros_camera.so shared library.
  configs += [ "//common-mk:pic" ]
  public_deps = [ "//camera/gpu" ]
  deps = [ "//camera/gpu:image_processor" ]

  if (use.ipu6 || use.ipu6ep) {
    sources += [
      "//camera/features/hdrnet/hdrnet_processor_device_adapter_ipu6.cc",
      "//camera/features/hdrnet/ipu6_gamma.cc",
    ]
    deps += [ ":embedded_hdrnet_processor_shaders_ipu6" ]
  }
}
