diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 927 |
1 files changed, 927 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..f0f9723 --- /dev/null +++ b/configure.ac @@ -0,0 +1,927 @@ +changecom()dnl +dnl Process this file with autoconf to produce a configure script. +AC_PREREQ([2.68]) +AC_INIT([zbar],[0.23.93],[mchehab+huawei@kernel.org]) +m4_ifndef([AC_LANG_DEFINES_PROVIDED], + [m4_define([AC_LANG_DEFINES_PROVIDED])]) +AC_CONFIG_AUX_DIR(config) +AC_CONFIG_MACRO_DIR(config) +AM_INIT_AUTOMAKE([1.13 -Werror foreign subdir-objects std-options dist-bzip2]) +m4_pattern_allow([AM_PROG_AR]) +AC_CONFIG_HEADERS([include/config.h]) +AC_CONFIG_SRCDIR(zbar/scanner.c) +LT_PREREQ([2.2]) +LT_INIT([dlopen win32-dll]) +LT_LANG([Windows Resource]) +AM_SILENT_RULES([yes]) + +dnl update these just before each release (along w/package version above) +dnl LIB_VERSION update instructions copied from libtool docs: +dnl library version follows the form current:revision:age +dnl - If the library source code has changed at all since the last update, +dnl then increment revision (c:r:a becomes c:r+1:a). +dnl - If any interfaces have been added, removed, or changed, +dnl increment current, and set revision to 0. +dnl - If any interfaces have been added since the last public release, +dnl then increment age. +dnl - If any interfaces have been removed since the last public release, +dnl then set age to 0. +AC_SUBST([LIB_VERSION], [3:0:3]) +AC_SUBST([RELDATE], [2017-04-11]) + +dnl widget libraries use their own versioning. +dnl NB pygtk wrapper is *unversioned* +AC_SUBST([ZGTK_LIB_VERSION], [0:2:0]) +AC_SUBST([ZQT_LIB_VERSION], [1:2:1]) + +AC_DEFINE_UNQUOTED([ZBAR_VERSION_MAJOR], + [[`echo "$PACKAGE_VERSION" | sed -e 's/\..*$//'`]], + [Program major version (before the '.') as a number]) +AC_DEFINE_UNQUOTED([ZBAR_VERSION_MINOR], + [[`echo "$PACKAGE_VERSION" | sed -e 's/^[^\.]*\.\([^\.]*\).*/\1/'`]], + [Program minor version (after '.') as a number]) +AC_DEFINE_UNQUOTED([ZBAR_VERSION_PATCH], + [[`echo "$PACKAGE_VERSION" | sed -e 's/^[^\.]*\.[^\.]*\.*//' | sed s,^$,0,`]], + [Program patch version (after the second '.') as a number]) + +cur=`echo "$LIB_VERSION" | sed -e 's/:.*$//'` +age=`echo "$LIB_VERSION" | sed -e 's/^.*://'` +AC_DEFINE_UNQUOTED([LIB_VERSION_MAJOR], [[$(( $cur - $age ))]], + [Library major version]) +AC_DEFINE_UNQUOTED([LIB_VERSION_MINOR], [[$age]], + [Library minor version]) +AC_DEFINE_UNQUOTED([LIB_VERSION_REVISION], + [[`echo "$LIB_VERSION" | sed -e 's/^[^:]*:\([^:]*\):.*$/\1/'`]], + [Library revision]) + +AM_CPPFLAGS="-I\$(top_srcdir)/include" +AM_CFLAGS="-Wall -Wno-parentheses" +AM_CXXFLAGS="$AM_CFLAGS" +AC_SUBST([AM_CPPFLAGS]) +AC_SUBST([AM_CFLAGS]) +AC_SUBST([AM_CXXFLAGS]) + +dnl windows build + +AC_CANONICAL_HOST +case $host_os in + *cygwin* | *mingw* | *uwin* | *djgpp* | *ems* ) + win32="yes" + with_dbus="no" + AC_DEFINE([_WIN32_WINNT], [0x0500], [Minimum Windows API version]) + AC_FUNC_ALLOCA + AC_FUNC_ERROR_AT_LINE + AC_FUNC_FSEEKO + AC_CHECK_HEADERS([arpa/inet.h malloc.h mntent.h netdb.h netinet/in.h shadow.h sys/file.h sys/mount.h sys/param.h sys/socket.h sys/statfs.h sys/statvfs.h sys/vfs.h unistd.h values.h]) + ;; + * ) + win32="no" + ;; +esac +AM_CONDITIONAL([WIN32], [test "x$win32" = "xyes"]) + +dnl programs + +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CXX + +PKG_PROG_PKG_CONFIG + +dnl symbologies + +AC_ARG_ENABLE([codes], + [AS_HELP_STRING([--enable-codes=SYMS], + [select symbologies to compile [default=ean,databar,code128,code93,code39,codabar,i25,qrcode,sqcode]])], + [], + [enable_codes="ean,databar,code128,code93,code39,codabar,i25,qrcode,sqcode"]) + +AC_DEFUN([AC_DEFINE_SUBST], + [AC_DEFINE($1,$2,$3) + AC_SUBST($1,$2)]) + +AC_DEFUN([ZBAR_CHK_CODE], [ + AC_MSG_CHECKING([whether to build $2]) + enable_$1="no" + AH_TEMPLATE([ENABLE_]translit($1, a-z, A-Z), + [whether to build support for $2]) + AS_CASE([$enable_codes], + [*$1* | *all*], + [enable_$1="yes" + enabled_codes="$enabled_codes $1" + AC_DEFINE_SUBST([ENABLE_]translit($1, a-z, A-Z), [1]) + ], [ + disabled_codes="$disabled_codes $1" + AC_DEFINE_SUBST([ENABLE_]translit($1, a-z, A-Z), [0]) + ]) + AM_CONDITIONAL([ENABLE_]translit($1, a-z, A-Z), + [test "x$enable_$1" = "xyes"]) + AC_MSG_RESULT([$enable_$1]) +])dnl + +ZBAR_CHK_CODE([ean], [EAN symbologies]) +ZBAR_CHK_CODE([databar], [DataBar symbology]) +ZBAR_CHK_CODE([code128], [Code 128 symbology]) +ZBAR_CHK_CODE([code93], [Code 93 symbology]) +ZBAR_CHK_CODE([code39], [Code 39 symbology]) +ZBAR_CHK_CODE([codabar], [Codabar symbology]) +ZBAR_CHK_CODE([i25], [Interleaved 2 of 5 symbology]) +ZBAR_CHK_CODE([qrcode], [QR Code]) +ZBAR_CHK_CODE([sqcode], [SQ Code]) +ZBAR_CHK_CODE([pdf417], [PDF417 symbology (incomplete)]) + +dnl libraries + +AC_SEARCH_LIBS([clock_gettime], [rt pthread]) +AM_ICONV() +AM_GNU_GETTEXT([external]) +AM_GNU_GETTEXT_VERSION(0.20) +AM_GNU_GETTEXT_REQUIRE_VERSION(0.18) +AM_CONDITIONAL([USE_NLS], [test "x${USE_NLS}" = "xyes"]) + +dnl libraries linkage +AC_ARG_ENABLE([static_qt], + [AS_HELP_STRING([--enable-static-qt], + [Produce a static library for libzbarcam-qt])]) + +AS_IF([test x$enable_static_qt = xyes], [AC_SUBST([LIBQT_EXTRA_LDFLAGS], ["-static"])]) + + +dnl poll support + +AC_CHECK_HEADERS([poll.h], [have_poll="yes"], [have_poll="no"]) +AM_CONDITIONAL([HAVE_POLL], [test "x$have_poll" = "xyes"]) + +dnl pthreads +dnl FIXME this doesn't port well, integrate something like this: +dnl http://autoconf-archive.cryp.to/acx_pthread.html + +AC_ARG_ENABLE([pthread], + [AS_HELP_STRING([--disable-pthread], + [omit support for threaded applications])], + [], + [AS_IF([test "x$win32" = "xno"], + [enable_pthread="yes"], + [enable_pthread="no" +])]) + +AS_IF([test "x$enable_pthread" != "xno"], + [AC_CHECK_HEADERS([pthread.h], [], + [AC_MSG_FAILURE([test for pthread support failed! +configure --disable-pthread to skip threaded support.])]) + AC_CHECK_LIB([pthread], [pthread_create], [], + [AC_MSG_FAILURE([unable to link against -lpthread, although you +appear to have pthread.h? set LDFLAGS and/or LIBS to help the linker, +or configure --disable-pthread to skip threaded support.])]) + AC_DEFINE([__USE_UNIX98], [1], [used only for pthread debug attributes]) +]) + +dnl doc +AC_ARG_ENABLE([doc], + [AS_HELP_STRING([--disable-doc], + [disable building docs])], + [], + [enable_doc="yes"]) + +AS_IF([test "x$enable_doc" != "xno"], + [AC_ARG_VAR([XMLTO], [location of xmlto, used for optional documentation generation]) + AC_ARG_VAR([XMLTOFLAGS], [additional arguments for xmlto]) + AC_CHECK_PROGS([XMLTO], [xmlto])]) + +AS_IF([test "x$XMLTO" = "x"], enable_doc="no") + +AM_CONDITIONAL([HAVE_DOC], [test "x$enable_doc" != "xno"]) + +dnl video +AC_ARG_ENABLE([video], + [AS_HELP_STRING([--disable-video], + [exclude video scanner features])], + [], + [enable_video="yes"]) + +dnl video, directshow +AC_ARG_WITH([directshow], + [AS_HELP_STRING([--with-directshow], + [compile directshow driver on windows instead of vfw, +available only when video support is enabled])], + [], + [with_directshow="no"]) + +have_v4l1="no" +have_v4l2="no" +have_libv4l="no" +AS_IF([test "x$enable_video" = "xno"], + [], + [test "x$win32" = "xno"], + [AC_CHECK_HEADERS([linux/videodev.h], [have_v4l1="yes"]) + AC_CHECK_HEADERS([linux/videodev2.h], [have_v4l2="yes"]) + AC_CHECK_HEADERS([libv4l2.h], [have_libv4l="yes"]) + AS_IF([test "x$have_v4l2" = "xno" && test "x$have_v4l1" = "xno"], + [AC_MSG_FAILURE([test for video support failed! +rebuild your kernel to include video4linux support or +configure --disable-video to skip building video support.])], + [AS_IF([test "x$have_v4l2" = "xno"], + [AC_MSG_WARN([v4l2 API not detected, upgrade your kernel!])])] + )], + [AS_IF([test "x$with_directshow" != "xno"], + [with_video="directshow"], + [AC_CHECK_HEADERS([vfw.h], [with_video="vfw"], + [AC_MSG_FAILURE([test for VfW video support failed! +configure --disable-video to skip building video support.])],[#include <windows.h>])])]) + +AS_IF([test "x$have_libv4l" = "xyes"], + [PKG_CHECK_MODULES([V4L2], [libv4l2], [], + [AC_MSG_FAILURE([unable to find libv4l2.so])])], + [AC_MSG_WARN([libv4l not detected. Install it to support more cameras!])]) + +AM_CONDITIONAL([HAVE_VIDEO], [test "x$enable_video" != "xno"]) +AM_CONDITIONAL([HAVE_V4L1], [test "x$have_v4l1" != "xno"]) +AM_CONDITIONAL([HAVE_V4L2], [test "x$have_v4l2" != "xno"]) +AM_CONDITIONAL([HAVE_LIBV4L], [test "x$have_libv4l" != "xno"]) +AM_CONDITIONAL([WITH_DIRECTSHOW], [test "x$with_directshow" != "xno"]) + +dnl X +AC_ARG_VAR([XSHM_LIBS], [linker flags for X shared memory extension]) + +AS_IF([test "x$win32" != "xno"], + [have_x="no"], + [AC_PATH_XTRA + AH_BOTTOM([#ifndef X_DISPLAY_MISSING +# define HAVE_X +#endif +])]) +AM_CONDITIONAL([HAVE_X], [test "x$have_x" = "xyes"]) + +AS_IF([test "x$XSHM_LIBS" = "x"], [XSHM_LIBS="-lXext"]) +AC_ARG_WITH([xshm], + [AS_HELP_STRING([--without-xshm], + [disable support for X shared memory extension])], + [], + [with_xshm="check"]) + +AS_IF([test "x$with_xshm" != "xno"], + [AC_CHECK_HEADERS([X11/extensions/XShm.h], + [with_xshm="yes"], + [AS_IF([test "x$with_xshm" = "xcheck"], + [with_xshm="no"], + [AC_MSG_FAILURE([test for X shared memory extension failed! +install the X shared memory extension, specify --x-includes or +configure --without-xshm to disable the extension])])], + [[#include <X11/Xlib.h> +#include <sys/ipc.h> +#include <sys/shm.h> +]]) + AS_IF([test "x$with_xshm" != "xno"], + [AC_CHECK_LIB([Xext], [XShmQueryVersion], + [with_xshm="yes"], + [AC_MSG_FAILURE([unable to find XShmQueryVersion in $XSHM_LIBS! +specify XSHM_LIBS or configure --without-xshm to disable the extension])], + ["$X_LIBS" "$X_PRE_LIBS" -lX11 "$X_EXTRA_LIBS" "$XSHM_LIBS"]) + ]) +]) +AM_CONDITIONAL([HAVE_XSHM], [test "x$with_xshm" = "xyes"]) + +AC_ARG_VAR([XV_LIBS], [linker flags for XVideo extension]) +AS_IF([test "x$XV_LIBS" = "x"], [XV_LIBS="-lXv"]) +AC_ARG_WITH([xv], + [AS_HELP_STRING([--without-xv], + [disable support for XVideo extension])], + [], + [with_xv="check"]) + +AS_IF([test "x$with_xv" != "xno"], + [AC_CHECK_HEADERS([X11/extensions/Xvlib.h], + [with_xv="yes"], + [AS_IF([test "x$with_xv" = "xcheck"], + [with_xv="no"], + [AC_MSG_FAILURE([test for XVideo extension failed! +install the XVideo extension, specify --x-includes or +configure --without-xv to disable the extension])])], + [[#include <X11/Xlib.h> +]]) + AS_IF([test "x$with_xv" != "xno"], + [AC_CHECK_LIB([Xv], [XvQueryExtension], + [with_xv="yes"], + [AC_MSG_FAILURE([unable to find XvQueryExtension in $XV_LIBS! +specify XV_LIBS or configure --without-xv to disable the extension])], + ["$X_LIBS" "$X_PRE_LIBS" -lX11 "$X_EXTRA_LIBS" "$XV_LIBS"]) + ]) +]) +AM_CONDITIONAL([HAVE_XV], [test "x$with_xv" = "xyes"]) + +dnl dbus +AC_ARG_WITH([dbus], + [AS_HELP_STRING([--without-dbus], + [disable support for dbus])], + [], + [with_dbus="check"]) + +AS_IF([test "x$with_dbus" != "xno"], + [PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, have_dbus="yes", have_dbus="no") + AS_IF([test "x$have_dbus$with_dbus" = "xnoyes"], + [AC_MSG_FAILURE([DBus development libraries not found])], + [with_dbus="$have_dbus"]) +]) +AM_CONDITIONAL([HAVE_DBUS], [test "x$with_dbus" = "xyes"]) + +AS_IF([test "x$with_dbus" = "xyes"], + [CPPFLAGS="$CPPFLAGS $DBUS_CFLAGS" + AC_ARG_VAR([DBUS_LIBS], [linker flags for building dbus]) + AC_DEFINE([HAVE_DBUS], [1], [Define to 1 to use dbus]) + AC_ARG_WITH(dbusconfdir, AS_HELP_STRING([--with-dbusconfdir=PATH],[path to D-Bus config directory]), + [path_dbusconf=$withval], + [path_dbusconf="`$PKG_CONFIG --variable=sysconfdir dbus-1`"]) + AS_IF([test -z "$path_dbusconf"], + DBUS_CONFDIR="$sysconfdir/dbus-1/system.d", + DBUS_CONFDIR="$path_dbusconf/dbus-1/system.d") + AC_SUBST(DBUS_CONFDIR) +]) + +dnl libjpeg +AC_ARG_WITH([jpeg], + [AS_HELP_STRING([--without-jpeg], + [disable support for JPEG image conversions])], + [], + [with_jpeg="check"]) + +have_jpeg="maybe" +AS_IF([test "x$with_jpeg" != "xno"], + [AC_CHECK_HEADERS([jpeglib.h jerror.h], [], [have_jpeg="no"]) + AC_CHECK_LIB([jpeg], [jpeg_read_header], [], [have_jpeg="no"]) + AS_IF([test "x$have_jpeg" != "xno"], + [with_jpeg="yes"], + [test "x$with_jpeg" = "xyes"], + [AC_MSG_FAILURE([unable to find libjpeg! ensure CFLAGS/LDFLAGS are +set appropriately or configure --without-jpeg])], + [with_jpeg="no"]) +]) +AM_CONDITIONAL([HAVE_JPEG], [test "x$with_jpeg" = "xyes"]) + +dnl ImageMagick or GraphicsMagick +dnl disable both if IM is explicitly disabled to preserve old behavior + +AC_ARG_WITH([imagemagick], + [AS_HELP_STRING([--without-imagemagick], + [disable support for scanning images with ImageMagick])], + [], + [with_imagemagick="check"]) + +AC_ARG_WITH([graphicsmagick], + [AS_HELP_STRING([--with-graphicsmagick], + [use GraphicsMagick alternative to ImageMagick])], + [], + [with_graphicsmagick="check"]) + +magick="UnknownMagick" +have_IM="maybe" +AS_IF([test "x$with_imagemagick" = "xno"], [], + [test "x$with_imagemagick" = "xyes" || \ + test "x$with_graphicsmagick" != "xyes"], + [looked_for="ImageMagick >= 6.2.6" + PKG_CHECK_MODULES([MAGICK], [MagickWand >= 6.2.6], + [MAGICK_VERSION=`$PKG_CONFIG MagickWand --modversion`], + [dnl +dnl Wand is deprecated in favor of MagickWand, +dnl but the latter doesn't exist in older versions (bug #2848437) + saved_error=$MAGICK_PKG_ERRORS + PKG_CHECK_MODULES([MAGICK], [Wand >= 6.2.6], + [MAGICK_VERSION=`$PKG_CONFIG Wand --modversion`], + [have_IM="no"])]) + AS_IF([test "x$have_IM" != "xno"], + [magick="ImageMagick" + AC_MSG_NOTICE([trying ImageMagick version $MAGICK_VERSION]) +dnl double check ImageMagick install (bug #2582232) + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $MAGICK_CFLAGS" + AC_CHECK_HEADERS([wand/MagickWand.h], + [ + have_IM="yes" + with_imagemagick="yes" + ], + [have_IM="broken"]) +dnl check for ImageMagick 7, see https://imagemagick.org/script/porting.php#headers + AS_IF([test "x$have_IM" = "xbroken"], [ + AC_CHECK_HEADERS([MagickWand/MagickWand.h], + [ + have_IM="yes" + have_IM7="yes" + with_imagemagick="yes" + ], + [have_IM="broken"]) + ]) + CPPFLAGS="$CPPFLAGS_save"])]) + +have_GM="maybe" +AS_IF([test "x$have_IM" = "xyes"], [], + [test "x$with_graphicsmagick" = "xno"], [], + [test "x$with_graphicsmagick" = "xyes" || \ + test "x$with_imagemagick" = "xcheck"], + [AS_IF([test "x$looked_for" = "x"], + [looked_for="GraphicsMagick"], + [looked_for="$looked_for or GraphicsMagick"]) + PKG_CHECK_MODULES([GM], [GraphicsMagickWand], + [have_GM="yes" + with_imagemagick="no" + magick="GraphicsMagick" + MAGICK_CFLAGS="$MAGICK_CFLAGS $GM_CFLAGS" + MAGICK_LIBS="$MAGICK_LIBS $GM_LIBS" + MAGICK_VERSION=`$PKG_CONFIG GraphicsMagickWand --modversion`], + [have_GM="no" + AS_IF([test "x$saved_error" = "x"], + [saved_error=$MAGICK_PKG_ERRORS])])]) + +dnl now that we have collected all the info abt what Magick is available +dnl let the user know what we will or can't do +AS_IF([test "x$have_IM" = "xbroken" && test "x$have_GM" = "xyes"], + [ + with_imagemagick="no" + AC_MSG_WARN([Your ImageMagick install is broken, using GraphicsMagick instead]) + ]) +AS_IF([test "x$have_IM" = "xyes" || test "x$have_GM" = "xyes"], + [AC_MSG_NOTICE([using $magick version $MAGICK_VERSION])], + [test "x$with_imagemagick" = "xno" && \ + test "x$with_graphicsmagick" != "xyes"], + [AC_MSG_NOTICE([image scanning disabled -- zbarimg will *not* be built])], + [test "x$have_IM" = "xbroken"], + [AC_MSG_FAILURE([$magick package found but wand/MagickWand.h not installed?! +this is a problem with your $magick install, please try again after +resolving the inconsistency or installing GraphicsMagick alternative...])], + [test "x$with_graphicsmagick" = "xcheck"], + [AC_MSG_NOTICE([ImageMagick/GraphicsMagick not detected. Several features will be disabled]) + with_imagemagick="no"], + [AC_MSG_FAILURE([dnl +Unable to find $looked_for: + +$saved_error + +* Ensure that you installed any "development" packages for ImageMagick or + GraphicsMagick. +* Consider adjusting the PKG_CONFIG_PATH environment variable if you + installed software in a non-standard prefix. +* You may set the environment variables MAGICK_CFLAGS and MAGICK_LIBS + to avoid the need to call pkg-config. + See the pkg-config man page for more details. +* To avoid using ImageMagick or GraphicsMagick altogether you may add the + --without-imagemagick flag to the configure command; the zbarimg program + will *not* be built. +])]) + +AS_IF([test "x$have_IM" = "xyes"], + [AC_DEFINE([HAVE_IMAGEMAGICK], [1], [Define to 1 to use ImageMagick])], + [test "x$have_GM" = "xyes"], + [AC_DEFINE([HAVE_GRAPHICSMAGICK], [1], [Define to 1 to use GraphicsMagick])]) +AS_IF([test "x$have_IM7" = "xyes"], + [AC_DEFINE([HAVE_IMAGEMAGICK7], [1], [Define to 1 to use ImageMagick 7])]) +AM_CONDITIONAL([HAVE_MAGICK], + [test "x$have_IM" = "xyes" || test "x$have_GM" = "xyes"]) + +dnl Mozilla NPAPI +AC_ARG_WITH([npapi], + [AS_HELP_STRING([--with-npapi], + [enable support for Firefox/Mozilla/OpenOffice plugin])], + [], + [with_npapi="no"]) + +AS_IF([test "x$with_npapi" != "xno"], + [PKG_CHECK_MODULES([NPAPI], [firefox-plugin]) + NPAPI_VERSION=`$PKG_CONFIG firefox-plugin --modversion` + AC_MSG_NOTICE([using firefox-plugin version $NPAPI_VERSION])]) + +AM_CONDITIONAL([HAVE_NPAPI], [test "x$with_npapi" = "xyes"]) + +dnl GTK +dnl For now, defaults to GTK version 3 + +AC_ARG_WITH([gtk], + [AS_HELP_STRING([--with-gtk], + [Specify support for GTK. Valid values are: no, auto, gtk2, gtk3 (default is auto)])], + [AS_IF([test "x$with_gtk" != "xno" && test "x$with_gtk" != "xauto" && + test "x$with_gtk" != "xgtk2" && test "x$with_gtk" != "xgtk3"], + [echo "Invalid value for --with-gtk. Falling back to 'no'" + with_gtk="no"])], + [with_gtk="auto"]) + +AC_ARG_VAR([GLIB_GENMARSHAL], [full path to glib-genmarshal]) +AC_ARG_VAR([GTK_VERSION_MAJOR]) + +AS_IF([test "x$with_gtk" = "xgtk3" || test "x$with_gtk" = "xauto"], + [PKG_CHECK_MODULES([GTK3], [gtk+-3.0], + [GLIB_GENMARSHAL=`$PKG_CONFIG glib-2.0 --variable=glib_genmarshal` + GTK_VERSION=`$PKG_CONFIG gtk+-3.0 --modversion` + AC_MSG_NOTICE([using GTK+ version $GTK_VERSION]) + GTK_VERSION_MAJOR=3.0 + with_gtk="gtk3" + GTK_CFLAGS=$GTK3_CFLAGS + GTK_LIBS=$GTK3_LIBS + ],[libgtk3=false]) + ]) + +AS_IF([test "x$with_gtk" = "xgtk2" || test "x$with_gtk" = "xauto"], + [PKG_CHECK_MODULES([GTK2], [gtk+-2.0], + [GLIB_GENMARSHAL=`$PKG_CONFIG glib-2.0 --variable=glib_genmarshal` + GTK_VERSION=`$PKG_CONFIG gtk+-2.0 --modversion` + AC_MSG_NOTICE([using GTK+ version $GTK_VERSION]) + GTK_VERSION_MAJOR=2.0 + with_gtk="gtk2" + GTK_CFLAGS=$GTK2_CFLAGS + GTK_LIBS=$GTK2_LIBS + ],[libgtk2=false]) + ]) + +dnl GTK not found +AS_IF([test "x$with_gtk" = "xauto"], [with_gtk="no"]) + +AC_SUBST(GTK_LIBS) +AC_SUBST(GTK_CFLAGS) + +AM_CONDITIONAL([HAVE_GTK], [test "x$with_gtk" != "xno"]) + +AC_ARG_WITH([gir], + [AS_HELP_STRING([--with-gir], [enable support for GObject Introspection])], + [], + [with_gir="yes"]) + +dnl Python +dnl For now, keep python2 as default +dnl If both PYTHON and --with-python=foo are defined, PYTHON takes precedence + +AC_ARG_WITH([python], + [AS_HELP_STRING([--with-python], + [Specify support for Python. Valid values are: no, auto, python2, python3 +(default is auto). +Please notice that PYTHON var, if especified, takes precedence.])], + [AS_IF([test "x$with_python" != "xno" && test "x$with_python" != "xauto" && + test "x$with_python" != "xpython2" && test "x$with_python" != "xpython3"], + [echo "Invalid value for --with-python. Falling back to 'no'" + with_python="xno"])], + [with_python="auto"]) + +AC_ARG_VAR([PYTHON_CONFIG], [full path to python-config program]) +AC_ARG_VAR([PYTHON_CFLAGS], [compiler flags for building python extensions]) +AC_ARG_VAR([PYTHON_LDFLAGS], [linker flags for building python extensions]) + +AC_ARG_VAR([PYGTK_H2DEF], [full path to PyGTK h2def.py module (python2 only)]) +AC_ARG_VAR([PYGTK_CODEGEN], [full path to pygtk-codegen program (python2 only)]) +AC_ARG_VAR([PYGTK_DEFS], [directory where PyGTK definitions may be found (python2 only)]) + +AS_IF([test -z "$PYTHON"], + [AS_IF([test "x$with_python" = "xauto"], + [AC_PATH_PROGS([PYTHON], [python3 python2 python], [:], [$PATH])], + [AS_IF([test "x$with_python" = "xpython3"], + [AC_PATH_PROGS([PYTHON], [python3 python], [:], [$PATH])], + [AS_IF([test "x$with_python" = "xpython2"], + [AC_PATH_PROGS([PYTHON], [python2 python], [:], [$PATH])], + [with_python="no"]) + ]) + ] + )], + [with_python="auto"] +) + +AS_IF([test "x$with_python" != "xno"], + [AM_PATH_PYTHON([2.7.0])]) + +AS_IF([test "x$PYTHON_VERSION" != "x" && test "x$with_python" != "xno"], + [PYTHON_VERSION_MAJOR="`echo $PYTHON_VERSION | cut -d'.' -f 1`" + + AS_IF([test "x$PYTHON_CFLAGS" != "x"], + [], + [test "x$PYTHON_CONFIG" != "x" && test -x "$PYTHON_CONFIG"], + [PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags`], + [test -x "$PYTHON-config"], + [PYTHON_CFLAGS=`$PYTHON-config --cflags`], + [PYTHON_CFLAGS=`$PYTHON -c 'import distutils.sysconfig as s, sys; sys.stdout.write(" ".join(s.get_config_vars("CFLAGS")) + " -I"+s.get_python_inc() + " -I"+s.get_python_inc(plat_specific=True))'`]) + AS_IF([test "x$PYTHON_LDFLAGS" != "x"], + [], + [test "x$PYTHON_CONFIG" != "x" && test -x "$PYTHON_CONFIG"], + [PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`], + [test -x "$PYTHON-config"], + [PYTHON_LDFLAGS=`$PYTHON-config --ldflags`], + [PYTHON_LDFLAGS=`$PYTHON -c 'import distutils.sysconfig as s, sys; sys.stdout.write(" ".join(s.get_config_vars("LDFLAGS")) + " -I"+s.get_python_inc() + " -I"+s.get_python_inc(plat_specific=True))'`]) + + dnl check that #include <Python.h> compiles (bug #3092663) + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $PYTHON_CFLAGS" + AS_IF([test "x$win32" = "xyes"], PYTHON_LDFLAGS="$PYTHON_LDFLAGS -no-undefined") + AC_CHECK_HEADERS([Python.h], [], + [AS_IF([test "x$with_python" = "xauto"],with_python="no", + [AC_MSG_ERROR([dnl +Python module enabled, but unable to compile Python.h. +Install the development package for python-$am_cv_python_version, or configure +--without-python to disable the python bindings.dnl +])])]) + CPPFLAGS="$CPPFLAGS_save" + + dnl PyGTK + dnl disable pygtk when we're on Python 3 + AS_IF([test "x$with_gtk" != "xno"], + [AS_IF([test "x$PYTHON_VERSION_MAJOR" = "x2"], + [PKG_CHECK_MODULES([PYGTK], [pygtk-2.0], [with_pygtk2="yes"], [with_pygtk2="no"]) + AC_CHECK_PROGS([PYGTK_CODEGEN], [pygobject-codegen-2.0 pygtk-codegen-2.0 pygtk-codegen], [:]) + + AS_IF([test "x$PYGTK_H2DEF" = "x"], + [PYGTK_H2DEF=`$PKG_CONFIG pygtk-2.0 --variable=codegendir`/h2def.py + AS_IF([test -f "$PYGTK_H2DEF"], [], [PYGTK_H2DEF=":"])]) + AS_IF([test "x$PYGTK_DEFS" = "x"], + [PYGTK_DEFS=`$PKG_CONFIG pygtk-2.0 --variable=defsdir`]) + ]) + ]) +], [with_python="no"]) + +AS_IF([test "x$PYTHON_VERSION_MAJOR" != "x2"], [with_pygtk2="no"]) +AM_CONDITIONAL([HAVE_PYTHON], [test "x$with_python" != "xno"]) +AM_CONDITIONAL([HAVE_PYGTK2], [test "x$with_pygtk2" != "xno"]) + +dnl GObject Introspection (GIR) + +AS_IF([test "x$with_gir" = "xyes" && test "x$with_gtk" != "xno"], + [m4_ifdef([GOBJECT_INTROSPECTION_CHECK], + [GOBJECT_INTROSPECTION_CHECK([0.6.7]) + AS_IF([test "x$found_introspection" = "xyes"], + [INTROSPECTION_TYPELIBDIR=`$PKG_CONFIG --variable=typelibdir --define-variable="libdir=${libdir}" gobject-introspection-1.0` + INTROSPECTION_GIRDIR=`$PKG_CONFIG --variable=girdir --define-variable="datadir=${datadir}" gobject-introspection-1.0` + AC_SUBST(INTROSPECTION_TYPELIBDIR) + AC_SUBST(INTROSPECTION_GIRDIR)])]) + ]) + +AS_IF([test "x$found_introspection" != "xyes"], [with_gir="no"]) +AM_CONDITIONAL([HAVE_INTROSPECTION], [test "x$with_gir" = "xyes"]) + +dnl Qt +AC_ARG_WITH([qt], + [AS_HELP_STRING([--without-qt], + [disable support for Qt widget])], + [], + [with_qt="yes"]) + +dnl Qt6 +AC_ARG_WITH([qt6], + [AS_HELP_STRING([--with-qt6], + [If --with-qt, enable experimental support for Qt6 widget (currently broken)])], + [], + [with_qt6="no"]) + +AS_IF([test "x$with_qt" != "xno"], + [AS_IF([test "x$with_qt6" != "xno"], + PKG_CHECK_MODULES([QT], + [Qt6], + [MOC=`pkg-config Qt6 --variable=moc` + QT_VERSION=`$PKG_CONFIG Qt6 --modversion` + QT6_HEADERS=`pkg-config Qt6 --variable=headerdir` + CPPFLAGS="$CPPFLAGS -I$QT6_HEADERS -I$QT6_HEADERS/QtWidgets -I$QT6_HEADERS/QtCore -I$QT6_HEADERS/QtGui" + qt_pkgconfig_file="zbar-qt5.pc" + ], + [with_qt6="no"])) + AS_IF([test "x$with_qt6" = "xno"], + PKG_CHECK_MODULES([QT], + [Qt5Core >= 5 Qt5Gui >= 5 Qt5Widgets >= 5.0 Qt5X11Extras >= 5.0], + [MOC=`pkg-config Qt5 --variable=moc` + QT_VERSION=`$PKG_CONFIG Qt5 --modversion` + qt_pkgconfig_file="zbar-qt5.pc" + ], + [with_qt="no"])) + ]) + +AC_ARG_VAR([MOC], [full path to Qt moc program]) + +AM_CONDITIONAL([HAVE_QT], [test "x$with_qt" = "xyes"]) + +AM_COND_IF([HAVE_QT], + [AC_MSG_NOTICE([using Qt version $QT_VERSION]) + AC_MSG_NOTICE([using moc from $MOC]) + CPPFLAGS="$CPPFLAGS $QT_CPPFLAGS" + LIBS="$LIBS $QT_LIBS" + AC_CONFIG_FILES([zbar-qt.pc:"${qt_pkgconfig_file}.in"]) + #dnl -fPIC has no effect on Windows and breaks windres + AS_IF([test "x$win32" = "xno"], [CPPFLAGS="$CPPFLAGS -fPIC"])]) + +dnl Java +have_java="maybe" + +AC_ARG_VAR([JAVA_HOME], [root location of JDK]) + +AC_ARG_VAR([JAVAC], [location of Java language compiler]) +AC_ARG_VAR([JAVAH], [location of Java header generator]) + +dnl If $JAVA_HOME not defined, try to autodetect it +AS_IF([test -z "$JAVA_HOME"], + [AC_PATH_PROGS([JAVAC], [javac jikes ecj gcj], [:], [$PATH]) + AS_IF([test ! -z "$JAVAC"], + [JAVA_HOME=$( readlink -f ${JAVAC} | rev | cut -d/ -f3- | rev )])]) + +dnl If $JAVA_HOME is defined, set JAVA_PATH and JAVAC +AS_IF([test ! -z "$JAVA_HOME"], + [JAVA_PATH="$JAVA_HOME/bin$PATH_SEPARATOR$PATH" + AS_IF([test -z "$JAVAC"], + [AC_PATH_PROGS([JAVAC], [javac jikes ecj gcj], [:], [$JAVA_PATH])])]) + +AC_ARG_WITH([java], + [AS_HELP_STRING([--without-java], + [disable support for Java interface])], + [], + [with_java="check"]) + +JAVAC=$(echo $JAVAC |sed 's/ecj/ecj -1.5/') + +dnl Javah was obsoleted on Java 8 and removed on Java 11. So, we need to +dnl look strictly at the $JAVA_HOME in order to avoid mixing different versions +AS_IF([test -z "$JAVAH"], + [AC_PATH_PROGS([JAVAH], [javah], [], [$JAVA_HOME/bin])]) + +AM_CONDITIONAL([HAVE_JAVAH], [test "x$JAVAH" != "x"]) + +AC_ARG_VAR([JAR], [location of Java archive tool]) +AC_PATH_PROGS([JAR], [jar], [:], [$JAVA_PATH]) +AS_IF([test "x$JAR" = "x:"], [have_java="no"]) + +AC_ARG_VAR([JAVA], [location of Java application launcher]) +AC_PATH_PROGS([JAVA], [java], [/bin/false], [$JAVA_PATH]) + +AC_ARG_VAR([CLASSPATH], [Java class path (include JUnit to run java tests)]) +AS_IF([test "x$CLASSPATH" = "x"], [CLASSPATH="."]) + +dnl Search for Java unit test library +AS_IF([test -z "$JUNIT_HOME"], + [JUNIT_HOME="/usr/share/java"]) + +AS_IF([test -f "$JUNIT_HOME/junit4.jar"], + [JUNIT="$JUNIT_HOME/junit4.jar"], + [AS_IF([test -f "$JUNIT_HOME/junit.jar"], + [JUNIT="$JUNIT_HOME/junit.jar"])]) + +AS_IF([test "x$JUNIT" != "x"], + [AS_IF([test -f "/usr/share/java/hamcrest/all.jar"], + [CLASSPATH="$JUNIT:/usr/share/java/hamcrest/all.jar:$CLASSPATH" + AC_SUBST(CLASSPATH) + with_java_unit="yes"])], + [AS_IF([test -f "/usr/share/java/hamcrest-all.jar"], + [CLASSPATH="$JUNIT:/usr/share/java/hamcrest-all.jar:$CLASSPATH" + AC_SUBST(CLASSPATH) + with_java_unit="yes"])]) + +AM_CONDITIONAL([HAVE_JAVA_UNIT], [test "x$with_java_unit" = "xyes"]) + +AC_ARG_VAR([JAVA_CFLAGS], [compiler flags for building JNI extensions]) +AS_IF([test "x$JAVA_CFLAGS" = "x" && test "x$JAVA_HOME" != "x"], + [JAVA_CFLAGS="-I$JAVA_HOME/include"]) + +AS_IF([test -d "$JAVA_HOME/include/linux"], + [JAVA_CFLAGS="$JAVA_CFLAGS -I$JAVA_HOME/include/linux"]) + +AS_IF([test "x$with_java" != "xno"], + [CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $JAVA_CFLAGS" + AC_CHECK_HEADERS([jni.h], [], [have_java="no"]) + CPPFLAGS="$CPPFLAGS_save" + AS_IF([test "x$have_java" != "xno"], + [with_java="yes"], + [test "x$with_java" = "xyes"], + [AC_MSG_FAILURE([unable to find Java JNI! ensure CFLAGS are set appropriately or configure --without-java])], + [with_java="no"]) +]) +AM_CONDITIONAL([HAVE_JAVA], [test "x$with_java" = "xyes"]) + + +dnl header files + +dnl FIXME switches for shm, mmap +AC_HEADER_ASSERT +AC_CHECK_HEADERS([errno.h fcntl.h features.h inttypes.h float.h limits.h \ + locale.h stddef.h stdlib.h string.h unistd.h sys/types.h sys/stat.h \ + sys/ioctl.h sys/time.h sys/times.h sys/ipc.h sys/shm.h sys/mman.h]) +AC_HEADER_MAJOR +AC_CHECK_HEADER_STDBOOL + +dnl types + +AC_TYPE_INT32_T +AC_TYPE_UINT32_T +AC_TYPE_UINT8_T +AC_TYPE_UINTPTR_T +AC_TYPE_UID_T +AC_TYPE_INT32_T +AC_TYPE_INT64_T +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +AC_TYPE_UINT16_T +AC_TYPE_UINT32_T +AC_TYPE_UINT64_T +AC_TYPE_UINT8_T +AC_CHECK_MEMBERS([struct stat.st_rdev]) + +dnl compile characteristics + +AC_C_CONST +AC_C_INLINE + +dnl functions + +AC_FUNC_MMAP +AC_CHECK_FUNCS([alarm clock_gettime floor getcwd gettimeofday localeconv memchr memmove memset modf munmap pow select setenv sqrt strcasecmp strchr strdup strerror strrchr strstr strtol strtoul malloc realloc]) + + +dnl output generation + +dnl avoid doc rebuilds unless revision info changes +AC_CONFIG_COMMANDS([doc/version.xml], + [AS_IF([test -f doc/version.xml && \ + ! echo $VERSION | diff doc/version.xml - >/dev/null 2>&1 || \ + ! echo $VERSION | diff $srcdir/doc/version.xml - >/dev/null 2>&1 ], + [echo "writing new doc/version.xml" ; echo $VERSION > $srcdir/doc/version.xml ])], + [VERSION="$VERSION"] +) +AC_CONFIG_COMMANDS([doc/reldate.xml], + [AS_IF([test -f doc/reldate.xml && \ + ! echo $RELDATE | diff doc/reldate.xml - >/dev/null 2>&1 || \ + ! echo $RELDATE | diff $srcdir/doc/reldate.xml - >/dev/null 2>&1 ], + [echo "writing new doc/reldate.xml" ; echo $RELDATE > $srcdir/doc/reldate.xml ])], + [RELDATE="$RELDATE"] +) + +echo "Generating config files" + +AC_CONFIG_FILES([ +Makefile +gtk/Makefile +java/Makefile +po/Makefile.in +zbar/Makefile +zbar.pc +zbar-gtk.pc +doc/doxygen.conf]) + +AC_CONFIG_FILES([test/test_examples.sh],[chmod 755 test/test_examples.sh]) +AC_CONFIG_FILES([test/check_dbus.sh],[chmod 755 test/check_dbus.sh]) + +AC_OUTPUT + +dnl summary log + +echo "" +echo "please verify that the detected configuration matches your expectations:" +echo "------------------------------------------------------------------------" +AS_IF([test "x$USE_NLS" = "xyes"], + [echo "gettext $USE_NLS"] +) +AS_IF([test "x$win32" != "xno"], + [AS_IF([test "x$with_directshow" != "xno"], + [echo "DirectShow driver --with-directshow=$with_directshow"], + [echo "VfW driver --with-directshow=$with_directshow"] + )], + [echo "X --with-x=$have_x"] +) + +AS_IF([test "x$with_python" != "xno"], pyver="\tpython${PYTHON_VERSION}") +AS_IF([test "x$with_gtk" != "xno"], gtkver="\tGtk${GTK_VERSION}") +AS_IF([test "x$with_qt" != "xno"], qtver="\tQt${QT_VERSION}") + +echo "pthreads --enable-pthread=$enable_pthread" +echo "doc --enable-doc=$enable_doc" +echo "v4l --enable-video=$enable_video" +echo "jpeg --with-jpeg=$with_jpeg" +echo -e "Python --with-python=$with_python $pyver" +echo -e "GTK --with-gtk=$with_gtk $gtkver" +echo "GObject introspection --with-gir=$with_gir" +echo -e "Qt --with-qt=$with_qt $qtver" +echo "Java --with-java=$with_java" + +AS_IF([test "x$win32" = "xno"], + [echo "Dbus --with-dbus=$with_dbus"]) +AS_IF([test "x$have_GM" = "xyes"], + [echo "GraphicsMagick --with-graphicsmagick=yes"], + [echo "ImageMagick --with-imagemagick=$with_imagemagick"]) +echo "Enabled codes: $enabled_codes" +echo "Disabled codes: $disabled_codes" +AS_IF([test "x$with_java" = "xyes"], + [echo "JAVA_HOME $JAVA_HOME"]) + +dnl Display "warnings" about disabled and experimental features + +echo "" +AS_IF([test "x$enable_video" != "xyes"], + [echo " => zbarcam video scanner will *NOT* be built"]) +AS_IF([test "x$have_libv4l" != "xyes"], + [echo " => libv4l will *NOT* be used"]) +AS_IF([test "x$with_jpeg" != "xyes"], + [echo " => JPEG image conversions will *NOT* be supported"]) +AS_IF([test "x$have_IM" != "xyes" && test "x$have_GM" != "xyes"], + [echo " => the zbarimg file scanner will *NOT* be built"]) +AS_IF([test "x$have_GM" = "xyes"], + [echo " => ImageMagick is preferred, as GraphicsMagick doesn't support https"]) +AS_IF([test "x$with_gtk" = "xno"], + [echo " => GTK support will *NOT* be built"]) +AS_IF([test "x$with_pygtk2" != "xyes" && test "xPYTHON_VERSION_MAJOR" = "x2"], + [echo " => the Python 2 GTK widget wrapper will *NOT* be built"]) +AS_IF([test "x$with_qt" != "xyes"], + [echo " => the Qt widget will *NOT* be built"]) +AS_IF([test "x$with_qt" = "xyes" && test "x$enable_static_qt" = "xyes" ], + [echo " => Building a static Qt library"]) +AS_IF([test "x$with_java" != "xyes"], + [echo " => the Java interface will *NOT* be built"]) +AS_IF([test "x$with_java_unit" != "xyes"], + [echo " => the Java unit test will *NOT* be enabled"]) +dnl echo "NPAPI Plugin --with-npapi=$with_npapi" +dnl AS_IF([test "x$with_mozilla" != "xyes"], +dnl [echo " => the Mozilla/Firefox/OpenOffice plugin will *NOT* be built"]) +AS_IF([test "x$enable_pdf417" = "xyes"], + [echo " => the pdf417 code support is incomplete!"]) |