# See: http://www.gnu.org/software/libtool/manual.html#Versioning
#
# The string is of the form Current:Revision:Age.
-#
+#
# The following lines are taken from the GNU Libtool Manual:
# Here are a set of rules to help you update your library version information:
-#
+#
# Start with version information of 0:0:0 for each libtool library.
-# Update the version information only immediately before a public release of your software.
+# Update the version information only immediately before a public release of your software.
# More frequent updates are unnecessary, and only guarantee that the current interface number
# gets larger faster.
#
-# 1) If the library source code has changed at all since the last update,
+# 1) If the library source code has changed at all since the last update,
# then increment revision (c:r:a becomes c:r+1:a).
# 2) If any interfaces have been added, removed, or changed since the last update,
# increment current, and set revision to 0.
# 4) If any interfaces have been removed since the last public release, then set age to 0.
#
# Never try to set the interface numbers so that they correspond to the release number of your package.
-# This is an abuse that only fosters misunderstanding of the purpose of library versions. Instead,
-# use the -release flag (see Release numbers), but be warned that every release of your package will
+# This is an abuse that only fosters misunderstanding of the purpose of library versions. Instead,
+# use the -release flag (see Release numbers), but be warned that every release of your package will
# not be binary compatible with any other release.
m4_define([opencv_lt_version], [2:0:0])
AC_CONFIG_MACRO_DIR([autotools/aclocal])
# put CVS revision of this configure.in into the resulting configure script
-AC_REVISION($Revision: 1.46 $)
+AC_REVISION($Revision: 1.58 $)
# Detect the canonical host and target build environment
AC_CANONICAL_HOST
######################################################################
# the following interpret 'with' and 'enable' switches.
-# some of these switches trigger checks that can be found further
+# some of these switches trigger checks that can be found further
# below in this configure script
# does the user want aggressive optimization?
AC_ARG_ENABLE([debug],
[AS_HELP_STRING([--enable-debug],[build debug version without optimization [no]])],
- [debug=$enableval],
+ [debug=$enableval],
[debug=no])
# does the user want to build demo applications?
# the following checks reflect the dependencies of OpenCV on other
-# libraries that do the actual work for video I/O or windowing
+# libraries that do the actual work for video I/O or windowing
# subsystem. On some platforms there are ambiguities that a user
# can influence. There is also additional logic to be found in code
# later code lines that tries to do sensible decisions on what to use
# does the user want to compile python modules as well?
-AC_ARG_WITH([swig],
+AC_ARG_WITH([swig],
[AS_HELP_STRING([--with-swig],[use swig wrapper generator [no]])],
[with_swig=$withval],
[with_swig=no])
# does the user want to compile python modules as well?
-AC_ARG_WITH([python],
+AC_ARG_WITH([python],
[AS_HELP_STRING([--with-python],[use python for wrapping [yes]])],
[with_python=$withval],
[with_python=yes])
+# does the user want to compile octave modules as well?
+AC_ARG_WITH([octave],
+ [AS_HELP_STRING([--with-octave],[use octave for wrapping [no]])],
+ [with_octave=$withval],
+ [with_octave=no])
+
# does the user want OpenCV to use xine video libraries?
AC_ARG_WITH([xine],
[AS_HELP_STRING([--with-xine],[use xine libraries (see LICENSE) [no]])],
[with_xine=$withval],
[with_xine=no])
+# does the user want OpenCV to use the gstreamer multimedia framework?
+AC_ARG_WITH([gstreamer],
+ [AS_HELP_STRING([--with-gstreamer],[use gstreamer multimedia framework (see LICENSE) [no]])],
+ [with_gstreamer=$withval],
+ [with_gstreamer=no])
+
# does the user want OpenCV to use ffmpeg video libraries?
AC_ARG_WITH([ffmpeg],
[AS_HELP_STRING([--with-ffmpeg],[use ffmpeg libraries (see LICENSE) [automatic]])],
[with_v4l=$withval],
[with_v4l=auto])
+# does the user want OpenCV to use the unicap library?
+AC_ARG_WITH([unicap],
+ [AS_HELP_STRING([--with-unicap],[use unicap (see LICENSE) [no]])],
+ [with_unicap=$withval],
+ [with_unicap=no])
+
# does the user want OpenCV to use image libraries from OS X 10.4?
AC_ARG_WITH([imageio],
[AS_HELP_STRING([--with-imageio],[use ImageIO libraries [automatic]])],
CXXFLAGS=""
fi
+# set the default c++ flags for all the compilations
+# we don't append CXXFLAGS, because it's done at compile time
+# see http://www.gnu.org/software/libtool/manual/automake/Flag-Variables-Ordering.html
+# for more information
+DEFAULT_CXXFLAGS=""
# see if the user wants aggressive optimizations of the code,
# check whether to include debugging code
AC_MSG_RESULT([yes])
if test x"$ac_cv_c_compiler_gnu" = "xyes"; then
CPPFLAGS="-DDEBUG -D_DEBUG $CPPFLAGS"
- CXXFLAGS="-ggdb -O0 $CXXFLAGS"
+ DEFAULT_CXXFLAGS="-ggdb -O0 $DEFAULT_CXXFLAGS"
fi
else
AC_MSG_RESULT([no])
i*86-apple-*)
if test x"$ac_cv_c_compiler_gnu" = "xyes"; then
# apples g++ fails with '-march=i686' and there are no apple machines older than prescott/core anyway
- CXXFLAGS="-g -march=prescott -ffast-math -fomit-frame-pointer $CXXFLAGS"
+ DEFAULT_CXXFLAGS="-g -march=prescott -ffast-math -fomit-frame-pointer $DEFAULT_CXXFLAGS"
fi
;;
i686-*-*)
if test x"$ac_cv_c_compiler_gnu" = "xyes"; then
# default to i686/pentiumpro -- people can override this
- CXXFLAGS="-g -march=i686 -ffast-math -fomit-frame-pointer $CXXFLAGS"
+ DEFAULT_CXXFLAGS="-g -march=i686 -ffast-math -fomit-frame-pointer $DEFAULT_CXXFLAGS"
fi
;;
powerpc-*-*)
if test x"$ac_cv_c_compiler_gnu" = "xyes"; then
# default to G3 processors -- people can override this
- CXXFLAGS="-g -mcpu=G3 -mtune=G5 -fomit-frame-pointer $CXXFLAGS"
+ DEFAULT_CXXFLAGS="-g -mcpu=G3 -mtune=G5 -fomit-frame-pointer $DEFAULT_CXXFLAGS"
fi
;;
*-*-*)
if test x"$ac_cv_c_compiler_gnu" = "xyes"; then
- CXXFLAGS="-fomit-frame-pointer $CXXFLAGS"
+ DEFAULT_CXXFLAGS="-fomit-frame-pointer $DEFAULT_CXXFLAGS"
fi
;;
esac
-
+
CPPFLAGS="-DNDEBUG $CPPFLAGS"
- CXXFLAGS="-O3 $CXXFLAGS"
+ DEFAULT_CXXFLAGS="-O3 $DEFAULT_CXXFLAGS"
fi
if test x"$ac_cv_c_compiler_gnu" = "xyes"; then
- PY_CXXFLAGS="-Wall -pipe $CXXFLAGS"
- CXXFLAGS="-Wall -fno-rtti -pipe $CXXFLAGS"
+ PY_CXXFLAGS="-Wall -pipe $DEFAULT_CXXFLAGS"
+ OCT_CXXFLAGS="-fno-strict-aliasing -Wall -Wno-uninitialized -pipe $DEFAULT_CXXFLAGS"
+ DEF_CXXFLAGS="-Wall -fno-rtti -pipe $DEFAULT_CXXFLAGS"
else
- PY_CXXFLAGS="$CXXFLAGS"
+ PY_CXXFLAGS="$DEFAULT_CXXFLAGS"
+ OCT_CXXFLAGS="$DEFAULT_CXXFLAGS"
+ DEF_CXXFLAGS="$DEFAULT_CXXFLAGS"
fi
AC_SUBST(PY_CXXFLAGS)
+AC_SUBST(OCT_CXXFLAGS)
+AC_SUBST(DEF_CXXFLAGS)
-# add libm because it is used by several libraries and OpenCV itself
+# add libm because it is used by several libraries and OpenCV itself
AC_CHECK_LIB(m,pow)
AC_CHECK_LIB(dl,dlopen)
AC_CHECK_LIB(pthread,pthread_create)
######################################################################
# HighGUI dependencies for windowing system
-# honor user selection,
+# honor user selection,
# if no selection given check for Carbon first
CARBON_CFLAGS=""
CARBON_LIBS=""
have_carbon=yes
],
[
- have_carbon=no
+ have_carbon=no
with_carbon=no
])
# sanity checks
if test x"$have_carbon" = "xyes"; then
-
+
# if we asked for gtk, this is not ok
if test x"$with_gtk" = "xyes"; then
AC_MSG_ERROR([You cannot specify --with-carbon and --with-gtk at the same time])
AC_SUBST(CARBON_LIBS)
AM_CONDITIONAL([BUILD_CARBON], [test x"$have_carbon" = "xyes"])
-# use GTK+ 2.x (or later) for windowing
+# use GTK+ 2.x (or later) for windowing
# if carbon not present or not wanted (--without-carbon)
GTK_CFLAGS=""
GTK_LIBS=""
with_gtk=yes
fi
if test x"$with_gtk" = "xyes"; then
-
+
# pkg-config is needed for GTK+
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test x"$PKG_CONFIG" == "xno"; then
AC_MSG_ERROR([You have to install pkg-config to compile OpenCV with GTK+])
fi
-
- PKG_CHECK_MODULES(GTK, "gtk+-2.0 gdk-pixbuf-2.0",
+
+ PKG_CHECK_MODULES(GTK, "gtk+-2.0 gdk-pixbuf-2.0",
[
- have_gtk=yes
+ have_gtk=yes
AC_DEFINE(HAVE_GTK,,[GTK+ 2.x toolkit])
],
[ have_gtk=no ])
if test x"$with_v4l" = "xyes"; then
AC_MSG_ERROR([You cannot specify --with-quicktime and --with-v4l at the same time])
fi
-
+
# header presence and usability seem to be enough
AC_CHECK_HEADER([QuickTime/QuickTime.h],
[
have_quicktime=yes
],
[ have_quicktime=no ])
-
+
# specify quicktime libraries
if test x"$have_quicktime" = "xyes"; then
QUICKTIME_LIBS="-Xlinker -framework -Xlinker QuickTime -Xlinker -framework -Xlinker QuartzCore"
-
+
# don't check alternatives if quicktime was found
if test x"$with_ffmpeg" = "xauto"; then
with_ffmpeg=no
AC_SUBST(QUICKTIME_LIBS)
AM_CONDITIONAL([BUILD_QUICKTIME], [test x"$have_quicktime" = "xyes"])
+# GStreamer seems to be a nice solution for both reading and writing
+# and even supports some cameras
+GSTREAMER_CFLAGS=""
+GSTREAMER_LIBS=""
+if test x"$with_gstreamer" = "xno"; then
+ have_gstreamer=no
+else
+
+ if test x"$with_ffmpeg" = "xyes"; then
+ AC_MSG_ERROR([You cannot specify --with-gstreamer and --with-ffmpeg at the same time])
+ fi
+
+ # check if ./configure arguments are valid
+ if test x"$with_gstreamer" = "xauto"; then
+ with_gstreamer=yes
+ fi
+ if test x"$with_gstreamer" = "xyes"; then
+
+ # pkg-config is needed for GTK+
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ if test x"$PKG_CONFIG" == "xno"; then
+ AC_MSG_ERROR([You have to install pkg-config to compile OpenCV with GStreamer])
+ fi
+
+ PKG_CHECK_MODULES(GSTREAMER, "gstreamer-0.10",
+ [
+ have_gstreamer=yes
+ AC_DEFINE(HAVE_GSTREAMER,,[GStreamer multimedia framework])
+ ],
+ [ have_gstreamer=no ])
+
+ if test x"$have_gstreamer" = "xyes"; then
+ GSTREAMER_LIBS="$GSTREAMER_LIBS -lgstbase-0.10"
+ with_ffmpeg=no
+ fi
+ else
+ # if we get here then --with-gstreamer was not called with 'yes','no' or 'auto'
+ AC_MSG_WARN([unexpected arguments for option --with-gstreamer, continuing assuming 'no'])
+ have_gstreamer=no
+ fi
+fi
+AC_SUBST(GSTREAMER_CFLAGS)
+AC_SUBST(GSTREAMER_LIBS)
+AM_CONDITIONAL([BUILD_GSTREAMER], [test x"$have_gstreamer" = "xyes"])
+
+# Check for the unicap library
+UNICAP_PACKAGE_LIBS=""
+UNICAP_PACKAGE_CFLAGS=""
+UCIL_PACKAGE_LIBS=""
+UCIL_PACKAGE_CFLAGS=""
+if test x"$with_unicap" = "xno"; then
+ have_unicap=no
+else
+ PKG_CHECK_MODULES(UNICAP_PACKAGE,libunicap)
+ PKG_CHECK_MODULES(UCIL_PACKAGE,libucil)
+ have_unicap=yes
+ AC_DEFINE(HAVE_UNICAP,,[Unicap video capture library])
+fi
+AM_CONDITIONAL([BUILD_UNICAP], [test x"$have_unicap" = "xyes"])
+AC_SUBST(UNICAP_PACKAGE_LIBS)
+AC_SUBST(UNICAP_PACKAGE_CFLAGS)
+AC_SUBST(UCIL_PACKAGE_LIBS)
+AC_SUBST(UCIL_PACKAGE_CFLAGS)
+
# prefer XINE over FFMPEG for video reading because it is quick, has a cleaner API
# and allows for easy seeking with some formats
if test x"$with_xine" = "xno"; then
with_1394libs=yes
fi
if test x"$with_1394libs" = "xyes"; then
-
+
SAVELIBS="$LIBS"
have_raw1394=no
have_dc1394=no
-
+
AC_CHECK_HEADER(libraw1394/raw1394.h,
- AC_CHECK_LIB(raw1394, raw1394_new_handle,
+ AC_CHECK_LIB(raw1394, raw1394_new_handle,
[
have_raw1394=yes
LIBS="-lm -lraw1394 $LIBS"
]))
-
+
if test x"$have_raw1394" = "xyes"; then
AC_CHECK_HEADER(libdc1394/dc1394_control.h,
- AC_CHECK_LIB(dc1394_control, dc1394_camera_on,
+ AC_CHECK_LIB(dc1394_control, dc1394_camera_on,
[
have_dc1394=yes
AC_DEFINE(HAVE_DC1394,,[IEEE1394 capturing support])
IEEE1394LIBS="-lm -lraw1394 -ldc1394_control"
]))
fi
-
+
LIBS="$SAVELIBS"
else
# if we get here then --with-1394libs was not called with 'yes','no' or 'auto'
AC_SUBST(IEEE1394LIBS)
AM_CONDITIONAL([BUILD_DC1394], [test x"$have_dc1394" = "xyes"])
-# Video for Linux (V4L)
+# Video for Linux (V4L)
# we support version 1 and 2 currently
if test x"$with_v4l" = "xno"; then
have_v4l=no
have_v4l=yes
have_v4l1or2=yes
],
- [
+ [
have_v4l=no
have_v4l1or2=no
])
LIBS="$LIBS -lz -lm"
]))
- AC_CHECK_HEADER(png.h,
+ AC_CHECK_HEADER(png.h,
[
AC_DEFINE(HAVE_PNG_H,,[png.h needs to be included])
have_png=yes
])
- AC_CHECK_HEADER([libpng/png.h],
+ AC_CHECK_HEADER([libpng/png.h],
[
AC_DEFINE(HAVE_LIBPNG_PNG_H,,[libpng/png.h needs to be included])
have_png=yes
])
-
+
if test x"$have_png" = "xyes"; then
AC_CHECK_LIB(png12, png_read_image,
[
######################################################################
# SWIG wrappers
-# currently there is only python.
-# If additional wrapper languages / SWIG modules
-# get available for OpenCV, we will have a --with-LANGUAGE switch
-# for every wrapper language
+# each language should have --with-LANGUAGE switch
+
+# check for python
if test x"$with_python" = "xyes"; then
AC_MSG_NOTICE([Checking for necessary tools to build python wrappers])
if test x"$with_swig" = "xauto"; then
with_swig=yes
fi
-
+
### almost ok... just need to check if we have the Python headers ###
# first, save the CPPFLAGS
fi
AM_CONDITIONAL([BUILD_PYTHON_WRAPPERS], [test x"$have_python" = "xyes"])
+# check for octave
+if test x"$with_octave" = "xyes"; then
+ AC_MSG_NOTICE([Checking for necessary tools to build octave wrappers])
+
+ # find octave and mkoctfile
+ AC_PATH_PROG(OCTAVE,octave)
+ AC_PATH_PROG(MKOCTFILE,mkoctfile)
+
+ if test -z "$OCTAVE"; then
+ AC_MSG_WARN([octave not found, disabling octave wrappers])
+ with_octave=no
+ fi
+ if test -z "$MKOCTFILE"; then
+ AC_MSG_WARN([mkoctfile not found, disabling octave wrappers])
+ with_octave=no
+ fi
+ OCTAVE_INCFLAGS=`$MKOCTFILE -p INCFLAGS`
+ AC_SUBST(OCTAVE_INCFLAGS,[$OCTAVE_INCFLAGS])
+fi
+if test x"$with_octave" = "xyes"; then
+ # check that octave version is at least 2.9.12
+ cat > conftest.m <<'EOF'
+[[a,b,c]]=sscanf([[version()," "]],"%i.%i.%i","C");
+exit(sum([[a,b,c]].*[[1e5,1e3,1]])<209012)
+EOF
+ $OCTAVE --no-init-file conftest.m >& /dev/null || with_octave="no";
+ rm -f conftest.m
+
+ if test x"$with_octave" = "xno"; then
+ AC_MSG_WARN([Octave version < 2.9.12, disabling octave wrappers])
+ fi
+fi
+if test x"$with_octave" = "xyes"; then
+ # if not explicitly forbidden, check for swig also
+ if test x"$with_swig" = "xauto"; then
+ with_swig=yes
+ fi
+
+ # check that we have octave headers
+ OLD_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="$CPPFLAGS -x c++ $OCTAVE_INCFLAGS"
+ AC_CHECK_HEADER(octave/oct.h,
+ [have_octave=yes],
+ [
+ AC_MSG_WARN([Octave headers not found, disabling octave wrappers])
+ have_octave=no
+ ])
+
+ # restore the old CPPFLAGS
+ CPPFLAGS=$OLD_CPPFLAGS
+
+ # find Octave arch
+ AC_MSG_CHECKING([for Octave arch])
+ OCTAVE_ARCH=`$OCTAVE -q --eval 'strcat(octave_config_info("canonical_host_type"), "-", octave_config_info("api_version"))'|sed -e 's/ans = //'`
+ AC_MSG_RESULT([$OCTAVE_ARCH])
+ AC_SUBST(OCTAVE_ARCH,[$OCTAVE_ARCH])
+
+else
+ # check if ./configure arguments are valid
+ if test x"$with_octave" = "xno"; then
+ have_octave=no
+ else
+ # if we get here then --with-octave was not called with 'yes','no' or 'auto'
+ AC_MSG_WARN([unexpected arguments for option --with-octave, continuing assuming 'no'])
+ have_octave=no
+ fi
+fi
+AM_CONDITIONAL([BUILD_OCTAVE_WRAPPERS], [test x"$have_octave" = "xyes"])
+
# check for swig itself
SWIG=""
if test x"$with_swig" = "xyes"; then
AC_PATH_SWIG([1.2.24])
fi
+
if test -n "$SWIG"; then
SWIG_ENABLE_CXX()
SWIG_MULTI_MODULE_SUPPORT()
+ # if octave wrappers are enabled, check that swig supports octave
+ if test x"$with_octave" = "xyes"; then
+ AC_MSG_CHECKING([if SWIG supports Octave])
+cat > conftest.i <<EOF
+%module conftest
+EOF
+ $SWIG -c++ -octave conftest.i || AC_MSG_ERROR(SWIG doesn't support Octave modules)
+ AC_MSG_RESULT([yes])
+ rm -f conftest.*
+
+ # specify the flags for swig
+ AC_SUBST([SWIG_OCTAVE_OPT], "-octave")
+
+ fi
+
# check for swig python library
SWIG_PYTHON()
have_swig=yes
interfaces/swig/filtered/Makefile
interfaces/swig/general/Makefile
interfaces/swig/python/Makefile
+interfaces/swig/octave/Makefile
tests/Makefile
tests/python/Makefile
+tests/octave/Makefile
tests/cv/Makefile
tests/cv/src/Makefile
tests/cxts/Makefile
samples/Makefile
samples/c/Makefile
samples/python/Makefile
+samples/octave/Makefile
])
AC_OUTPUT
AC_MSG_RESULT([
General configuration ================================================
- Compiler: ${CXX}
+ Compiler: ${CXX}
CXXFLAGS: ${CXXFLAGS}
-
+ DEF_CXXFLAGS: ${DEF_CXXFLAGS}
+ PY_CXXFLAGS: ${PY_CXXFLAGS}
+ OCT_CXXFLAGS: ${OCT_CXXFLAGS}
+
Install path: ${prefix}
-
+
HighGUI configuration ================================================
Windowing system --------------
Use Carbon / Mac OS X: ${have_carbon}
Use gtk+ 2.x: ${have_gtk}
Use gthread: ${have_gthread}
-
+
Image I/O ---------------------
Use ImageIO / Mac OS X: ${have_imageio}
Use libjpeg: ${have_jpeg}
Use libtiff: ${have_tiff}
Use libjasper: ${have_jasper}
Use libIlmImf: ${have_ilmimf}
-
+
Video I/O ---------------------
Use QuickTime / Mac OS X: ${have_quicktime}
Use xine: ${have_xine}
+ Use gstreamer: ${have_gstreamer}
Use ffmpeg: ${have_ffmpeg}
Use dc1394 & raw1394: ${have_dc1394}
Use v4l: ${have_v4l}
Use v4l2: ${have_v4l2}
-
+ Use unicap: ${have_unicap}
+
Wrappers for other languages =========================================
SWIG ${SWIG}
Python ${have_python}
+ Octave ${have_octave}
Additional build settings ============================================
Build demo apps ${enable_apps}