annotate acinclude.m4 @ 2541:7eab1eca5cc4

Place an expiry on feedback request for this version
author Chris Cannam
date Fri, 15 May 2020 14:21:42 +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