22 #include "dtool_config.h"
25 #if defined(_WIN32) || defined(_WIN64)
42 #pragma warning (disable : 4231)
44 #pragma warning (disable : 4786)
46 #pragma warning (disable : 4251)
48 #pragma warning (disable : 4503)
50 #pragma warning (disable : 4305)
52 #pragma warning (disable : 4250)
54 #pragma warning (disable : 4355)
56 #pragma warning (disable : 4244)
58 #pragma warning (disable : 4267)
60 #pragma warning (disable : 4577)
72 #define __has_builtin(x) 0
75 #ifndef __has_attribute
76 #define __has_attribute(x) 0
83 #define NODEFAULT default: assert(0); break;
84 #elif __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) || __has_builtin(__builtin_unreachable)
85 #define NODEFAULT default: __builtin_unreachable();
86 #elif defined(_MSC_VER)
87 #define NODEFAULT default: __assume(0);
93 #if __has_builtin(__builtin_assume_aligned) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7)
94 #define ASSUME_ALIGNED(x, y) (__builtin_assume_aligned(x, y))
96 #define ASSUME_ALIGNED(x, y) (x)
99 #if __has_attribute(assume_aligned) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9)
100 #define RETURNS_ALIGNED(x) __attribute__((assume_aligned(x)))
102 #define RETURNS_ALIGNED(x)
106 #define LIKELY(x) __builtin_expect(!!(x), 1)
107 #define UNLIKELY(x) __builtin_expect(!!(x), 0)
109 #define LIKELY(x) (x)
110 #define UNLIKELY(x) (x)
121 #define _WIN32_WINNT 0x0502
124 #ifndef __STDC_LIMIT_MACROS
125 #define __STDC_LIMIT_MACROS
127 #ifndef __STDC_CONSTANT_MACROS
128 #define __STDC_CONSTANT_MACROS
134 #if defined(__clang__) && defined(__GLIBC__)
135 #include <sys/cdefs.h>
136 #ifndef __extern_always_inline
137 #define __extern_always_inline extern __always_inline
144 typedef struct _object PyObject;
159 #define _FILE_OFFSET_BITS 64
160 #define _LARGEFILE_SOURCE 1
167 #ifdef PHAVE_SYS_TYPES_H
168 #include <sys/types.h>
171 #ifdef PHAVE_MALLOC_H
175 #ifdef PHAVE_SYS_MALLOC_H
176 #include <sys/malloc.h>
179 #ifdef PHAVE_ALLOCA_H
183 #ifdef PHAVE_UNISTD_H
191 #ifdef PHAVE_LOCALE_H
195 #ifdef PHAVE_STRING_H
199 #ifdef PHAVE_STDLIB_H
203 #ifdef PHAVE_LIMITS_H
207 #ifdef PHAVE_SYS_TIME_H
208 #include <sys/time.h>
211 #ifdef PHAVE_STDINT_H
216 #include <stdtypedefs.h>
226 #include <Profile/Profiler.h>
231 #define TAU_TYPE_STRING(profileString, str)
232 #define TAU_PROFILE(name, type, group)
233 #define TAU_PROFILE_TIMER(var, name, type, group)
234 #define TAU_PROFILE_START(var)
235 #define TAU_PROFILE_STOP(var)
236 #define TAU_PROFILE_STMT(stmt)
237 #define TAU_PROFILE_EXIT(msg)
238 #define TAU_PROFILE_INIT(argc, argv)
239 #define TAU_PROFILE_SET_NODE(node)
240 #define TAU_PROFILE_SET_CONTEXT(context)
241 #define TAU_PROFILE_SET_GROUP_NAME(newname)
242 #define TAU_PROFILE_TIMER_SET_GROUP_NAME(t, newname)
243 #define TAU_PROFILE_CALLSTACK()
244 #define TAU_DB_DUMP()
245 #define TAU_DB_PURGE()
247 #define TAU_REGISTER_CONTEXT_EVENT(event, name)
248 #define TAU_CONTEXT_EVENT(event, data)
249 #define TAU_DISABLE_CONTEXT_EVENT(event)
250 #define TAU_ENABLE_CONTEXT_EVENT(event)
252 #define TAU_REGISTER_EVENT(event, name)
253 #define TAU_EVENT(event, data)
254 #define TAU_EVENT_DISABLE_MIN(event)
255 #define TAU_EVENT_DISABLE_MAX(event)
256 #define TAU_EVENT_DISABLE_MEAN(event)
257 #define TAU_EVENT_DISABLE_STDDEV(event)
258 #define TAU_REPORT_STATISTICS()
259 #define TAU_REPORT_THREAD_STATISTICS()
260 #define TAU_REGISTER_THREAD()
261 #define TAU_REGISTER_FORK(id, op)
262 #define TAU_ENABLE_INSTRUMENTATION()
263 #define TAU_DISABLE_INSTRUMENTATION()
264 #define TAU_ENABLE_GROUP(group)
265 #define TAU_DISABLE_GROUP(group)
266 #define TAU_ENABLE_GROUP_NAME(group)
267 #define TAU_DISABLE_GROUP_NAME(group)
268 #define TAU_ENABLE_ALL_GROUPS()
269 #define TAU_DISABLE_ALL_GROUPS()
270 #define TAU_TRACK_MEMORY()
271 #define TAU_TRACK_MEMORY_HERE()
272 #define TAU_ENABLE_TRACKING_MEMORY()
273 #define TAU_DISABLE_TRACKING_MEMORY()
274 #define TAU_ENABLE_TRACKING_MUSE_EVENTS()
275 #define TAU_DISABLE_TRACKING_MUSE_EVENTS()
276 #define TAU_TRACK_MUSE_EVENTS()
277 #define TAU_SET_INTERRUPT_INTERVAL(value)
279 #define TAU_TRACE_SENDMSG(type, destination, length)
280 #define TAU_TRACE_RECVMSG(type, source, length)
282 #define TAU_MAPPING(stmt, group) stmt
283 #define TAU_MAPPING_OBJECT(FuncInfoVar)
284 #define TAU_MAPPING_LINK(FuncInfoVar, Group)
285 #define TAU_MAPPING_PROFILE(FuncInfoVar)
286 #define TAU_MAPPING_CREATE(name, type, key, groupname, tid)
287 #define TAU_MAPPING_PROFILE_TIMER(Timer, FuncInfoVar, tid)
288 #define TAU_MAPPING_TIMER_CREATE(t, name, type, gr, group_name)
289 #define TAU_MAPPING_PROFILE_START(Timer, tid)
290 #define TAU_MAPPING_PROFILE_STOP(tid)
291 #define TAU_MAPPING_PROFILE_EXIT(msg, tid)
292 #define TAU_MAPPING_DB_DUMP(tid)
293 #define TAU_MAPPING_DB_PURGE(tid)
294 #define TAU_MAPPING_PROFILE_SET_NODE(node, tid)
295 #define TAU_MAPPING_PROFILE_SET_GROUP_NAME(timer, name)
296 #define TAU_PROFILE_TIMER_SET_NAME(t, newname)
297 #define TAU_PROFILE_TIMER_SET_TYPE(t, newname)
298 #define TAU_PROFILE_TIMER_SET_GROUP(t, id)
299 #define TAU_MAPPING_PROFILE_SET_NAME(timer, name)
300 #define TAU_MAPPING_PROFILE_SET_TYPE(timer, name)
301 #define TAU_MAPPING_PROFILE_SET_GROUP(timer, id)
302 #define TAU_MAPPING_PROFILE_GET_GROUP_NAME(timer)
303 #define TAU_MAPPING_PROFILE_GET_GROUP(timer)
304 #define TAU_MAPPING_PROFILE_GET_NAME(timer)
305 #define TAU_MAPPING_PROFILE_GET_TYPE(timer)
307 #define TAU_PHASE(name, type, group)
308 #define TAU_PHASE_CREATE_STATIC(var, name, type, group)
309 #define TAU_PHASE_CREATE_DYNAMIC(var, name, type, group)
310 #define TAU_PHASE_START(var)
311 #define TAU_PHASE_STOP(var)
312 #define TAU_GLOBAL_PHASE(timer, name, type, group)
313 #define TAU_GLOBAL_PHASE_START(timer)
314 #define TAU_GLOBAL_PHASE_STOP(timer)
315 #define TAU_GLOBAL_PHASE_EXTERNAL(timer)
316 #define TAU_GLOBAL_TIMER(timer, name, type, group)
317 #define TAU_GLOBAL_TIMER_EXTERNAL(timer)
318 #define TAU_GLOBAL_TIMER_START(timer)
319 #define TAU_GLOBAL_TIMER_STOP()
332 #if defined(__LITTLE_ENDIAN__) || defined(__i386__)
333 #undef WORDS_BIGENDIAN
335 #elif defined(__BIG_ENDIAN__) || defined(__ppc__)
336 #undef WORDS_BIGENDIAN
337 #define WORDS_BIGENDIAN 1
344 #define NATIVE_WORDSIZE __WORDSIZE
345 #elif defined(_LP64) || defined(_WIN64)
346 #define NATIVE_WORDSIZE 64
348 #define NATIVE_WORDSIZE 32
358 #elif defined(_MSC_VER)
359 #define ALIGN_4BYTE __declspec(align(4))
360 #define ALIGN_8BYTE __declspec(align(8))
361 #define ALIGN_16BYTE __declspec(align(16))
362 #define ALIGN_32BYTE __declspec(align(32))
363 #define ALIGN_64BYTE __declspec(align(64))
364 #elif defined(__GNUC__)
365 #define ALIGN_4BYTE __attribute__ ((aligned (4)))
366 #define ALIGN_8BYTE __attribute__ ((aligned (8)))
367 #define ALIGN_16BYTE __attribute__ ((aligned (16)))
368 #define ALIGN_32BYTE __attribute__ ((aligned (32)))
369 #define ALIGN_64BYTE __attribute__ ((aligned (64)))
381 #if !defined(LINMATH_ALIGN)
384 #undef MEMORY_HOOK_DO_ALIGN
386 #elif defined(USE_MEMORY_DLMALLOC)
388 #undef MEMORY_HOOK_DO_ALIGN
390 #elif defined(USE_MEMORY_PTMALLOC2)
394 #define MEMORY_HOOK_DO_ALIGN 1
396 #elif (defined(IS_OSX) || defined(_WIN64)) && !defined(__AVX__)
398 #undef MEMORY_HOOK_DO_ALIGN
400 #elif defined(MEMORY_HOOK_DO_ALIGN)
407 #define USE_MEMORY_DLMALLOC 1
414 #if defined(HAVE_EIGEN) && defined(__AVX__) && defined(STDFLOAT_DOUBLE)
417 #define MEMORY_HOOK_ALIGNMENT 32
419 #define MEMORY_HOOK_ALIGNMENT 16
423 #elif defined(IS_OSX) || NATIVE_WORDSIZE >= 64
424 #define MEMORY_HOOK_ALIGNMENT 16
426 #define MEMORY_HOOK_ALIGNMENT 8
431 #define EIGEN_MAX_ALIGN_BYTES MEMORY_HOOK_ALIGNMENT
432 #ifndef EIGEN_MPL2_ONLY
433 #define EIGEN_MPL2_ONLY 1
435 #if !defined(_DEBUG) && !defined(EIGEN_NO_DEBUG)
436 #define EIGEN_NO_DEBUG 1
441 #if defined(USE_MEMORY_PTMALLOC2) || defined(USE_MEMORY_DLMALLOC) || defined(DO_MEMORY_USAGE) || defined(MEMORY_HOOK_DO_ALIGN)
447 #define USE_MEMORY_NOWRAPPERS 1
452 #define USE_STL_ALLOCATOR 1
462 #define BEGIN_PUBLISH __begin_publish
463 #define END_PUBLISH __end_publish
464 #define BLOCKING __blocking
465 #define MAKE_PROPERTY(property_name, ...) __make_property(property_name, __VA_ARGS__)
466 #define MAKE_PROPERTY2(property_name, ...) __make_property2(property_name, __VA_ARGS__)
467 #define MAKE_SEQ(seq_name, num_name, element_name) __make_seq(seq_name, num_name, element_name)
468 #define MAKE_SEQ_PROPERTY(property_name, ...) __make_seq_property(property_name, __VA_ARGS__)
469 #define MAKE_MAP_PROPERTY(property_name, ...) __make_map_property(property_name, __VA_ARGS__)
470 #define MAKE_MAP_KEYS_SEQ(property_name, ...) __make_map_keys_seq(property_name, __VA_ARGS__)
471 #define EXTENSION(x) __extension x
472 #define EXTEND __extension
474 #define BEGIN_PUBLISH
477 #define MAKE_PROPERTY(property_name, ...)
478 #define MAKE_PROPERTY2(property_name, ...)
479 #define MAKE_SEQ(seq_name, num_name, element_name)
480 #define MAKE_SEQ_PROPERTY(property_name, ...)
481 #define MAKE_MAP_PROPERTY(property_name, ...)
482 #define MAKE_MAP_KEYS_SEQ(property_name, ...)
488 #if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
489 #define EXPORT_CLASS __declspec(dllexport)
490 #define IMPORT_CLASS __declspec(dllimport)
491 #elif __GNUC__ >= 4 && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
492 #define EXPORT_CLASS __attribute__((visibility("default")))
500 #if defined(CPPPARSER) || defined(LINK_ALL_STATIC)
503 #elif defined(_MSC_VER)
511 #define IMPORT_TEMPL extern
513 #define EXPORT_TEMPL extern
514 #define IMPORT_TEMPL extern