1 # Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
4 include(Compiler/CMakeCommonCompilerMacros)
6 if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27)
7 set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
8 set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
9 set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
10 set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
11 set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std:c11")
12 set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std:c11")
14 __compiler_check_default_language_standard(C 19.27 99)
16 # MSVC has no specific options to set C language standards, but set them as
17 # empty strings anyways so the feature test infrastructure can at least check
18 # to see if they are defined.
19 set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
20 set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
21 set(CMAKE_C99_STANDARD_COMPILE_OPTION "")
22 set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
23 set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
24 set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
26 # There is no meaningful default for this
27 set(CMAKE_C_STANDARD_DEFAULT "")
30 set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
32 # There are no C compiler modes so we hard-code the known compiler supported
33 # features. Override the default macro for this special case. Pretend that
34 # all language standards are available so that at least compilation
36 macro(cmake_record_c_compile_features)
37 list(APPEND CMAKE_C_COMPILE_FEATURES
43 list(APPEND CMAKE_C90_COMPILE_FEATURES c_std_90 c_function_prototypes)
44 list(APPEND CMAKE_C99_COMPILE_FEATURES c_std_99)
45 list(APPEND CMAKE_C11_COMPILE_FEATURES c_std_11)
46 if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0)
47 list(APPEND CMAKE_C_COMPILE_FEATURES c_variadic_macros)
48 list(APPEND CMAKE_C99_COMPILE_FEATURES c_variadic_macros)
50 if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27)
51 list(APPEND CMAKE_C_COMPILE_FEATURES c_restrict)
52 list(APPEND CMAKE_C99_COMPILE_FEATURES c_restrict)
54 set(_result 0) # expected by cmake_determine_compile_features
57 # /JMC "Just My Code" is only supported by MSVC 19.05 onward.
58 if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.05)
59 set(CMAKE_C_COMPILE_OPTIONS_JMC "-JMC")