Просмотр исходного кода

Merge topic 'lang-std'

dcbc2ef00d CompilerId: Clarify CUDA, HIP, ObjC, ObjC++ standard level detection
cf457fbf9c CompilerId: Drop MSVC conditions from ObjC and ObjC++
f606a27e8d ObjCXX: Fix detection of C++20 default compiler mode

Acked-by: Kitware Robot <[email protected]>
Reviewed-by: Raul Tambre <[email protected]>
Merge-request: !9438
Brad King 1 год назад
Родитель
Сommit
56f333ef2f

+ 13 - 5
Modules/CMakeCUDACompilerId.cu.in

@@ -16,16 +16,24 @@ char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
 @CMAKE_CUDA_COMPILER_ID_PLATFORM_CONTENT@
 @CMAKE_CUDA_COMPILER_ID_ERROR_FOR_TEST@
 
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
+#define CXX_STD __cplusplus
+
 const char* info_language_standard_default = "INFO" ":" "standard_default["
-#if __cplusplus > 202002L
+#if CXX_STD > CXX_STD_20
   "23"
-#elif __cplusplus > 201703L
+#elif CXX_STD > CXX_STD_17
   "20"
-#elif __cplusplus >= 201703L
+#elif CXX_STD > CXX_STD_14
   "17"
-#elif __cplusplus >= 201402L
+#elif CXX_STD > CXX_STD_11
   "14"
-#elif __cplusplus >= 201103L
+#elif CXX_STD >= CXX_STD_11
   "11"
 #else
   "03"

+ 14 - 5
Modules/CMakeHIPCompilerId.hip.in

@@ -16,16 +16,25 @@ char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
 @CMAKE_HIP_COMPILER_ID_PLATFORM_CONTENT@
 @CMAKE_HIP_COMPILER_ID_ERROR_FOR_TEST@
 
+#define CXX_STD_98 199711L
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
+#define CXX_STD __cplusplus
+
 const char* info_language_standard_default = "INFO" ":" "standard_default["
-#if __cplusplus > 202002L
+#if CXX_STD > CXX_STD_20
   "23"
-#elif __cplusplus > 201703L
+#elif CXX_STD > CXX_STD_17
   "20"
-#elif __cplusplus >= 201703L
+#elif CXX_STD > CXX_STD_14
   "17"
-#elif __cplusplus >= 201402L
+#elif CXX_STD > CXX_STD_11
   "14"
-#elif __cplusplus >= 201103L
+#elif CXX_STD >= CXX_STD_11
   "11"
 #else
   "98"

+ 14 - 6
Modules/CMakeOBJCCompilerId.m.in

@@ -20,20 +20,28 @@ char const* qnxnto = "INFO" ":" "qnxnto[]";
 @CMAKE_OBJC_COMPILER_ID_PLATFORM_CONTENT@
 @CMAKE_OBJC_COMPILER_ID_ERROR_FOR_TEST@
 
+#define C_STD_99 199901L
+#define C_STD_11 201112L
+#define C_STD_17 201710L
+#define C_STD_23 202311L
+
+#ifdef __STDC_VERSION__
+# define C_STD __STDC_VERSION__
+#endif
+
 #if !defined(__STDC__)
-# if (defined(_MSC_VER) && !defined(__clang__)) \
-  || (defined(__ibmxl__) || defined(__IBMC__))
+# if defined(__ibmxl__) || defined(__IBMC__)
 #  define C_VERSION "90"
 # else
 #  define C_VERSION
 # endif
-#elif __STDC_VERSION__ > 201710L
+#elif C_STD > C_STD_17
 # define C_VERSION "23"
-#elif __STDC_VERSION__ >= 201710L
+#elif C_STD > C_STD_11
 # define C_VERSION "17"
-#elif __STDC_VERSION__ >= 201000L
+#elif C_STD > C_STD_99
 # define C_VERSION "11"
-#elif __STDC_VERSION__ >= 199901L
+#elif C_STD >= C_STD_99
 # define C_VERSION "99"
 #else
 # define C_VERSION "90"

+ 12 - 9
Modules/CMakeOBJCXXCompilerId.mm.in

@@ -23,22 +23,25 @@ char const* qnxnto = "INFO" ":" "qnxnto[]";
 @CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT@
 @CMAKE_OBJCXX_COMPILER_ID_ERROR_FOR_TEST@
 
-#if defined(_MSC_VER) && defined(_MSVC_LANG)
-#define CXX_STD _MSVC_LANG
-#else
+#define CXX_STD_98 199711L
+#define CXX_STD_11 201103L
+#define CXX_STD_14 201402L
+#define CXX_STD_17 201703L
+#define CXX_STD_20 202002L
+#define CXX_STD_23 202302L
+
 #define CXX_STD __cplusplus
-#endif
 
 const char* info_language_standard_default = "INFO" ":" "standard_default["
-#if CXX_STD > 202002L
+#if CXX_STD > CXX_STD_20
   "23"
-#elfif CXX_STD > 201703L
+#elif CXX_STD > CXX_STD_17
   "20"
-#elif CXX_STD >= 201703L
+#elif CXX_STD > CXX_STD_14
   "17"
-#elif CXX_STD >= 201402L
+#elif CXX_STD > CXX_STD_11
   "14"
-#elif CXX_STD >= 201103L
+#elif CXX_STD >= CXX_STD_11
   "11"
 #else
   "98"