Imported Upstream version 3.18.2
[platform/upstream/cmake.git] / Modules / Compiler / MSVC-C.cmake
1 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
3
4 include(Compiler/CMakeCommonCompilerMacros)
5
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")
13
14   __compiler_check_default_language_standard(C 19.27 99)
15 else()
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 "")
25
26   # There is no meaningful default for this
27   set(CMAKE_C_STANDARD_DEFAULT "")
28 endif()
29
30 set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
31
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
35 # can be attempted.
36 macro(cmake_record_c_compile_features)
37   list(APPEND CMAKE_C_COMPILE_FEATURES
38     c_std_90
39     c_std_99
40     c_std_11
41     c_function_prototypes
42     )
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)
49   endif()
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)
53   endif()
54   set(_result 0) # expected by cmake_determine_compile_features
55 endmacro()
56
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")
60 endif()