AP_Common: check for feenableexcept on WAF

This commit is contained in:
Pierre Kancir 2019-07-23 13:00:43 +02:00 committed by Andrew Tridgell
parent 1b775c96f5
commit 17c0cf8d5c
1 changed files with 26 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#include_next <fenv.h>
#ifndef HAVE_FEENABLEEXCEPT
#if defined(__APPLE__) && defined(__MACH__)
// Public domain polyfill for feenableexcept on OS X
@ -45,4 +46,29 @@ inline int fedisableexcept(unsigned int excepts)
return fesetenv(&fenv) ? -1 : old_excepts;
}
#else
inline int feenableexcept(unsigned int excepts)
{
#pragma STDC FENV_ACCESS ON
fexcept_t flags;
/* Save current exception flags. */
fegetexceptflag(&flags, FE_ALL_EXCEPT);
feclearexcept(FE_ALL_EXCEPT); /* clear all fp exception conditions */
return fesetexceptflag(&flags, excepts) != 0 ? -1 : flags; /* set new flags */
}
inline int fedisableexcept(unsigned int excepts)
{
#pragma STDC FENV_ACCESS ON
fexcept_t flags;
/* Save current exception flags. */
fegetexceptflag(&flags, FE_ALL_EXCEPT);
feclearexcept(FE_ALL_EXCEPT); /* clear all fp exception conditions */
return fesetexceptflag(&flags, ~excepts) != 0 ? -1 : flags; /* set new flags */
}
#endif
#endif