#
#  Copyright (C) 2019-2020 Intel Corporation
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

group("all") {
  deps = [
    ":libcam_algo",
    ":libcamhal",
  ]
  if (use.ipu6se) {
    deps += [
      ":libcam_algo_vendor_gpu",
    ]
  }
}

shared_library("libcamhal") {
  sources = [
    "aal/Camera3AMetadata.cpp",
    "aal/Camera3HAL.cpp",
    "aal/Camera3HALModule.cpp",
    "aal/Camera3Stream.cpp",
    "aal/HALv3Utils.cpp",
    "aal/IntelAEStateMachine.cpp",
    "aal/IntelAFStateMachine.cpp",
    "aal/IntelAWBStateMachine.cpp",
    "aal/MetadataConvert.cpp",
    "aal/PostProcessor.cpp",
    "aal/RequestManager.cpp",
    "aal/ResultProcessor.cpp",
    "modules/ia_cipr/src/Buffer.cpp",
    "modules/ia_cipr/src/Command.cpp",
    "modules/ia_cipr/src/Context.cpp",
    "modules/ia_cipr/src/Event.cpp",
    "modules/ia_cipr/src/Utils.cpp",
    "modules/sandboxing/client/IntelAlgoClient.cpp",
    "modules/sandboxing/client/IntelAlgoCommon.cpp",
    "modules/sandboxing/client/IntelLard.cpp",
    "modules/sandboxing/client/IntelFaceDetection.cpp",
    "modules/sandboxing/client/GraphConfigImpl.cpp",
    "modules/sandboxing/client/IntelCmc.cpp",
    "modules/sandboxing/client/IntelMkn.cpp",
    "modules/sandboxing/client/IntelLtm.cpp",
    "modules/sandboxing/client/IntelAiq.cpp",
    "modules/sandboxing/client/IntelDvs.cpp",
    "modules/sandboxing/client/IntelIspParamAdaptor.cpp",
    "modules/sandboxing/client/IntelPGParam.cpp",
    "modules/sandboxing/IPCCommon.cpp",
    "modules/sandboxing/IPCIntelLard.cpp",
    "modules/sandboxing/IPCIntelFD.cpp",
    "modules/sandboxing/IPCGraphConfig.cpp",
    "modules/sandboxing/IPCIntelCmc.cpp",
    "modules/sandboxing/IPCIntelMkn.cpp",
    "modules/sandboxing/IPCIntelLtm.cpp",
    "modules/sandboxing/IPCIntelAiq.cpp",
    "modules/sandboxing/IPCIntelDvs.cpp",
    "modules/sandboxing/IPCIspParamAdaptor.cpp",
    "modules/sandboxing/IPCIntelPGParam.cpp",
    "modules/memory/Camera3BufferPool.cpp",
    "modules/memory/chrome/Camera3Buffer.cpp",
    "src/3a/AiqCore.cpp",
    "src/3a/AiqEngine.cpp",
    "src/3a/AiqResult.cpp",
    "src/3a/AiqResultStorage.cpp",
    "src/3a/AiqSetting.cpp",
    "src/3a/AiqStatistics.cpp",
    "src/3a/AiqUnit.cpp",
    "src/3a/AiqUtils.cpp",
    "src/3a/I3AControlFactory.cpp",
    "src/3a/DvsResult.cpp",
    "src/3a/Dvs.cpp",
    "src/3a/MakerNote.cpp",
    "src/3a/LensManager.cpp",
    "src/3a/Ltm.cpp",
    "src/3a/SensorManager.cpp",
    "src/3a/intel3a/Intel3AParameter.cpp",
    "src/core/BufferQueue.cpp",
    "src/core/CameraBuffer.cpp",
    "src/core/CameraDevice.cpp",
    "src/core/CameraEvent.cpp",
    "src/core/CameraStream.cpp",
    "src/core/CaptureUnit.cpp",
    "src/core/DeviceBase.cpp",
    "src/core/IspParamAdaptor.cpp",
    "src/core/LensHw.cpp",
    "src/core/PSysProcessor.cpp",
    "src/core/ProcessorManager.cpp",
    "src/core/RequestThread.cpp",
    "src/core/SensorHwCtrl.cpp",
    "src/core/SofSource.cpp",
    "src/core/SwImageProcessor.cpp",
    "src/core/SyncManager.cpp",
    "src/core/psysprocessor/PGCommon.cpp",
    "src/core/psysprocessor/PGUtils.cpp",
    "src/core/psysprocessor/PSysDAG.cpp",
    "src/core/psysprocessor/PipeLiteExecutor.cpp",
    "src/core/psysprocessor/PolicyManager.cpp",
    "src/core/psysprocessor/ShareReferBufferPool.cpp",
    "src/fd/FaceDetection.cpp",
    "src/hal/CameraHal.cpp",
    "src/hal/ICamera.cpp",
    "src/image_process/ImageConverter.cpp",
    "src/image_process/ImageScalerCore.cpp",
    "src/image_process/PostProcessorBase.cpp",
    "src/image_process/PostProcessorCore.cpp",
    "src/image_process/chrome/ImageProcessorCore.cpp",
    "src/iutils/CameraDump.cpp",
    "src/iutils/CameraLog.cpp",
    "src/iutils/ScopedAtrace.cpp",
    "src/iutils/SwImageConverter.cpp",
    "src/iutils/Thread.cpp",
    "src/iutils/Trace.cpp",
    "src/iutils/Utils.cpp",
    "src/jpeg/EXIFMaker.cpp",
    "src/jpeg/EXIFMetaData.cpp",
    "src/jpeg/ExifCreater.cpp",
    "src/jpeg/JpegMaker.cpp",
    "src/jpeg/chrome/JpegEncoderCore.cpp",  # TODO: Migrate to hardware JPEG encoding later
    "src/metadata/CameraMetadata.cpp",
    "src/metadata/ParameterGenerator.cpp",
    "src/metadata/ParameterHelper.cpp",
    "src/metadata/Parameters.cpp",
    "src/metadata/icamera_metadata_base.cpp",
    "src/platformdata/AiqInitData.cpp",
    "src/platformdata/CameraParser.cpp",
    "src/platformdata/ParserBase.cpp",
    "src/platformdata/PlatformData.cpp",
    "src/platformdata/PolicyParser.cpp",
    "src/platformdata/gc/FormatUtils.cpp",
    "src/platformdata/gc/GraphConfig.cpp",
    "src/platformdata/gc/GraphConfigManager.cpp",
    "src/platformdata/gc/GraphUtils.cpp",
    "src/v4l2/MediaControl.cpp",
    "src/v4l2/SysCall.cpp",
    "src/v4l2/V4l2DeviceFactory.cpp",
    "src/v4l2/NodeInfo.cpp",
  ]
  cflags_cc = [
    "-fvisibility=default",
  ]
  include_dirs = [
    ".",
    "include",
    "include/api",
    "include/utils",
    "include/linux",
    "src",
    "src/fd",
    "src/platformdata",
    "src/platformdata/gc",
    "src/v4l2",
    "src/iutils",
    "src/core",
    "src/core/psysprocessor",
    "src/metadata",
    "src/3a/intel3a",
    "src/3a/external",
    "src/3a",
    "src/image_process",
    "src/image_process/chrome",
    "src/jpeg/",
    "src/jpeg/chrome",
    "aal",
    "aal/chrome",
    "modules/ia_cipr/include",
    "modules/ia_cipr/src/common",
    "modules/ia_cipr/src/linux/linux",
    "modules/memory",
    "modules/memory/chrome",
    "include/ia_imaging",
    "include",
    "include/gcss",
  ]
  defines = [
    "CAL_BUILD",
    "IPU_SYSVER_IPU6",
    "USE_PG_LITE_PIPE",
    "HAVE_LINUX_OS",
    "__STDC_FORMAT_MACROS",
    "HAVE_PTHREADS",
    "HAVE_IA_TYPES",
    "HAVE_PRCTL",
    "CAMERA_HAL_DEBUG",
    "DUMP_IMAGE",
    "HAL_PIXEL_FORMAT_NV12_LINEAR_CAMERA_INTEL=0x10F",
    "ENABLE_SANDBOXING",
    "FACE_DETECTION",
  ]
  libs = [
    "camera_client",
    "camera_metadata",
    "camera_common",
    "cbm",
    "jpeg",
    "dl",
    "cros_config",
  ]
  pkg_deps = [
    "cros-camera-android-headers",
    "expat",
    "libcab",
    "libcamera_client",
    "libcamera_common",
    "libcamera_exif",
    "libcamera_metadata",
    "libcamera_v4l2_device",
    "libcbm",
    "libchrome",
    "libmojo",
    "libsync",
    "libyuv",
  ]
  if (use.ipu6se) {
    sources += [
      "modules/ia_css/ipu6se/src/ia_css_program_group_param.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_process_group.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_program_group_manifest.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_terminal_manifest.c",
      "modules/ia_css/ipu6se/src/ia_css_kernel_bitmap.c",
      "modules/ia_css/ipu6se/src/ia_css_terminal_manifest.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_program_manifest.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_process.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_terminal.c",
      "modules/ia_css/ipu6se/src/ia_css_psys_process_group_cmd_impl.c",
      "modules/ia_css/ipu6se/src/vied_nci_psys_system.c",
      "modules/ia_css/ipu6se/src/ia_css_terminal.c",
      "modules/ia_css/ipu6se/src/ia_css_program_group_data.c",
      "modules/ia_css/ipu6se/src/ia_css_rbm.c",
      "src/core/psysprocessor/GPUExecutor.cpp",
      "modules/sandboxing/client/IntelTNR7US.cpp",
    ]
    include_dirs += [
      "modules/ia_css/ipu6se/include",
    ]
    libs += [
      "broxton_ia_pal",
    ]
    defines += [
      "IPU_SYSVER_ipu6v3",
      "TNR7_CM",
    ]
  } else if (use.ipu6ep) {
    sources += [
      "modules/ia_css/ipu6ep/src/ia_css_program_group_param.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_process_group.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_program_group_manifest.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_terminal_manifest.c",
      "modules/ia_css/ipu6ep/src/ia_css_kernel_bitmap.c",
      "modules/ia_css/ipu6ep/src/ia_css_terminal_manifest.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_program_manifest.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_process.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_terminal.c",
      "modules/ia_css/ipu6ep/src/ia_css_psys_process_group_cmd_impl.c",
      "modules/ia_css/ipu6ep/src/vied_nci_psys_system.c",
      "modules/ia_css/ipu6ep/src/ia_css_terminal.c",
      "modules/ia_css/ipu6ep/src/ia_css_program_group_data.c",
      "modules/ia_css/ipu6ep/src/ia_css_rbm.c",
    ]
    include_dirs += [
      "modules/ia_css/ipu6ep/include",
    ]
    defines += [
      "IPU_SYSVER_ipu6v5",
    ]
  } else {
    sources += [
      "modules/ia_css/ipu6/src/ia_css_program_group_param.c",
      "modules/ia_css/ipu6/src/ia_css_psys_process_group.c",
      "modules/ia_css/ipu6/src/ia_css_psys_program_group_manifest.c",
      "modules/ia_css/ipu6/src/ia_css_psys_terminal_manifest.c",
      "modules/ia_css/ipu6/src/ia_css_kernel_bitmap.c",
      "modules/ia_css/ipu6/src/ia_css_terminal_manifest.c",
      "modules/ia_css/ipu6/src/ia_css_psys_program_manifest.c",
      "modules/ia_css/ipu6/src/ia_css_psys_process.c",
      "modules/ia_css/ipu6/src/ia_css_psys_terminal.c",
      "modules/ia_css/ipu6/src/ia_css_psys_process_group_cmd_impl.c",
      "modules/ia_css/ipu6/src/vied_nci_psys_system.c",
      "modules/ia_css/ipu6/src/ia_css_terminal.c",
      "modules/ia_css/ipu6/src/ia_css_program_group_data.c",
      "modules/ia_css/ipu6/src/ia_css_rbm.c",
    ]
    include_dirs += [
      "modules/ia_css/ipu6/include",
    ]
  }
  deps = [ "//camera/common/libcamera_ipc:libcamera_ipc_mojom",
           "//camera/common:libcamera_jpeg",  ]
}

