annotate acinclude.m4 @ 2596:04d381f0d89a 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:56 +0100
parents 810a0b8f5472
children
rev   line source
Chris@350 1
Chris@350 2 AC_DEFUN([SV_MODULE_REQUIRED],
Chris@350 3 [
Chris@350 4 SV_MODULE_MODULE=$1
Chris@350 5 SV_MODULE_VERSION_TEST="$2"
Chris@350 6 SV_MODULE_HEADER=$3
Chris@350 7 SV_MODULE_LIB=$4
Chris@350 8 SV_MODULE_FUNC=$5
Chris@350 9 SV_MODULE_HAVE=HAVE_$(echo $1 | tr '[a-z]' '[A-Z]')
Chris@350 10 SV_MODULE_FAILED=1
Chris@405 11 if test -n "$$1_LIBS" ; then
Chris@405 12 AC_MSG_NOTICE([User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE])
Chris@405 13 CXXFLAGS="$CXXFLAGS $$1_CFLAGS"
Chris@405 14 LIBS="$LIBS $$1_LIBS"
Chris@405 15 SV_MODULE_FAILED=""
Chris@405 16 fi
Chris@350 17 if test -z "$SV_MODULE_VERSION_TEST" ; then
Chris@350 18 SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE
Chris@350 19 fi
Chris@405 20 if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then
Chris@350 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@350 22 fi
Chris@350 23 if test -n "$SV_MODULE_FAILED"; then
Chris@350 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@350 25 if test -n "$SV_MODULE_LIB"; then
Chris@350 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@350 27 fi
Chris@350 28 fi
Chris@350 29 ])
Chris@350 30
Chris@350 31 AC_DEFUN([SV_MODULE_OPTIONAL],
Chris@350 32 [
Chris@350 33 SV_MODULE_MODULE=$1
Chris@350 34 SV_MODULE_VERSION_TEST="$2"
Chris@350 35 SV_MODULE_HEADER=$3
Chris@350 36 SV_MODULE_LIB=$4
Chris@350 37 SV_MODULE_FUNC=$5
Chris@350 38 SV_MODULE_HAVE=HAVE_$(echo $1 | tr '[a-z]' '[A-Z]')
Chris@350 39 SV_MODULE_FAILED=1
Chris@405 40 if test -n "$$1_LIBS" ; then
Chris@405 41 AC_MSG_NOTICE([User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE])
Chris@405 42 CXXFLAGS="$CXXFLAGS $$1_CFLAGS"
Chris@405 43 LIBS="$LIBS $$1_LIBS"
Chris@405 44 SV_MODULE_FAILED=""
Chris@405 45 fi
Chris@350 46 if test -z "$SV_MODULE_VERSION_TEST" ; then
Chris@350 47 SV_MODULE_VERSION_TEST=$SV_MODULE_MODULE
Chris@350 48 fi
Chris@405 49 if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then
Chris@352 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@350 51 fi
Chris@350 52 if test -n "$SV_MODULE_FAILED"; then
Chris@350 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@350 54 if test -z "$SV_MODULE_FAILED"; then
Chris@350 55 if test -n "$SV_MODULE_LIB"; then
Chris@350 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@350 57 fi
Chris@350 58 fi
Chris@350 59 fi
Chris@350 60 ])
Chris@350 61
Chris@354 62 # Check for Qt. The only part of Qt we use directly is qmake.
Chris@354 63
Chris@350 64 AC_DEFUN([SV_CHECK_QT],
Chris@350 65 [
Chris@350 66 AC_REQUIRE([AC_PROG_CXX])
Chris@350 67
Chris@354 68 if test x$QMAKE = x ; then
Chris@545 69 AC_CHECK_PROG(QMAKE, qmake-qt5, $QTDIR/bin/qmake-qt5,,$QTDIR/bin/)
Chris@354 70 fi
Chris@354 71 if test x$QMAKE = x ; then
Chris@1119 72 AC_CHECK_PROG(QMAKE, qt5-qmake, $QTDIR/bin/qt5-qmake,,$QTDIR/bin/)
Chris@1119 73 fi
Chris@1119 74 if test x$QMAKE = x ; then
Chris@354 75 AC_CHECK_PROG(QMAKE, qmake, $QTDIR/bin/qmake,,$QTDIR/bin/)
Chris@354 76 fi
Chris@354 77 if test x$QMAKE = x ; then
Chris@354 78 AC_CHECK_PROG(QMAKE, qmake.exe, $QTDIR/bin/qmake.exe,,$QTDIR/bin/)
Chris@354 79 fi
Chris@354 80 if test x$QMAKE = x ; then
Chris@545 81 AC_CHECK_PROG(QMAKE, qmake-qt5, qmake-qt5,,$PATH)
Chris@354 82 fi
Chris@354 83 if test x$QMAKE = x ; then
Chris@1119 84 AC_CHECK_PROG(QMAKE, qt5-qmake, qt5-qmake,,$PATH)
Chris@1119 85 fi
Chris@1119 86 if test x$QMAKE = x ; then
Chris@354 87 AC_CHECK_PROG(QMAKE, qmake, qmake,,$PATH)
Chris@354 88 fi
Chris@354 89 if test x$QMAKE = x ; then
Chris@354 90 AC_MSG_ERROR([
Chris@545 91 Failed to find the required qmake-qt5 or qmake program. Please
Chris@545 92 ensure you have the necessary Qt5 development files installed, and
Chris@545 93 if necessary set QTDIR to the location of your Qt5 installation.
Chris@350 94 ])
Chris@350 95 fi
Chris@350 96
Chris@350 97 # Suitable versions of qmake should print out something like:
Chris@350 98 #
Chris@350 99 # QMake version 2.01a
Chris@350 100 # Using Qt version 4.6.3 in /usr/lib
Chris@350 101 #
Chris@350 102 # This may be translated, so we check only for the numbers (2.x and 4.x
Chris@350 103 # in that order).
Chris@350 104 #
Chris@350 105 QMAKE_VERSION_OUTPUT=`$QMAKE -v`
Chris@350 106 case "$QMAKE_VERSION_OUTPUT" in
Chris@545 107 *5.*) ;;
Chris@350 108 *) AC_MSG_WARN([
Chris@350 109 *** The version of qmake found in "$QMAKE" looks like it might be
Chris@545 110 from the wrong version of Qt (Qt5 is required). Please check
Chris@545 111 that this is the correct version of qmake for Qt5 builds.
Chris@350 112 ])
Chris@350 113 esac
Chris@350 114
Chris@359 115 case "`uname`" in
Chris@359 116 *Darwin*) QMAKE="$QMAKE -spec macx-g++";;
Chris@359 117 esac
Chris@359 118
Chris@350 119 ])
Chris@350 120
Chris@884 121 # From autoconf archive:
Chris@884 122
Chris@884 123 # ============================================================================
Chris@884 124 # http://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_11.html
Chris@884 125 # ============================================================================
Chris@884 126 #
Chris@884 127 # SYNOPSIS
Chris@884 128 #
Chris@884 129 # AX_CXX_COMPILE_STDCXX_11([ext|noext],[mandatory|optional])
Chris@884 130 #
Chris@884 131 # DESCRIPTION
Chris@884 132 #
Chris@884 133 # Check for baseline language coverage in the compiler for the C++11
Chris@884 134 # standard; if necessary, add switches to CXXFLAGS to enable support.
Chris@884 135 #
Chris@884 136 # The first argument, if specified, indicates whether you insist on an
Chris@884 137 # extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
Chris@884 138 # -std=c++11). If neither is specified, you get whatever works, with
Chris@884 139 # preference for an extended mode.
Chris@884 140 #
Chris@884 141 # The second argument, if specified 'mandatory' or if left unspecified,
Chris@884 142 # indicates that baseline C++11 support is required and that the macro
Chris@884 143 # should error out if no mode with that support is found. If specified
Chris@884 144 # 'optional', then configuration proceeds regardless, after defining
Chris@884 145 # HAVE_CXX11 if and only if a supporting mode is found.
Chris@884 146 #
Chris@884 147 # LICENSE
Chris@884 148 #
Chris@884 149 # Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
Chris@884 150 # Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
Chris@884 151 # Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
Chris@884 152 # Copyright (c) 2014 Alexey Sokolov <sokolov@google.com>
Chris@884 153 #
Chris@884 154 # Copying and distribution of this file, with or without modification, are
Chris@884 155 # permitted in any medium without royalty provided the copyright notice
Chris@884 156 # and this notice are preserved. This file is offered as-is, without any
Chris@884 157 # warranty.
Chris@884 158
Chris@884 159 m4_define([_AX_CXX_COMPILE_STDCXX_11_testbody], [[
Chris@884 160 template <typename T>
Chris@884 161 struct check
Chris@884 162 {
Chris@884 163 static_assert(sizeof(int) <= sizeof(T), "not big enough");
Chris@884 164 };
Chris@884 165
Chris@884 166 struct Base {
Chris@884 167 virtual void f() {}
Chris@884 168 };
Chris@884 169 struct Child : public Base {
Chris@884 170 virtual void f() override {}
Chris@884 171 };
Chris@884 172
Chris@884 173 typedef check<check<bool>> right_angle_brackets;
Chris@884 174
Chris@884 175 int a;
Chris@884 176 decltype(a) b;
Chris@884 177
Chris@884 178 typedef check<int> check_type;
Chris@884 179 check_type c;
Chris@884 180 check_type&& cr = static_cast<check_type&&>(c);
Chris@884 181
Chris@884 182 auto d = a;
Chris@884 183 auto l = [](){};
Chris@884 184 ]])
Chris@884 185
Chris@884 186 AC_DEFUN([AX_CXX_COMPILE_STDCXX_11], [dnl
Chris@884 187 m4_if([$1], [], [],
Chris@884 188 [$1], [ext], [],
Chris@884 189 [$1], [noext], [],
Chris@884 190 [m4_fatal([invalid argument `$1' to AX_CXX_COMPILE_STDCXX_11])])dnl
Chris@884 191 m4_if([$2], [], [ax_cxx_compile_cxx11_required=true],
Chris@884 192 [$2], [mandatory], [ax_cxx_compile_cxx11_required=true],
Chris@884 193 [$2], [optional], [ax_cxx_compile_cxx11_required=false],
Chris@884 194 [m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX_11])])
Chris@884 195 AC_LANG_PUSH([C++])dnl
Chris@884 196 ac_success=no
Chris@884 197 AC_CACHE_CHECK(whether $CXX supports C++11 features by default,
Chris@884 198 ax_cv_cxx_compile_cxx11,
Chris@884 199 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@884 200 [ax_cv_cxx_compile_cxx11=yes],
Chris@884 201 [ax_cv_cxx_compile_cxx11=no])])
Chris@884 202 if test x$ax_cv_cxx_compile_cxx11 = xyes; then
Chris@884 203 ac_success=yes
Chris@884 204 fi
Chris@884 205
Chris@884 206 m4_if([$1], [noext], [], [dnl
Chris@884 207 if test x$ac_success = xno; then
Chris@884 208 for switch in -std=gnu++11 -std=gnu++0x; do
Chris@884 209 cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
Chris@884 210 AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
Chris@884 211 $cachevar,
Chris@884 212 [ac_save_CXXFLAGS="$CXXFLAGS"
Chris@884 213 CXXFLAGS="$CXXFLAGS $switch"
Chris@884 214 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@884 215 [eval $cachevar=yes],
Chris@884 216 [eval $cachevar=no])
Chris@884 217 CXXFLAGS="$ac_save_CXXFLAGS"])
Chris@884 218 if eval test x\$$cachevar = xyes; then
Chris@884 219 CXXFLAGS="$CXXFLAGS $switch"
Chris@884 220 ac_success=yes
Chris@884 221 break
Chris@884 222 fi
Chris@884 223 done
Chris@884 224 fi])
Chris@884 225
Chris@884 226 m4_if([$1], [ext], [], [dnl
Chris@884 227 if test x$ac_success = xno; then
Chris@884 228 for switch in -std=c++11 -std=c++0x; do
Chris@884 229 cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx11_$switch])
Chris@884 230 AC_CACHE_CHECK(whether $CXX supports C++11 features with $switch,
Chris@884 231 $cachevar,
Chris@884 232 [ac_save_CXXFLAGS="$CXXFLAGS"
Chris@884 233 CXXFLAGS="$CXXFLAGS $switch"
Chris@884 234 AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_11_testbody])],
Chris@884 235 [eval $cachevar=yes],
Chris@884 236 [eval $cachevar=no])
Chris@884 237 CXXFLAGS="$ac_save_CXXFLAGS"])
Chris@884 238 if eval test x\$$cachevar = xyes; then
Chris@884 239 CXXFLAGS="$CXXFLAGS $switch"
Chris@884 240 ac_success=yes
Chris@884 241 break
Chris@884 242 fi
Chris@884 243 done
Chris@884 244 fi])
Chris@884 245 AC_LANG_POP([C++])
Chris@884 246 if test x$ax_cxx_compile_cxx11_required = xtrue; then
Chris@884 247 if test x$ac_success = xno; then
Chris@884 248 AC_MSG_ERROR([*** A compiler with support for C++11 language features is required.])
Chris@884 249 fi
Chris@884 250 else
Chris@884 251 if test x$ac_success = xno; then
Chris@884 252 HAVE_CXX11=0
Chris@884 253 AC_MSG_NOTICE([No compiler with C++11 support was found])
Chris@884 254 else
Chris@884 255 HAVE_CXX11=1
Chris@884 256 AC_DEFINE(HAVE_CXX11,1,
Chris@884 257 [define if the compiler supports basic C++11 syntax])
Chris@884 258 fi
Chris@884 259
Chris@884 260 AC_SUBST(HAVE_CXX11)
Chris@884 261 fi
Chris@884 262 ])
Chris@884 263
Chris@1976 264 # ===========================================================================
Chris@1976 265 # https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
Chris@1976 266 # ===========================================================================
Chris@1976 267 #
Chris@1976 268 # SYNOPSIS
Chris@1976 269 #
Chris@1976 270 # AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
Chris@1976 271 #
Chris@1976 272 # DESCRIPTION
Chris@1976 273 #
Chris@1976 274 # Check whether the given FLAG works with the current language's compiler
Chris@1976 275 # or gives an error. (Warnings, however, are ignored)
Chris@1976 276 #
Chris@1976 277 # ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
Chris@1976 278 # success/failure.
Chris@1976 279 #
Chris@1976 280 # If EXTRA-FLAGS is defined, it is added to the current language's default
Chris@1976 281 # flags (e.g. CFLAGS) when the check is done. The check is thus made with
Chris@1976 282 # the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
Chris@1976 283 # force the compiler to issue an error when a bad flag is given.
Chris@1976 284 #
Chris@1976 285 # INPUT gives an alternative input source to AC_COMPILE_IFELSE.
Chris@1976 286 #
Chris@1976 287 # NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
Chris@1976 288 # macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
Chris@1976 289 #
Chris@1976 290 # LICENSE
Chris@1976 291 #
Chris@1976 292 # Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
Chris@1976 293 # Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
Chris@1976 294 #
Chris@1976 295 # Copying and distribution of this file, with or without modification, are
Chris@1976 296 # permitted in any medium without royalty provided the copyright notice
Chris@1976 297 # and this notice are preserved. This file is offered as-is, without any
Chris@1976 298 # warranty.
Chris@1976 299
Chris@1976 300 AC_DEFUN([AX_CHECK_COMPILE_FLAG],
Chris@1976 301 [AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
Chris@1976 302 AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
Chris@1976 303 AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
Chris@1976 304 ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
Chris@1976 305 _AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
Chris@1976 306 AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
Chris@1976 307 [AS_VAR_SET(CACHEVAR,[yes])],
Chris@1976 308 [AS_VAR_SET(CACHEVAR,[no])])
Chris@1976 309 _AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
Chris@1976 310 AS_VAR_IF(CACHEVAR,yes,
Chris@1976 311 [m4_default([$2], :)],
Chris@1976 312 [m4_default([$3], :)])
Chris@1976 313 AS_VAR_POPDEF([CACHEVAR])dnl
Chris@1976 314 ])dnl AX_CHECK_COMPILE_FLAGS