From 26a9b528dadde6521f80a7121af69f6af6f53b9a Mon Sep 17 00:00:00 2001 From: D G Turner Date: Wed, 31 Jul 2013 06:18:58 +0100 Subject: COMMON: Move definition of math constants to scummsys header. This should have no effect on common/math.h as scummsys is included at the top anyway, but this will fix compilation on some toolchains when strict ANSI language compliance is enabled i.e. -std=c++11, rather than -std=gnu11. This causes an issue as a side effect is to set a guard which disables various non-standard defines in the system headers i.e. the M_PI and M_SQRT1_2 constant definitions in the MinGW x86_64 toolchain on buildbot. By moving this into scummsys.h after the point of system math.h inclusion, we can ensure that M_PI etc. are always present. --- common/scummsys.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'common/scummsys.h') diff --git a/common/scummsys.h b/common/scummsys.h index 291de87dc9..aeffbbfcf3 100644 --- a/common/scummsys.h +++ b/common/scummsys.h @@ -144,6 +144,14 @@ #endif #endif +#ifndef M_SQRT1_2 + #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ +#endif + +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif + // Include our C++11 compatability header for pre-C++11 compilers. #if __cplusplus < 201103L #include "common/c++11-compat.h" -- cgit v1.2.3 From 17ccd18ed3a41702ac7de7e55fca09578f734ccb Mon Sep 17 00:00:00 2001 From: D G Turner Date: Fri, 2 Aug 2013 06:23:52 +0100 Subject: COMMON: Add comment explaining reason for defining math constants. --- common/scummsys.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'common/scummsys.h') diff --git a/common/scummsys.h b/common/scummsys.h index aeffbbfcf3..099b12b291 100644 --- a/common/scummsys.h +++ b/common/scummsys.h @@ -144,6 +144,11 @@ #endif #endif +// The following math constants are usually defined by the system math.h header, but +// they are not part of the ANSI C++ standards and so can NOT be relied upon to be +// present i.e. when -std=c++11 is passed to GCC, enabling strict ANSI compliance. +// As we rely on these being present, we define them if they are not set. + #ifndef M_SQRT1_2 #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ #endif -- cgit v1.2.3 From 4790a4abd5c157254cab069bc34aa8ef8347f668 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 2 Aug 2013 20:02:02 +0200 Subject: COMMON: Define all Unix98/BSD math constants in scummsys.h. This should fix compilation on mingw64 with --enable-c++11 and also make sure the constants are present on other systems for the uncommon case they might be missing. --- common/scummsys.h | 50 +++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) (limited to 'common/scummsys.h') diff --git a/common/scummsys.h b/common/scummsys.h index 099b12b291..3e9d5ef063 100644 --- a/common/scummsys.h +++ b/common/scummsys.h @@ -149,12 +149,56 @@ // present i.e. when -std=c++11 is passed to GCC, enabling strict ANSI compliance. // As we rely on these being present, we define them if they are not set. -#ifndef M_SQRT1_2 - #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ +#ifndef M_E + #define M_E 2.7182818284590452354 /* e */ +#endif + +#ifndef M_LOG2E + #define M_LOG2E 1.4426950408889634074 /* log_2 e */ +#endif + +#ifndef M_LOG10E + #define M_LOG10E 0.43429448190325182765 /* log_10 e */ +#endif + +#ifndef M_LN2 + #define M_LN2 0.69314718055994530942 /* log_e 2 */ +#endif + +#ifndef M_LN10 + #define M_LN10 2.30258509299404568402 /* log_e 10 */ #endif #ifndef M_PI - #define M_PI 3.14159265358979323846 + #define M_PI 3.14159265358979323846 /* pi */ +#endif + +#ifndef M_PI_2 + #define M_PI_2 1.57079632679489661923 /* pi/2 */ +#endif + +#ifndef M_PI_4 + #define M_PI_4 0.78539816339744830962 /* pi/4 */ +#endif + +#ifndef M_1_PI + #define M_1_PI 0.31830988618379067154 /* 1/pi */ +#endif + +#ifndef M_2_PI + #define M_2_PI 0.63661977236758134308 /* 2/pi */ +#endif + +#ifndef M_2_SQRTPI + #define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ +#endif + +#ifndef M_SQRT2 + #define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ +#endif + +#ifndef M_SQRT1_2 + #define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */ #endif // Include our C++11 compatability header for pre-C++11 compilers. -- cgit v1.2.3