shared_library("libcam_algo") {
  sources = [
    "src/3a/DvsResult.cpp",
    "src/iutils/Utils.cpp",
    "src/iutils/Trace.cpp",
    "src/iutils/ScopedAtrace.cpp",
    "src/iutils/Thread.cpp",
    "src/iutils/CameraLog.cpp",
    "src/platformdata/gc/FormatUtils.cpp",
    "src/platformdata/gc/GraphUtils.cpp",
    "src/core/psysprocessor/PGUtils.cpp",
    "modules/ia_cipr/src/Utils.cpp",
    "modules/sandboxing/IPCCommon.cpp",
    "modules/sandboxing/IPCIntelLard.cpp",
    "modules/sandboxing/IPCIntelFD.cpp",
    "modules/sandboxing/IPCGraphConfig.cpp",
    "modules/sandboxing/IPCIntelCmc.cpp",
    "modules/sandboxing/IPCIntelMkn.cpp",
    "modules/sandboxing/IPCIntelLtm.cpp",
    "modules/sandboxing/IPCIntelAiq.cpp",
    "modules/sandboxing/IPCIntelDvs.cpp",
    "modules/sandboxing/IPCIspParamAdaptor.cpp",
    "modules/sandboxing/IPCIntelPGParam.cpp",
    "modules/sandboxing/server/IntelCPUAlgoServer.cpp",
    "modules/sandboxing/server/IntelAlgoServer.cpp",
    "modules/sandboxing/server/IntelLardServer.cpp",
    "modules/sandboxing/server/IntelFDServer.cpp",
    "modules/sandboxing/server/GraphConfigServer.cpp",
    "modules/sandboxing/server/IntelCmcServer.cpp",
    "modules/sandboxing/server/IntelMknServer.cpp",
    "modules/sandboxing/server/IntelLtmServer.cpp",
    "modules/sandboxing/server/IntelAiqServer.cpp",
    "modules/sandboxing/server/IntelDvsServer.cpp",
    "modules/sandboxing/server/IspParamAdaptorServer.cpp",
    "modules/sandboxing/server/IntelPGParamServer.cpp",
    "modules/algowrapper/IntelLard.cpp",
    "modules/algowrapper/IntelFaceDetection.cpp",
    "modules/algowrapper/graph/GraphConfigImpl.cpp",
    "modules/algowrapper/graph/GraphConfigPipe.cpp",
    "modules/algowrapper/IntelCmc.cpp",
    "modules/algowrapper/IntelMkn.cpp",
    "modules/algowrapper/IntelLtm.cpp",
    "modules/algowrapper/IntelAiq.cpp",
    "modules/algowrapper/IntelDvs.cpp",
    "modules/algowrapper/IntelIspParamAdaptor.cpp",
    "modules/algowrapper/IntelPGParam.cpp",
    "src/3a/AiqUtils.cpp",
  ]
  cflags_cc = [
    "-fvisibility=default",
  ]
  include_dirs = [
    ".",
    "include",
    "include/api",
    "include/utils",
    "include/linux",
    "src",
    "src/fd",
    "src/platformdata",
    "src/platformdata/gc",
    "src/v4l2",
    "src/iutils",
    "src/core",
    "src/core/psysprocessor",
    "src/metadata",
    "src/3a/intel3a",
    "src/3a/external",
    "src/3a",
    "src/image_process",
    "src/image_process/chrome",
    "src/jpeg/",
    "src/jpeg/chrome",
    "aal",
    "aal/chrome",
    "modules/memory",
    "modules/memory/chrome",
    "include/ia_imaging",
    "include",
    "include/gcss",
 ]
  defines = [
    "CAL_BUILD",
    "IPU_SYSVER_IPU6",
    "USE_PG_LITE_PIPE",
    "HAVE_LINUX_OS",
    "__STDC_FORMAT_MACROS",
    "HAVE_PTHREADS",
    "HAVE_IA_TYPES",
    "HAVE_PRCTL",
    "CAMERA_HAL_DEBUG",
    "DUMP_IMAGE",
    "HAL_PIXEL_FORMAT_NV12_LINEAR_CAMERA_INTEL=0x10F",
    "ENABLE_SANDBOXING",
    "FACE_DETECTION",
  ]
  libs = [
    "ia_aiq",
    "ia_cmc_parser",
    "ia_exc",
    "ia_log",
    "ia_mkn",
    "ia_ltm",
    "ia_isp_bxt",
    "ia_dvs",
    "ia_lard",
    "pvl_eye_detection",
    "pvl_face_detection",
    "pvl_mouth_detection",
    "gcss",
    "ia_aiqb_parser",
  ]
  pkg_deps = [
    "cros-camera-android-headers",
    "libcab",
    "libmojo",
  ]
  if (use.ipu6se) {
    libs += [
      "ipu6sepla",
      "ia_p2p_ipu6sepla",
    ]
    defines += [
      "IPU_SYSVER_ipu6v3",
    ]
    include_dirs += [
      "modules/ia_css/ipu6se/include",
    ]
  } else if (use.ipu6ep) {
    libs += [
      "ipu6ep",
      "ia_p2p_ipu6ep",
    ]
    defines += [
      "IPU_SYSVER_ipu6v5",
    ]
    include_dirs += [
      "modules/ia_css/ipu6ep/include",
    ]
  } else {
    libs += [
      "ipu6",
      "ia_p2p_ipu6",
    ]
    include_dirs += [
      "modules/ia_css/ipu6/include",
    ]
  }
  deps = [ "//camera/common/libcamera_ipc:libcamera_ipc_mojom" ]
}

