tbb_config.h

00001 /*
00002     Copyright 2005-2013 Intel Corporation.  All Rights Reserved.
00003 
00004     The source code contained or described herein and all documents related
00005     to the source code ("Material") are owned by Intel Corporation or its
00006     suppliers or licensors.  Title to the Material remains with Intel
00007     Corporation or its suppliers and licensors.  The Material is protected
00008     by worldwide copyright laws and treaty provisions.  No part of the
00009     Material may be used, copied, reproduced, modified, published, uploaded,
00010     posted, transmitted, distributed, or disclosed in any way without
00011     Intel's prior express written permission.
00012 
00013     No license under any patent, copyright, trade secret or other
00014     intellectual property right is granted to or conferred upon you by
00015     disclosure or delivery of the Materials, either expressly, by
00016     implication, inducement, estoppel or otherwise.  Any license under such
00017     intellectual property rights must be express and approved by Intel in
00018     writing.
00019 */
00020 
00021 #ifndef __TBB_tbb_config_H
00022 #define __TBB_tbb_config_H
00023 
00032 #define __TBB_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
00033 
00034 #if __clang__
00035     #define __TBB_CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
00036 #endif
00037 
00040 #if __INTEL_COMPILER == 9999 && __INTEL_COMPILER_BUILD_DATE == 20110811
00041 /* Intel Composer XE 2011 Update 6 incorrectly sets __INTEL_COMPILER. Fix it. */
00042     #undef __INTEL_COMPILER
00043     #define __INTEL_COMPILER 1210
00044 #endif
00045 
00046 #if (__TBB_GCC_VERSION >= 40400) && !defined(__INTEL_COMPILER)
00047 
00048     #define __TBB_GCC_WARNING_SUPPRESSION_PRESENT 1
00049 #endif
00050 
00051 /* Select particular features of C++11 based on compiler version.
00052    ICC 12.1 (Linux), GCC 4.3 and higher, clang 2.9 and higher
00053    set __GXX_EXPERIMENTAL_CXX0X__ in c++11 mode.
00054 
00055    Compilers that mimics other compilers (ICC, clang) must be processed before
00056    compilers they mimic (GCC, MSVC).
00057 
00058    TODO: The following conditions should be extended when new compilers/runtimes
00059    support added.
00060  */
00061 
00062 #if __INTEL_COMPILER
00063 
00066     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    __GXX_EXPERIMENTAL_CXX0X__ && __VARIADIC_TEMPLATES
00067     #define __TBB_CPP11_RVALUE_REF_PRESENT            (__GXX_EXPERIMENTAL_CXX0X__ || _MSC_VER >= 1600) && (__INTEL_COMPILER >= 1200)
00068     #if  _MSC_VER >= 1600
00069         #define __TBB_EXCEPTION_PTR_PRESENT           __INTEL_COMPILER > 1300                                                  \
00070                                                       /*ICC 12.1 Upd 10 and 13 beta Upd 2 fixed exception_ptr linking  issue*/ \
00071                                                       || (__INTEL_COMPILER == 1300 && __INTEL_COMPILER_BUILD_DATE >= 20120530) \
00072                                                       || (__INTEL_COMPILER == 1210 && __INTEL_COMPILER_BUILD_DATE >= 20120410)
00073 
00074     #elif (__TBB_GCC_VERSION >= 40404) && (__TBB_GCC_VERSION < 40600)
00075         #define __TBB_EXCEPTION_PTR_PRESENT        __GXX_EXPERIMENTAL_CXX0X__ && __INTEL_COMPILER >= 1200
00076     #else
00077         #define __TBB_EXCEPTION_PTR_PRESENT           0
00078     #endif
00079     #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (_MSC_VER >= 1700 || (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_GCC_VERSION >= 40600))
00080     #define __TBB_STATIC_ASSERT_PRESENT               __GXX_EXPERIMENTAL_CXX0X__ || (_MSC_VER >= 1600)
00081     #define __TBB_CPP11_TUPLE_PRESENT                 (_MSC_VER >= 1600) || ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40300))
00082 
00083     #define __TBB_INITIALIZER_LISTS_PRESENT           0
00084     #define __TBB_CONSTEXPR_PRESENT                   0
00085     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  0
00086 #elif __clang__
00087 //TODO: these options need to be rechecked
00088     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_CLANG_VERSION >= 20900)
00089     #define __TBB_CPP11_RVALUE_REF_PRESENT            (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_CLANG_VERSION >= 20900)
00090     #define __TBB_EXCEPTION_PTR_PRESENT               __GXX_EXPERIMENTAL_CXX0X__
00091     #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_CLANG_VERSION > 30100)// TODO: check version
00092     #define __TBB_STATIC_ASSERT_PRESENT               (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_CLANG_VERSION >= 20900)
00093     #define __TBB_CPP11_TUPLE_PRESENT                 ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40300))
00094     #define __TBB_INITIALIZER_LISTS_PRESENT           0
00095     #define __TBB_CONSTEXPR_PRESENT                   (__GXX_EXPERIMENTAL_CXX0X__ && __TBB_CLANG_VERSION > 30100)
00096     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  0
00097 #elif __GNUC__
00098     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    __GXX_EXPERIMENTAL_CXX0X__
00099     #define __TBB_CPP11_RVALUE_REF_PRESENT            __GXX_EXPERIMENTAL_CXX0X__
00100 
00103     #define __TBB_EXCEPTION_PTR_PRESENT               ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40404) && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
00104     #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40600))
00105     #define __TBB_STATIC_ASSERT_PRESENT               ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40300))
00106     #define __TBB_CPP11_TUPLE_PRESENT                 ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40300))
00107     #define __TBB_INITIALIZER_LISTS_PRESENT           ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40400))
00108 
00109     #define __TBB_CONSTEXPR_PRESENT                   ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40400))
00110     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  ((__GXX_EXPERIMENTAL_CXX0X__) && (__TBB_GCC_VERSION >= 40400))
00111 #elif _MSC_VER
00112     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    0
00113     #define __TBB_CPP11_RVALUE_REF_PRESENT            0
00114     #define __TBB_EXCEPTION_PTR_PRESENT               (_MSC_VER >= 1600)
00115     #define __TBB_STATIC_ASSERT_PRESENT               (_MSC_VER >= 1600)
00116     #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          (_MSC_VER >= 1700)
00117     #define __TBB_CPP11_TUPLE_PRESENT                 (_MSC_VER >= 1600)
00118     #define __TBB_INITIALIZER_LISTS_PRESENT           0
00119     #define __TBB_CONSTEXPR_PRESENT                   0
00120     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  0
00121 #else
00122     #define __TBB_CPP11_VARIADIC_TEMPLATES_PRESENT    0
00123     #define __TBB_CPP11_RVALUE_REF_PRESENT            0
00124     #define __TBB_EXCEPTION_PTR_PRESENT               0
00125     #define __TBB_STATIC_ASSERT_PRESENT               0
00126     #define __TBB_MAKE_EXCEPTION_PTR_PRESENT          0
00127     #define __TBB_CPP11_TUPLE_PRESENT                 0
00128     #define __TBB_INITIALIZER_LISTS_PRESENT           0
00129     #define __TBB_CONSTEXPR_PRESENT                   0
00130     #define __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT  0
00131 #endif
00132 
00133 //TODO: not clear how exactly this macro affects exception_ptr - investigate
00134 // On linux ICC fails to find existing std::exception_ptr in libstdc++ without this define
00135 #if __INTEL_COMPILER && __GNUC__ && __TBB_EXCEPTION_PTR_PRESENT && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
00136     #define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
00137 #endif
00138 
00139 // Work around a bug in MinGW32
00140 #if __MINGW32__ && __TBB_EXCEPTION_PTR_PRESENT && !defined(_GLIBCXX_ATOMIC_BUILTINS_4)
00141     #define _GLIBCXX_ATOMIC_BUILTINS_4
00142 #endif
00143 
00144 #if __GNUC__ || __SUNPRO_CC || __IBMCPP__
00145     /* ICC defines __GNUC__ and so is covered */
00146     #define __TBB_ATTRIBUTE_ALIGNED_PRESENT 1
00147 #elif _MSC_VER && (_MSC_VER >= 1300 || __INTEL_COMPILER)
00148     #define __TBB_DECLSPEC_ALIGN_PRESENT 1
00149 #endif
00150 
00151 /* Actually ICC supports gcc __sync_* intrinsics starting 11.1,
00152  * but 64 bit support for 32 bit target comes in later ones*/
00153 /* TODO: change the version back to 4.1.2 once macro __TBB_WORD_SIZE become optional */
00154 #if (__TBB_GCC_VERSION >= 40306) || (__INTEL_COMPILER >= 1200)
00155 
00156     #define __TBB_GCC_BUILTIN_ATOMICS_PRESENT 1
00157 #endif
00158 
00159 #if (__INTEL_COMPILER >= 1210)
00160 
00161     #define __TBB_ICC_BUILTIN_ATOMICS_PRESENT 1
00162 #endif
00163 
00166 #ifndef TBB_USE_DEBUG
00167 #ifdef TBB_DO_ASSERT
00168 #define TBB_USE_DEBUG TBB_DO_ASSERT
00169 #else
00170 #ifdef _DEBUG
00171 #define TBB_USE_DEBUG _DEBUG
00172 #else
00173 #define TBB_USE_DEBUG 0
00174 #endif
00175 #endif /* TBB_DO_ASSERT */
00176 #endif /* TBB_USE_DEBUG */
00177 
00178 #ifndef TBB_USE_ASSERT
00179 #ifdef TBB_DO_ASSERT
00180 #define TBB_USE_ASSERT TBB_DO_ASSERT
00181 #else
00182 #define TBB_USE_ASSERT TBB_USE_DEBUG
00183 #endif /* TBB_DO_ASSERT */
00184 #endif /* TBB_USE_ASSERT */
00185 
00186 #ifndef TBB_USE_THREADING_TOOLS
00187 #ifdef TBB_DO_THREADING_TOOLS
00188 #define TBB_USE_THREADING_TOOLS TBB_DO_THREADING_TOOLS
00189 #else
00190 #define TBB_USE_THREADING_TOOLS TBB_USE_DEBUG
00191 #endif /* TBB_DO_THREADING_TOOLS */
00192 #endif /* TBB_USE_THREADING_TOOLS */
00193 
00194 #ifndef TBB_USE_PERFORMANCE_WARNINGS
00195 #ifdef TBB_PERFORMANCE_WARNINGS
00196 #define TBB_USE_PERFORMANCE_WARNINGS TBB_PERFORMANCE_WARNINGS
00197 #else
00198 #define TBB_USE_PERFORMANCE_WARNINGS TBB_USE_DEBUG
00199 #endif /* TBB_PEFORMANCE_WARNINGS */
00200 #endif /* TBB_USE_PERFORMANCE_WARNINGS */
00201 
00202 #if __MIC__ || __MIC2__
00203 #define __TBB_DEFINE_MIC 1
00204 #endif
00205 
00206 #if !defined(__EXCEPTIONS) && !defined(_CPPUNWIND) && !defined(__SUNPRO_CC) || defined(_XBOX)
00207     #if TBB_USE_EXCEPTIONS
00208         #error Compilation settings do not support exception handling. Please do not set TBB_USE_EXCEPTIONS macro or set it to 0.
00209     #elif !defined(TBB_USE_EXCEPTIONS)
00210         #define TBB_USE_EXCEPTIONS 0
00211     #endif
00212 #elif !defined(TBB_USE_EXCEPTIONS)
00213     #if __TBB_DEFINE_MIC
00214     #define TBB_USE_EXCEPTIONS 0
00215     #else
00216     #define TBB_USE_EXCEPTIONS 1
00217     #endif
00218 #elif TBB_USE_EXCEPTIONS && __TBB_DEFINE_MIC
00219     #error Please do not set TBB_USE_EXCEPTIONS macro or set it to 0.
00220 #endif
00221 
00222 #ifndef TBB_IMPLEMENT_CPP0X
00223 
00224     #if __GNUC__==4 && __GNUC_MINOR__>=4 && __GXX_EXPERIMENTAL_CXX0X__
00225         #define TBB_IMPLEMENT_CPP0X 0
00226     #else
00227         #define TBB_IMPLEMENT_CPP0X 1
00228     #endif
00229 #endif /* TBB_IMPLEMENT_CPP0X */
00230 
00231 /* TBB_USE_CAPTURED_EXCEPTION should be explicitly set to either 0 or 1, as it is used as C++ const */
00232 #ifndef TBB_USE_CAPTURED_EXCEPTION
00233 
00234     #if __TBB_EXCEPTION_PTR_PRESENT && !defined(__GNUC__)
00235         #define TBB_USE_CAPTURED_EXCEPTION 0
00236     #else
00237         #define TBB_USE_CAPTURED_EXCEPTION 1
00238     #endif
00239 #else /* defined TBB_USE_CAPTURED_EXCEPTION */
00240     #if !TBB_USE_CAPTURED_EXCEPTION && !__TBB_EXCEPTION_PTR_PRESENT
00241         #error Current runtime does not support std::exception_ptr. Set TBB_USE_CAPTURED_EXCEPTION and make sure that your code is ready to catch tbb::captured_exception.
00242     #endif
00243 #endif /* defined TBB_USE_CAPTURED_EXCEPTION */
00244 
00246 #if (TBB_USE_GCC_BUILTINS && !__TBB_GCC_BUILTIN_ATOMICS_PRESENT)
00247     #error "GCC atomic built-ins are not supported."
00248 #endif
00249 
00253 #define __TBB_WEAK_SYMBOLS_PRESENT !_WIN32 && !__APPLE__ && !__sun && ((__TBB_GCC_VERSION >= 40000) || defined(__INTEL_COMPILER))
00254 
00256 #ifndef __TBB_DYNAMIC_LOAD_ENABLED
00257     #define __TBB_DYNAMIC_LOAD_ENABLED 1
00258 #endif
00259 
00263 #if (_WIN32||_WIN64) && __TBB_SOURCE_DIRECTLY_INCLUDED
00264     #define __TBB_NO_IMPLICIT_LINKAGE 1
00265     #define __TBBMALLOC_NO_IMPLICIT_LINKAGE 1
00266 #endif
00267 
00268 #ifndef __TBB_COUNT_TASK_NODES
00269     #define __TBB_COUNT_TASK_NODES TBB_USE_ASSERT
00270 #endif
00271 
00272 #ifndef __TBB_TASK_GROUP_CONTEXT
00273     #define __TBB_TASK_GROUP_CONTEXT 1
00274 #endif /* __TBB_TASK_GROUP_CONTEXT */
00275 
00276 #ifndef __TBB_SCHEDULER_OBSERVER
00277     #define __TBB_SCHEDULER_OBSERVER 1
00278 #endif /* __TBB_SCHEDULER_OBSERVER */
00279 
00280 #if !defined(TBB_PREVIEW_TASK_ARENA) && __TBB_BUILD
00281     #define TBB_PREVIEW_TASK_ARENA __TBB_CPF_BUILD
00282 #endif /* TBB_PREVIEW_TASK_ARENA */
00283 #define __TBB_TASK_ARENA TBB_PREVIEW_TASK_ARENA
00284 #if TBB_PREVIEW_TASK_ARENA
00285     #define TBB_PREVIEW_LOCAL_OBSERVER 1
00286     #define __TBB_NO_IMPLICIT_LINKAGE 1
00287     #define __TBB_TASK_PRIORITY 0 // TODO: it will be removed in next versions
00288     #if !__TBB_SCHEDULER_OBSERVER
00289         #error TBB_PREVIEW_TASK_ARENA requires __TBB_SCHEDULER_OBSERVER to be enabled
00290     #endif
00291 #endif /* TBB_PREVIEW_TASK_ARENA */
00292 
00293 #if !defined(TBB_PREVIEW_LOCAL_OBSERVER) && __TBB_BUILD && __TBB_SCHEDULER_OBSERVER
00294     #define TBB_PREVIEW_LOCAL_OBSERVER 1
00295 #endif /* TBB_PREVIEW_LOCAL_OBSERVER */
00296 
00297 #if TBB_USE_EXCEPTIONS && !__TBB_TASK_GROUP_CONTEXT
00298     #error TBB_USE_EXCEPTIONS requires __TBB_TASK_GROUP_CONTEXT to be enabled
00299 #endif
00300 
00301 #ifndef __TBB_TASK_PRIORITY
00302     #define __TBB_TASK_PRIORITY __TBB_TASK_GROUP_CONTEXT
00303 #endif /* __TBB_TASK_PRIORITY */
00304 
00305 #if __TBB_TASK_PRIORITY && !__TBB_TASK_GROUP_CONTEXT
00306     #error __TBB_TASK_PRIORITY requires __TBB_TASK_GROUP_CONTEXT to be enabled
00307 #endif
00308 
00309 #if TBB_PREVIEW_WAITING_FOR_WORKERS || __TBB_BUILD
00310     #define __TBB_SUPPORTS_WORKERS_WAITING_IN_TERMINATE 1
00311 #endif
00312 
00313 #if !defined(__TBB_SURVIVE_THREAD_SWITCH) && \
00314           (_WIN32 || _WIN64 || __APPLE__ || (__linux__ && !__ANDROID__))
00315     #define __TBB_SURVIVE_THREAD_SWITCH 1
00316 #endif /* __TBB_SURVIVE_THREAD_SWITCH */
00317 
00318 #ifndef __TBB_DEFAULT_PARTITIONER
00319 #if TBB_DEPRECATED
00320 
00321 #define __TBB_DEFAULT_PARTITIONER tbb::simple_partitioner
00322 #else
00323 
00324 #define __TBB_DEFAULT_PARTITIONER tbb::auto_partitioner
00325 #endif /* TBB_DEPRECATED */
00326 #endif /* !defined(__TBB_DEFAULT_PARTITIONER */
00327 
00328 #ifdef _VARIADIC_MAX
00329 #define __TBB_VARIADIC_MAX _VARIADIC_MAX
00330 #else
00331 #if _MSC_VER >= 1700
00332 #define __TBB_VARIADIC_MAX 5  /* current VS11 setting, may change. */
00333 #else
00334 #define __TBB_VARIADIC_MAX 10
00335 #endif
00336 #endif
00337 
00338 // Define preprocessor symbols used to determine architecture
00339 #if _WIN32||_WIN64
00340 #   if defined(_M_X64)||defined(__x86_64__)  // the latter for MinGW support
00341 #       define __TBB_x86_64 1
00342 #   elif defined(_M_IA64)
00343 #       define __TBB_ipf 1
00344 #   elif defined(_M_IX86)||defined(__i386__) // the latter for MinGW support
00345 #       define __TBB_x86_32 1
00346 #   endif
00347 #else /* Assume generic Unix */
00348 #   if !__linux__ && !__APPLE__
00349 #       define __TBB_generic_os 1
00350 #   endif
00351 #   if __x86_64__
00352 #       define __TBB_x86_64 1
00353 #   elif __ia64__
00354 #       define __TBB_ipf 1
00355 #   elif __i386__||__i386  // __i386 is for Sun OS
00356 #       define __TBB_x86_32 1
00357 #   else
00358 #       define __TBB_generic_arch 1
00359 #   endif
00360 #endif
00361 
00367 #if __ANDROID__ && __TBB_GCC_VERSION <= 40403 && !__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
00368 
00371     #define __TBB_GCC_64BIT_ATOMIC_BUILTINS_BROKEN 1
00372 #endif
00373 
00374 #if __GNUC__ && __TBB_x86_64 && __INTEL_COMPILER == 1200
00375     #define __TBB_ICC_12_0_INL_ASM_FSTCW_BROKEN 1
00376 #endif
00377 
00378 #if _MSC_VER && __INTEL_COMPILER && (__INTEL_COMPILER<1110 || __INTEL_COMPILER==1110 && __INTEL_COMPILER_BUILD_DATE < 20091012)
00379 
00382     #define __TBB_DEFAULT_DTOR_THROW_SPEC_BROKEN 1
00383 #endif
00384 
00385 #if defined(_MSC_VER) && _MSC_VER < 1500 && !defined(__INTEL_COMPILER)
00386 
00388     #define __TBB_TEMPLATE_FRIENDS_BROKEN 1
00389 #endif
00390 
00391 #if __GLIBC__==2 && __GLIBC_MINOR__==3 || __MINGW32__ || (__APPLE__ && __INTEL_COMPILER==1200 && !TBB_USE_DEBUG)
00392 
00394     #define __TBB_THROW_ACROSS_MODULE_BOUNDARY_BROKEN 1
00395 #else
00396     #define __TBB_THROW_ACROSS_MODULE_BOUNDARY_BROKEN 0
00397 #endif
00398 
00399 #if (_WIN32||_WIN64) && __INTEL_COMPILER == 1110
00400 
00401     #define __TBB_ICL_11_1_CODE_GEN_BROKEN 1
00402 #endif
00403 
00404 #if __clang__ || (__GNUC__==3 && __GNUC_MINOR__==3 && !defined(__INTEL_COMPILER))
00405 
00406     #define __TBB_PROTECTED_NESTED_CLASS_BROKEN 1
00407 #endif
00408 
00409 #if __MINGW32__ && (__GNUC__<4 || __GNUC__==4 && __GNUC_MINOR__<2)
00410 
00412     #define __TBB_SSE_STACK_ALIGNMENT_BROKEN 1
00413 #else
00414     #define __TBB_SSE_STACK_ALIGNMENT_BROKEN 0
00415 #endif
00416 
00417 #if __GNUC__==4 && __GNUC_MINOR__==3 && __GNUC_PATCHLEVEL__==0
00418     /* GCC of this version may rashly ignore control dependencies */
00419     #define __TBB_GCC_OPTIMIZER_ORDERING_BROKEN 1
00420 #endif
00421 
00422 #if __FreeBSD__
00423 
00425     #define __TBB_PRIO_INHERIT_BROKEN 1
00426 
00429     #define __TBB_PLACEMENT_NEW_EXCEPTION_SAFETY_BROKEN 1
00430 #endif /* __FreeBSD__ */
00431 
00432 #if (__linux__ || __APPLE__) && __i386__ && defined(__INTEL_COMPILER)
00433 
00435     #define __TBB_ICC_ASM_VOLATILE_BROKEN 1
00436 #endif
00437 
00438 #if !__INTEL_COMPILER && (_MSC_VER || __GNUC__==3 && __GNUC_MINOR__<=2)
00439 
00441     #define __TBB_ALIGNOF_NOT_INSTANTIATED_TYPES_BROKEN 1
00442 #endif
00443 
00444 #if __INTEL_COMPILER
00445     #define __TBB_CPP11_STD_FORWARD_BROKEN 1
00446 #else
00447     #define __TBB_CPP11_STD_FORWARD_BROKEN 0
00448 #endif
00449 
00450 #if __TBB_DEFINE_MIC
00451 
00452     #define __TBB_MAIN_THREAD_AFFINITY_BROKEN 1
00453 #endif
00454 
00457 #if defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_APP
00458     #define __TBB_WIN8UI_SUPPORT 1
00459 #else
00460     #define __TBB_WIN8UI_SUPPORT 0
00461 #endif
00462 
00463 #if !defined(__EXCEPTIONS) && __GNUC__==4 && (__GNUC_MINOR__==4 ||__GNUC_MINOR__==5 || (__INTEL_COMPILER==1300 && __TBB_GCC_VERSION>=40600 && __TBB_GCC_VERSION<=40700)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
00464 /* There is an issue for specific GCC toolchain when C++11 is enabled
00465    and exceptions are disabled:
00466    exceprion_ptr.h/nested_exception.h are using throw unconditionally.
00467  */
00468     #define __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN 1
00469 #else
00470     #define __TBB_LIBSTDCPP_EXCEPTION_HEADERS_BROKEN 0
00471 #endif
00472 
00473 #if __TBB_x86_32 && (__linux__ || __APPLE__ || _WIN32 || __sun) &&  ((defined(__INTEL_COMPILER) && (__INTEL_COMPILER <= 1300)) || (__GNUC__==3 && __GNUC_MINOR__==3 ) || defined(__SUNPRO_CC))
00474     // Some compilers for IA-32 fail to provide 8-byte alignment of objects on the stack,
00475     // even if the object specifies 8-byte alignment.  On such platforms, the IA-32 implementation
00476     // of 64 bit atomics (e.g. atomic<long long>) use different tactics depending upon
00477     // whether the object is properly aligned or not.
00478     #define __TBB_FORCE_64BIT_ALIGNMENT_BROKEN 1
00479 #else
00480     #define __TBB_FORCE_64BIT_ALIGNMENT_BROKEN 0
00481 #endif
00482 
00483 #if (__TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT && (__TBB_GCC_VERSION < 40700) && (!defined(__INTEL_COMPILER) && !defined (__clang__)))
00484     #define __TBB_ZERO_INIT_WITH_DEFAULTED_CTOR_BROKEN 1
00485 #endif
00486 
00488 #define __TBB_ATOMIC_CTORS     (__TBB_CONSTEXPR_PRESENT && __TBB_DEFAULTED_AND_DELETED_FUNC_PRESENT && (!__TBB_ZERO_INIT_WITH_DEFAULTED_CTOR_BROKEN))
00489 
00490 #endif /* __TBB_tbb_config_H */

Copyright © 2005-2013 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.