From f606a27e8d5a2e4df888ea32a52ed0a8834d13a4 Mon Sep 17 00:00:00 2001 From: Raul Tambre Date: Mon, 15 Apr 2024 17:32:58 +0300 Subject: ObjCXX: Fix detection of C++20 default compiler mode Fix a typo from commit 9f3c70a333 (CUDA, CXX, OBJCXX: C++23 support with Clang 12, 2020-12-04, v3.20.0-rc1~321^2). --- Modules/CMakeOBJCXXCompilerId.mm.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/CMakeOBJCXXCompilerId.mm.in b/Modules/CMakeOBJCXXCompilerId.mm.in index 2145b40..242b77f 100644 --- a/Modules/CMakeOBJCXXCompilerId.mm.in +++ b/Modules/CMakeOBJCXXCompilerId.mm.in @@ -32,7 +32,7 @@ char const* qnxnto = "INFO" ":" "qnxnto[]"; const char* info_language_standard_default = "INFO" ":" "standard_default[" #if CXX_STD > 202002L "23" -#elfif CXX_STD > 201703L +#elif CXX_STD > 201703L "20" #elif CXX_STD >= 201703L "17" -- cgit v0.12 From cf457fbf9c88dddac53ad284eafb2cffe9586cb6 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 16 Apr 2024 14:57:14 -0400 Subject: CompilerId: Drop MSVC conditions from ObjC and ObjC++ MSVC does not compile these languages. --- Modules/CMakeOBJCCompilerId.m.in | 3 +-- Modules/CMakeOBJCXXCompilerId.mm.in | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/Modules/CMakeOBJCCompilerId.m.in b/Modules/CMakeOBJCCompilerId.m.in index 89bfe02..eff4f39 100644 --- a/Modules/CMakeOBJCCompilerId.m.in +++ b/Modules/CMakeOBJCCompilerId.m.in @@ -21,8 +21,7 @@ char const* qnxnto = "INFO" ":" "qnxnto[]"; @CMAKE_OBJC_COMPILER_ID_ERROR_FOR_TEST@ #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 diff --git a/Modules/CMakeOBJCXXCompilerId.mm.in b/Modules/CMakeOBJCXXCompilerId.mm.in index 242b77f..23c25c5 100644 --- a/Modules/CMakeOBJCXXCompilerId.mm.in +++ b/Modules/CMakeOBJCXXCompilerId.mm.in @@ -23,11 +23,7 @@ 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 __cplusplus -#endif const char* info_language_standard_default = "INFO" ":" "standard_default[" #if CXX_STD > 202002L -- cgit v0.12 From dcbc2ef00dadf3553464419bcff5bd6dc8b2ee62 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 16 Apr 2024 14:45:42 -0400 Subject: CompilerId: Clarify CUDA, HIP, ObjC, ObjC++ standard level detection Use named constants. Regularize comparison patterns. Follow the approach from commit b9d4db7098 (CompilerId: Clarify C and C++ standard level detection, 2024-04-02). --- Modules/CMakeCUDACompilerId.cu.in | 18 +++++++++++++----- Modules/CMakeHIPCompilerId.hip.in | 19 ++++++++++++++----- Modules/CMakeOBJCCompilerId.m.in | 17 +++++++++++++---- Modules/CMakeOBJCXXCompilerId.mm.in | 17 ++++++++++++----- 4 files changed, 52 insertions(+), 19 deletions(-) diff --git a/Modules/CMakeCUDACompilerId.cu.in b/Modules/CMakeCUDACompilerId.cu.in index d5a3b03..170b6b4 100644 --- a/Modules/CMakeCUDACompilerId.cu.in +++ b/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" diff --git a/Modules/CMakeHIPCompilerId.hip.in b/Modules/CMakeHIPCompilerId.hip.in index 4ac0f30..f1bd120 100644 --- a/Modules/CMakeHIPCompilerId.hip.in +++ b/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" diff --git a/Modules/CMakeOBJCCompilerId.m.in b/Modules/CMakeOBJCCompilerId.m.in index eff4f39..e88bb6f 100644 --- a/Modules/CMakeOBJCCompilerId.m.in +++ b/Modules/CMakeOBJCCompilerId.m.in @@ -20,19 +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(__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" diff --git a/Modules/CMakeOBJCXXCompilerId.mm.in b/Modules/CMakeOBJCXXCompilerId.mm.in index 23c25c5..265cc75 100644 --- a/Modules/CMakeOBJCXXCompilerId.mm.in +++ b/Modules/CMakeOBJCXXCompilerId.mm.in @@ -23,18 +23,25 @@ char const* qnxnto = "INFO" ":" "qnxnto[]"; @CMAKE_OBJCXX_COMPILER_ID_PLATFORM_CONTENT@ @CMAKE_OBJCXX_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 CXX_STD > 202002L +#if CXX_STD > CXX_STD_20 "23" -#elif 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" -- cgit v0.12