From 1f8480312e41b281eccad13a4afcb7c1ef49f22a Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 10 Nov 2016 15:27:15 -0500 Subject: Features: Suppress c_static_assert test coverage on Intel <= 15 It works on some pre-15.0.2 versions but not others. --- Tests/CompileFeatures/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index 9f61186..8acdd93 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -170,6 +170,15 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") endif() endif() +if (CMAKE_C_COMPILER_ID STREQUAL "Intel") + if (CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.2) + # This works on some pre-15.0.2 versions and not others. + list(REMOVE_ITEM C_non_features + c_static_assert + ) + endif() +endif() + set(C_ext c) set(C_standard_flag 11) set(CXX_ext cpp) -- cgit v0.12 From 5e428389615da64208c40be256a30f8c9e988523 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 10 Nov 2016 15:34:39 -0500 Subject: Features: Detect Intel C++14 mode more reliably The `__cplusplus` macro is not defined to the language level reliably. When simulating MSVC it is always set to `1`. When simulating GCC it is set to the lower value of the current language level and the maximum level supported by the simulated version of GCC (from observation). For MSVC we already used a combination of `__INTEL_CXX11_MODE__` and `__cpp_aggregate_nsdmi` to detect C++14 mode. Extend this for general use by removing the condition on `_MSC_VER`. --- Modules/Compiler/Intel-CXX-FeatureTests.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/Compiler/Intel-CXX-FeatureTests.cmake b/Modules/Compiler/Intel-CXX-FeatureTests.cmake index d1a3433..05c4189 100644 --- a/Modules/Compiler/Intel-CXX-FeatureTests.cmake +++ b/Modules/Compiler/Intel-CXX-FeatureTests.cmake @@ -21,7 +21,7 @@ set(DETECT_CXX11 "((__cplusplus >= 201103L) || defined(__INTEL_CXX11_MODE__) || #if you are compiling as 98/11/14. So to properly detect C++14 with this version #we look for the existence of __GXX_EXPERIMENTAL_CXX0X__ but not __INTEL_CXX11_MODE__ set(DETECT_BUGGY_ICC15 "((__INTEL_COMPILER == 1500) && (__INTEL_COMPILER_UPDATE == 1))") -set(DETECT_CXX14 "((__cplusplus >= 201300L) || ((__cplusplus == 201103L) && !defined(__INTEL_CXX11_MODE__)) || ((${DETECT_BUGGY_ICC15}) && defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(__INTEL_CXX11_MODE__) ) || (defined(_MSC_VER) && defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi)) )") +set(DETECT_CXX14 "((__cplusplus >= 201300L) || ((__cplusplus == 201103L) && !defined(__INTEL_CXX11_MODE__)) || ((${DETECT_BUGGY_ICC15}) && defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(__INTEL_CXX11_MODE__) ) || (defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi)) )") unset(DETECT_BUGGY_ICC15) set(Intel16_CXX14 "__INTEL_COMPILER >= 1600 && ${DETECT_CXX14}") -- cgit v0.12