mirror of
https://github.com/Kitware/CMake.git
synced 2026-04-24 07:08:38 -05:00
Merge topic 'features-c++17'
97c1e569Help: Add release note for C++ 17 support85c8e652Features: Activate C++ 17 support for AppleClang 6.1+8084f7a6Features: Activate C++ 17 support for Clang 3.5+24e29d41Features: Activate C++ 17 support for GNU 5.1+ae1a6815Features: Add infrastructure for C++ 17 language standard684e4d20Features: Make feature recording conditions more consistent
This commit is contained in:
@@ -14,7 +14,9 @@ char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
|
||||
@CMAKE_CUDA_COMPILER_ID_ERROR_FOR_TEST@
|
||||
|
||||
const char* info_language_dialect_default = "INFO" ":" "dialect_default["
|
||||
#if __cplusplus >= 201402L
|
||||
#if __cplusplus > 201402L
|
||||
"17"
|
||||
#elif __cplusplus >= 201402L
|
||||
"14"
|
||||
#elif __cplusplus >= 201103L
|
||||
"11"
|
||||
|
||||
@@ -8,6 +8,7 @@ set(CMAKE_CXX_COMPILE_FEATURES "@CMAKE_CXX_COMPILE_FEATURES@")
|
||||
set(CMAKE_CXX98_COMPILE_FEATURES "@CMAKE_CXX98_COMPILE_FEATURES@")
|
||||
set(CMAKE_CXX11_COMPILE_FEATURES "@CMAKE_CXX11_COMPILE_FEATURES@")
|
||||
set(CMAKE_CXX14_COMPILE_FEATURES "@CMAKE_CXX14_COMPILE_FEATURES@")
|
||||
set(CMAKE_CXX17_COMPILE_FEATURES "@CMAKE_CXX17_COMPILE_FEATURES@")
|
||||
|
||||
set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
|
||||
set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
|
||||
|
||||
@@ -28,7 +28,9 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
|
||||
@CMAKE_CXX_COMPILER_ID_ERROR_FOR_TEST@
|
||||
|
||||
const char* info_language_dialect_default = "INFO" ":" "dialect_default["
|
||||
#if __cplusplus >= 201402L
|
||||
#if __cplusplus > 201402L
|
||||
"17"
|
||||
#elif __cplusplus >= 201402L
|
||||
"14"
|
||||
#elif __cplusplus >= 201103L
|
||||
"11"
|
||||
|
||||
@@ -48,6 +48,7 @@ function(cmake_determine_compile_features lang)
|
||||
set(CMAKE_CXX98_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX11_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX14_COMPILE_FEATURES)
|
||||
set(CMAKE_CXX17_COMPILE_FEATURES)
|
||||
|
||||
include("${CMAKE_ROOT}/Modules/Internal/FeatureTesting.cmake")
|
||||
|
||||
@@ -58,6 +59,9 @@ function(cmake_determine_compile_features lang)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX14_COMPILE_FEATURES AND CMAKE_CXX17_COMPILE_FEATURES)
|
||||
list(REMOVE_ITEM CMAKE_CXX17_COMPILE_FEATURES ${CMAKE_CXX14_COMPILE_FEATURES})
|
||||
endif()
|
||||
if (CMAKE_CXX11_COMPILE_FEATURES AND CMAKE_CXX14_COMPILE_FEATURES)
|
||||
list(REMOVE_ITEM CMAKE_CXX14_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES})
|
||||
endif()
|
||||
@@ -70,6 +74,7 @@ function(cmake_determine_compile_features lang)
|
||||
${CMAKE_CXX98_COMPILE_FEATURES}
|
||||
${CMAKE_CXX11_COMPILE_FEATURES}
|
||||
${CMAKE_CXX14_COMPILE_FEATURES}
|
||||
${CMAKE_CXX17_COMPILE_FEATURES}
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -77,6 +82,7 @@ function(cmake_determine_compile_features lang)
|
||||
set(CMAKE_CXX98_COMPILE_FEATURES ${CMAKE_CXX98_COMPILE_FEATURES} PARENT_SCOPE)
|
||||
set(CMAKE_CXX11_COMPILE_FEATURES ${CMAKE_CXX11_COMPILE_FEATURES} PARENT_SCOPE)
|
||||
set(CMAKE_CXX14_COMPILE_FEATURES ${CMAKE_CXX14_COMPILE_FEATURES} PARENT_SCOPE)
|
||||
set(CMAKE_CXX17_COMPILE_FEATURES ${CMAKE_CXX17_COMPILE_FEATURES} PARENT_SCOPE)
|
||||
|
||||
message(STATUS "Detecting ${lang} compile features - done")
|
||||
endif()
|
||||
|
||||
@@ -27,7 +27,9 @@ endif()
|
||||
macro(cmake_record_c_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
_record_compiler_features_c(11)
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_c(11)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_c(99)
|
||||
endif()
|
||||
|
||||
@@ -22,6 +22,11 @@ elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
if (NOT CMAKE_CXX_COMPILER_FORCED)
|
||||
if (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT)
|
||||
@@ -38,8 +43,10 @@ endif()
|
||||
macro(cmake_record_cxx_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
|
||||
set(_result 0)
|
||||
if(CMAKE_CXX14_STANDARD_COMPILE_OPTION)
|
||||
if(_result EQUAL 0 AND CMAKE_CXX17_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_cxx(17)
|
||||
endif()
|
||||
if(_result EQUAL 0 AND CMAKE_CXX14_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_cxx(14)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
|
||||
@@ -36,7 +36,9 @@ endif()
|
||||
macro(cmake_record_c_compile_features)
|
||||
set(_result 0)
|
||||
if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
_record_compiler_features_c(11)
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_c(11)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_c(99)
|
||||
endif()
|
||||
|
||||
@@ -31,6 +31,11 @@ elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.5)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
if (NOT CMAKE_CXX_COMPILER_FORCED)
|
||||
if (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT)
|
||||
@@ -46,7 +51,12 @@ endif()
|
||||
macro(cmake_record_cxx_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
_record_compiler_features_cxx(14)
|
||||
if(_result EQUAL 0 AND CMAKE_CXX17_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_cxx(17)
|
||||
endif()
|
||||
if(_result EQUAL 0 AND CMAKE_CXX14_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_cxx(14)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_cxx(11)
|
||||
endif()
|
||||
|
||||
@@ -41,10 +41,10 @@ endif()
|
||||
|
||||
macro(cmake_record_c_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.6)
|
||||
_record_compiler_features_c(11)
|
||||
endif()
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
if(_result EQUAL 0 AND CMAKE_C11_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_c(11)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_c(99)
|
||||
endif()
|
||||
|
||||
@@ -34,6 +34,11 @@ elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
if (NOT CMAKE_CXX_COMPILER_FORCED)
|
||||
if (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT)
|
||||
@@ -48,10 +53,13 @@ endif()
|
||||
|
||||
macro(cmake_record_cxx_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
||||
_record_compiler_features_cxx(14)
|
||||
endif()
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4)
|
||||
if(_result EQUAL 0 AND CMAKE_CXX17_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_cxx(17)
|
||||
endif()
|
||||
if(_result EQUAL 0 AND CMAKE_CXX14_STANDARD_COMPILE_OPTION)
|
||||
_record_compiler_features_cxx(14)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_cxx(11)
|
||||
endif()
|
||||
|
||||
@@ -49,7 +49,7 @@ unset(_ext)
|
||||
macro(cmake_record_c_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
|
||||
if (_result EQUAL 0 AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
|
||||
_record_compiler_features_C(11)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
|
||||
@@ -66,9 +66,10 @@ unset(_ext)
|
||||
macro(cmake_record_cxx_compile_features)
|
||||
set(_result 0)
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0
|
||||
OR (NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC" AND
|
||||
NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0))
|
||||
if (_result EQUAL 0 AND
|
||||
(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0
|
||||
OR (NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC" AND
|
||||
NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0)))
|
||||
_record_compiler_features_cxx(14)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
|
||||
@@ -10,6 +10,7 @@ macro(cmake_record_cxx_compile_features)
|
||||
cxx_std_98
|
||||
cxx_std_11
|
||||
cxx_std_14
|
||||
cxx_std_17
|
||||
)
|
||||
_record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
|
||||
endif()
|
||||
|
||||
@@ -53,7 +53,9 @@ endif()
|
||||
macro(cmake_record_cxx_compile_features)
|
||||
set(_result 0)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
|
||||
_record_compiler_features_cxx(11)
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_cxx(11)
|
||||
endif()
|
||||
if (_result EQUAL 0)
|
||||
_record_compiler_features_cxx(98)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user