Loading...
Searching...
No Matches
Go to the documentation of this file.
6#ifndef OPENVDB_PLATFORM_HAS_BEEN_INCLUDED
7#define OPENVDB_PLATFORM_HAS_BEEN_INCLUDED
9#define PRAGMA(x) _Pragma(#x)
14#define OPENVDB_PREPROC_STRINGIFY_(x) #x
19#define OPENVDB_PREPROC_STRINGIFY(x) OPENVDB_PREPROC_STRINGIFY_(x)
22#define OPENVDB_PREPROC_CONCAT_(x, y) x ## y
27#define OPENVDB_PREPROC_CONCAT(x, y) OPENVDB_PREPROC_CONCAT_(x, y)
32 #define OPENVDB_CHECK_GCC(MAJOR, MINOR) \
33 (__GNUC__ > MAJOR || (__GNUC__ == MAJOR && __GNUC_MINOR__ >= MINOR))
35 #define OPENVDB_CHECK_GCC(MAJOR, MINOR) 0
39#define OPENVDB_HAS_CXX11 1
43#if defined(OPENVDB_USE_SSE42) || defined(OPENVDB_USE_AVX)
46 #elif defined(__GNUC__)
47 #if defined(__x86_64__) || defined(__i386__)
48 #include <x86intrin.h>
49 #elif defined(__ARM_NEON__)
64 #if defined(_DLL) && !defined(OPENVDB_STATICLIB) && !defined(OPENVDB_DLL)
70 #if !defined(OPENVDB_OPENEXR_STATICLIB) && !defined(OPENEXR_DLL)
78#define OPENVDB_UBSAN_SUPPRESS(X) __attribute__((no_sanitize(X)))
80#define OPENVDB_UBSAN_SUPPRESS(X)
98#if defined(__INTEL_COMPILER)
102 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \
103 _Pragma("warning (push)") \
104 _Pragma("warning (disable:111)") \
105 _Pragma("warning (disable:128)") \
106 _Pragma("warning (disable:185)") \
107 _Pragma("warning (disable:280)")
108 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \
109 _Pragma("warning (pop)")
110#elif defined(__clang__)
111 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \
112 PRAGMA(clang diagnostic push) \
113 PRAGMA(clang diagnostic ignored "-Wunreachable-code")
114 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \
115 PRAGMA(clang diagnostic pop)
117 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN
118 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END
123#ifndef OPENVDB_NO_DEPRECATION_WARNINGS
124#define OPENVDB_DEPRECATED [[deprecated]]
125#define OPENVDB_DEPRECATED_MESSAGE(msg) [[deprecated(msg)]]
127#define OPENVDB_DEPRECATED
128#define OPENVDB_DEPRECATED_MESSAGE(msg)
145#if defined __INTEL_COMPILER
146 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
147 _Pragma("warning (push)") \
148 _Pragma("warning (disable:1478)")
149 #define OPENVDB_NO_DEPRECATION_WARNING_END \
150 _Pragma("warning (pop)")
151#elif defined __clang__
152 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
153 _Pragma("clang diagnostic push") \
154 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"")
156 #define OPENVDB_NO_DEPRECATION_WARNING_END \
157 _Pragma("clang diagnostic pop")
158#elif defined __GNUC__
159 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
160 _Pragma("GCC diagnostic push") \
161 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
162 #define OPENVDB_NO_DEPRECATION_WARNING_END \
163 _Pragma("GCC diagnostic pop")
164#elif defined _MSC_VER
165 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \
166 __pragma(warning(push)) \
167 __pragma(warning(disable : 4996))
168 #define OPENVDB_NO_DEPRECATION_WARNING_END \
169 __pragma(warning(pop))
171 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN
172 #define OPENVDB_NO_DEPRECATION_WARNING_END
186#if defined __INTEL_COMPILER
187 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN
188 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END
189#elif defined __GNUC__
191 #if OPENVDB_CHECK_GCC(4, 9)
192 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \
193 _Pragma("GCC diagnostic push") \
194 _Pragma("GCC diagnostic ignored \"-Wconversion\"") \
195 _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"")
197 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \
198 _Pragma("GCC diagnostic push") \
199 _Pragma("GCC diagnostic ignored \"-Wconversion\"")
201 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \
202 _Pragma("GCC diagnostic pop")
204 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN
205 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END
217 #define OPENVDB_EXPORT __declspec(dllexport)
218 #define OPENVDB_IMPORT __declspec(dllimport)
220 #define OPENVDB_EXPORT
221 #define OPENVDB_IMPORT
223#elif defined(__GNUC__)
224 #define OPENVDB_EXPORT __attribute__((visibility("default")))
225 #define OPENVDB_IMPORT __attribute__((visibility("default")))
229#if defined(_WIN32) && defined(OPENVDB_DLL)
230 #ifdef OPENVDB_PRIVATE
231 #define OPENVDB_TEMPLATE_EXPORT OPENVDB_EXPORT
232 #define OPENVDB_TEMPLATE_IMPORT
234 #define OPENVDB_TEMPLATE_EXPORT
235 #define OPENVDB_TEMPLATE_IMPORT OPENVDB_IMPORT
238 #define OPENVDB_TEMPLATE_IMPORT
239 #define OPENVDB_TEMPLATE_EXPORT
248#ifdef OPENVDB_PRIVATE
249 #define OPENVDB_API OPENVDB_EXPORT
251 #define OPENVDB_API OPENVDB_IMPORT
253#ifdef OPENVDB_HOUDINI_API
254#undef OPENVDB_HOUDINI_API
256#ifdef OPENVDB_HOUDINI_PRIVATE
257 #define OPENVDB_HOUDINI_API OPENVDB_EXPORT
259 #define OPENVDB_HOUDINI_API OPENVDB_IMPORT
266#ifdef OPENVDB_AX_PRIVATE
267 #define OPENVDB_AX_API OPENVDB_EXPORT
269 #define OPENVDB_AX_API OPENVDB_IMPORT
272#define OPENVDB_AX_API
279#define OPENVDB_START_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
280#define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
281#define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
282#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
283#define OPENVDB_START_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
284#define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
288#define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710))
289#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710))
290#define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711))
291#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711))
292#define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712))
293#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712))
296#define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) \
297 __pragma(warning(disable:1710)); CODE; __pragma(warning(default:1710))
298#define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) \
299 __pragma(warning(disable:1711)); CODE; __pragma(warning(default:1711))
300#define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) \
301 __pragma(warning(disable:1712)); CODE; __pragma(warning(default:1712))
305#define OPENVDB_START_THREADSAFE_STATIC_REFERENCE
306#define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE
307#define OPENVDB_START_THREADSAFE_STATIC_WRITE
308#define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE
309#define OPENVDB_START_THREADSAFE_STATIC_ADDRESS
310#define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS
312#define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE
313#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE
314#define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE
315#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE
316#define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS
317#define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS
319#define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) CODE
320#define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) CODE
321#define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) CODE