if (use.ipu6se) {
  shared_library("libcam_algo_vendor_gpu") {
    sources = [
      "src/iutils/Utils.cpp",
      "src/iutils/Trace.cpp",
      "src/iutils/ScopedAtrace.cpp",
      "src/iutils/Thread.cpp",
      "src/iutils/CameraLog.cpp",
      "modules/sandboxing/IPCCommon.cpp",
      "modules/sandboxing/server/IntelAlgoServer.cpp",
      "modules/sandboxing/server/IntelGPUAlgoServer.cpp",
      "modules/sandboxing/server/IntelTNRServer.cpp",
      "modules/algowrapper/IntelTNR7US.cpp",
    ]
    include_dirs = [
      ".",
      "include",
      "include/api",
      "include/utils",
      "include/linux",
      "src",
      "src/core",
      "src/fd",
      "src/platformdata",
      "src/3a",
      "src/platformdata/gc",
      "src/iutils",
      "src/metadata",
      "src/v4l2",
      "include",
      "include/ia_imaging",
      "include/gcss",
    ]
    defines = [
      "CAL_BUILD",
      "IPU_SYSVER_IPU6",
      "HAVE_LINUX_OS",
      "__STDC_FORMAT_MACROS",
      "HAVE_PTHREADS",
      "CAMERA_HAL_DEBUG",
      "ENABLE_SANDBOXING",
      "IPU_SYSVER_ipu6v3",
      "GPU_ALGO_SERVER",
      "TNR7_CM",
    ]
    libs = [
      "ia_log",
      "tnr7_cm",
    ]
    pkg_deps = [
      "cros-camera-android-headers",
      "libcab",
      "igfxcmrt",
      "libmojo",
    ]
    deps = [ "//camera/common/libcamera_ipc:libcamera_ipc_mojom" ]
  }
}
