Go to the documentation of this file.
6 #ifndef OPENVDB_PLATFORM_HAS_BEEN_INCLUDED
7 #define OPENVDB_PLATFORM_HAS_BEEN_INCLUDED
11 #define PRAGMA(x) _Pragma(#x)
16 #define OPENVDB_PREPROC_STRINGIFY_(x) #x
21 #define OPENVDB_PREPROC_STRINGIFY(x) OPENVDB_PREPROC_STRINGIFY_(x)
24 #define OPENVDB_PREPROC_CONCAT_(x, y) x ## y
29 #define OPENVDB_PREPROC_CONCAT(x, y) OPENVDB_PREPROC_CONCAT_(x, y)
36 #ifdef OPENVDB_DEPRECATED
37 #undef OPENVDB_DEPRECATED
40 #define OPENVDB_DEPRECATED __declspec(deprecated)
42 #define OPENVDB_DEPRECATED __attribute__ ((deprecated))
47 #define OPENVDB_CHECK_GCC(MAJOR, MINOR) \
48 (__GNUC__ > MAJOR || (__GNUC__ == MAJOR && __GNUC_MINOR__ >= MINOR))
50 #define OPENVDB_CHECK_GCC(MAJOR, MINOR) 0
54 #define OPENVDB_HAS_CXX11 1
59 #if defined(__GNUC__) && OPENVDB_CHECK_GCC(4, 4)
60 #define OPENVDB_STATIC_SPECIALIZATION
62 #define OPENVDB_STATIC_SPECIALIZATION static
67 #if defined(OPENVDB_USE_SSE42) || defined(OPENVDB_USE_AVX)
70 #elif defined(__GNUC__)
71 #if defined(__x86_64__) || defined(__i386__)
72 #include <x86intrin.h>
73 #elif defined(__ARM_NEON__)
95 #if defined(__INTEL_COMPILER)
99 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \
100 _Pragma("warning (push)") \
101 _Pragma("warning (disable:111)") \
102 _Pragma("warning (disable:128)") \
103 _Pragma("warning (disable:185)") \
104 _Pragma("warning (disable:280)")
105 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \
106 _Pragma("warning (pop)")
107 #elif defined(__clang__)
108 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \
109 PRAGMA(clang diagnostic push) \
110 PRAGMA(clang diagnostic ignored "-Wunreachable-code")
111 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \
112 PRAGMA(clang diagnostic pop)
114 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN
115 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END
132 #if defined __INTEL_COMPILER
133 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
134 _Pragma("warning (push)") \
135 _Pragma("warning (disable:1478)") \
136 PRAGMA(message("NOTE: ignoring deprecation warning at " __FILE__ \
137 ":" OPENVDB_PREPROC_STRINGIFY(__LINE__)))
138 #define OPENVDB_NO_DEPRECATION_WARNING_END \
139 _Pragma("warning (pop)")
140 #elif defined __clang__
141 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
142 _Pragma("clang diagnostic push") \
143 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
145 #define OPENVDB_NO_DEPRECATION_WARNING_END \
146 _Pragma("clang diagnostic pop")
147 #elif defined __GNUC__
148 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
149 _Pragma("GCC diagnostic push") \
150 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
151 _Pragma("message(\"NOTE: ignoring deprecation warning\")")
152 #define OPENVDB_NO_DEPRECATION_WARNING_END \
153 _Pragma("GCC diagnostic pop")
154 #elif defined _MSC_VER
155 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
156 __pragma(warning(push)) \
157 __pragma(warning(disable : 4996)) \
158 __pragma(message("NOTE: ignoring deprecation warning at " __FILE__ \
159 ":" OPENVDB_PREPROC_STRINGIFY(__LINE__)))
160 #define OPENVDB_NO_DEPRECATION_WARNING_END \
161 __pragma(warning(pop))
163 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN
164 #define OPENVDB_NO_DEPRECATION_WARNING_END
178 #if defined __INTEL_COMPILER
179 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN
180 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END
181 #elif defined __GNUC__
183 #if OPENVDB_CHECK_GCC(4, 9)
184 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \
185 _Pragma("GCC diagnostic push") \
186 _Pragma("GCC diagnostic ignored \"-Wconversion\"") \
187 _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"")
189 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \
190 _Pragma("GCC diagnostic push") \
191 _Pragma("GCC diagnostic ignored \"-Wconversion\"")
193 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \
194 _Pragma("GCC diagnostic pop")
196 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN
197 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END
201 #ifdef OPENVDB_EXPORT
202 #undef OPENVDB_EXPORT
204 #ifdef OPENVDB_IMPORT
205 #undef OPENVDB_IMPORT
208 #define OPENVDB_EXPORT __attribute__((visibility("default")))
209 #define OPENVDB_IMPORT __attribute__((visibility("default")))
213 #define OPENVDB_EXPORT __declspec(dllexport)
214 #define OPENVDB_IMPORT __declspec(dllimport)
216 #define OPENVDB_EXPORT
217 #define OPENVDB_IMPORT
227 #ifdef OPENVDB_PRIVATE
228 #define OPENVDB_API OPENVDB_EXPORT
230 #define OPENVDB_API OPENVDB_IMPORT
232 #ifdef OPENVDB_HOUDINI_API
233 #undef OPENVDB_HOUDINI_API
235 #ifdef OPENVDB_HOUDINI_PRIVATE
236 #define OPENVDB_HOUDINI_API OPENVDB_EXPORT
238 #define OPENVDB_HOUDINI_API OPENVDB_IMPORT
241 #endif // OPENVDB_PLATFORM_HAS_BEEN_INCLUDED