summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarren Tucker <dtucker@dtucker.net>2021-08-18 12:51:30 +1000
committerDarren Tucker <dtucker@dtucker.net>2021-08-18 12:51:30 +1000
commit464ba22f1e38d25402e5ec79a9b8d34a32df5a3f (patch)
tree26d1a96e50a71b6e4af191b6d203cfef2e4a9ae8
parent7d878679a4b155a359d32104ff473f789501748d (diff)
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.
-rw-r--r--configure.ac10
-rw-r--r--defines.h6
2 files changed, 13 insertions, 3 deletions
diff --git a/configure.ac b/configure.ac
index e728e323..01e7d2a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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
diff --git a/defines.h b/defines.h
index 7fff562c..857abb8b 100644
--- a/defines.h
+++ b/defines.h
@@ -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 */