From 3613ad96244ecaa67e8d45b637dc6b24fd2942be Mon Sep 17 00:00:00 2001 From: Alessandro Gatti Date: Thu, 9 May 2024 06:33:57 +0200 Subject: [PATCH] lib/libm: Do not force floating point type size evaluation. Since C99, `FLT_EVAL_METHOD` should be left for the compiler/libc to define. Its redefinition breaks compilation with picolibc as the target's libc, since it defines said symbol in math.h before the libm define is evaluated by the compiler. In its place, there is a check to make sure floating point type sizes are what are expected to be, triggering a compilation error if those assumptions are no longer valid. Co-authored-by: Angus Gratton Signed-off-by: Alessandro Gatti --- lib/libm/libm.h | 5 ++++- lib/libm_dbl/libm.h | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/libm/libm.h b/lib/libm/libm.h index f782249e53465..78de4c3ee4b0f 100644 --- a/lib/libm/libm.h +++ b/lib/libm/libm.h @@ -19,7 +19,10 @@ #include #include -#define FLT_EVAL_METHOD 0 +// These lines verify that FLT_EVAL_METHOD==0, MicroPython's libm requires this. +// If compilation fails here then check the host compiler's FLT_EVAL_METHOD. +typedef float float_t; +typedef double double_t; #define FORCE_EVAL(x) do { \ if (sizeof(x) == sizeof(float)) { \ diff --git a/lib/libm_dbl/libm.h b/lib/libm_dbl/libm.h index dc0b431a44857..cbae6916625e2 100644 --- a/lib/libm_dbl/libm.h +++ b/lib/libm_dbl/libm.h @@ -15,7 +15,10 @@ #include #include -#define FLT_EVAL_METHOD 0 +// These lines verify that FLT_EVAL_METHOD==0, MicroPython's libm requires this. +// If compilation fails here then check the host compiler's FLT_EVAL_METHOD. +typedef float float_t; +typedef double double_t; #define FORCE_EVAL(x) do { \ if (sizeof(x) == sizeof(float)) { \