annotate acinclude.m4 @ 1135:628cd329c241 spectrogram-minor-refactor

Use a count of bins rather than min and max bins (because the name maxbin tells us nothing about whether the range is inclusive or not)
author Chris Cannam
date Wed, 03 Aug 2016 14:20:27 +0100
parents 9fc23e778bfa
children
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@1032 72 AC_CHECK_PROG(QMAKE, qt5-qmake, $QTDIR/bin/qt5-qmake,,$QTDIR/bin/)
Chris@1032 73 fi
Chris@1032 74 if test x$QMAKE = x ; then
Chris@568 75 AC_CHECK_PROG(QMAKE, qmake, $QTDIR/bin/qmake,,$QTDIR/bin/)
Chris@568 76 fi
Chris@568 77 if test x$QMAKE = x ; then
Chris@568 78 AC_CHECK_PROG(QMAKE, qmake.exe, $QTDIR/bin/qmake.exe,,$QTDIR/bin/)
Chris@568 79 fi
Chris@568 80 if test x$QMAKE = x ; then
Chris@636 81 AC_CHECK_PROG(QMAKE, qmake-qt5, qmake-qt5,,$PATH)
Chris@568 82 fi
Chris@568 83 if test x$QMAKE = x ; then
Chris@1032 84 AC_CHECK_PROG(QMAKE, qt5-qmake, qt5-qmake,,$PATH)
Chris@1032 85 fi
Chris@1032 86 if test x$QMAKE = x ; then
Chris@568 87 AC_CHECK_PROG(QMAKE, qmake, qmake,,$PATH)
Chris@568 88 fi
Chris@568 89 if test x$QMAKE = x ; then
Chris@568 90 AC_MSG_ERROR([
Chris@636 91 Failed to find the required qmake-qt5 or qmake program. Please
Chris@636 92 ensure you have the necessary Qt5 development files installed, and
Chris@636 93 if necessary set QTDIR to the location of your Qt5 installation.
Chris@564 94 ])
Chris@564 95 fi
Chris@564 96
Chris@564 97 # Suitable versions of qmake should print out something like:
Chris@564 98 #
Chris@564 99 # QMake version 2.01a
Chris@564 100 # Using Qt version 4.6.3 in /usr/lib
Chris@564 101 #
Chris@564 102 # This may be translated, so we check only for the numbers (2.x and 4.x
Chris@564 103 # in that order).
Chris@564 104 #
Chris@564 105 QMAKE_VERSION_OUTPUT=`$QMAKE -v`
Chris@564 106 case "$QMAKE_VERSION_OUTPUT" in
Chris@636 107 *5.*) ;;
Chris@564 108 *) AC_MSG_WARN([
Chris@564 109 *** The version of qmake found in "$QMAKE" looks like it might be
Chris@636 110 from the wrong version of Qt (Qt5 is required). Please check
Chris@636 111 that this is the correct version of qmake for Qt5 builds.
Chris@564 112 ])
Chris@564 113 esac
Chris@564 114
Chris@571 115 case "`uname`" in
Chris@571 116 *Darwin*) QMAKE="$QMAKE -spec macx-g++";;
Chris@571 117 esac
Chris@571 118
Chris@564 119 ])
Chris@564 120
Chris@879 121 # From autoconf archive:
Chris@879 122
Chris@879 123 # ============================================================================
Chris@879 124 # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
Chris@879 125 # ============================================================================
Chris@879 126 #
Chris@879 127 # SYNOPSIS
Chris@879 128 #
Chris@879 129 # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
Chris@879 130 #
Chris@879 131 # DESCRIPTION
Chris@879 132 #
Chris@879 133 # Check for baseline language coverage in the compiler for the C++11
Chris@879 134 # standard; if necessary, add switches to CXXFLAGS to enable support.
Chris@879 135 #
Chris@879 136 # The first argument, if specified, indicates whether you insist on an
Chris@879 137 # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
Chris@879 138 # -std=c++11). If neither is specified, you get whatever works, with
Chris@879 139 # preference for an extended mode.
Chris@879 140 #
Chris@879 141 # The second argument, if specified 'mandatory' or if left unspecified,
Chris@879 142 # indicates that baseline C++11 support is required and that the macro
Chris@879 143 # should error out if no mode with that support is found. If specified
Chris@879 144 # 'optional', then configuration proceeds regardless, after defining
Chris@879 145 # HAVE_CXX11 if and only if a supporting mode is found.
Chris@879 146 #
Chris@879 147 # LICENSE
Chris@879 148 #
Chris@879 149 # Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
Chris@879 150 # Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
Chris@879 151 # Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
Chris@879 152 # Copyright (c) 2014 Alexey Sokolov <sokolov@google.com>
Chris@879 153 #
Chris@879 154 # Copying and distribution of this file, with or without modification, are
Chris@879 155 # permitted in any medium without royalty provided the copyright notice
Chris@879 156 # and this notice are preserved. This file is offered as-is, without any
Chris@879 157 # warranty.
Chris@879 158
Chris@879 159 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
Chris@879 160 template <typename T>
Chris@879 161 struct check
Chris@879 162 {
Chris@879 163 static_assert(sizeof(int) <= sizeof(T), "not big enough");
Chris@879 164 };
Chris@879 165
Chris@879 166 struct Base {
Chris@879 167 virtual void f() {}
Chris@879 168 };
Chris@879 169 struct Child : public Base {
Chris@879 170 virtual void f() override {}
Chris@879 171 };
Chris@879 172
Chris@879 173 typedef check<check<bool>> right_angle_brackets;
Chris@879 174
Chris@879 175 int a;
Chris@879 176 decltype(a) b;
Chris@879 177
Chris@879 178 typedef check<int> check_type;
Chris@879 179 check_type c;
Chris@879 180 check_type&& cr = static_cast<check_type&&>(c);
Chris@879 181
Chris@879 182 auto d = a;
Chris@879 183 auto l = [](){};
Chris@879 184 ]])
Chris@879 185
Chris@879 186 AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
Chris@879 187 m4_if([$1], [], [],
Chris@879 188 [$1], [ext], [],
Chris@879 189 [$1], [noext], [],
Chris@879 190 [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
Chris@879 191 m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
Chris@879 192 [$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
Chris@879 193 [$2], [optional], [ax_cxx_compile_cxx11_required=false],
Chris@879 194 [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
Chris@879 195 AC_LANG_PUSH([C++])dnl
Chris@879 196 ac_success=no
Chris@879 197 AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
Chris@879 198 ax_cv_cxx_compile_cxx11,
Chris@879 199 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@879 200 [ax_cv_cxx_compile_cxx11=yes],
Chris@879 201 [ax_cv_cxx_compile_cxx11=no])])
Chris@879 202 if test x$ax_cv_cxx_compile_cxx11 = xyes; then
Chris@879 203 ac_success=yes
Chris@879 204 fi
Chris@879 205
Chris@879 206 m4_if([$1], [noext], [], [dnl
Chris@879 207 if test x$ac_success = xno; then
Chris@879 208 for switch in -std=gnu++11 -std=gnu++0x; do
Chris@879 209 cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
Chris@879 210 AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
Chris@879 211 $cachevar,
Chris@879 212 [ac_save_CXXFLAGS="$CXXFLAGS"
Chris@879 213 CXXFLAGS="$CXXFLAGS $switch"
Chris@879 214 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@879 215 [eval $cachevar=yes],
Chris@879 216 [eval $cachevar=no])
Chris@879 217 CXXFLAGS="$ac_save_CXXFLAGS"])
Chris@879 218 if eval test x\$$cachevar = xyes; then
Chris@879 219 CXXFLAGS="$CXXFLAGS $switch"
Chris@879 220 ac_success=yes
Chris@879 221 break
Chris@879 222 fi
Chris@879 223 done
Chris@879 224 fi])
Chris@879 225
Chris@879 226 m4_if([$1], [ext], [], [dnl
Chris@879 227 if test x$ac_success = xno; then
Chris@879 228 for switch in -std=c++11 -std=c++0x; do
Chris@879 229 cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
Chris@879 230 AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
Chris@879 231 $cachevar,
Chris@879 232 [ac_save_CXXFLAGS="$CXXFLAGS"
Chris@879 233 CXXFLAGS="$CXXFLAGS $switch"
Chris@879 234 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@879 235 [eval $cachevar=yes],
Chris@879 236 [eval $cachevar=no])
Chris@879 237 CXXFLAGS="$ac_save_CXXFLAGS"])
Chris@879 238 if eval test x\$$cachevar = xyes; then
Chris@879 239 CXXFLAGS="$CXXFLAGS $switch"
Chris@879 240 ac_success=yes
Chris@879 241 break
Chris@879 242 fi
Chris@879 243 done
Chris@879 244 fi])
Chris@879 245 AC_LANG_POP([C++])
Chris@879 246 if test x$ax_cxx_compile_cxx11_required = xtrue; then
Chris@879 247 if test x$ac_success = xno; then
Chris@879 248 AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
Chris@879 249 fi
Chris@879 250 else
Chris@879 251 if test x$ac_success = xno; then
Chris@879 252 HAVE_CXX11=0
Chris@879 253 AC_MSG_NOTICE([No compiler with C++11 support was found])
Chris@879 254 else
Chris@879 255 HAVE_CXX11=1
Chris@879 256 AC_DEFINE(HAVE_CXX11,1,
Chris@879 257 [define if the compiler supports basic C++11 syntax])
Chris@879 258 fi
Chris@879 259
Chris@879 260 AC_SUBST(HAVE_CXX11)
Chris@879 261 fi
Chris@879 262 ])
Chris@879 263