Add checks for NVIDIA's CUDA compiler
- Disable templated user-defined literals when compiled under nvcc Similarly to Intel's C++ compiler, nvcc fails to compile templated UDLs as they both share the same parsing engine (EDG C++ Front End). This fixes building CUDA programs which make use of fmt.
This commit is contained in:
parent
9d2221b954
commit
9d8021f0d6
@ -51,6 +51,12 @@
|
|||||||
# define FMT_ICC_VERSION 0
|
# define FMT_ICC_VERSION 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __NVCC__
|
||||||
|
# define FMT_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 100 + __CUDACC_VER_MINOR__)
|
||||||
|
#else
|
||||||
|
# define FMT_CUDA_VERSION 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
|
||||||
#if FMT_GCC_VERSION >= 406 || FMT_CLANG_VERSION
|
#if FMT_GCC_VERSION >= 406 || FMT_CLANG_VERSION
|
||||||
@ -114,17 +120,23 @@ FMT_END_NAMESPACE
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef FMT_USE_USER_DEFINED_LITERALS
|
#ifndef FMT_USE_USER_DEFINED_LITERALS
|
||||||
// For Intel's compiler both it and the system gcc/msc must support UDLs.
|
// For Intel's compiler and NVIDIA's compiler both it and the system gcc/msc
|
||||||
|
// must support UDLs.
|
||||||
# if (FMT_HAS_FEATURE(cxx_user_literals) || \
|
# if (FMT_HAS_FEATURE(cxx_user_literals) || \
|
||||||
FMT_GCC_VERSION >= 407 || FMT_MSC_VER >= 1900) && \
|
FMT_GCC_VERSION >= 407 || FMT_MSC_VER >= 1900) && \
|
||||||
(!FMT_ICC_VERSION || FMT_ICC_VERSION >= 1500)
|
(!(FMT_ICC_VERSION || FMT_CUDA_VERSION) || \
|
||||||
|
FMT_ICC_VERSION >= 1500 || FMT_CUDA_VERSION >= 700)
|
||||||
# define FMT_USE_USER_DEFINED_LITERALS 1
|
# define FMT_USE_USER_DEFINED_LITERALS 1
|
||||||
# else
|
# else
|
||||||
# define FMT_USE_USER_DEFINED_LITERALS 0
|
# define FMT_USE_USER_DEFINED_LITERALS 0
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if FMT_USE_USER_DEFINED_LITERALS && FMT_ICC_VERSION == 0 && \
|
// EDG C++ Front End based compilers (icc, nvcc) do not currently support UDL
|
||||||
|
// templates.
|
||||||
|
#if FMT_USE_USER_DEFINED_LITERALS && \
|
||||||
|
FMT_ICC_VERSION == 0 && \
|
||||||
|
FMT_CUDA_VERSION == 0 && \
|
||||||
((FMT_GCC_VERSION >= 600 && __cplusplus >= 201402L) || \
|
((FMT_GCC_VERSION >= 600 && __cplusplus >= 201402L) || \
|
||||||
(defined(FMT_CLANG_VERSION) && FMT_CLANG_VERSION >= 304))
|
(defined(FMT_CLANG_VERSION) && FMT_CLANG_VERSION >= 304))
|
||||||
# define FMT_UDL_TEMPLATE 1
|
# define FMT_UDL_TEMPLATE 1
|
||||||
|
Loading…
Reference in New Issue
Block a user