1 # -*- Autoconf -*- 2 # Process this file with autoconf to produce a configure script. 3 4 m4_define([xcam_major_version], [1]) 5 m4_define([xcam_minor_version], [1]) 6 m4_define([xcam_micro_version], [0]) 7 m4_define([xcam_version], [xcam_major_version.xcam_minor_version.xcam_micro_version]) 8 9 AC_PREREQ([2.60]) 10 AC_CONFIG_MACRO_DIR([m4]) 11 AC_INIT([libxcam], [xcam_version], [feng.yuan (a] intel.com], [libxcam]) 12 AC_CONFIG_HEADERS([config.h]) 13 AM_INIT_AUTOMAKE([foreign subdir-objects]) 14 15 #xcam version 16 XCAM_MAJOR_VERSION=xcam_major_version 17 XCAM_MINOR_VERSION=xcam_minor_version 18 XCAM_MICRO_VERSION=xcam_micro_version 19 XCAM_VERSION=xcam_version 20 XCAM_VERSION_HEX="0x$XCAM_MAJOR_VERSION$XCAM_MINOR_VERSION$XCAM_MICRO_VERSION" 21 AC_DEFINE_UNQUOTED(XCAM_VERSION, $XCAM_VERSION_HEX, 22 [define libxcam version]) 23 AC_SUBST(XCAM_VERSION) 24 25 XCAM_LT_VERSION="xcam_major_version:xcam_minor_version:xcam_micro_version" 26 XCAM_LT_LDFLAGS="-version-number $XCAM_LT_VERSION" 27 AC_SUBST(XCAM_LT_VERSION) 28 AC_SUBST(XCAM_LT_LDFLAGS) 29 30 # Checks for programs. 31 AC_PROG_CC 32 AC_PROG_CXX 33 AC_PROG_INSTALL 34 PKG_PROG_PKG_CONFIG 35 LT_INIT 36 37 AC_ARG_ENABLE(debug, 38 AS_HELP_STRING([--enable-debug], 39 [enable debug, @<:@default=no@:>@]), 40 [], [enable_debug="no"]) 41 AM_CONDITIONAL([DEBUG], [test "$enable_debug" = "yes"]) 42 43 AC_ARG_ENABLE(profiling, 44 AS_HELP_STRING([--enable-profiling], 45 [enable profiling, @<:@default=no@:>@]), 46 [], [enable_profiling="no"]) 47 48 AC_ARG_ENABLE(drm, 49 AS_HELP_STRING([--enable-drm], 50 [enable drm buffer, @<:@default=no@:>@]), 51 [], [enable_drm="no"]) 52 53 AC_ARG_ENABLE([aiq], 54 AS_HELP_STRING([--enable-aiq], 55 [enable Aiq 3A algorithm build, @<:@default=no@:>@]), 56 [], [enable_aiq="no"]) 57 58 AC_ARG_ENABLE([gst], 59 AS_HELP_STRING([--enable-gst], 60 [enable gstreamer plugin build, @<:@default=no@:>@]), 61 [], [enable_gst="no"]) 62 63 AC_ARG_ENABLE(libcl, 64 AS_HELP_STRING([--enable-libcl], 65 [enable libcl image processor, @<:@default=yes@:>@]), 66 [], [enable_libcl="yes"]) 67 68 AC_ARG_ENABLE(opencv, 69 AS_HELP_STRING([--enable-opencv], 70 [enable opencv library, @<:@default=no@:>@]), 71 [], [enable_opencv="no"]) 72 73 AC_ARG_ENABLE(capi, 74 AS_HELP_STRING([--enable-capi], 75 [enable libxcam-capi library, @<:@default=yes@:>@]), 76 [], [enable_capi="yes"]) 77 78 # documentation 79 AC_ARG_ENABLE(docs, 80 [AC_HELP_STRING([--enable-docs], 81 [build Doxygen documentation @<:@default=no@:>@])], 82 [], [enable_docs="no"]) 83 84 AC_ARG_ENABLE([3alib], 85 AS_HELP_STRING([--enable-3alib], 86 [enable 3A lib build, @<:@default=no@:>@]), 87 [], [enable_3alib="no"]) 88 89 AC_ARG_ENABLE([smartlib], 90 AS_HELP_STRING([--enable-smartlib], 91 [enable smart analysis lib build, @<:@default=no@:>@]), 92 [], [enable_smartlib="no"]) 93 94 # Check for Doxygen 95 if test "$enable_docs" = "yes"; then 96 AC_CHECK_TOOL([DOXYGEN], [doxygen], [no]) 97 if test "$DOXYGEN" = "no"; then 98 enable_docs="no" 99 fi 100 fi 101 AM_CONDITIONAL(ENABLE_DOCS, test "$enable_docs" = "yes") 102 103 # check profiling 104 ENABLE_PROFILING=0 105 if test "$enable_profiling" = "yes"; then 106 ENABLE_PROFILING=1 107 fi 108 109 # check drm 110 HAVE_LIBDRM=0 111 if test "$enable_drm" = "yes"; then 112 PKG_CHECK_MODULES(LIBDRM, [libdrm], [HAVE_LIBDRM=1], [HAVE_LIBDRM=0]) 113 fi 114 115 # check libcl 116 HAVE_LIBCL=0 117 if test "$enable_libcl" = "yes"; then 118 PKG_CHECK_MODULES(LIBCL, [libcl], [HAVE_LIBCL=1], [HAVE_LIBCL=0]) 119 fi 120 121 if test "$enable_libcl" = "yes" && test "$HAVE_LIBCL" -eq 0; then 122 PKG_CHECK_MODULES(LIBCL, [OpenCL], [HAVE_LIBCL=1], [HAVE_LIBCL=0]) 123 fi 124 125 if test "$HAVE_LIBCL" -eq 1; then 126 AC_CHECK_PROGS([GAWK], [gawk], [no]) 127 if test "x$GAWK" = "xno"; then 128 AC_MSG_ERROR([gawk not found]) 129 fi 130 131 if test "$HAVE_LIBDRM" -eq 1; then 132 HAVE_CL_INTEL_H=1 133 AC_CHECK_HEADERS([CL/cl_intel.h], [HAVE_CL_INTEL_H=1], [HAVE_CL_INTEL_H=0]) 134 if test "$HAVE_CL_INTEL_H" -eq 0; then 135 # https://raw.githubusercontent.com/intel/beignet/Release_v1.3/include/CL/cl_intel.h 136 XCAM_WGET( 137 [https://cgit.freedesktop.org/beignet/plain/include/CL/cl_intel.h?id=Release_v1.3.0], 138 [./ext/beignet/include/CL/cl_intel.h], 139 [6a6619073cb35e6987b7379a5a1a1497]) 140 141 CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/ext/beignet/include" 142 fi 143 fi 144 fi 145 146 # check opencv minimum version number 147 HAVE_OPENCV=0 148 if test "$enable_opencv" = "yes"; then 149 OPENCV_VERSION_STR=`$PKG_CONFIG --modversion opencv` 150 PKG_CHECK_MODULES([OPENCV], [opencv >= 3.0.0], [HAVE_OPENCV=1], [HAVE_OPENCV=0]) 151 echo "OpenCV version:"$OPENCV_VERSION_STR "minimum required version:3.0.0" "have opencv:"$HAVE_OPENCV 152 fi 153 154 # check opencv videostab module 155 ENABLE_DVS=0 156 if test "$HAVE_OPENCV" -eq 1; then 157 AC_LANG(C++) 158 saved_CPPFLAGS="$CPPFLAGS" 159 CPPFLAGS="$CPPFLAGS $OPENCV_CFLAGS" 160 saved_LIBS="$LIBS" 161 LIBS="$LIBS $OPENCV_LIBS" 162 AC_CHECK_HEADER([opencv2/videostab.hpp], [ENABLE_DVS=1], [ENABLE_DVS=0]) 163 CPPFLAGS="$saved_CPPFLAGS" 164 LIBS="$saved_LIBS" 165 fi 166 167 # check dvs opencl path 168 ENABLE_DVS_CL_PATH=0 169 if test "$HAVE_OPENCV" -eq 1; then 170 AC_LANG(C++) 171 saved_CPPFLAGS="$CPPFLAGS" 172 CPPFLAGS="$CPPFLAGS $OPENCV_CFLAGS" 173 saved_LIBS="$LIBS" 174 LIBS="$LIBS $OPENCV_LIBS" 175 AC_COMPILE_IFELSE( 176 [AC_LANG_PROGRAM( 177 [[#include <opencv2/core.hpp> 178 #include <opencv2/opencv.hpp> 179 ]], 180 [[cv::UMat frame0; 181 cv::UMat frame1; 182 cv::videostab::MotionEstimatorRansacL2 est; 183 cv::videostab::KeypointBasedMotionEstimator kpest(&est); 184 kpest.estimate(frame0, frame1); 185 ]] 186 )], 187 [ENABLE_DVS_CL_PATH=1], 188 [ENABLE_DVS_CL_PATH=0] 189 ) 190 CPPFLAGS="$saved_CPPFLAGS" 191 LIBS="$saved_LIBS" 192 fi 193 194 # check capi build 195 ENABLE_CAPI=0 196 if test "$enable_capi" = "yes"; then 197 ENABLE_CAPI=1 198 fi 199 200 # check AIQ 201 ENABLE_IA_AIQ=0 202 USE_LOCAL_AIQ=0 203 if test "$enable_aiq" = "yes"; then 204 ENABLE_IA_AIQ=1 205 PKG_CHECK_MODULES(IA_AIQ, ia_imaging, 206 PKG_CHECK_EXISTS(ia_imaging >= 2.7, 207 AC_DEFINE(HAVE_AIQ_2_7, 1, [defined if module ia_imaging >= v2.0_007 is found]) 208 ), 209 [USE_LOCAL_AIQ=1] 210 ) 211 212 if test "$USE_LOCAL_AIQ" -eq 1; then 213 #check HAVE_AIQ_2_7 214 AC_CACHE_CHECK([for ext/ia_imaging >=v2.0_007], 215 ac_cv_have_aiq_2_7, [ 216 saved_CPPFLAGS="$CPPFLAGS" 217 CPPFLAGS="$CPPFLAGS -I./ext/ia_imaging/include" 218 saved_LIBS="$LIBS" 219 LIBS="$LIBS" 220 AC_COMPILE_IFELSE( 221 [AC_LANG_PROGRAM( 222 [[#include <stdint.h> 223 #include <stdio.h> 224 #include "ia_aiq_types.h" 225 ]], 226 [[ia_aiq_ae_results ae_result; 227 ae_result.flashes = NULL; 228 ]] 229 )], 230 [ac_cv_have_aiq_2_7="yes"], 231 [ac_cv_have_aiq_2_7="no"] 232 ) 233 CPPFLAGS="$saved_CPPFLAGS" 234 LIBS="$saved_LIBS" 235 ]) 236 237 if test "$ac_cv_have_aiq_2_7" = "yes"; then 238 AC_DEFINE(HAVE_AIQ_2_7, 1, [defined if ia_imaging >= v2.0_007 is found]) 239 fi 240 fi 241 242 if test "$USE_LOCAL_AIQ" -eq 0; then 243 IA_IMAGING_CFLAGS="$IA_AIQ_CFLAGS" 244 IA_IMAGING_LIBS="$IA_AIQ_LIBS" 245 else 246 IA_IMAGING_CFLAGS="-I\$(top_srcdir)/ext/ia_imaging/include" 247 IA_IMAGING_LIBS="-L\$(top_srcdir)/ext/ia_imaging/lib -lia_aiq -lia_isp_2_2 -lia_cmc_parser -lia_mkn -lia_nvm -lia_exc -lia_log" 248 fi 249 AC_SUBST(IA_IMAGING_CFLAGS) 250 AC_SUBST(IA_IMAGING_LIBS) 251 LIBS="$LIBS $IA_IMAGING_LIBS" 252 fi 253 254 # check 3a lib build 255 ENABLE_3ALIB=0 256 if test "$enable_3alib" = "yes"; then 257 ENABLE_3ALIB=1 258 fi 259 AM_CONDITIONAL([ENABLE_3ALIB], [test "$ENABLE_3ALIB" -eq 1]) 260 261 # check smart analysis lib build 262 ENABLE_SMART_LIB=0 263 if test "$enable_smartlib" = "yes"; then 264 ENABLE_SMART_LIB=1 265 fi 266 AM_CONDITIONAL([ENABLE_SMART_LIB], [test "$ENABLE_SMART_LIB" -eq 1]) 267 268 # check atomisp headers 269 USE_LOCAL_ATOMISP=0 270 #AC_CHECK_HEADERS([linux/atomisp.h], [USE_LOCAL_ATOMISP=0], [USE_LOCAL_ATOMISP=1]) 271 AC_CACHE_CHECK([for linux/atomisp.h], 272 ac_cv_have_atomisp_headers, [ 273 saved_CPPFLAGS="$CPPFLAGS" 274 CPPFLAGS="$CPPFLAGS" 275 saved_LIBS="$LIBS" 276 LIBS="$LIBS" 277 AC_COMPILE_IFELSE( 278 [AC_LANG_PROGRAM( 279 [[#ifndef __user 280 #define __user 281 #endif 282 #include <stdint.h> 283 #include <stdio.h> 284 #include <linux/atomisp.h>]], 285 [[struct atomisp_parm param;]] 286 )], 287 [ac_cv_have_atomisp_headers="yes"], 288 [ac_cv_have_atomisp_headers="no" USE_LOCAL_ATOMISP=1] 289 ) 290 CPPFLAGS="$saved_CPPFLAGS" 291 LIBS="$saved_LIBS" 292 ]) 293 294 295 # build gstreamer plugin 296 GST_API_VERSION=1.0 297 GST_VERSION_REQUIRED=1.2.3 298 ENABLE_GST=0 299 if test "$enable_gst" = "yes"; then 300 ENABLE_GST=1 301 PKG_CHECK_MODULES([GST], [gstreamer-$GST_API_VERSION >= $GST_VERSION_REQUIRED]) 302 PKG_CHECK_MODULES([GST_ALLOCATOR], [gstreamer-allocators-$GST_API_VERSION >= $GST_VERSION_REQUIRED]) 303 PKG_CHECK_MODULES([GST_VIDEO], [gstreamer-video-$GST_API_VERSION >= $GST_VERSION_REQUIRED]) 304 fi 305 AM_CONDITIONAL([ENABLE_GST], [test "$ENABLE_GST" -eq 1]) 306 307 dnl set XCAM_CFLAGS and XCAM_CXXFLAGS 308 XCAM_CFLAGS=" -fPIC -DSTDC99 -W -Wall -D_REENTRANT -Wformat -Wformat-security -fstack-protector" 309 if test "$enable_debug" = "yes"; then 310 XCAM_CFLAGS="$XCAM_CFLAGS -g -DDEBUG" 311 fi 312 XCAM_CXXFLAGS="$XCAM_CFLAGS -std=c++0x" 313 AC_SUBST(XCAM_CFLAGS) 314 AC_SUBST(XCAM_CXXFLAGS) 315 316 PTHREAD_LDFLAGS="$PTHREAD_LDFLAGS -pthread" 317 AC_SUBST(PTHREAD_LDFLAGS) 318 319 # define macor in config.h 320 AC_DEFINE_UNQUOTED([ENABLE_PROFILING], $ENABLE_PROFILING, 321 [enable profiling]) 322 323 AC_DEFINE_UNQUOTED([HAVE_LIBDRM], $HAVE_LIBDRM, 324 [have libdrm]) 325 AM_CONDITIONAL([HAVE_LIBDRM], [test "$HAVE_LIBDRM" -eq 1]) 326 327 AC_DEFINE_UNQUOTED([HAVE_LIBCL], $HAVE_LIBCL, 328 [have libcl]) 329 AM_CONDITIONAL([HAVE_LIBCL], [test "$HAVE_LIBCL" -eq 1]) 330 331 AC_DEFINE_UNQUOTED([HAVE_OPENCV], $HAVE_OPENCV, 332 [have opencv]) 333 AM_CONDITIONAL([HAVE_OPENCV], [test "$HAVE_OPENCV" -eq 1]) 334 335 AC_DEFINE_UNQUOTED([ENABLE_DVS], $ENABLE_DVS, 336 [enable dvs]) 337 AM_CONDITIONAL([ENABLE_DVS], [test "$ENABLE_DVS" -eq 1]) 338 339 AC_DEFINE_UNQUOTED([ENABLE_DVS_CL_PATH], $ENABLE_DVS_CL_PATH, 340 [enable dvs cl path]) 341 AM_CONDITIONAL([ENABLE_DVS_CL_PATH], [test "$ENABLE_DVS_CL_PATH" -eq 1]) 342 343 AC_DEFINE_UNQUOTED([ENABLE_CAPI], $ENABLE_CAPI, 344 [enable capi build]) 345 AM_CONDITIONAL([ENABLE_CAPI], [test "$ENABLE_CAPI" -eq 1]) 346 347 #atomisp 348 AM_CONDITIONAL([USE_LOCAL_ATOMISP], [test "$USE_LOCAL_ATOMISP" -eq 1]) 349 350 # aiq (ia_imaging) 351 AC_DEFINE_UNQUOTED([HAVE_IA_AIQ], $ENABLE_IA_AIQ, 352 [have aiq binary]) 353 AM_CONDITIONAL([ENABLE_IA_AIQ], [test "$ENABLE_IA_AIQ" -eq 1]) 354 AM_CONDITIONAL([USE_LOCAL_AIQ], [test "$USE_LOCAL_AIQ" -eq 1]) 355 356 AC_CONFIG_FILES([Makefile 357 clx_kernel/Makefile 358 xcore/Makefile 359 modules/Makefile 360 modules/soft/Makefile 361 modules/isp/Makefile 362 modules/ocl/Makefile 363 wrapper/Makefile 364 wrapper/gstreamer/Makefile 365 wrapper/gstreamer/interface/Makefile 366 plugins/Makefile 367 plugins/3a/hybrid/Makefile 368 plugins/3a/aiq/Makefile 369 plugins/3a/Makefile 370 plugins/smart/Makefile 371 plugins/smart/dvs/Makefile 372 plugins/smart/dvs/libdvs/Makefile 373 plugins/smart/sample/Makefile 374 capi/Makefile 375 tests/Makefile 376 pkgconfig/Makefile 377 pkgconfig/libxcam.pc 378 ]) 379 380 AC_OUTPUT 381 382 if test "$HAVE_LIBDRM" -eq 1; then have_drm="yes"; else have_drm="no"; fi 383 if test "$USE_LOCAL_AIQ" -eq 1; then use_local_aiq="yes"; else use_local_aiq="no"; fi 384 if test "$USE_LOCAL_ATOMISP" -eq 1; then use_local_atomisp="yes"; else use_local_atomisp="no"; fi 385 if test "$HAVE_LIBCL" -eq 1; then have_libcl="yes"; else have_libcl="no"; fi 386 if test "$HAVE_OPENCV" -eq 1; then have_opencv="yes"; else have_opencv="no"; fi 387 if test "$ENABLE_DVS" -eq 1; then enable_dvs="yes"; else enable_dvs="no"; fi 388 389 echo " 390 libxcam configuration summary 391 version : $XCAM_VERSION 392 enable debug : $enable_debug 393 enable profiling : $enable_profiling 394 enable drm lib : $have_drm 395 build GStreamer plugin : $enable_gst 396 build aiq analyzer : $enable_aiq 397 use local aiq : $use_local_aiq 398 use local atomisp : $use_local_atomisp 399 have opencl lib : $have_libcl 400 have opencv lib : $have_opencv 401 enable 3a lib : $enable_3alib 402 enable smart analysis lib : $enable_smartlib 403 enable dvs : $enable_dvs 404 enable libxcam-capi lib : $enable_capi 405 " 406