X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=configure.in;fp=configure.in;h=82ccfb633fc1807ff2b75bc36cbec12da2b0d2ab;hb=80cd7b93506cc1926882d5fd08a2c74ee9359e29;hp=39be9321f6140abded3f16899584af7faa2eed47;hpb=467a270adf12425827305759c0c4ea8f5b2b3854;p=opencv diff --git a/configure.in b/configure.in index 39be932..82ccfb6 100644 --- a/configure.in +++ b/configure.in @@ -10,16 +10,16 @@ m4_define([opencv_version], [opencv_major_version.opencv_minor_version. # 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. @@ -27,8 +27,8 @@ m4_define([opencv_version], [opencv_major_version.opencv_minor_version. # 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]) @@ -40,7 +40,7 @@ AC_CONFIG_AUX_DIR([autotools]) 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 @@ -78,13 +78,13 @@ AC_PROG_LIBTOOL ###################################################################### # 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? @@ -96,29 +96,41 @@ AM_CONDITIONAL([BUILD_APPS], [test x"$enable_apps" = x"yes"]) # 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]])], @@ -137,6 +149,12 @@ AC_ARG_WITH([v4l], [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]])], @@ -181,6 +199,11 @@ if test x"$CXXFLAGS" = "x-g -O2" ; then 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 @@ -189,7 +212,7 @@ if test x"$debug" = "xyes"; then 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]) @@ -198,41 +221,46 @@ else 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) @@ -251,7 +279,7 @@ AC_CHECK_FUNCS(lrint) ###################################################################### # HighGUI dependencies for windowing system -# honor user selection, +# honor user selection, # if no selection given check for Carbon first CARBON_CFLAGS="" CARBON_LIBS="" @@ -265,13 +293,13 @@ if test x"$with_carbon" = "xyes"; then 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]) @@ -292,7 +320,7 @@ AC_SUBST(CARBON_CFLAGS) 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="" @@ -307,16 +335,16 @@ else 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 ]) @@ -379,7 +407,7 @@ if test x"$with_quicktime" = "xyes"; then 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], [ @@ -387,11 +415,11 @@ if test x"$with_quicktime" = "xyes"; then 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 @@ -417,6 +445,70 @@ AC_SUBST(QUICKTIME_CFLAGS) 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 @@ -494,21 +586,21 @@ else 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]) @@ -517,7 +609,7 @@ else IEEE1394LIBS="-lm -lraw1394 -ldc1394_control" ])) fi - + LIBS="$SAVELIBS" else # if we get here then --with-1394libs was not called with 'yes','no' or 'auto' @@ -528,7 +620,7 @@ fi 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 @@ -546,7 +638,7 @@ else have_v4l=yes have_v4l1or2=yes ], - [ + [ have_v4l=no have_v4l1or2=no ]) @@ -624,17 +716,17 @@ if test x"$have_imageio" = "xno" ; then 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, [ @@ -686,10 +778,9 @@ AC_SUBST(IMAGELIBS) ###################################################################### # 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]) @@ -704,7 +795,7 @@ if test x"$with_python" = "xyes"; then 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 @@ -736,6 +827,75 @@ else 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 @@ -749,10 +909,26 @@ 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 <