diff options
Diffstat (limited to 'Modules/Compiler/GNU.cmake')
-rw-r--r-- | Modules/Compiler/GNU.cmake | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/Modules/Compiler/GNU.cmake b/Modules/Compiler/GNU.cmake index 138bb4b..fa199b4 100644 --- a/Modules/Compiler/GNU.cmake +++ b/Modules/Compiler/GNU.cmake @@ -207,3 +207,90 @@ macro(__compiler_gnu lang) set(CMAKE_${lang}_COMPILE_OPTIONS_COLOR_DIAGNOSTICS_OFF "-fno-diagnostics-color") endif() endmacro() + +macro(__compiler_gnu_c_standards lang) + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.5) + set(CMAKE_${lang}90_STANDARD_COMPILE_OPTION "-std=c90") + set(CMAKE_${lang}90_EXTENSION_COMPILE_OPTION "-std=gnu90") + elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4) + set(CMAKE_${lang}90_STANDARD_COMPILE_OPTION "-std=c89") + set(CMAKE_${lang}90_EXTENSION_COMPILE_OPTION "-std=gnu89") + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4) + set(CMAKE_${lang}90_STANDARD__HAS_FULL_SUPPORT ON) + set(CMAKE_${lang}99_STANDARD_COMPILE_OPTION "-std=c99") + set(CMAKE_${lang}99_EXTENSION_COMPILE_OPTION "-std=gnu99") + set(CMAKE_${lang}99_STANDARD__HAS_FULL_SUPPORT ON) + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.7) + set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c11") + set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu11") + set(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT ON) + elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.6) + set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c1x") + set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu1x") + endif() + + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1) + set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c17") + set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu17") + endif() + + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 9.1) + set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std=c2x") + set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu2x") + endif() +endmacro() + +macro(__compiler_gnu_cxx_standards lang) + if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4) + set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "-std=c++98") + set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "-std=gnu++98") + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.7) + set(CMAKE_${lang}98_STANDARD__HAS_FULL_SUPPORT ON) + set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++11") + set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++11") + elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.4) + # 4.3 supports 0x variants + set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++0x") + set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++0x") + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.8.1) + set(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT ON) + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.9) + set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++14") + set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++14") + elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.8) + set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++1y") + set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++1y") + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 5.0) + set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON) + endif() + + if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 8.0) + set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++17") + set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++17") + elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 5.1) + set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++1z") + set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++1z") + endif() + + if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 11.1) + set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++20") + set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++20") + set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std=c++23") + set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++23") + elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 8.0) + set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++2a") + set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++2a") + endif() +endmacro() |