]> git.mxchange.org Git - simgear.git/blobdiff - simgear/compiler.h
MacOS X fixes
[simgear.git] / simgear / compiler.h
index b64e8386832aa1f55d3802835b72e6fdb2aae918..6fd52c5e3f6934c0c3067e356179f60d9378501c 100644 (file)
 #ifndef _SG_COMPILER_H
 #define _SG_COMPILER_H
 
+/*
+ * Helper macro SG_STRINGIZE:
+ * Converts the parameter X to a string after macro replacement
+ * on X has been performed.
+ */
+#define SG_STRINGIZE(X) SG_DO_STRINGIZE(X)
+#define SG_DO_STRINGIZE(X) #X
+
 #ifdef __GNUC__
 #  if __GNUC__ == 2 
 #    if __GNUC_MINOR__ < 8
 #      define STL_STDEXCEPT  <stdexcept>
 #      define STL_STRING     <string>
 #      define STL_STRSTREAM  <strstream>
-
 #  else
 #    error Time to upgrade. GNU compilers < 2.7 not supported
 #  endif
+
+#  define SG_COMPILER_STR "GNU C++ version " SG_STRINGIZE(__GNUC__) "." SG_STRINGIZE(__GNUC_MINOR__)
+
+#endif // __GNUC__
+
+#if defined( __MINGW32__ )
+#  define bcopy(from, to, n) memcpy(to, from, n)
+#  define FG_MEM_COPY(to,from,n) memcpy(to, from, n)
+#  define snprintf _snprintf
 #endif
 
 /* KAI C++ */
 #  define STL_STDEXCEPT  <stdexcept>
 #  define STL_STRING     <string>
 #  define STL_STRSTREAM  <strstream>
-#endif
+
+#  define SG_COMPILER_STR "Kai C++ version " SG_STRINGIZE(__KCC_VERSION)
+
+#endif // __KCC
 
 //
 // Metrowerks 
 
 // -dw- currently used glut has no game mode stuff
 #  define GLUT_WRONG_VERSION
-#endif
+
+#  define SG_COMPILER_STR "Metrowerks CodeWarrior C++ version " SG_STRINGIZE(__MWERKS__)
+
+#endif // __MWERKS__
 
 //
 // Microsoft compilers.
 #    define STL_STRING     <string>
 #    define STL_STRSTREAM  <strstream>
 
+#    define snprintf _snprintf
+
 #    pragma warning(disable: 4786) // identifier was truncated to '255' characters
 #    pragma warning(disable: 4244) // conversion from double to float
 #    pragma warning(disable: 4305) //
+
 #  else
 #    error What version of MSVC++ is this?
 #  endif
-#endif
+
+#    define SG_COMPILER_STR "Microsoft Visual C++ version " SG_STRINGIZE(_MSC_VER)
+
+#endif // _MSC_VER
 
 #ifdef __BORLANDC__
 # if defined(HAVE_SGI_STL_PORT)
 #  define SG_NAMESPACES
 // #  define SG_HAVE_STD
 
+#  define SG_COMPILER_STR "Borland C++ version " SG_STRINGIZE(__BORLANDC__)
+
 #endif // __BORLANDC__
 
 //
 #  define SG_HAVE_NATIVE_SGI_COMPILERS
 
 #  define SG_EXPLICIT_FUNCTION_TMPL_ARGS
+#  define SG_CLASS_PARTIAL_SPECIALIZATION
 #  define SG_NEED_AUTO_PTR
 #  define SG_MEMBER_TEMPLATES
 #  define SG_NAMESPACES
 #  define SG_HAVE_STD
-#  define SG_CLASS_PARTIAL_SPECIALIZATION
+#  define SG_HAVE_STREAMBUF
 #  define SG_HAVE_TRAITS
+#  define SG_HAVE_STD_INCLUDES
 
 #  define STL_ALGORITHM  <algorithm>
 #  define STL_FUNCTIONAL <functional>
-#  define STL_IOMANIP    <iomanip.h>
-#  define STL_IOSTREAM   <iostream.h>
-#  define STL_ITERATOR   <iterator.h>
-#  define STL_FSTREAM    <fstream.h>
+#  define STL_IOMANIP    <iomanip>
+#  define STL_IOSTREAM   <iostream>
+#  define STL_ITERATOR   <iterator>
+#  define STL_FSTREAM    <fstream>
 #  define STL_STDEXCEPT  <stdexcept>
 #  define STL_STRING     <string>
-#  define STL_STRSTREAM  <strstream.h>
+#  define STL_STRSTREAM  <strstream>
 
-#  define __STL_FUNCTION_TMPL_PARTIAL_ORDER
+#pragma set woff 1001,1012,1014,1116,1155,1172,1174
+#pragma set woff 1401,1460,1551,1552,1681
 
-#pragma set woff 1001,1012,1014,1116,1172,1174,1401,146,0
-#pragma set woff 1551,1552,1681
+#ifdef __cplusplus
+#pragma set woff 1682,3303
+#endif
+
+#  define SG_COMPILER_STR "SGI MipsPro compiler version " SG_STRINGIZE(_COMPILER_VERSION)
 
 #endif // Native SGI compilers
 
 #  else
      extern void *memmove(void *, const void *, size_t);
 #  endif // __cplusplus
+
+#  define SG_COMPILER_STR "Sun compiler version " SG_STRINGIZE(__SUNPRO_CC)
+
 #endif // sun
 
+//
+// Intel C++ Compiler
+//
+#if defined(__ICC) || defined (__ECC)
+#  define SG_NAMESPACES
+#  define SG_HAVE_STD
+#  define SG_HAVE_STREAMBUF
+#  define SG_HAVE_TRAITS
+#  define SG_HAVE_STD_INCLUDES
+
+#  define STL_ALGORITHM  <algorithm>
+#  define STL_FUNCTIONAL <functional>
+#  define STL_IOMANIP    <iomanip>
+#  define STL_IOSTREAM   <iostream>
+#  define STL_ITERATOR   <iterator>
+#  define STL_FSTREAM    <fstream>
+#  define STL_STDEXCEPT  <stdexcept>
+#  define STL_STRING     <string>
+#  define STL_STRSTREAM  <strstream>
+
+#  define SG_COMPILER_STR "Intel C++ version " SG_STRINGIZE(__ICC)
+
+#endif // __ICC
+
 //
 // No user modifiable definitions beyond here.
 //