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 17 #define OPENVDB_PREPROC_STRINGIFY(x) OPENVDB_PREPROC_STRINGIFY_(x) 24 #define OPENVDB_PREPROC_CONCAT_(x, y) x ## y 25 #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 58 #if defined(OPENVDB_USE_SSE42) || defined(OPENVDB_USE_AVX) 61 #elif defined(__GNUC__) 62 #if defined(__x86_64__) || defined(__i386__) 63 #include <x86intrin.h> 64 #elif defined(__ARM_NEON__) 86 #if defined(__INTEL_COMPILER) 90 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \ 91 _Pragma("warning (push)") \ 92 _Pragma("warning (disable:111)") \ 93 _Pragma("warning (disable:128)") \ 94 _Pragma("warning (disable:185)") \ 95 _Pragma("warning (disable:280)") 96 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \ 97 _Pragma("warning (pop)") 98 #elif defined(__clang__) 99 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN \ 100 PRAGMA(clang diagnostic push) \ 101 PRAGMA(clang diagnostic ignored "-Wunreachable-code") 102 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END \ 103 PRAGMA(clang diagnostic pop) 105 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_BEGIN 106 #define OPENVDB_NO_UNREACHABLE_CODE_WARNING_END 123 #if defined __INTEL_COMPILER 124 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 125 _Pragma("warning (push)") \ 126 _Pragma("warning (disable:1478)") \ 127 PRAGMA(message("NOTE: ignoring deprecation warning at " __FILE__ \ 128 ":" OPENVDB_PREPROC_STRINGIFY(__LINE__))) 129 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 130 _Pragma("warning (pop)") 131 #elif defined __clang__ 132 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 133 _Pragma("clang diagnostic push") \ 134 _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") 136 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 137 _Pragma("clang diagnostic pop") 138 #elif defined __GNUC__ 139 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 140 _Pragma("GCC diagnostic push") \ 141 _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \ 142 _Pragma("message(\"NOTE: ignoring deprecation warning\")") 143 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 144 _Pragma("GCC diagnostic pop") 145 #elif defined _MSC_VER 146 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN \ 147 __pragma(warning(push)) \ 148 __pragma(warning(disable : 4996)) \ 149 __pragma(message("NOTE: ignoring deprecation warning at " __FILE__ \ 150 ":" OPENVDB_PREPROC_STRINGIFY(__LINE__))) 151 #define OPENVDB_NO_DEPRECATION_WARNING_END \ 152 __pragma(warning(pop)) 154 #define OPENVDB_NO_DEPRECATION_WARNING_BEGIN 155 #define OPENVDB_NO_DEPRECATION_WARNING_END 169 #if defined __INTEL_COMPILER 170 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN 171 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END 172 #elif defined __GNUC__ 174 #if OPENVDB_CHECK_GCC(4, 9) 175 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ 176 _Pragma("GCC diagnostic push") \ 177 _Pragma("GCC diagnostic ignored \"-Wconversion\"") \ 178 _Pragma("GCC diagnostic ignored \"-Wfloat-conversion\"") 180 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN \ 181 _Pragma("GCC diagnostic push") \ 182 _Pragma("GCC diagnostic ignored \"-Wconversion\"") 184 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END \ 185 _Pragma("GCC diagnostic pop") 187 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_BEGIN 188 #define OPENVDB_NO_TYPE_CONVERSION_WARNING_END 192 #ifdef OPENVDB_EXPORT 193 #undef OPENVDB_EXPORT 195 #ifdef OPENVDB_IMPORT 196 #undef OPENVDB_IMPORT 199 #define OPENVDB_EXPORT __attribute__((visibility("default"))) 200 #define OPENVDB_IMPORT __attribute__((visibility("default"))) 204 #define OPENVDB_EXPORT __declspec(dllexport) 205 #define OPENVDB_IMPORT __declspec(dllimport) 207 #define OPENVDB_EXPORT 208 #define OPENVDB_IMPORT 218 #ifdef OPENVDB_PRIVATE 219 #define OPENVDB_API OPENVDB_EXPORT 221 #define OPENVDB_API OPENVDB_IMPORT 223 #ifdef OPENVDB_HOUDINI_API 224 #undef OPENVDB_HOUDINI_API 226 #ifdef OPENVDB_HOUDINI_PRIVATE 227 #define OPENVDB_HOUDINI_API OPENVDB_EXPORT 229 #define OPENVDB_HOUDINI_API OPENVDB_IMPORT 236 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710)) 237 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710)) 238 #define OPENVDB_START_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711)) 239 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711)) 240 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712)) 241 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712)) 245 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(disable:1710)) 246 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE __pragma(warning(default:1710)) 247 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE __pragma(warning(disable:1711)) 248 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE __pragma(warning(default:1711)) 249 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(disable:1712)) 250 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS __pragma(warning(default:1712)) 253 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) \ 254 __pragma(warning(disable:1710)); CODE; __pragma(warning(default:1710)) 255 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) \ 256 __pragma(warning(disable:1711)); CODE; __pragma(warning(default:1711)) 257 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) \ 258 __pragma(warning(disable:1712)); CODE; __pragma(warning(default:1712)) 260 #else // GCC does not support these compiler warnings 262 #define OPENVDB_START_THREADSAFE_STATIC_REFERENCE 263 #define OPENVDB_FINISH_THREADSAFE_STATIC_REFERENCE 264 #define OPENVDB_START_THREADSAFE_STATIC_WRITE 265 #define OPENVDB_FINISH_THREADSAFE_STATIC_WRITE 266 #define OPENVDB_START_THREADSAFE_STATIC_ADDRESS 267 #define OPENVDB_FINISH_THREADSAFE_STATIC_ADDRESS 269 #define OPENVDB_START_NON_THREADSAFE_STATIC_REFERENCE 270 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_REFERENCE 271 #define OPENVDB_START_NON_THREADSAFE_STATIC_WRITE 272 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_WRITE 273 #define OPENVDB_START_NON_THREADSAFE_STATIC_ADDRESS 274 #define OPENVDB_FINISH_NON_THREADSAFE_STATIC_ADDRESS 276 #define OPENVDB_THREADSAFE_STATIC_REFERENCE(CODE) CODE 277 #define OPENVDB_THREADSAFE_STATIC_WRITE(CODE) CODE 278 #define OPENVDB_THREADSAFE_STATIC_ADDRESS(CODE) CODE 280 #endif // defined(__ICC) 282 #endif // OPENVDB_PLATFORM_HAS_BEEN_INCLUDED