X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fcompiler.h;h=795747d533e252c4837bae01bfc132147129afeb;hb=d179fccfcbce8a03a2569b390414f180ef6efc85;hp=beb409fdacfcec62cba97001a27708393fdc2925;hpb=733e6fa14ff507a1022ecab8d55cc9bf587bee40;p=simgear.git diff --git a/simgear/compiler.h b/simgear/compiler.h index beb409fd..795747d5 100644 --- a/simgear/compiler.h +++ b/simgear/compiler.h @@ -46,6 +46,9 @@ # 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__ @@ -63,7 +66,14 @@ # if _MSC_VER >= 1200 // msvc++ 6.0 or greater # define isnan _isnan # define snprintf _snprintf +# 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 @@ -102,6 +112,7 @@ #if defined (__sun) +# define SG_UNIX # include # include # if defined ( __cplusplus ) @@ -131,31 +142,63 @@ // #ifdef __APPLE__ -# define SG_GL_H -# define SG_GLX_H -# define SG_GLU_H -# define SG_GLEXT_H -# define SG_GLUT_H +# define SG_MAC +# define SG_UNIX +# ifdef __GNUC__ +# 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); +# endif +# else +inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } +# endif +#endif +#if defined (__FreeBSD__) +# define SG_UNIX +#include +# if __FreeBSD_version < 500000 + extern "C" { + inline int isnan(double r) { return !(r <= 0 || r >= 0); } + } +# endif +#endif -inline int (isnan)(double r) { return !(r <= 0 || r >= 0); } +#if defined (__CYGWIN__) +# define SG_WINDOWS +# define SG_UNIX +# include // isnan +#endif + +// 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 SG_GL_H -# define SG_GLX_H -# define SG_GLU_H -# define SG_GLEXT_H -# define SG_GLUT_H +# define DEPRECATED #endif +#if defined(__clang__) +# define SG_NO_RETURN [[noreturn]] +#else +# define SG_NO_RETURN +#endif // // No user modifiable definitions beyond here. // -/** \def SG_USING_STD(x) - * Expands to using std::X - */ -# define SG_USING_STD(X) using std::X - #endif // _SG_COMPILER_H