summaryrefslogtreecommitdiffstats
path: root/OpenAL32/Include
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2011-10-27 21:22:00 -0700
committerChris Robinson <[email protected]>2011-10-27 21:22:00 -0700
commita5c02556e69667f897fcf16493e3a0ed14c3d543 (patch)
treead2624b836e25cdf522f5ebf6f0eda05708af69c /OpenAL32/Include
parent319f40462fe695126b02493a6d2fcd06ae3807b2 (diff)
Add a work-around for cross-compiling with MinGW
Diffstat (limited to 'OpenAL32/Include')
-rw-r--r--OpenAL32/Include/alu.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/OpenAL32/Include/alu.h b/OpenAL32/Include/alu.h
index 7ee2aa31..ffc8fa39 100644
--- a/OpenAL32/Include/alu.h
+++ b/OpenAL32/Include/alu.h
@@ -9,6 +9,32 @@
#include <math.h>
#ifdef HAVE_FLOAT_H
#include <float.h>
+/* HACK: Seems cross-compiling with MinGW includes the wrong float.h, which
+ * doesn't define Windows' _controlfp and related macros */
+#if defined(__MINGW32__) && !defined(_RC_CHOP)
+/* Control word masks for unMask */
+#define _MCW_EM 0x0008001F /* Error masks */
+#define _MCW_IC 0x00040000 /* Infinity */
+#define _MCW_RC 0x00000300 /* Rounding */
+#define _MCW_PC 0x00030000 /* Precision */
+/* Control word values for unNew (use with related unMask above) */
+#define _EM_INVALID 0x00000010
+#define _EM_DENORMAL 0x00080000
+#define _EM_ZERODIVIDE 0x00000008
+#define _EM_OVERFLOW 0x00000004
+#define _EM_UNDERFLOW 0x00000002
+#define _EM_INEXACT 0x00000001
+#define _IC_AFFINE 0x00040000
+#define _IC_PROJECTIVE 0x00000000
+#define _RC_CHOP 0x00000300
+#define _RC_UP 0x00000200
+#define _RC_DOWN 0x00000100
+#define _RC_NEAR 0x00000000
+#define _PC_24 0x00020000
+#define _PC_53 0x00010000
+#define _PC_64 0x00000000
+_CRTIMP unsigned int __cdecl __MINGW_NOTHROW _controlfp (unsigned int unNew, unsigned int unMask);
+#endif
#endif
#ifdef HAVE_IEEEFP_H
#include <ieeefp.h>