diff options
author | Brad King <brad.king@kitware.com> | 2024-04-03 18:26:18 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-04-04 20:48:46 (GMT) |
commit | 1e774a86d3693b6250e53bf67d3d30b07dddf7b2 (patch) | |
tree | 89f10e78939e026de535ba506735215207f27c68 /Tests/CompileFeatures/default_dialect.cpp | |
parent | b9d4db7098898dbaf9dd29f0fbcc166af0e5154e (diff) | |
download | CMake-1e774a86d3693b6250e53bf67d3d30b07dddf7b2.zip CMake-1e774a86d3693b6250e53bf67d3d30b07dddf7b2.tar.gz CMake-1e774a86d3693b6250e53bf67d3d30b07dddf7b2.tar.bz2 |
Intel: Fix detection of C++ 17/20 modes on Windows
The Intel Classic C++ compiler for Windows does not always define
`_MSVC_LANG` correctly, but does define feature macros that we can use
to distinguish these modes.
Diffstat (limited to 'Tests/CompileFeatures/default_dialect.cpp')
-rw-r--r-- | Tests/CompileFeatures/default_dialect.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp index 88cc12d..3f95b6c 100644 --- a/Tests/CompileFeatures/default_dialect.cpp +++ b/Tests/CompileFeatures/default_dialect.cpp @@ -9,14 +9,19 @@ struct Outputter; #define CXX_STD_20 202002L #define CXX_STD_23 202302L -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && \ - _MSVC_LANG <= CXX_STD_14 -# if defined(__INTEL_CXX11_MODE__) -# if defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# else -# define CXX_STD CXX_STD_11 -# endif +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 # else # define CXX_STD CXX_STD_98 # endif |