Go to the documentation of this file.
18 #ifndef viskores_internal_Configure_h
19 #define viskores_internal_Configure_h
28 #define VISKORES_CUDA_DEVICE_PASS
41 #elif defined(__INTEL_COMPILER)
51 #elif defined(__ibmxl__)
55 #elif defined(__clang__)
58 #define VISKORES_CLANG
60 #elif defined(__MINGW32__)
63 #define VISKORES_MINGW
65 #elif defined(__GNUC__)
72 #if defined(unix) || defined(__unix) || defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
74 # ifdef _POSIX_VERSION
75 # define VISKORES_POSIX _POSIX_VERSION
80 # define VISKORES_WINDOWS
83 #if !defined(VISKORES_NO_ASSERT)
87 #if !defined(VISKORES_NO_ASSERT_CUDA)
88 #define VISKORES_NO_ASSERT_CUDA
91 #if !defined(VISKORES_NO_ASSERT_HIP)
92 #define VISKORES_NO_ASSERT_HIP
95 #if !defined(VISKORES_USE_DOUBLE_PRECISION) && !defined(VISKORES_NO_DOUBLE_PRECISION)
99 #if defined(VISKORES_USE_DOUBLE_PRECISION) && defined(VISKORES_NO_DOUBLE_PRECISION)
100 # error Both VISKORES_USE_DOUBLE_PRECISION and VISKORES_NO_DOUBLE_PRECISION defined. Do not know what to do.
103 #if !defined(VISKORES_USE_64BIT_IDS) && !defined(VISKORES_NO_64BIT_IDS)
104 #define VISKORES_USE_64BIT_IDS
107 #if defined(VISKORES_USE_64BIT_IDS) && defined(VISKORES_NO_64BIT_IDS)
108 # error Both VISKORES_USE_64BIT_IDS and VISKORES_NO_64BIT_IDS defined. Do not know what to do.
111 #define VISKORES_SIZE_LONG 8
112 #define VISKORES_SIZE_LONG_LONG 8
115 #ifndef VISKORES_ALLOCATION_ALIGNMENT
116 #define VISKORES_ALLOCATION_ALIGNMENT 64
123 #if (defined(VISKORES_GCC) || defined(VISKORES_CLANG))
125 #define VISKORES_THIRDPARTY_GENERAL_WARNING_PRAGMAS \
126 _Pragma("GCC diagnostic ignored \"-Wconversion\"") \
127 _Pragma("GCC diagnostic ignored \"-Wshadow\"") \
128 _Pragma("GCC diagnostic ignored \"-Wunused-parameter\"")
131 #if defined(VISKORES_GCC)
132 #define VISKORES_THIRDPARTY_GCC_WARNING_PRAGMAS \
133 _Pragma("GCC diagnostic ignored \"-Wunused-but-set-variable\"") \
134 _Pragma("GCC diagnostic ignored \"-Wunused-variable\"")
136 #define VISKORES_THIRDPARTY_GCC_WARNING_PRAGMAS
140 #if defined(VISKORES_CLANG) && (__apple_build_version__ >= 7000072)
146 #define VISKORES_THIRDPARTY_CLANG_WARNING_PRAGMAS \
147 _Pragma("GCC diagnostic ignored \"-Wunused-local-typedef\"") \
148 _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
149 _Pragma("GCC diagnostic ignored \"-Wdeprecated\"")
150 _Pragma(
"GCC diagnostic ignored \"-Wunused-template\"")
151 #elif defined(VISKORES_CLANG) && defined(__ibmxl__)
152 #define VISKORES_THIRDPARTY_CLANG_WARNING_PRAGMAS \
153 _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
154 _Pragma("GCC diagnostic ignored \"-Wdeprecated\"")
155 #elif defined(VISKORES_CLANG)
156 #define VISKORES_THIRDPARTY_CLANG_WARNING_PRAGMAS \
157 _Pragma("GCC diagnostic ignored \"-Wnon-virtual-dtor\"") \
158 _Pragma("GCC diagnostic ignored \"-Wdeprecated\"")
159 _Pragma(
"GCC diagnostic ignored \"-Wunused-template\"")
161 #define VISKORES_THIRDPARTY_CLANG_WARNING_PRAGMAS
166 #if defined(VISKORES_GCC) && (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
167 #define VISKORES_THIRDPARTY_WARNINGS_PUSH
168 #define VISKORES_THRIDPARTY_WARNINGS_POP
170 #define VISKORES_THIRDPARTY_WARNINGS_PUSH _Pragma("GCC diagnostic push")
171 #define VISKORES_THRIDPARTY_WARNINGS_POP _Pragma("GCC diagnostic pop")
174 #define VISKORES_THIRDPARTY_PRE_INCLUDE \
175 VISKORES_THIRDPARTY_WARNINGS_PUSH \
176 VISKORES_THIRDPARTY_GENERAL_WARNING_PRAGMAS \
177 VISKORES_THIRDPARTY_GCC_WARNING_PRAGMAS \
178 VISKORES_THIRDPARTY_CLANG_WARNING_PRAGMAS
179 #define VISKORES_THIRDPARTY_POST_INCLUDE \
180 VISKORES_THRIDPARTY_WARNINGS_POP
182 #elif (defined(VISKORES_MSVC))
183 #define VISKORES_THIRDPARTY_PRE_INCLUDE \
184 __pragma(warning(push)) \
185 __pragma(warning(disable:4100)) \
186 __pragma(warning(disable:4127)) \
187 __pragma(warning(disable:4201)) \
188 __pragma(warning(disable:4244)) \
189 __pragma(warning(disable:4267)) \
190 __pragma(warning(disable:4324)) \
191 __pragma(warning(disable:4510)) \
192 __pragma(warning(disable:4512)) \
193 __pragma(warning(disable:4515)) \
194 __pragma(warning(disable:4610)) \
195 __pragma(warning(disable:4800))
196 #define VISKORES_THIRDPARTY_POST_INCLUDE \
197 __pragma(warning(pop))
199 #define VISKORES_THIRDPARTY_PRE_INCLUDE
200 #define VISKORES_THIRDPARTY_POST_INCLUDE
204 #if defined(__GLIBCXX__) && \
205 (__GLIBCXX__ < 20150422 || __GLIBCXX__ == 20160726 || __GLIBCXX__ == 20150626 || \
206 __GLIBCXX__ == 20150623)
223 #define VISKORES_USING_GLIBCXX_4
232 #if ( defined(VISKORES_GCC) && ( __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) ) ) || \
233 ( defined(VISKORES_ICC) && (__INTEL_COMPILER >= 1500) ) || \
234 ( defined(VISKORES_CLANG) && defined(__apple_build_version__) && (__apple_build_version__ >= 7000000) ) || \
235 ( defined(VISKORES_CLANG) && !defined(__apple_build_version__) && (__clang_major__ > 3) ) || \
236 ( defined(VISKORES_CLANG) && !defined(__apple_build_version__) && (__clang_major__ == 3 && __clang_minor__ >= 5) )
237 #define VISKORES_COMPILER_SUPPORTS_VECTOR_PRAGMAS 1
247 #if defined(VISKORES_COMPILER_SUPPORTS_VECTOR_PRAGMAS) &&\
248 defined(VISKORES_VECTORIZATION_ENABLED)
249 #if defined(VISKORES_CLANG)
251 #define VISKORES_VECTORIZATION_PRE_LOOP \
252 _Pragma("clang loop vectorize(enable) interleave(enable)")
253 #define VISKORES_VECTORIZATION_IN_LOOP
254 #elif defined(VISKORES_ICC) && defined(NDEBUG)
269 #define VISKORES_VECTORIZATION_PRE_LOOP
270 #define VISKORES_VECTORIZATION_IN_LOOP
271 #elif defined(VISKORES_GCC)
273 #define VISKORES_VECTORIZATION_PRE_LOOP \
275 #define VISKORES_VECTORIZATION_IN_LOOP
278 #define VISKORES_VECTORIZATION_PRE_LOOP
279 #define VISKORES_VECTORIZATION_IN_LOOP
283 #define VISKORES_VECTORIZATION_PRE_LOOP
284 #define VISKORES_VECTORIZATION_IN_LOOP
288 #ifndef VISKORES_ENABLE_CUDA
292 #ifndef VISKORES_ENABLE_TBB
296 #ifndef VISKORES_ENABLE_OPENMP
300 #ifndef VISKORES_ENABLE_KOKKOS
304 #ifndef VISKORES_KOKKOS_CUDA
308 #ifndef VISKORES_KOKKOS_HIP
312 #if defined(VISKORES_KOKKOS_HIP) || defined(VISKORES_KOKKOS_CUDA)
325 #ifdef VISKORES_ENABLE_CUDA
326 #define VISKORES_CUDA_VERSION_MAJOR
327 #define VISKORES_CUDA_VERSION_MINOR
330 #if __cplusplus >= 201402L || \
331 ( defined(VISKORES_MSVC) && _MSC_VER >= 1910 ) || \
332 ( defined(VISKORES_ICC) && defined(__INTEL_CXX11_MODE__) )
333 #define VISKORES_HAVE_CXX_14
335 #error "Viskores requires at least a C++14 compiler"
339 #define VISKORES_ENABLE_LOGGING
352 #define VISKORES_SWALLOW_SEMICOLON_PRE_BLOCK \
353 __pragma(warning(push)) \
354 __pragma(warning(disable:4127)) \
356 #define VISKORES_SWALLOW_SEMICOLON_POST_BLOCK \
358 __pragma(warning(pop))
359 #else // not VISKORES_MSVC
360 #define VISKORES_SWALLOW_SEMICOLON_PRE_BLOCK \
362 #define VISKORES_SWALLOW_SEMICOLON_POST_BLOCK \
372 #define VISKORES_PASS_COMMAS(...) __VA_ARGS__
402 #define VISKORES_EXPAND(expr) expr
408 #pragma warning(disable:4503)
418 #pragma warning(disable:4251)
427 #if !defined(VISKORES_FALLTHROUGH) && defined(__has_cpp_attribute)
428 # if __cplusplus >= 201703L && __has_cpp_attribute(fallthrough)
429 # define VISKORES_FALLTHROUGH [[fallthrough]]
430 # elif __cplusplus >= 201103L && __has_cpp_attribute(gnu::fallthrough)
431 # define VISKORES_FALLTHROUGH [[gnu::fallthrough]]
432 # elif __cplusplus >= 201103L && __has_cpp_attribute(clang::fallthrough)
433 # define VISKORES_FALLTHROUGH [[clang::fallthrough]]
437 #ifndef VISKORES_FALLTHROUGH
438 # define VISKORES_FALLTHROUGH ((void)0)
441 #endif //viskores_internal_Configure_h