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__) 60 #ifndef _USE_MATH_DEFINES 61 #define _USE_MATH_DEFINES 70 #if defined(_DLL) && !defined(OPENVDB_STATICLIB) && !defined(OPENVDB_DLL) 76 #if !defined(OPENVDB_OPENEXR_STATICLIB) && !defined(OPENEXR_DLL) 96 #if defined(__INTEL_COMPILER) 100 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \ 101 _Pragma("warning (push)") \ 102 _Pragma("warning (disable:111)") \ 103 _Pragma("warning (disable:128)") \ 104 _Pragma("warning (disable:185)") \ 105 _Pragma("warning (disable:280)") 106 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \ 107 _Pragma("warning (pop)") 108 #elif defined(__clang__) 109 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \ 110 PRAGMA(clang diagnostic push) \ 111 PRAGMA(clang diagnostic ignored "-Wunreachable-code") 112 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \ 113 PRAGMA(clang diagnostic pop) 115 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN 116 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END 121 #ifndef OPENVDB_NO_DEPRECATION_WARNINGS 122 #define OPENVDB_DEPRECATED [[deprecated]] 123 #define OPENVDB_DEPRECATED_MESSAGE(msg) [[deprecated(msg)]] 125 #define OPENVDB_DEPRECATED 126 #define OPENVDB_DEPRECATED_MESSAGE(msg) 143 #if defined __INTEL_COMPILER 144 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 145 _Pragma("warning (push)") \ 146 _Pragma("warning (disable:1478)") 147 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 148 _Pragma("warning (pop)") 149 #elif defined __clang__ 150 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 151 _Pragma("clang diagnostic push") \ 152 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") 154 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 155 _Pragma("clang diagnostic pop") 156 #elif defined __GNUC__ 157 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 158 _Pragma("GCC diagnostic push") \ 159 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") 160 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 161 _Pragma("GCC diagnostic pop") 162 #elif defined _MSC_VER 163 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 164 __pragma(warning(push)) \ 165 __pragma(warning(disable : 4996)) 166 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 167 __pragma(warning(pop)) 169 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN 170 #define OPENVDB_NO_DEPRECATION_WARNING_END 184 #if defined __INTEL_COMPILER 185 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN 186 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END 187 #elif defined __GNUC__ 189 #if OPENVDB_CHECK_GCC(4, 9) 190 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ 191 _Pragma("GCC diagnostic push") \ 192 _Pragma("GCC diagnostic ignored \"-Wconversion\"") \ 193 _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") 195 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ 196 _Pragma("GCC diagnostic push") \ 197 _Pragma("GCC diagnostic ignored \"-Wconversion\"") 199 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \ 200 _Pragma("GCC diagnostic pop") 202 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN 203 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END 207 #ifdef OPENVDB_EXPORT 208 #undef OPENVDB_EXPORT 210 #ifdef OPENVDB_IMPORT 211 #undef OPENVDB_IMPORT 215 #define OPENVDB_EXPORT __declspec(dllexport) 216 #define OPENVDB_IMPORT __declspec(dllimport) 218 #define OPENVDB_EXPORT 219 #define OPENVDB_IMPORT 221 #elif defined(__GNUC__) 222 #define OPENVDB_EXPORT __attribute__((visibility("default"))) 223 #define OPENVDB_IMPORT __attribute__((visibility("default"))) 227 #if defined(_WIN32) && defined(OPENVDB_DLL) 228 #ifdef OPENVDB_PRIVATE 229 #define OPENVDB_TEMPLATE_EXPORT OPENVDB_EXPORT 230 #define OPENVDB_TEMPLATE_IMPORT 232 #define OPENVDB_TEMPLATE_EXPORT 233 #define OPENVDB_TEMPLATE_IMPORT OPENVDB_IMPORT 236 #define OPENVDB_TEMPLATE_IMPORT 237 #define OPENVDB_TEMPLATE_EXPORT 246 #ifdef OPENVDB_PRIVATE 247 #define OPENVDB_API OPENVDB_EXPORT 249 #define OPENVDB_API OPENVDB_IMPORT 251 #ifdef OPENVDB_HOUDINI_API 252 #undef OPENVDB_HOUDINI_API 254 #ifdef OPENVDB_HOUDINI_PRIVATE 255 #define OPENVDB_HOUDINI_API OPENVDB_EXPORT 257 #define OPENVDB_HOUDINI_API OPENVDB_IMPORT 260 #ifdef OPENVDB_AX_DLL 261 #ifdef OPENVDB_AX_API 262 #undef OPENVDB_AX_API 264 #ifdef OPENVDB_AX_PRIVATE 265 #define OPENVDB_AX_API OPENVDB_EXPORT 267 #define OPENVDB_AX_API OPENVDB_IMPORT 270 #define OPENVDB_AX_API 271 #endif // OPENVDB_AX_DLL 277 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710)) 278 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710)) 279 #define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711)) 280 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711)) 281 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712)) 282 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712)) 286 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710)) 287 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710)) 288 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711)) 289 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711)) 290 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712)) 291 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712)) 294 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) \ 295 __pragma(warning(disable:1710)); CODE; __pragma(warning(default:1710)) 296 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) \ 297 __pragma(warning(disable:1711)); CODE; __pragma(warning(default:1711)) 298 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) \ 299 __pragma(warning(disable:1712)); CODE; __pragma(warning(default:1712)) 301 #else // GCC does not support these compiler warnings 303 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE 304 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE 305 #define OPENVDB_START_THREADSAFE_STATIC_WRITE 306 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE 307 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS 308 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS 310 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE 311 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE 312 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE 313 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE 314 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS 315 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS 317 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) CODE 318 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) CODE 319 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) CODE 321 #endif // defined(__ICC) 323 #endif // OPENVDB_PLATFORM_HAS_BEEN_INCLUDED