annotate acinclude.m4 @ 1025:c02de0e34233 spectrogram-minor-refactor

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