… | |
… | |
115 | #define ECB_CLANG_EXTENSION(x) 0 |
115 | #define ECB_CLANG_EXTENSION(x) 0 |
116 | #endif |
116 | #endif |
117 | |
117 | |
118 | #define ECB_CPP (__cplusplus+0) |
118 | #define ECB_CPP (__cplusplus+0) |
119 | #define ECB_CPP11 (__cplusplus >= 201103L) |
119 | #define ECB_CPP11 (__cplusplus >= 201103L) |
|
|
120 | #define ECB_CPP14 (__cplusplus >= 201402L) |
|
|
121 | #define ECB_CPP17 (__cplusplus >= 201703L) |
120 | |
122 | |
121 | #if ECB_CPP |
123 | #if ECB_CPP |
122 | #define ECB_C 0 |
124 | #define ECB_C 0 |
123 | #define ECB_STDC_VERSION 0 |
125 | #define ECB_STDC_VERSION 0 |
124 | #else |
126 | #else |
… | |
… | |
126 | #define ECB_STDC_VERSION __STDC_VERSION__ |
128 | #define ECB_STDC_VERSION __STDC_VERSION__ |
127 | #endif |
129 | #endif |
128 | |
130 | |
129 | #define ECB_C99 (ECB_STDC_VERSION >= 199901L) |
131 | #define ECB_C99 (ECB_STDC_VERSION >= 199901L) |
130 | #define ECB_C11 (ECB_STDC_VERSION >= 201112L) |
132 | #define ECB_C11 (ECB_STDC_VERSION >= 201112L) |
|
|
133 | #define ECB_C17 (ECB_STDC_VERSION >= 201710L) |
131 | |
134 | |
132 | #if ECB_CPP |
135 | #if ECB_CPP |
133 | #define ECB_EXTERN_C extern "C" |
136 | #define ECB_EXTERN_C extern "C" |
134 | #define ECB_EXTERN_C_BEG ECB_EXTERN_C { |
137 | #define ECB_EXTERN_C_BEG ECB_EXTERN_C { |
135 | #define ECB_EXTERN_C_END } |
138 | #define ECB_EXTERN_C_END } |
… | |
… | |
164 | #ifndef ECB_MEMORY_FENCE |
167 | #ifndef ECB_MEMORY_FENCE |
165 | #if ECB_GCC_VERSION(2,5) || defined __INTEL_COMPILER || (__llvm__ && __GNUC__) || __SUNPRO_C >= 0x5110 || __SUNPRO_CC >= 0x5110 |
168 | #if ECB_GCC_VERSION(2,5) || defined __INTEL_COMPILER || (__llvm__ && __GNUC__) || __SUNPRO_C >= 0x5110 || __SUNPRO_CC >= 0x5110 |
166 | #if __i386 || __i386__ |
169 | #if __i386 || __i386__ |
167 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory") |
170 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("lock; orb $0, -1(%%esp)" : : : "memory") |
168 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory") |
171 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory") |
169 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("") |
172 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("" : : : "memory") |
170 | #elif ECB_GCC_AMD64 |
173 | #elif ECB_GCC_AMD64 |
171 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") |
174 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("mfence" : : : "memory") |
172 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory") |
175 | #define ECB_MEMORY_FENCE_ACQUIRE __asm__ __volatile__ ("" : : : "memory") |
173 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("") |
176 | #define ECB_MEMORY_FENCE_RELEASE __asm__ __volatile__ ("" : : : "memory") |
174 | #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ |
177 | #elif __powerpc__ || __ppc__ || __powerpc64__ || __ppc64__ |
175 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
178 | #define ECB_MEMORY_FENCE __asm__ __volatile__ ("sync" : : : "memory") |
176 | #elif defined __ARM_ARCH_2__ \ |
179 | #elif defined __ARM_ARCH_2__ \ |
177 | || defined __ARM_ARCH_3__ || defined __ARM_ARCH_3M__ \ |
180 | || defined __ARM_ARCH_3__ || defined __ARM_ARCH_3M__ \ |
178 | || defined __ARM_ARCH_4__ || defined __ARM_ARCH_4T__ \ |
181 | || defined __ARM_ARCH_4__ || defined __ARM_ARCH_4T__ \ |