diff options
author | Brad King <brad.king@kitware.com> | 2016-10-26 19:02:35 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2016-10-27 17:33:10 (GMT) |
commit | 369d580937b49c1c5672ba3512c2a736581d545c (patch) | |
tree | 67a6b2cd1cbdee00edafd960094d484aa1f017f9 /Modules/Compiler/Intel-C-FeatureTests.cmake | |
parent | a5a3642f9292bb697176aaf1077fc98302f286b7 (diff) | |
download | CMake-369d580937b49c1c5672ba3512c2a736581d545c.zip CMake-369d580937b49c1c5672ba3512c2a736581d545c.tar.gz CMake-369d580937b49c1c5672ba3512c2a736581d545c.tar.bz2 |
Features: Record features for Intel Compiler on Windows
Since this compiler always defines `__cplusplus` to `1` we need to use
`_MSC_VER`, `__INTEL_CXX11_MODE__`, and the feature test macro named
`__cpp_aggregate_nsdmi` to detect C++11 and C++14 modes.
With no `-Qstd=` flag this compiler defaults to C++98 plus a subset of
C++11/C++14 features needed to be compatible with MSVC. We pretend it
is plain C++98 and add a `-Qstd=` flag whenever needed for C++11 or
above features even if they would happen to be available in MSVC-mode.
Closes: #16384
Diffstat (limited to 'Modules/Compiler/Intel-C-FeatureTests.cmake')
-rw-r--r-- | Modules/Compiler/Intel-C-FeatureTests.cmake | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/Modules/Compiler/Intel-C-FeatureTests.cmake b/Modules/Compiler/Intel-C-FeatureTests.cmake index 34175c8..5d09767 100644 --- a/Modules/Compiler/Intel-C-FeatureTests.cmake +++ b/Modules/Compiler/Intel-C-FeatureTests.cmake @@ -3,15 +3,11 @@ # - https://software.intel.com/en-us/articles/c99-support-in-intel-c-compiler # - https://software.intel.com/en-us/articles/c11-support-in-intel-c-compiler -# FIXME: Intel C feature detection works only when simulating the GNU compiler. -if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC") - return() -endif() - set(DETECT_C99 "defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L") +set(DETECT_C11 "defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L") #static assert is only around in version 1500 update 2 and above -set(_cmake_feature_test_c_static_assert "(__INTEL_COMPILER > 1500 || (__INTEL_COMPILER == 1500 && __INTEL_COMPILER_UPDATE > 1) ) && ${DETECT_C99}") +set(_cmake_feature_test_c_static_assert "(__INTEL_COMPILER > 1500 || (__INTEL_COMPILER == 1500 && __INTEL_COMPILER_UPDATE > 1) ) && (${DETECT_C11} || ${DETECT_C99} && !defined(_MSC_VER))") set(_cmake_oldestSupported "__INTEL_COMPILER >= 1110") set(Intel_C99 "${_cmake_oldestSupported} && ${DETECT_C99}") @@ -21,3 +17,4 @@ set(_cmake_feature_test_c_function_prototypes "${_cmake_oldestSupported}") unset(Intel_C99) unset(DETECT_C99) +unset(DETECT_C11) |