diff --git a/meson.build b/meson.build index fcd71a4718f7352fdacd4c2d149a90d31580cac3..7e676a23e4f1aa2558258f5f2383b51e3361f618 100644 --- a/meson.build +++ b/meson.build @@ -364,7 +364,8 @@ endif ############################################################ # check for FPU precision control # -if compiler.compiles(''' +if compiler.has_header('fpu_control.h') and \ + compiler.compiles(''' #include <fpu_control.h> int main(int argc,char **argv) { @@ -382,8 +383,8 @@ return 0; args : '-lm', name : 'FPU control check') message('Enabled FPU control on this CPU') + cflags += '-DFPU_CONTROL' else - cflags += '-DNO_FPU_CONTROL' message('Disabled FPU control on this CPU') endif diff --git a/src/binary_c_function_macros.h b/src/binary_c_function_macros.h index c27f8453c99603dbf43c673ed6dc1262e6c50c97..3aace9acb0e859214d837aa60f7acae6c93ad535 100644 --- a/src/binary_c_function_macros.h +++ b/src/binary_c_function_macros.h @@ -34,7 +34,7 @@ * http://christian-seiler.de/projekte/fpmath/ */ #if defined FPU_PRECISION && \ - !defined NO_FPU_CONTROL && \ + defined FPU_CONTROL && \ defined _FPU_EXTENDED #define Set_FPU_precision fpu_control_t fpu_oldcw,fpu_cw; \ diff --git a/src/binary_c_main.h b/src/binary_c_main.h index 40180cb0b7415d9ea8eb791eb908afc57fe214a2..f82ff8c2d6f99319f2ea2d13ee654fae2a3ce00f 100644 --- a/src/binary_c_main.h +++ b/src/binary_c_main.h @@ -24,9 +24,11 @@ #include "binary_c.h" -#ifdef FPU_PRECISION + +#if defined FPU_PRECISION && defined FPU_CONTROL #include <fpu_control.h> #endif//FPU_PRECISION + #include "binary_c_main_prototypes.h" #include "binary_c_main_macros.h" #ifdef STACK_SIZE diff --git a/src/setup/version.c b/src/setup/version.c index 04b0615e5d52e5c82cc1c6d0265a67008d4d7c78..8190b25714eac2abd1c51a797aa68b41fdd1136b 100644 --- a/src/setup/version.c +++ b/src/setup/version.c @@ -183,7 +183,7 @@ void version(struct stardata_t * RESTRICT const stardata) Macrotest(FPU_CAPTURE_UNDERFLOWS); Macrotest(FPU_CAPTURE_OVERFLOWS); Macrotest(FPU_CAPTURE_DIVIDE_BY_ZERO); - Macrotest(NO_FPU_CONTROL); + Macrotest(FPU_CONTROL); Macrotest(CHECK_ISNAN_WORKS); Show_float_macro(ZERO);