project(config-common)

# Check whether GBM header is present.
include(CheckIncludeFile)
check_include_file("gbm_priv.h" HAVE_GBM_H)

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DTARGET_ION_ABI_VERSION=2")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DFLUSH_RESTART_NOTAVAILABLE")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DDISABLE_OP_MODES")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DQCAMERA3_TAG_LOCAL_COPY")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DCAM_ARCH_V2")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DJPEG_BLOB_OFFSET=0")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DHFR_THRESHOLD=120")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DUSE_FPS_IDX")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DDISABLE_RESCALER_COLORSPACE")

set(JPEG_LIB chiofflinepostproclib.so.0)

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DJPEG_POSTPROC_LIB=\"\\\"${JPEG_LIB}\\\"\"")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DEIS_MODES_ENABLE")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DVHDR_MODES_ENABLE")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DSW_TNR_ENABLE")

set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DOFFLINE_IFE_ENABLE")

set(ENABLE_OFFLINE_JPEG "0" PARENT_SCOPE)

if(HAVE_GBM_H)
set(USE_LIBGBM "1" PARENT_SCOPE)
set(COMMON_CXX_FLAGS "${COMMON_CXX_FLAGS} -DUSE_LIBGBM")
else()
set(USE_LIBGBM "0" PARENT_SCOPE)
endif()

set(DISABLE_RESCALER_COLORSPACE "1" PARENT_SCOPE)

if(BUILD_CATEGORY STREQUAL "BASE" OR BUILD_CATEGORY STREQUAL "ALL")
   set(CAMERAADAPTOR_ENABLED "1" PARENT_SCOPE)
   set(QMMF_UTILS_ENABLED "1" PARENT_SCOPE)
   set(RESIZER_FASTCV_ENABLED "0" PARENT_SCOPE)
   set(RESIZER_NEON_ENABLED "0" PARENT_SCOPE)
   set(MEMORY_ENABLED "1" PARENT_SCOPE)
endif()

if(BUILD_CATEGORY STREQUAL "RECORDER" OR BUILD_CATEGORY STREQUAL "ALL")
   set(RECORDER_CLIENT_ENABLED "1" PARENT_SCOPE)
   set(RECORDER_SERVICE_ENABLED "1" PARENT_SCOPE)
endif()

if(BUILD_CATEGORY STREQUAL "CLIENT" OR BUILD_CATEGORY STREQUAL "ALL")
   set(RECORDER_CLIENT_ENABLED "1" PARENT_SCOPE)
endif()

if(BUILD_CATEGORY STREQUAL "SERVER" OR BUILD_CATEGORY STREQUAL "ALL")
   set(QMMF_SERVER_ENABLED "1" PARENT_SCOPE)
   set(CAM_SERVER_ENABLED "1" PARENT_SCOPE)
endif()

if(BUILD_CATEGORY STREQUAL "COMMON" OR BUILD_CATEGORY STREQUAL "ALL")
   set(QMMF_UTILS_ENABLED "1" PARENT_SCOPE)
   set(QMMF_PROTO_ENABLED "1" PARENT_SCOPE)
   set(QMMF_CONFIG_ENABLED "1" PARENT_SCOPE)
   set(QMMF_CAMERA_METADATA_ENABLED "1" PARENT_SCOPE)
endif()

if(BUILD_CATEGORY STREQUAL "TARGET" OR BUILD_CATEGORY STREQUAL "ALL")
   set(CAMERAADAPTOR_ENABLED "1" PARENT_SCOPE)
   set(RECORDER_SERVICE_ENABLED "1" PARENT_SCOPE)
   set(MEMORY_ENABLED "1" PARENT_SCOPE)

   SET(SYSROOT_INCLUDE_DIR "${CMAKE_SYSROOT}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_INCLUDEDIR}")

   # TODO: Find a better way to search for camx header presence
   find_path(CAMX_KODIAK_DIR
     camx-v1/camx-api/camx/service/hardware/camera_common.h
     PATHS "${SYSROOT_INCLUDE_DIR}"
     NO_DEFAULT_PATH
   )

   find_path(CAMX_DIR
     camx-v2/camx-api/camx/service/hardware/camera_common.h
     PATHS "${SYSROOT_INCLUDE_DIR}"
     NO_DEFAULT_PATH
   )

   # In single bb, both camx-kodiak and lemans are in DEPENDS, so
   # find_path identifies both dirs. Include Kodiak paths only if
   # building for kodiak.
   if(CAMX_KODIAK_DIR)
     set(CAMX_KODIAK_INCLUDE_DIRS
       "${SYSROOT_INCLUDE_DIR}/camx-v1/"
       "${SYSROOT_INCLUDE_DIR}/camx-v1/camx-api/camx/service"
       "${SYSROOT_INCLUDE_DIR}/camx-v1/camx-api/camx/service/hardware"
       "${SYSROOT_INCLUDE_DIR}/camx-v1/camx-api/camx/service/system"
        PARENT_SCOPE
     )
   endif()

   if(CAMX_DIR)
     set(CAMX_TARGET_INCLUDE_DIRS
       "${SYSROOT_INCLUDE_DIR}/camx-v2/"
       "${SYSROOT_INCLUDE_DIR}/camx-v2/camx-api/camx/service"
       "${SYSROOT_INCLUDE_DIR}/camx-v2/camx-api/camx/service/hardware"
       "${SYSROOT_INCLUDE_DIR}/camx-v2/camx-api/camx/service/system"
       PARENT_SCOPE
     )
   endif()

endif()

if(BUILD_CATEGORY STREQUAL "TESTS" OR BUILD_CATEGORY STREQUAL "ALL")
   set(RECORDER_GTEST_ENABLED "0" PARENT_SCOPE)
   set(CAMERAADAPTOR_GTEST_ENABLED "0" PARENT_SCOPE)
   set(ENABLE_CAMERA_FACTORY_TEST FALSE PARENT_SCOPE)
endif()

set(COMMON_CXX_FLAGS ${COMMON_CXX_FLAGS} PARENT_SCOPE)
