lib_LTLIBRARIES = libxcam_core.la

PTHREAD_LDFLAGS = -pthread

XCAM_CORE_CXXFLAGS = $(XCAM_CXXFLAGS)
XCAM_CORE_LIBS = -ldl   \
	$(NULL)

if DEBUG
endif

if HAVE_IA_AIQ
if USE_LOCAL_AIQ
IA_IMAGING_CFLAGS =  \
	-I$(top_srcdir)/ext/ia_imaging/include \
	$(NULL)

IA_IMAGING_LIBS =            \
	-L$(top_srcdir)/ext/ia_imaging/lib \
	-lia_aiq                 \
	-lia_isp_2_2             \
	-lia_cmc_parser          \
	-lia_mkn                 \
	-lia_nvm                 \
	-lia_tools               \
	-lia_log                 \
	$(NULL)

else
IA_IMAGING_CFLAGS =  $(IA_AIQ_CFLAGS)
IA_IMAGING_LIBS =  $(IA_AIQ_LIBS)
endif

XCAM_CORE_CXXFLAGS +=             \
	$(IA_IMAGING_CFLAGS)     \
	$(NULL)

XCAM_CORE_LIBS +=                 \
	$(IA_IMAGING_LIBS)       \
	$(NULL)

endif

if USE_LOCAL_ATOMISP
XCAM_CORE_CXXFLAGS +=        \
	-I$(top_srcdir)/ext/atomisp \
	$(NULL)
endif

xcam_sources =               \
	atomisp_device.cpp       \
	analyzer_loader.cpp      \
	device_manager.cpp       \
	handler_interface.cpp    \
	image_processor.cpp      \
	isp_controller.cpp       \
	isp_image_processor.cpp  \
	isp_config_translator.cpp \
	poll_thread.cpp          \
	sensor_descriptor.cpp    \
	v4l2_buffer_proxy.cpp    \
	v4l2_device.cpp          \
	video_buffer.cpp         \
	x3a_analyzer.cpp         \
	x3a_analyzer_manager.cpp \
	x3a_analyzer_simple.cpp  \
	x3a_image_process_center.cpp  \
	x3a_isp_config.cpp       \
	x3a_result.cpp           \
	x3a_result_factory.cpp   \
	x3a_statistics_queue.cpp \
	xcam_common.cpp          \
	xcam_thread.cpp          \
	$(NULL)

if HAVE_IA_AIQ
xcam_sources +=              \
	libtbd.c                 \
	xcam_cpf_reader.c        \
	aiq_handler.cpp          \
	x3a_analyzer_aiq.cpp     \
	$(NULL)
endif

if HAVE_LIBCL
XCAM_CORE_CXXFLAGS +=        \
	$(LIBCL_CFLAGS)          \
	-I$(top_srcdir)/cl_kernel \
	$(NULL)

XCAM_CORE_LIBS +=            \
	$(LIBCL_LIBS)            \
	$(NULL)

xcam_sources +=              \
	cl_context.cpp           \
	cl_device.cpp            \
	cl_kernel.cpp            \
	cl_memory.cpp            \
	cl_image_handler.cpp     \
	cl_image_processor.cpp   \
	cl_demo_handler.cpp      \
        cl_blc_handler.cpp       \
	drm_bo_buffer.cpp        \
	cl_hdr_handler.cpp       \
	cl_demosaic_handler.cpp  \
	cl_csc_handler.cpp       \
	$(NULL)
endif

if HAVE_LIBDRM
XCAM_CORE_CXXFLAGS += $(LIBDRM_CFLAGS)
XCAM_CORE_LIBS +=            \
	-ldrm_intel              \
	$(LIBDRM_LIBS)           \
	$(NULL)

xcam_sources +=              \
	drm_display.cpp	         \
	drm_v4l2_buffer.cpp	 \
	$(NULL)
endif

libxcam_core_la_CXXFLAGS  =  \
	$(XCAM_CORE_CXXFLAGS)    \
	$(NULL)

libxcam_core_la_SOURCES =    \
	$(xcam_sources)          \
	$(NULL)

libxcam_core_la_LDFLAGS =    \
	-no-undefined            \
	$(PTHREAD_LDFLAGS)       \
	$(NULL)

libxcam_core_la_LIBADD =     \
	$(XCAM_CORE_LIBS)             \
	$(NULL)


libxcam_coreincludedir =  $(includedir)/xcam

nobase_libxcam_coreinclude_HEADERS =  \
	base/xcam_3a_result.h      \
	base/xcam_3a_types.h       \
	base/xcam_3a_description.h \
	base/xcam_params.h         \
	base/xcam_common.h         \
	base/xcam_defs.h           \
	device_manager.h           \
	handler_interface.h        \
	image_processor.h          \
	safe_list.h                \
	smartptr.h                 \
	v4l2_buffer_proxy.h        \
	v4l2_device.h              \
	video_buffer.h             \
	x3a_analyzer.h             \
	x3a_analyzer_manager.h     \
	x3a_event.h                \
	x3a_image_process_center.h \
	x3a_isp_config.h           \
	x3a_result.h               \
	xcam_mutex.h               \
	xcam_thread.h              \
	xcam_utils.h               \
	$(NULL)

if HAVE_LIBDRM
nobase_libxcam_coreinclude_HEADERS +=  \
	drm_display.h              \
	drm_v4l2_buffer.h	   \
	$(NULL)
endif
