From 80a5a865142a48bd25e27533683d040adc7d885a Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 3 Apr 2024 14:26:18 -0400 Subject: GNU: Fix detection of C++ 11 mode in GCC 4.{4,5,6} These versions of the compiler have experimental C++11 support and so do not define `__cplusplus` correctly, but do define a feature macro we can use to distinguish this mode. --- Modules/CMakeCXXCompilerId.cpp.in | 2 ++ Tests/CompileFeatures/default_dialect.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Modules/CMakeCXXCompilerId.cpp.in b/Modules/CMakeCXXCompilerId.cpp.in index b77e0e5..390bf4e 100644 --- a/Modules/CMakeCXXCompilerId.cpp.in +++ b/Modules/CMakeCXXCompilerId.cpp.in @@ -78,6 +78,8 @@ char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; # else # define CXX_STD __cplusplus # endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 #else # define CXX_STD __cplusplus #endif diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp index b3ac4e7..f9b770b 100644 --- a/Tests/CompileFeatures/default_dialect.cpp +++ b/Tests/CompileFeatures/default_dialect.cpp @@ -47,6 +47,8 @@ struct Outputter; # else # define CXX_STD __cplusplus # endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 #else # define CXX_STD __cplusplus #endif -- cgit v0.12