From 273581210c99ce7275b8efdefbb9f89e1c22e341 Mon Sep 17 00:00:00 2001 From: Damien Miller Date: Mon, 9 Sep 2024 17:30:38 +1000 Subject: [PATCH] declare defeat trying to detect C89 compilers I can't find a reliable way to detect the features the ML-KEM code requires in configure. Give up for now and use VLA support (that we can detect) as a proxy for "old compiler" and turn off ML-KEM if it isn't supported. --- configure.ac | 14 -------------- defines.h | 6 ++---- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/configure.ac b/configure.ac index 954de6caf..591d5a388 100644 --- a/configure.ac +++ b/configure.ac @@ -353,20 +353,6 @@ AC_COMPILE_IFELSE( [ AC_MSG_RESULT([no]) ] ) -AC_MSG_CHECKING([if compiler supports compound literals]) -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[#include ]], - [[ struct foo { int bar; int baz; }; - void *fooc = &(struct foo){.bar = 1, .baz = 2}; - struct foo *foo2 = (struct foo *)fooc; - return (foo2->bar == 1 && foo2->baz == 2) ? 0 : 1; - ]])], - [ AC_MSG_RESULT([yes]) - AC_DEFINE(COMPOUND_LITERALS, [1], - [compiler supports compound literals]) ], - [ AC_MSG_RESULT([no]) ] -) - AC_MSG_CHECKING([if compiler accepts variable declarations after code]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ]], diff --git a/defines.h b/defines.h index 3d03b033a..ed860e78b 100644 --- a/defines.h +++ b/defines.h @@ -940,10 +940,8 @@ struct winsize { * so only enable if the compiler supports them. */ #if defined(VARIABLE_LENGTH_ARRAYS) && defined(VARIABLE_DECLARATION_AFTER_CODE) -# define USE_SNTRUP761X25519 1 -#endif -/* The ML-KEM768 imlementation similarly uses C99 compound literals */ -#ifdef COMPOUND_LITERALS +# define USE_SNTRUP761X25519 1 +/* The ML-KEM768 implementation also uses C89 features */ # define USE_MLKEM768X25519 1 #endif #endif /* _DEFINES_H */