X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/blobdiff_plain/cba6ab66683d20b46def45f691fa7c750f3f9a2b..14c0c9a9e5eeacc82904f4cc33e0842f5ee9ec44:/tests/macros.at diff --git a/tests/macros.at b/tests/macros.at index 9aadd03..6da14b3 100644 --- a/tests/macros.at +++ b/tests/macros.at @@ -1,4 +1,4 @@ -dnl Copyright © 2014-2015, 2018-2019, 2021-2023 Nick Bowler +dnl Copyright © 2014-2015, 2018-2019, 2021-2024 Nick Bowler dnl dnl License WTFPL2: Do What The Fuck You Want To Public License, version 2. dnl This is free software: you are free to do what the fuck you want to. @@ -650,8 +650,7 @@ AT_CHECK([grep HAVE_FOR_DECLS config.h], [0], TEST_CONFIGURE([CC="$CC -std=gnu99"]) AT_CHECK([grep HAVE_FOR_DECLS config.h], [0], [[#define HAVE_FOR_DECLS 1 -]]) -]) +]])]) AT_SETUP([DX_C_FOR_DECLARATIONS (aclocal.m4 +AT_DATA([config.h.in], +[[#undef _Alignof +#undef _Alignas +]]) +TEST_CONFIGURE_AC([m4_ifnblank([$1], [$1]) +[AC_CONFIG_HEADERS([config.h]) +DX_C_ALIGNOF +]]) +AT_CHECK([$AUTOCONF], [0], [], [stderr]) +AT_DATA([test.c], +[[#if __STDC_VERSION__ < 201112 +#error nope +char nope[-1]; +#endif +char yup; +]]) +AT_CHECK([$CC -c -std=gnu11 -pedantic-errors test.c || exit 77], + [0], [ignore], [ignore]) +TEST_CONFIGURE([CC="$CC" CFLAGS="-std=gnu89 -pedantic-errors"]) +AT_CHECK([grep _Align config.h], [0], +[[#define _Alignof(T) offsetof(struct { char a; T b; }, b) +/* #undef _Alignas */ +]]) +TEST_CONFIGURE([CC="$CC -std=gnu11"]) +AT_CHECK([grep _Align config.h], [0], +[[/* #undef _Alignof */ +/* #undef _Alignas */ +]])]) + +AT_SETUP([DX_C_ALIGNOF (autoconf-2.70)]) +AT_KEYWORDS([DX_C_ALIGNOF macro]) +TEST_FIND_AUTOCONF([default 2.71 2.72 2.73 2.74], + [AS_VERSION_COMPARE(["$acver"], [2.70], [continue], [continue], [])]) +TEST_DX_C_ALIGNOF([[AC_PROG_CC]]) +AT_CLEANUP + +m4_define([TEST_DX_C_ALIGNAS], +[cat "$srcdir/m4/align.m4" >aclocal.m4 +AT_DATA([config.h.in], +[[#undef _Alignas +#undef _Alignof +]]) +TEST_CONFIGURE_AC([m4_ifnblank([$1], [$1]) +[AC_CONFIG_HEADERS([config.h]) +AC_COMPUTE_INT([dummy], [0], [@&t@], [dummy=0]) # ensure main CC probes finish +AC_ARG_ENABLE([break-cc], [], [CC=false]) # before we force everything to fail +DX_C_ALIGNAS +]]) +AT_CHECK([$AUTOCONF], [0], [], [stderr]) +AT_DATA([test.c], +[[#if __STDC_VERSION__ < 201112 +#error nope +char nope[-1]; +#endif +char yup; +]]) +AT_CHECK([$CC -c -std=gnu11 -pedantic-errors test.c || exit 77], + [0], [ignore], [ignore]) +TEST_CONFIGURE([CC="$CC" CFLAGS="-std=gnu89 -pedantic-errors"]) +AT_CHECK([grep _Align config.h], [0], +[[#define _Alignas(X) __attribute__((__aligned__(X))) +/* #undef _Alignof */ +]]) +TEST_CONFIGURE([CC="$CC -std=gnu11"]) +AT_CHECK([grep _Align config.h], [0], +[[/* #undef _Alignas */ +/* #undef _Alignof */ +]]) +TEST_CONFIGURE([CC="$CC" CFLAGS="-std=gnu89 -pedantic-errors" --enable-break-cc]) +AT_CHECK([grep _Align config.h], [0], +[[#define _Alignas(X) /**/ +/* #undef _Alignof */ +]])]) + +AT_SETUP([DX_C_ALIGNAS (autoconf-2.70)]) +AT_KEYWORDS([DX_C_ALIGNAS macro]) +TEST_FIND_AUTOCONF([default 2.71 2.72 2.73 2.74], + [AS_VERSION_COMPARE(["$acver"], [2.70], [continue], [continue], [])]) +TEST_DX_C_ALIGNAS([[AC_PROG_CC]]) +AT_CLEANUP