Home | History | Annotate | Download | only in libxcam
      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