Check compiler for c99 declarations after code.

The sntrup761 reference code contains c99-style declarations after code
so don't try to build that if the compiler doesn't support it.
This commit is contained in:
Darren Tucker 2021-08-18 12:51:30 +10:00
parent 7d878679a4
commit 464ba22f1e
2 changed files with 13 additions and 3 deletions

View File

@ -307,6 +307,16 @@ AC_COMPILE_IFELSE(
[ AC_MSG_RESULT([no]) ]
)
AC_MSG_CHECKING([if compiler accepts variable declarations after code])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[#include <stdlib.h>]],
[[ int a; a = 1; int b = 1; exit(a-b); ]])],
[ AC_MSG_RESULT([yes])
AC_DEFINE(VARIABLE_DECLARATION_AFTER_CODE, [1],
[compiler variable declarations after code]) ],
[ AC_MSG_RESULT([no]) ]
)
if test "x$no_attrib_nonnull" != "x1" ; then
AC_DEFINE([HAVE_ATTRIBUTE__NONNULL__], [1], [Have attribute nonnull])
fi

View File

@ -901,10 +901,10 @@ struct winsize {
#endif
/*
* sntrup761 uses variable length arrays, only enable if the compiler
* supports them.
* sntrup761 uses variable length arrays and c99-style declarations after code,
* so only enable if the compiler supports them.
*/
#ifdef VARIABLE_LENGTH_ARRAYS
#if defined(VARIABLE_LENGTH_ARRAYS) && defined(VARIABLE_DECLARATION_AFTER_CODE)
# define USE_SNTRUP761X25519 1
#endif
#endif /* _DEFINES_H */