diff options
author | Brad King <brad.king@kitware.com> | 2020-08-12 15:13:12 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-08-12 15:14:51 (GMT) |
commit | eaf81817c479185d3a8bccc4b10525f63c036a15 (patch) | |
tree | f3d655f9e2c5717103b310f4ae295ac94a5c72a7 | |
parent | 0ca6d5766b2a2e37408065d9e77dd364e26f121a (diff) | |
parent | f7347f28c76944c6737c70abe45329f37d65a63f (diff) | |
download | CMake-eaf81817c479185d3a8bccc4b10525f63c036a15.zip CMake-eaf81817c479185d3a8bccc4b10525f63c036a15.tar.gz CMake-eaf81817c479185d3a8bccc4b10525f63c036a15.tar.bz2 |
Merge topic 'msvc_c11' into release-3.18
f7347f28c7 MSVC: Record support for C11 and c_restrict
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5115
-rw-r--r-- | Help/release/3.18.rst | 7 | ||||
-rw-r--r-- | Modules/Compiler/MSVC-C-FeatureTests.cmake | 3 | ||||
-rw-r--r-- | Modules/Compiler/MSVC-C.cmake | 42 |
3 files changed, 40 insertions, 12 deletions
diff --git a/Help/release/3.18.rst b/Help/release/3.18.rst index 93694f6..f199244 100644 --- a/Help/release/3.18.rst +++ b/Help/release/3.18.rst @@ -264,6 +264,10 @@ Other * :manual:`ccmake(1)` learned to read a :envvar:`CCMAKE_COLORS` environment variable to customize colors. +* The :manual:`Compile Features <cmake-compile-features(7)>` functionality + is now aware of the availability of C11 features in MSVC 19.27 and above, + including support for the ``c_restrict`` feature and the ``-std:c11`` flag. + Deprecated and Removed Features =============================== @@ -347,3 +351,6 @@ Changes made since CMake 3.18.0 include the following. ``OFF`` because this feature can break existing projects that have identically named header files in different include directories. This restores compatibility with behavior of CMake 3.15 and below. + +* The :manual:`Compile Features <cmake-compile-features(7)>` functionality + was updated for MSVC 19.27 as mentioned above. diff --git a/Modules/Compiler/MSVC-C-FeatureTests.cmake b/Modules/Compiler/MSVC-C-FeatureTests.cmake index 3f09be2..862bff3 100644 --- a/Modules/Compiler/MSVC-C-FeatureTests.cmake +++ b/Modules/Compiler/MSVC-C-FeatureTests.cmake @@ -2,7 +2,8 @@ set(_cmake_oldestSupported "_MSC_VER >= 1600") # Not yet supported: #set(_cmake_feature_test_c_static_assert "") -#set(_cmake_feature_test_c_restrict "") + +set(_cmake_feature_test_c_restrict "_MSC_VER >= 1927") set(_cmake_feature_test_c_variadic_macros "${_cmake_oldestSupported}") set(_cmake_feature_test_c_function_prototypes "${_cmake_oldestSupported}") diff --git a/Modules/Compiler/MSVC-C.cmake b/Modules/Compiler/MSVC-C.cmake index bca9764..a05e6a0 100644 --- a/Modules/Compiler/MSVC-C.cmake +++ b/Modules/Compiler/MSVC-C.cmake @@ -1,15 +1,31 @@ -# MSVC has no specific options to set C language standards, but set them as -# empty strings anyways so the feature test infrastructure can at least check -# to see if they are defined. -set(CMAKE_C90_STANDARD_COMPILE_OPTION "") -set(CMAKE_C90_EXTENSION_COMPILE_OPTION "") -set(CMAKE_C99_STANDARD_COMPILE_OPTION "") -set(CMAKE_C99_EXTENSION_COMPILE_OPTION "") -set(CMAKE_C11_STANDARD_COMPILE_OPTION "") -set(CMAKE_C11_EXTENSION_COMPILE_OPTION "") +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. -# There is no meaningful default for this -set(CMAKE_C_STANDARD_DEFAULT "") +include(Compiler/CMakeCommonCompilerMacros) + +if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27) + set(CMAKE_C90_STANDARD_COMPILE_OPTION "") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "") + set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std:c11") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std:c11") + + __compiler_check_default_language_standard(C 19.27 99) +else() + # MSVC has no specific options to set C language standards, but set them as + # empty strings anyways so the feature test infrastructure can at least check + # to see if they are defined. + set(CMAKE_C90_STANDARD_COMPILE_OPTION "") + set(CMAKE_C90_EXTENSION_COMPILE_OPTION "") + set(CMAKE_C99_STANDARD_COMPILE_OPTION "") + set(CMAKE_C99_EXTENSION_COMPILE_OPTION "") + set(CMAKE_C11_STANDARD_COMPILE_OPTION "") + set(CMAKE_C11_EXTENSION_COMPILE_OPTION "") + + # There is no meaningful default for this + set(CMAKE_C_STANDARD_DEFAULT "") +endif() set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl") @@ -31,6 +47,10 @@ macro(cmake_record_c_compile_features) list(APPEND CMAKE_C_COMPILE_FEATURES c_variadic_macros) list(APPEND CMAKE_C99_COMPILE_FEATURES c_variadic_macros) endif() + if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27) + list(APPEND CMAKE_C_COMPILE_FEATURES c_restrict) + list(APPEND CMAKE_C99_COMPILE_FEATURES c_restrict) + endif() set(_result 0) # expected by cmake_determine_compile_features endmacro() |