annotate acinclude.m4 @ 1078:ce82bcdc95d0

Fail upfront if the file is going to be too large. We expect the caller to split up large data sets into several MatrixFiles
author Chris Cannam
date Wed, 10 Jun 2015 13:10:26 +0100
parents dbb7f0ab011e
children 8a1328ab9c48
rev   line source
Chris@638 1
Chris@638 2 AC_DEFUN([SV_MODULE_REQUIRED],
Chris@638 3 [
Chris@638 4 SV_MODULE_MODULE=$1
Chris@638 5 SV_MODULE_VERSION_TEST="$2"
Chris@638 6 SV_MODULE_HEADER=$3
Chris@638 7 SV_MODULE_LIB=$4
Chris@638 8 SV_MODULE_FUNC=$5
Chris@638 9 SV_MODULE_HAVE=HAVE_$(echo $1 | tr '[a-z]' '[A-Z]')
Chris@638 10 SV_MODULE_FAILED=1
Chris@671 11 if test -n "$$1_LIBS" ; then
Chris@671 12 AC_MSG_NOTICE([User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE])
Chris@672 13 CXXFLAGS="$CXXFLAGS $$1_CFLAGS"
Chris@672 14 LIBS="$LIBS $$1_LIBS"
Chris@671 15 SV_MODULE_FAILED=""
Chris@671 16 fi
Chris@638 17 if test -z "$SV_MODULE_VERSION_TEST" ; then
Chris@638 18 SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE
Chris@638 19 fi
Chris@671 20 if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then
Chris@638 21 PKG_CHECK_MODULES($1,[$SV_MODULE_VERSION_TEST],[HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $$1_CFLAGS";LIBS="$LIBS $$1_LIBS";SV_MODULE_FAILED=""],[AC_MSG_NOTICE([Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means])])
Chris@638 22 fi
Chris@638 23 if test -n "$SV_MODULE_FAILED"; then
Chris@638 24 AC_CHECK_HEADER([$SV_MODULE_HEADER],[HAVES="$HAVES $SV_MODULE_HAVE"],[AC_MSG_ERROR([Failed to find header $SV_MODULE_HEADER for required module $SV_MODULE_MODULE])])
Chris@638 25 if test -n "$SV_MODULE_LIB"; then
Chris@638 26 AC_CHECK_LIB([$SV_MODULE_LIB],[$SV_MODULE_FUNC],[LIBS="$LIBS -l$SV_MODULE_LIB"],[AC_MSG_ERROR([Failed to find library $SV_MODULE_LIB for required module $SV_MODULE_MODULE])])
Chris@638 27 fi
Chris@638 28 fi
Chris@638 29 ])
Chris@638 30
Chris@638 31 AC_DEFUN([SV_MODULE_OPTIONAL],
Chris@638 32 [
Chris@638 33 SV_MODULE_MODULE=$1
Chris@638 34 SV_MODULE_VERSION_TEST="$2"
Chris@638 35 SV_MODULE_HEADER=$3
Chris@638 36 SV_MODULE_LIB=$4
Chris@638 37 SV_MODULE_FUNC=$5
Chris@638 38 SV_MODULE_HAVE=HAVE_$(echo $1 | tr '[a-z]' '[A-Z]')
Chris@638 39 SV_MODULE_FAILED=1
Chris@671 40 if test -n "$$1_LIBS" ; then
Chris@671 41 AC_MSG_NOTICE([User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE])
Chris@672 42 CXXFLAGS="$CXXFLAGS $$1_CFLAGS"
Chris@672 43 LIBS="$LIBS $$1_LIBS"
Chris@671 44 SV_MODULE_FAILED=""
Chris@671 45 fi
Chris@638 46 if test -z "$SV_MODULE_VERSION_TEST" ; then
Chris@638 47 SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE
Chris@638 48 fi
Chris@671 49 if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then
Chris@649 50 PKG_CHECK_MODULES($1,[$SV_MODULE_VERSION_TEST],[HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $$1_CFLAGS";LIBS="$LIBS $$1_LIBS";SV_MODULE_FAILED=""],[AC_MSG_NOTICE([Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means])])
Chris@638 51 fi
Chris@638 52 if test -n "$SV_MODULE_FAILED"; then
Chris@638 53 AC_CHECK_HEADER([$SV_MODULE_HEADER],[HAVES="$HAVES $SV_MODULE_HAVE";SV_MODULE_FAILED=""],[AC_MSG_NOTICE([Failed to find header $SV_MODULE_HEADER for optional module $SV_MODULE_MODULE])])
Chris@638 54 if test -z "$SV_MODULE_FAILED"; then
Chris@638 55 if test -n "$SV_MODULE_LIB"; then
Chris@638 56 AC_CHECK_LIB([$SV_MODULE_LIB],[$SV_MODULE_FUNC],[LIBS="$LIBS -l$SV_MODULE_LIB"],[AC_MSG_NOTICE([Failed to find library $SV_MODULE_LIB for optional module $SV_MODULE_MODULE])])
Chris@638 57 fi
Chris@638 58 fi
Chris@638 59 fi
Chris@638 60 ])
Chris@638 61
Chris@651 62 # Check for Qt. The only part of Qt we use directly is qmake.
Chris@651 63
Chris@638 64 AC_DEFUN([SV_CHECK_QT],
Chris@638 65 [
Chris@638 66 AC_REQUIRE([AC_PROG_CXX])
Chris@638 67
Chris@651 68 if test x$QMAKE = x ; then
Chris@792 69 AC_CHECK_PROG(QMAKE, qmake-qt5, $QTDIR/bin/qmake-qt5,,$QTDIR/bin/)
Chris@651 70 fi
Chris@651 71 if test x$QMAKE = x ; then
Chris@651 72 AC_CHECK_PROG(QMAKE, qmake, $QTDIR/bin/qmake,,$QTDIR/bin/)
Chris@651 73 fi
Chris@651 74 if test x$QMAKE = x ; then
Chris@651 75 AC_CHECK_PROG(QMAKE, qmake.exe, $QTDIR/bin/qmake.exe,,$QTDIR/bin/)
Chris@651 76 fi
Chris@651 77 if test x$QMAKE = x ; then
Chris@792 78 AC_CHECK_PROG(QMAKE, qmake-qt5, qmake-qt5,,$PATH)
Chris@651 79 fi
Chris@651 80 if test x$QMAKE = x ; then
Chris@651 81 AC_CHECK_PROG(QMAKE, qmake, qmake,,$PATH)
Chris@651 82 fi
Chris@651 83 if test x$QMAKE = x ; then
Chris@651 84 AC_MSG_ERROR([
Chris@792 85 Failed to find the required qmake-qt5 or qmake program. Please
Chris@792 86 ensure you have the necessary Qt5 development files installed, and
Chris@792 87 if necessary set QTDIR to the location of your Qt5 installation.
Chris@638 88 ])
Chris@638 89 fi
Chris@638 90
Chris@638 91 # Suitable versions of qmake should print out something like:
Chris@638 92 #
Chris@638 93 # QMake version 2.01a
Chris@638 94 # Using Qt version 4.6.3 in /usr/lib
Chris@638 95 #
Chris@638 96 # This may be translated, so we check only for the numbers (2.x and 4.x
Chris@638 97 # in that order).
Chris@638 98 #
Chris@638 99 QMAKE_VERSION_OUTPUT=`$QMAKE -v`
Chris@638 100 case "$QMAKE_VERSION_OUTPUT" in
Chris@792 101 *5.*) ;;
Chris@638 102 *) AC_MSG_WARN([
Chris@638 103 *** The version of qmake found in "$QMAKE" looks like it might be
Chris@792 104 from the wrong version of Qt (Qt5 is required). Please check
Chris@792 105 that this is the correct version of qmake for Qt5 builds.
Chris@638 106 ])
Chris@638 107 esac
Chris@638 108
Chris@655 109 case "`uname`" in
Chris@655 110 *Darwin*) QMAKE="$QMAKE -spec macx-g++";;
Chris@655 111 esac
Chris@655 112
Chris@638 113 ])
Chris@638 114
Chris@1011 115 # From autoconf archive:
Chris@1011 116
Chris@1011 117 # ============================================================================
Chris@1011 118 # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
Chris@1011 119 # ============================================================================
Chris@1011 120 #
Chris@1011 121 # SYNOPSIS
Chris@1011 122 #
Chris@1011 123 # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
Chris@1011 124 #
Chris@1011 125 # DESCRIPTION
Chris@1011 126 #
Chris@1011 127 # Check for baseline language coverage in the compiler for the C++11
Chris@1011 128 # standard; if necessary, add switches to CXXFLAGS to enable support.
Chris@1011 129 #
Chris@1011 130 # The first argument, if specified, indicates whether you insist on an
Chris@1011 131 # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
Chris@1011 132 # -std=c++11). If neither is specified, you get whatever works, with
Chris@1011 133 # preference for an extended mode.
Chris@1011 134 #
Chris@1011 135 # The second argument, if specified 'mandatory' or if left unspecified,
Chris@1011 136 # indicates that baseline C++11 support is required and that the macro
Chris@1011 137 # should error out if no mode with that support is found. If specified
Chris@1011 138 # 'optional', then configuration proceeds regardless, after defining
Chris@1011 139 # HAVE_CXX11 if and only if a supporting mode is found.
Chris@1011 140 #
Chris@1011 141 # LICENSE
Chris@1011 142 #
Chris@1011 143 # Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
Chris@1011 144 # Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
Chris@1011 145 # Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
Chris@1011 146 # Copyright (c) 2014 Alexey Sokolov <sokolov@google.com>
Chris@1011 147 #
Chris@1011 148 # Copying and distribution of this file, with or without modification, are
Chris@1011 149 # permitted in any medium without royalty provided the copyright notice
Chris@1011 150 # and this notice are preserved. This file is offered as-is, without any
Chris@1011 151 # warranty.
Chris@1011 152
Chris@1011 153 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
Chris@1011 154 template <typename T>
Chris@1011 155 struct check
Chris@1011 156 {
Chris@1011 157 static_assert(sizeof(int) <= sizeof(T), "not big enough");
Chris@1011 158 };
Chris@1011 159
Chris@1011 160 struct Base {
Chris@1011 161 virtual void f() {}
Chris@1011 162 };
Chris@1011 163 struct Child : public Base {
Chris@1011 164 virtual void f() override {}
Chris@1011 165 };
Chris@1011 166
Chris@1011 167 typedef check<check<bool>> right_angle_brackets;
Chris@1011 168
Chris@1011 169 int a;
Chris@1011 170 decltype(a) b;
Chris@1011 171
Chris@1011 172 typedef check<int> check_type;
Chris@1011 173 check_type c;
Chris@1011 174 check_type&& cr = static_cast<check_type&&>(c);
Chris@1011 175
Chris@1011 176 auto d = a;
Chris@1011 177 auto l = [](){};
Chris@1011 178 ]])
Chris@1011 179
Chris@1011 180 AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
Chris@1011 181 m4_if([$1], [], [],
Chris@1011 182 [$1], [ext], [],
Chris@1011 183 [$1], [noext], [],
Chris@1011 184 [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
Chris@1011 185 m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
Chris@1011 186 [$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
Chris@1011 187 [$2], [optional], [ax_cxx_compile_cxx11_required=false],
Chris@1011 188 [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
Chris@1011 189 AC_LANG_PUSH([C++])dnl
Chris@1011 190 ac_success=no
Chris@1011 191 AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
Chris@1011 192 ax_cv_cxx_compile_cxx11,
Chris@1011 193 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@1011 194 [ax_cv_cxx_compile_cxx11=yes],
Chris@1011 195 [ax_cv_cxx_compile_cxx11=no])])
Chris@1011 196 if test x$ax_cv_cxx_compile_cxx11 = xyes; then
Chris@1011 197 ac_success=yes
Chris@1011 198 fi
Chris@1011 199
Chris@1011 200 m4_if([$1], [noext], [], [dnl
Chris@1011 201 if test x$ac_success = xno; then
Chris@1011 202 for switch in -std=gnu++11 -std=gnu++0x; do
Chris@1011 203 cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
Chris@1011 204 AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
Chris@1011 205 $cachevar,
Chris@1011 206 [ac_save_CXXFLAGS="$CXXFLAGS"
Chris@1011 207 CXXFLAGS="$CXXFLAGS $switch"
Chris@1011 208 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@1011 209 [eval $cachevar=yes],
Chris@1011 210 [eval $cachevar=no])
Chris@1011 211 CXXFLAGS="$ac_save_CXXFLAGS"])
Chris@1011 212 if eval test x\$$cachevar = xyes; then
Chris@1011 213 CXXFLAGS="$CXXFLAGS $switch"
Chris@1011 214 ac_success=yes
Chris@1011 215 break
Chris@1011 216 fi
Chris@1011 217 done
Chris@1011 218 fi])
Chris@1011 219
Chris@1011 220 m4_if([$1], [ext], [], [dnl
Chris@1011 221 if test x$ac_success = xno; then
Chris@1011 222 for switch in -std=c++11 -std=c++0x; do
Chris@1011 223 cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
Chris@1011 224 AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
Chris@1011 225 $cachevar,
Chris@1011 226 [ac_save_CXXFLAGS="$CXXFLAGS"
Chris@1011 227 CXXFLAGS="$CXXFLAGS $switch"
Chris@1011 228 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@1011 229 [eval $cachevar=yes],
Chris@1011 230 [eval $cachevar=no])
Chris@1011 231 CXXFLAGS="$ac_save_CXXFLAGS"])
Chris@1011 232 if eval test x\$$cachevar = xyes; then
Chris@1011 233 CXXFLAGS="$CXXFLAGS $switch"
Chris@1011 234 ac_success=yes
Chris@1011 235 break
Chris@1011 236 fi
Chris@1011 237 done
Chris@1011 238 fi])
Chris@1011 239 AC_LANG_POP([C++])
Chris@1011 240 if test x$ax_cxx_compile_cxx11_required = xtrue; then
Chris@1011 241 if test x$ac_success = xno; then
Chris@1011 242 AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
Chris@1011 243 fi
Chris@1011 244 else
Chris@1011 245 if test x$ac_success = xno; then
Chris@1011 246 HAVE_CXX11=0
Chris@1011 247 AC_MSG_NOTICE([No compiler with C++11 support was found])
Chris@1011 248 else
Chris@1011 249 HAVE_CXX11=1
Chris@1011 250 AC_DEFINE(HAVE_CXX11,1,
Chris@1011 251 [define if the compiler supports basic C++11 syntax])
Chris@1011 252 fi
Chris@1011 253
Chris@1011 254 AC_SUBST(HAVE_CXX11)
Chris@1011 255 fi
Chris@1011 256 ])
Chris@1011 257