annotate acinclude.m4 @ 698:ee97c742d184 tip

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