Merge branch 'integration' into dev
[libcds.git] / cds / compiler / defs.h
1 //$$CDS-header$$
2
3 #ifndef CDSLIB_COMPILER_DEFS_H
4 #define CDSLIB_COMPILER_DEFS_H
5
6 /*
7     Required C++11 features:
8     - move semantics [CDS_RVALUE_SUPPORT, CDS_MOVE_SEMANTICS_SUPPORT]
9     - lambda function [CDS_CXX11_LAMBDA_SUPPORT]
10     - variadic template [CDS_CXX11_VARIADIC_TEMPLATE_SUPPORT]
11     - template alias [CDS_CXX11_TEMPLATE_ALIAS_SUPPORT]
12     - explicit conversion operator [CDS_CXX11_EXPLICIT_CONVERSION_OPERATOR_SUPPORT]
13     - default template argument for function [CDS_CXX11_DEFAULT_FUNCTION_TEMPLATE_ARGS_SUPPORT]
14     - explicit default functions (=default) [CDS_CXX11_EXPLICITLY_DEFAULTED_FUNCTION_SUPPORT]
15     - =delete [CDS_CXX11_DELETE_DEFINITION_SUPPORT]
16 */
17
18 #if CDS_COMPILER == CDS_COMPILER_MSVC
19 #   include <cds/compiler/vc/defs.h>
20 #elif CDS_COMPILER == CDS_COMPILER_GCC
21 #   include <cds/compiler/gcc/defs.h>
22 #elif CDS_COMPILER == CDS_COMPILER_INTEL
23 #   include <cds/compiler/icl/defs.h>
24 #elif CDS_COMPILER == CDS_COMPILER_CLANG
25 #   include <cds/compiler/clang/defs.h>
26 #elif CDS_COMPILER == CDS_COMPILER_UNKNOWN
27 #   error Unknown compiler. Compilation aborted
28 #else
29 #   error Unknown value of CDS_COMPILER macro
30 #endif
31
32 #ifndef CDS_STDCALL
33 #   define CDS_STDCALL
34 #endif
35
36 #ifndef CDS_EXPORT_API
37 #   define CDS_EXPORT_API
38 #endif
39
40 // Features
41 #include <cds/compiler/feature_tsan.h>
42
43 #endif  // #ifndef CDSLIB_COMPILER_DEFS_H