X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcompiler.h;h=f6bdc37c38fae51e1fc71e8a38436123122b8156;hb=a48655ed2941a35189d700abd3700e677b656ec9;hp=cfa91f86441df92aa7cdcc9bd3f61e81e1ddc3ac;hpb=ae1625734c48d7616123f81137f18936bbfee59e;p=simgear.git diff --git a/simgear/compiler.h b/simgear/compiler.h index cfa91f86..f6bdc37c 100644 --- a/simgear/compiler.h +++ b/simgear/compiler.h @@ -43,9 +43,12 @@ # if __GNUC__ < 3 # error Time to upgrade. GNU compilers < 3.0 not supported # elif (__GNUC__ == 3) && (__GNUC_MINOR__ < 4) -# warning GCC compilers prior to 3.4 are suspect +# warning GCC compilers prior to 3.4 are suspect # endif +# define SG_GCC_VERSION (__GNUC__ * 10000 \ + + __GNUC_MINOR__ * 100 \ + + __GNUC_PATCHLEVEL__) # define SG_COMPILER_STR "GNU C++ version " SG_STRINGIZE(__GNUC__) "." SG_STRINGIZE(__GNUC_MINOR__) #endif // __GNUC__ @@ -60,14 +63,26 @@ #ifdef _MSC_VER # define bcopy(from, to, n) memcpy(to, from, n) -# if _MSC_VER >= 1200 // msvc++ 6.0 or greater -# define isnan _isnan -# define snprintf _snprintf +# if _MSC_VER >= 1200 // msvc++ 6.0 up to MSVC2013 +# if _MSC_VER < 1900 +# define snprintf _snprintf +# define strdup _strdup +# endif +# if _MSC_VER < 1800 +# define isnan _isnan +# endif +# if _MSC_VER < 1500 +# define vsnprintf _vsnprintf +# endif # define copysign _copysign +# define strcasecmp stricmp + +# undef min +# undef max # pragma warning(disable: 4786) // identifier was truncated to '255' characters # pragma warning(disable: 4244) // conversion from double to float -# pragma warning(disable: 4305) // +# pragma warning(disable: 4305) // truncation from larer type to smaller # else # error What version of MSVC++ is this? @@ -102,6 +117,7 @@ #if defined (__sun) +# define SG_UNIX # include # include # if defined ( __cplusplus ) @@ -131,15 +147,17 @@ // #ifdef __APPLE__ +# define SG_MAC +# define SG_UNIX # ifdef __GNUC__ -# if ( __GNUC__ >= 3 ) && ( __GNUC_MINOR__ >= 3 ) +# if ( __GNUC__ > 3 ) || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 3 ) inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } # else // any C++ header file undefines isinf and isnan // so this should be included before // the functions are STILL in libm (libSystem on mac os x) -extern "C" int isnan (double); -extern "C" int isinf (double); +extern "C" int (isnan)(double); +extern "C" int (isinf)(double); # endif # else inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } @@ -147,6 +165,8 @@ inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } #endif #if defined (__FreeBSD__) +# define SG_UNIX +#include # if __FreeBSD_version < 500000 extern "C" { inline int isnan(double r) { return !(r <= 0 || r >= 0); } @@ -155,17 +175,34 @@ inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } #endif #if defined (__CYGWIN__) +# define SG_WINDOWS +# define SG_UNIX # include // isnan #endif -#if defined(__MINGW32__) -# define isnan(x) _isnan(x) +// includes both MSVC and mingw compilers +#if defined(_WIN32) || defined(__WIN32__) +# define SG_WINDOWS +#endif + +#if defined(__linux__) || defined(_AIX) || defined ( sgi ) +# define SG_UNIX #endif +#if defined( __GNUC__ ) +# define DEPRECATED __attribute__ ((deprecated)) +#else +# define DEPRECATED +#endif + +#if defined(__clang__) +# define SG_NO_RETURN [[noreturn]] +#else +# define SG_NO_RETURN +#endif // // No user modifiable definitions beyond here. // #endif // _SG_COMPILER_H -