50 #ifndef OPENMESH_COMPILER_H
51 #define OPENMESH_COMPILER_H
55 #if defined(ACGMAKE_STATIC_BUILD)
56 # define OM_STATIC_BUILD 1
61 #if defined(_DEBUG) || defined(DEBUG)
68 #if defined(_MSC_VER) && \
69 ( defined(__ICL) || defined(__INTEL_COMPILER) || defined(__ICC) )
70 # if !defined(__INTEL_COMPILER)
71 # define __INTEL_COMPILER __ICL
73 # define OM_USE_INTEL_COMPILER 1
81 #if defined(_MSC_VER) && !defined(OM_USE_INTEL_COMPILER)
82 # if (_MSC_VER == 1300)
85 # define OM_OUT_OF_CLASS_TEMPLATE 0
86 # define OM_PARTIAL_SPECIALIZATION 0
87 # define OM_INCLUDE_TEMPLATES 1
88 # elif (_MSC_VER == 1310)
91 # define OM_OUT_OF_CLASS_TEMPLATE 1
92 # define OM_PARTIAL_SPECIALIZATION 1
93 # define OM_INCLUDE_TEMPLATES 1
94 # elif (_MSC_VER >= 1400) // settings for .NET 2005 (NOTE: not fully tested)
96 # define OM_OUT_OF_CLASS_TEMPLATE 1
97 # define OM_PARTIAL_SPECIALIZATION 1
98 # define OM_INCLUDE_TEMPLATES 1
100 # error "Version 7 (.NET 2002) or higher of the MS VC++ is required!"
103 # define OM_STATIC_BUILD 1
105 # define OM_REENTRANT 1
107 # define OM_CC "MSVC++"
108 # define OM_CC_VERSION _MSC_VER
111 # if defined(__cplusplus) && !defined(_CPPRTTI)
112 # error "Enable Runtime Type Information (Compiler Option /GR)!"
114 # if !defined(_USE_MATH_DEFINES)
115 # error "You have to define _USE_MATH_DEFINES in the compiler settings!"
118 #elif defined(__BORLANDC__)
119 # error "Borland Compiler are not supported yet!"
121 #elif defined(__GNUC__) && !defined(__ICC)
123 # define OM_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 )
124 # define OM_GCC_MAJOR __GNUC__
125 # define OM_GCC_MINOR __GNUC_MINOR__
126 # if (OM_GCC_VERSION >= 30200)
127 # define OM_TYPENAME typename
128 # define OM_OUT_OF_CLASS_TEMPLATE 1
129 # define OM_PARTIAL_SPECIALIZATION 1
130 # define OM_INCLUDE_TEMPLATES 1
132 # error "Version 3.2.0 or better of the GNU Compiler is required!"
134 # if defined(_REENTRANT)
135 # define OM_REENTRANT 1
138 # define OM_CC_VERSION OM_GCC_VERSION
140 #elif defined(__ICC) || defined(__INTEL_COMPILER)
142 # define OM_TYPENAME typename
143 # define OM_OUT_OF_CLASS_TEMPLATE 1
144 # define OM_PARTIAL_SPECIALIZATION 1
145 # define OM_INCLUDE_TEMPLATES 1
146 # if defined(_REENTRANT) || defined(_MT)
147 # define OM_REENTRANT 1
150 # define OM_CC_VERSION __INTEL_COMPILER
152 # if defined(_MSC_VER) || defined(WIN32)
153 # define OM_STATIC_BUILD 1
156 #elif defined(__MIPS_ISA) || defined(__mips)
164 # define OM_TYPENAME typename
165 # define OM_OUT_OF_CLASS_TEMPLATE 1
166 # define OM_PARTIAL_SPECIALIZATION 1
167 # define OM_INCLUDE_TEMPLATES 0
168 # define OM_CC "MIPS"
169 # define OM_CC_VERSION _COMPILER_VERSION
172 # error "You're using an unsupported compiler!"
176 #endif // OPENMESH_COMPILER_H defined