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) 77 #if defined(__clang__) 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 209 #ifdef OPENVDB_EXPORT 210 #undef OPENVDB_EXPORT 212 #ifdef OPENVDB_IMPORT 213 #undef OPENVDB_IMPORT 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 262 #ifdef OPENVDB_AX_DLL 263 #ifdef OPENVDB_AX_API 264 #undef OPENVDB_AX_API 266 #ifdef OPENVDB_AX_PRIVATE 267 #define OPENVDB_AX_API OPENVDB_EXPORT 269 #define OPENVDB_AX_API OPENVDB_IMPORT 272 #define OPENVDB_AX_API 273 #endif // OPENVDB_AX_DLL 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)) 303 #else // GCC does not support these compiler warnings 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 323 #endif // defined(__ICC) 325 #endif // OPENVDB_PLATFORM_HAS_BEEN_INCLUDED