From 2d7a4180d3daded26e11db74024dd2fddd760a5b Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Wed, 22 Mar 2017 07:28:25 +0100 Subject: compat/nan: support for mingw-w64 in a hacky way --- compat/nan.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'compat/nan.cpp') diff --git a/compat/nan.cpp b/compat/nan.cpp index a7b37362..4b99fff3 100644 --- a/compat/nan.cpp +++ b/compat/nan.cpp @@ -5,6 +5,20 @@ # define my_isnan std::isnan # define my_isinf std::isinf extern "C" OPENTRACK_COMPAT_EXPORT __declspec(noinline) bool nanp(double x) +#elif defined __MINGW32__ + +int __cdecl my_isnan(double)__asm__("__isnan"); +int __cdecl my_fpclassify(double)__asm__("___fpclassify"); + +#define FP_NAN 0x0100 +#define FP_NORMAL 0x0400 +#define FP_INFINITE (FP_NAN | FP_NORMAL) +#define FP_ZERO 0x4000 +#define FP_SUBNORMAL (FP_NORMAL | FP_ZERO) + +#define my_isinf(x) (my_fpclassify(x) == FP_INFINITE) + +extern "C" OPENTRACK_COMPAT_EXPORT bool __attribute__ ((noinline)) nanp(double x) #else int my_isnan(double)__asm__("isnan"); int my_isinf(double)__asm__("isinf"); -- cgit v1.2.3