Add CMAKE_<LANG>_STANDARD_LATEST variables
Add a variable to indicate the latest standard known to be supported for each language: * `CMAKE_C_STANDARD_LATEST` * `CMAKE_CXX_STANDARD_LATEST` * `CMAKE_CUDA_STANDARD_LATEST` * `CMAKE_HIP_STANDARD_LATEST` * `CMAKE_OBJC_STANDARD_LATEST` * `CMAKE_OBJCXX_STANDARD_LATEST` These variables, more generally referred to as `CMAKE_<LANG>_STANDARD_LATEST`, are assigned an integer value which represents the minimum between the latest version of the associated language standard supported by the current compiler and the latest version supported by CMake. Add documentation for these variables in a new page called `CMAKE_<LANG>_STANDARD_LATEST` was added under the "Variables for Languages" section of the `cmake-variables(7)` page. Update each compiler-specific CMake script under `${CMAKE_ROOT}\Modules\Compiler` to manually define the relevant `CMAKE_<LANG>_STANDARD_LATEST` variable as necessary. This will require updating and maintaining as newer compiler versions become recognized by CMake. Closes: #25717stage/master/nightly/2024/05/01
parent
fddb165c6c
commit
7c38e6bb52
|
@ -645,6 +645,7 @@ Variables for Languages
|
|||
/variable/CMAKE_LANG_STANDARD
|
||||
/variable/CMAKE_LANG_STANDARD_DEFAULT
|
||||
/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES
|
||||
/variable/CMAKE_LANG_STANDARD_LATEST
|
||||
/variable/CMAKE_LANG_STANDARD_LIBRARIES
|
||||
/variable/CMAKE_LANG_STANDARD_REQUIRED
|
||||
/variable/CMAKE_OBJC_EXTENSIONS
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
lang-standard-latest
|
||||
--------------------
|
||||
|
||||
* The :variable:`CMAKE_<LANG>_STANDARD_LATEST` variable was added to
|
||||
describe the latest supported standard of language ``<LANG>``.
|
|
@ -0,0 +1,64 @@
|
|||
CMAKE_<LANG>_STANDARD_LATEST
|
||||
-----------------------------
|
||||
|
||||
.. versionadded:: 3.30
|
||||
|
||||
This variable represents the minimum between the latest version of the
|
||||
standard for language ``<LANG>`` which is supported by the current compiler
|
||||
and the latest version which is supported by CMake. Its value will be set to
|
||||
one of the supported values of the corresponding :prop_tgt:`<LANG>_STANDARD`
|
||||
target property; see the documentation of that property for a list of
|
||||
supported languages.
|
||||
|
||||
See the :manual:`cmake-compile-features(7)` manual for information on compile
|
||||
features and a list of supported compilers.
|
||||
|
||||
.. note::
|
||||
|
||||
``CMAKE_<LANG>_STANDARD_LATEST`` will never be set to a language standard
|
||||
which CMake recognizes but provides no support for. Unless explicitly
|
||||
stated otherwise, every value which is supported by the corresponding
|
||||
:prop_tgt:`<LANG>_STANDARD` target property represents a standard of
|
||||
language ``<LANG>`` which is both recognized and supported by CMake.
|
||||
|
||||
Checking for Language Standard Support
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
It is possible to use the value of the ``CMAKE_<LANG>_STANDARD_LATEST``
|
||||
variable to check for language standard support. This can be used to, e.g.,
|
||||
conditionally enable optional features for a distributed library.
|
||||
|
||||
When doing so, one should be careful to **not** rely on integer value
|
||||
comparisons between standard levels. This is because some older standards of
|
||||
a given language which are supported by CMake (e.g., C++98, represented as
|
||||
``98``) will have a higher numerical value than newer standards of that same
|
||||
language.
|
||||
|
||||
The following code sample demonstrates how one might correctly check for
|
||||
C++17 support:
|
||||
|
||||
.. code-block:: cmake
|
||||
|
||||
# Careful! We cannot do direct integer comparisons with
|
||||
# CMAKE_CXX_STANDARD_LATEST because some earlier C++ standards (e.g.,
|
||||
# C++98) will have a higher numerical value than our requirement (C++17).
|
||||
#
|
||||
# Instead, we keep a list of unsupported C++ standards and check if
|
||||
# CMAKE_CXX_STANDARD_LATEST appears in that list.
|
||||
set(UNSUPPORTED_CXX_STANDARDS
|
||||
98
|
||||
11
|
||||
14
|
||||
)
|
||||
|
||||
list(FIND UNSUPPORTED_CXX_STANDARDS ${CMAKE_CXX_STANDARD_LATEST} UNSUPPORTED_CXX_STANDARDS_INDEX)
|
||||
|
||||
if(UNSUPPORTED_CXX_STANDARDS_INDEX EQUAL -1)
|
||||
# We know that the current compiler supports at least C++17. Enabling
|
||||
# some optional feature...
|
||||
else()
|
||||
message(STATUS
|
||||
"Feature X is disabled because it requires C++17, but the current "
|
||||
"compiler only supports C++${CMAKE_CXX_STANDARD_LATEST}."
|
||||
)
|
||||
endif()
|
|
@ -6,6 +6,7 @@ set(CMAKE_C_COMPILER_VERSION_INTERNAL "@CMAKE_C_COMPILER_VERSION_INTERNAL@")
|
|||
set(CMAKE_C_COMPILER_WRAPPER "@CMAKE_C_COMPILER_WRAPPER@")
|
||||
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "@CMAKE_C_STANDARD_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_C_STANDARD_LATEST "@CMAKE_C_STANDARD_LATEST@")
|
||||
set(CMAKE_C_COMPILE_FEATURES "@CMAKE_C_COMPILE_FEATURES@")
|
||||
set(CMAKE_C90_COMPILE_FEATURES "@CMAKE_C90_COMPILE_FEATURES@")
|
||||
set(CMAKE_C99_COMPILE_FEATURES "@CMAKE_C99_COMPILE_FEATURES@")
|
||||
|
|
|
@ -7,6 +7,7 @@ set(CMAKE_CUDA_DEVICE_LINKER "@CMAKE_CUDA_DEVICE_LINKER@")
|
|||
set(CMAKE_CUDA_FATBINARY "@CMAKE_CUDA_FATBINARY@")
|
||||
set(CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT "@CMAKE_CUDA_STANDARD_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_CUDA_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_CUDA_EXTENSIONS_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_CUDA_STANDARD_LATEST "@CMAKE_CUDA_STANDARD_LATEST@")
|
||||
set(CMAKE_CUDA_COMPILE_FEATURES "@CMAKE_CUDA_COMPILE_FEATURES@")
|
||||
set(CMAKE_CUDA03_COMPILE_FEATURES "@CMAKE_CUDA03_COMPILE_FEATURES@")
|
||||
set(CMAKE_CUDA11_COMPILE_FEATURES "@CMAKE_CUDA11_COMPILE_FEATURES@")
|
||||
|
|
|
@ -6,6 +6,7 @@ set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "@CMAKE_CXX_COMPILER_VERSION_INTERNAL@")
|
|||
set(CMAKE_CXX_COMPILER_WRAPPER "@CMAKE_CXX_COMPILER_WRAPPER@")
|
||||
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "@CMAKE_CXX_STANDARD_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_CXX_STANDARD_LATEST "@CMAKE_CXX_STANDARD_LATEST@")
|
||||
set(CMAKE_CXX_COMPILE_FEATURES "@CMAKE_CXX_COMPILE_FEATURES@")
|
||||
set(CMAKE_CXX98_COMPILE_FEATURES "@CMAKE_CXX98_COMPILE_FEATURES@")
|
||||
set(CMAKE_CXX11_COMPILE_FEATURES "@CMAKE_CXX11_COMPILE_FEATURES@")
|
||||
|
|
|
@ -5,6 +5,7 @@ set(CMAKE_HIP_COMPILER_ID "@CMAKE_HIP_COMPILER_ID@")
|
|||
set(CMAKE_HIP_COMPILER_VERSION "@CMAKE_HIP_COMPILER_VERSION@")
|
||||
set(CMAKE_HIP_STANDARD_COMPUTED_DEFAULT "@CMAKE_HIP_STANDARD_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_HIP_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_HIP_EXTENSIONS_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_HIP_STANDARD_LATEST "@CMAKE_HIP_STANDARD_LATEST@")
|
||||
set(CMAKE_HIP_COMPILE_FEATURES "@CMAKE_HIP_COMPILE_FEATURES@")
|
||||
set(CMAKE_HIP98_COMPILE_FEATURES "@CMAKE_HIP03_COMPILE_FEATURES@")
|
||||
set(CMAKE_HIP11_COMPILE_FEATURES "@CMAKE_HIP11_COMPILE_FEATURES@")
|
||||
|
|
|
@ -6,6 +6,7 @@ set(CMAKE_OBJC_COMPILER_VERSION_INTERNAL "@CMAKE_OBJC_COMPILER_VERSION_INTERNAL@
|
|||
set(CMAKE_OBJC_COMPILER_WRAPPER "@CMAKE_OBJC_COMPILER_WRAPPER@")
|
||||
set(CMAKE_OBJC_STANDARD_COMPUTED_DEFAULT "@CMAKE_OBJC_STANDARD_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_OBJC_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_OBJC_EXTENSIONS_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_OBJC_STANDARD_LATEST "@CMAKE_OBJC_STANDARD_LATEST@")
|
||||
set(CMAKE_OBJC_COMPILE_FEATURES "@CMAKE_OBJC_COMPILE_FEATURES@")
|
||||
set(CMAKE_OBJC90_COMPILE_FEATURES "@CMAKE_OBJC90_COMPILE_FEATURES@")
|
||||
set(CMAKE_OBJC99_COMPILE_FEATURES "@CMAKE_OBJC99_COMPILE_FEATURES@")
|
||||
|
|
|
@ -6,6 +6,7 @@ set(CMAKE_OBJCXX_COMPILER_VERSION_INTERNAL "@CMAKE_OBJCXX_COMPILER_VERSION_INTER
|
|||
set(CMAKE_OBJCXX_COMPILER_WRAPPER "@CMAKE_OBJCXX_COMPILER_WRAPPER@")
|
||||
set(CMAKE_OBJCXX_STANDARD_COMPUTED_DEFAULT "@CMAKE_OBJCXX_STANDARD_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_OBJCXX_EXTENSIONS_COMPUTED_DEFAULT "@CMAKE_OBJCXX_EXTENSIONS_COMPUTED_DEFAULT@")
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST "@CMAKE_OBJCXX_STANDARD_LATEST@")
|
||||
set(CMAKE_OBJCXX_COMPILE_FEATURES "@CMAKE_OBJCXX_COMPILE_FEATURES@")
|
||||
set(CMAKE_OBJCXX98_COMPILE_FEATURES "@CMAKE_OBJCXX98_COMPILE_FEATURES@")
|
||||
set(CMAKE_OBJCXX11_COMPILE_FEATURES "@CMAKE_OBJCXX11_COMPILE_FEATURES@")
|
||||
|
|
|
@ -8,4 +8,6 @@ set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
|
|||
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
|
||||
__compiler_check_default_language_standard(C 8.0.0.0 99)
|
||||
|
|
|
@ -6,11 +6,13 @@ __compiler_adsp(CXX)
|
|||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -c++)
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -g++)
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.3.0.0)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -c++11)
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -c++11 -g++)
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 8.0.0.0 98)
|
||||
|
|
|
@ -22,6 +22,8 @@ set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
|||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
# Including the "${CMAKE_ROOT}/Modules/Compiler/Clang-C.cmake" script above may set several other compile option
|
||||
# variables which do not necessarily apply here. So, we unset those variables accordingly.
|
||||
unset(CMAKE_C17_STANDARD_COMPILE_OPTION)
|
||||
|
|
|
@ -26,16 +26,20 @@ if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 4.0)
|
|||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 11.0.3)
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
|
||||
set(CMAKE_C_STANDARD_LATEST 23)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(C 4.0 99 9.1 11 12.0.5 17)
|
||||
|
|
|
@ -22,25 +22,31 @@ if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.0)
|
|||
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
|
||||
# AppleClang 5.0 knows this flag, but does not set a __cplusplus macro greater than 201103L
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 6.1)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
|
@ -50,14 +56,17 @@ endif()
|
|||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
|
||||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std=c++2b")
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std=gnu++2b")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 23)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 4.0 98)
|
||||
|
|
|
@ -21,6 +21,8 @@ if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 4.0)
|
|||
set(CMAKE_OBJC11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_OBJC11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_OBJC11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_OBJC_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
# AppleClang 10.0 was the oldest compiler available to test C17 support
|
||||
|
@ -28,12 +30,16 @@ if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 10.0)
|
|||
set(CMAKE_OBJC17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_OBJC17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_OBJC17_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_OBJC_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 11.0.3)
|
||||
set(CMAKE_OBJC23_STANDARD_COMPILE_OPTION "-std=c2x")
|
||||
set(CMAKE_OBJC23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
|
||||
set(CMAKE_OBJC23_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_OBJC_STANDARD_LATEST 23)
|
||||
endif()
|
||||
|
||||
# AppleClang 10.0 was the oldest compiler available to test default C11 support
|
||||
|
|
|
@ -19,25 +19,31 @@ if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 4.0)
|
|||
|
||||
set(CMAKE_OBJCXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_OBJCXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 6.1)
|
||||
set(CMAKE_OBJCXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_OBJCXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
set(CMAKE_OBJCXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST 14)
|
||||
elseif(NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 5.1)
|
||||
# AppleClang 5.0 knows this flag, but does not set a __cplusplus macro greater than 201103L
|
||||
set(CMAKE_OBJCXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
|
||||
set(CMAKE_OBJCXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
set(CMAKE_OBJCXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
set(CMAKE_OBJCXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_OBJCXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST 17)
|
||||
elseif (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 6.1)
|
||||
set(CMAKE_OBJCXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
|
||||
set(CMAKE_OBJCXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 8.0)
|
||||
|
@ -47,6 +53,7 @@ endif()
|
|||
if (NOT CMAKE_OBJCXX_COMPILER_VERSION VERSION_LESS 10.0)
|
||||
set(CMAKE_OBJCXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
|
||||
set(CMAKE_OBJCXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
|
||||
set(CMAKE_OBJCXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(OBJCXX 4.0 98)
|
||||
|
|
|
@ -33,27 +33,34 @@ if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
|||
|
||||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.1)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 3.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c1x")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu1x")
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 18.0)
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c23")
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu23")
|
||||
set(CMAKE_C_STANDARD_LATEST 23)
|
||||
elseif(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 9.0)
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
|
||||
set(CMAKE_C_STANDARD_LATEST 23)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
|
||||
|
@ -74,6 +81,8 @@ else()
|
|||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 2.1)
|
||||
|
|
|
@ -22,18 +22,24 @@ if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 3.4)
|
|||
set(CMAKE_OBJC11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_OBJC11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_OBJC11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_OBJC_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 6.0)
|
||||
set(CMAKE_OBJC17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_OBJC17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_OBJC17_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_OBJC_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_OBJC_COMPILER_VERSION VERSION_LESS 9.0)
|
||||
set(CMAKE_OBJC23_STANDARD_COMPILE_OPTION "-std=c2x")
|
||||
set(CMAKE_OBJC23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
|
||||
set(CMAKE_OBJC23_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_OBJC_STANDARD_LATEST 23)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(OBJC 3.4 99 3.6 11)
|
||||
|
|
|
@ -135,6 +135,7 @@ macro(__compiler_clang_cxx_standards lang)
|
|||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 2.1)
|
||||
set(CMAKE_${lang}98_STANDARD_COMPILE_OPTION "-std=c++98")
|
||||
set(CMAKE_${lang}98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 98)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.1)
|
||||
|
@ -142,19 +143,23 @@ macro(__compiler_clang_cxx_standards lang)
|
|||
set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
set(CMAKE_${lang}11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 2.1)
|
||||
set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++0x")
|
||||
set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.5)
|
||||
set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 14)
|
||||
elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++1y")
|
||||
set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
set(CMAKE_${lang}14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
set(_clang_version_std17 5.0)
|
||||
|
@ -165,17 +170,21 @@ macro(__compiler_clang_cxx_standards lang)
|
|||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std17}")
|
||||
set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
elseif (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.5)
|
||||
set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++1z")
|
||||
set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 11.0)
|
||||
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 20)
|
||||
elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS "${_clang_version_std17}")
|
||||
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++2a")
|
||||
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
unset(_clang_version_std17)
|
||||
|
@ -190,9 +199,11 @@ macro(__compiler_clang_cxx_standards lang)
|
|||
set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++23")
|
||||
set(CMAKE_${lang}26_STANDARD_COMPILE_OPTION "-std=c++26")
|
||||
set(CMAKE_${lang}26_EXTENSION_COMPILE_OPTION "-std=gnu++26")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 26)
|
||||
elseif(NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 12.0)
|
||||
set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std=c++2b")
|
||||
set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std=gnu++2b")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 23)
|
||||
endif()
|
||||
|
||||
unset(_clang_version_std23)
|
||||
|
@ -231,14 +242,18 @@ macro(__compiler_clang_cxx_standards lang)
|
|||
set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std:c++latest")
|
||||
endif()
|
||||
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
|
||||
if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 13.0)
|
||||
set(CMAKE_${lang}23_STANDARD_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_${lang}23_EXTENSION_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++20")
|
||||
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++20")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 23)
|
||||
elseif(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
|
||||
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(${lang} 3.9 14)
|
||||
|
@ -262,6 +277,14 @@ macro(__compiler_clang_cxx_standards lang)
|
|||
# There is no meaningful default for this
|
||||
set(CMAKE_${lang}_STANDARD_DEFAULT "")
|
||||
|
||||
if(CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.0)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
elseif(CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 18.0)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 14)
|
||||
elseif(CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 16.0)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
# There are no compiler modes so we only need to test features once.
|
||||
# Override the default macro for this special case. Pretend that
|
||||
# all language standards are available so that at least compilation
|
||||
|
|
|
@ -14,10 +14,12 @@ if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
|
|||
set(CMAKE_C99_STANDARD_COMPILE_OPTION -h c99,conform)
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION -h c99,gnu)
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 8.5)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION -h std=c11,conform)
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION -h std=c11,gnu)
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
|
|
@ -11,15 +11,18 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 8.1)
|
|||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION -h conform)
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION -h gnu)
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.4)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION -h std=c++11)
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION -h std=c++11,gnu)
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.6)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION -h std=c++14)
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION -h std=c++14,gnu)
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
|
|
@ -27,4 +27,6 @@ set(CMAKE_C17_EXTENSION_COMPILE_OPTION -std=gnu17)
|
|||
set(CMAKE_C23_STANDARD_COMPILE_OPTION -std=c2x)
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION -std=gnu2x)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 23)
|
||||
|
||||
__compiler_check_default_language_standard(C 15.0.0 17)
|
||||
|
|
|
@ -32,4 +32,6 @@ set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION -std=gnu++20)
|
|||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION -std=c++2b)
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION -std=gnu++2b)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 23)
|
||||
|
||||
__compiler_check_default_language_standard(CXX 15.0.0 14)
|
||||
|
|
|
@ -15,6 +15,8 @@ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 4)
|
|||
set(CMAKE_C11_STANDARD_COMPILE_OPTION -std=c11)
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION -std=gnu11)
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(C 4 11)
|
||||
|
|
|
@ -42,6 +42,8 @@ if(CMAKE_CXX_COMPILER_VERSION GREATER_EQUAL 4)
|
|||
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION -std=c++17)
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION -std=gnu++17)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 4 14)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
include(Compiler/GNU)
|
||||
__compiler_gnu(OBJC)
|
||||
__compiler_gnu_c_standards(OBJC)
|
||||
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
include(Compiler/GNU)
|
||||
__compiler_gnu(OBJCXX)
|
||||
__compiler_gnu_cxx_standards(OBJCXX)
|
||||
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
|
|
|
@ -212,9 +212,11 @@ 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 90)
|
||||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 90)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 3.4)
|
||||
|
@ -222,25 +224,30 @@ macro(__compiler_gnu_c_standards lang)
|
|||
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)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 99)
|
||||
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)
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 23)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
|
@ -248,16 +255,19 @@ 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 4.8.1)
|
||||
|
@ -267,9 +277,11 @@ macro(__compiler_gnu_cxx_standards lang)
|
|||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 5.0)
|
||||
|
@ -279,9 +291,11 @@ macro(__compiler_gnu_cxx_standards lang)
|
|||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 11.1)
|
||||
|
@ -289,13 +303,16 @@ macro(__compiler_gnu_cxx_standards lang)
|
|||
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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 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")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
if(CMAKE_${lang}_COMPILER_VERSION VERSION_GREATER_EQUAL 14.0)
|
||||
set(CMAKE_${lang}26_STANDARD_COMPILE_OPTION "-std=c++26")
|
||||
set(CMAKE_${lang}26_EXTENSION_COMPILE_OPTION "-std=gnu++26")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 26)
|
||||
endif()
|
||||
endmacro()
|
||||
|
|
|
@ -23,8 +23,11 @@ set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
|||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1.0)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
endif ()
|
||||
__compiler_check_default_language_standard(C 17.1.0 17)
|
||||
|
|
|
@ -26,6 +26,8 @@ set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
|||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1.0)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
|
@ -33,6 +35,7 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1.0)
|
|||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std=c++2b")
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std=gnu++2b")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 23)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 17.1.0 17)
|
||||
|
|
|
@ -19,12 +19,6 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
|||
set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
set(CMAKE_C_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 16.0.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-Qstd=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-Qstd=c11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-Qstd=c89")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-Qstd=c89")
|
||||
|
@ -32,18 +26,20 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
|||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-Qstd=c99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-Qstd=c99")
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 16.0.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-Qstd=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-Qstd=c11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 12.0)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c89")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu89")
|
||||
|
@ -51,6 +47,14 @@ else()
|
|||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 15.0.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
|
|
@ -18,57 +18,70 @@ if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
|||
set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-Qstd=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-Qstd=c++20")
|
||||
endif()
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-Qstd=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-Qstd=c++17")
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++11")
|
||||
else()
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++0x")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++0x")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 16.0)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-Qstd=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-Qstd=c++14")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++11")
|
||||
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-Qstd=c++0x")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-Qstd=c++0x")
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-Qstd=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-Qstd=c++17")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-Qstd=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-Qstd=c++20")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.20190206)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
else()
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
endif()
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.0)
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0)
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.2)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0.0)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
# Intel 15.0.2 accepts c++14 instead of c++1y, but not gnu++14
|
||||
|
@ -79,22 +92,20 @@ else()
|
|||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 15.0)
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.0)
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.0)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 18.0.0)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 12.1)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0.20190206)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
|
|
@ -42,9 +42,12 @@ if(NOT "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC")
|
|||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 2022.1.0)
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION "-std=c2x")
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-std=gnu2x")
|
||||
set(CMAKE_C_STANDARD_LATEST 23)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-Qstd:c90")
|
||||
|
@ -59,9 +62,12 @@ else()
|
|||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-Qstd:c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-Qstd:c17")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 2022.1.0)
|
||||
set(CMAKE_C23_STANDARD_COMPILE_OPTION "-Qstd:c2x")
|
||||
set(CMAKE_C23_EXTENSION_COMPILE_OPTION "-Qstd:c2x")
|
||||
set(CMAKE_C_STANDARD_LATEST 23)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -47,9 +47,12 @@ if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
|||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 2021.2.0)
|
||||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std=c++2b")
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std=gnu++2b")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 23)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
|
||||
|
@ -67,9 +70,12 @@ else()
|
|||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-Qstd:c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-Qstd:c++20")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 2021.2.0)
|
||||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-Qstd:c++2b")
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-Qstd:c++2b")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 23)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -22,15 +22,19 @@ set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
|||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 1.20)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 1.26)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std=c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std=gnu17")
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(C 1.17 89 1.23 99 1.26 17)
|
||||
|
|
|
@ -18,26 +18,32 @@ set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
|||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.20)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.21)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++14")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.24)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 1.26)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 1.19 98 1.20 11 1.21 14 1.24 17 1.26 20)
|
||||
|
|
|
@ -14,12 +14,15 @@ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.27)
|
|||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std:c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std:c11")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 19.28)
|
||||
set(CMAKE_C90_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION "-std:c17")
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION "-std:c17")
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
else()
|
||||
# Special case for 19.27 (VS 16.7): C11 has partial support.
|
||||
macro(cmake_record_c_compile_features)
|
||||
|
@ -41,6 +44,7 @@ else()
|
|||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "")
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "")
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
# There is no meaningful default for this
|
||||
set(CMAKE_C_STANDARD_DEFAULT "")
|
||||
|
|
|
@ -30,14 +30,18 @@ if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
|
|||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++latest")
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.29.30129)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++20")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++20")
|
||||
set(CMAKE_CXX23_STANDARD_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_CXX23_EXTENSION_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 23)
|
||||
elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.12.25835)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 19.0 14)
|
||||
|
@ -57,6 +61,14 @@ elseif (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
|
|||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "")
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 18.0)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
else()
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
# There is no meaningful default for this
|
||||
set(CMAKE_CXX_STANDARD_DEFAULT "")
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
|||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 20.11)
|
||||
set(CMAKE_C17_STANDARD_COMPILE_OPTION -std=c17)
|
||||
set(CMAKE_C17_EXTENSION_COMPILE_OPTION -std=gnu17)
|
||||
set(CMAKE_C_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07)
|
||||
|
|
|
@ -7,6 +7,7 @@ set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c++)
|
|||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 20.11)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION -std=c++20)
|
||||
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION -std=gnu++20)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 20)
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 21.07)
|
||||
|
|
|
@ -17,6 +17,8 @@ macro(__compiler_nvidia_cxx_standards lang)
|
|||
set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "")
|
||||
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 9.0)
|
||||
if(CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.10.25017)
|
||||
set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
|
@ -25,12 +27,15 @@ macro(__compiler_nvidia_cxx_standards lang)
|
|||
set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "")
|
||||
endif()
|
||||
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 11.0)
|
||||
if(CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.11.25505)
|
||||
set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -38,6 +43,7 @@ macro(__compiler_nvidia_cxx_standards lang)
|
|||
if(CMAKE_${lang}_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.11.25505)
|
||||
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 20)
|
||||
endif()
|
||||
endif()
|
||||
else()
|
||||
|
@ -47,21 +53,27 @@ macro(__compiler_nvidia_cxx_standards lang)
|
|||
set(CMAKE_${lang}11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_${lang}11_EXTENSION_COMPILE_OPTION "-std=c++11")
|
||||
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 11)
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 9.0)
|
||||
set(CMAKE_${lang}03_STANDARD_COMPILE_OPTION "-std=c++03")
|
||||
set(CMAKE_${lang}03_EXTENSION_COMPILE_OPTION "-std=c++03")
|
||||
set(CMAKE_${lang}14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_${lang}14_EXTENSION_COMPILE_OPTION "-std=c++14")
|
||||
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 14)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 11.0)
|
||||
set(CMAKE_${lang}17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_${lang}17_EXTENSION_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 17)
|
||||
endif()
|
||||
|
||||
if (NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS 12.0)
|
||||
set(CMAKE_${lang}20_STANDARD_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_${lang}20_EXTENSION_COMPILE_OPTION "-std=c++20")
|
||||
set(CMAKE_${lang}_STANDARD_LATEST 20)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -15,6 +15,8 @@ set(CMAKE_C11_STANDARD_COMPILE_OPTION -std=c11)
|
|||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION -std=c11)
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
__compiler_orangec(C)
|
||||
#- 6.38 is the earliest version which version info is available in the preprocessor
|
||||
__compiler_check_default_language_standard(C 6.38 11)
|
||||
|
|
|
@ -20,6 +20,8 @@ set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
|||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
|
||||
__compiler_orangec(CXX)
|
||||
#- 6.38 is the earliest version which version info is available in the preprocessor
|
||||
__compiler_check_default_language_standard(CXX 6.38 14)
|
||||
|
|
|
@ -10,10 +10,13 @@ if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.10)
|
|||
set(CMAKE_C99_STANDARD_COMPILE_OPTION -c99)
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION -c99)
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 15.3)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION -c11)
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION -c11)
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
|
|
|
@ -7,19 +7,23 @@ if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12.10)
|
|||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION --gnu_extensions)
|
||||
set(CMAKE_CXX98_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.10)
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION --c++03)
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION --c++03 --gnu_extensions)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION --c++11)
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION --c++11 --gnu_extensions)
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 15.7)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION --c++14)
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION --c++14 --gnu_extensions)
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 17.1)
|
||||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION --c++17)
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION --c++17 --gnu_extensions)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
|
|
@ -52,11 +52,15 @@ if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.13)
|
|||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
elseif (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 5.11)
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "")
|
||||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-xc99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-xc99")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(C 5.11 90 5.14 11)
|
||||
|
|
|
@ -54,14 +54,18 @@ if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
|
|||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX_LINK_WITH_STANDARD_COMPILE_OPTION 1)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.14)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=c++14")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
else()
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-library=stlport4")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-library=stlport4")
|
||||
set(CMAKE_CXX_LINK_WITH_STANDARD_COMPILE_OPTION 1)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(CXX 1 98)
|
||||
|
|
|
@ -34,18 +34,23 @@ if(CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_C99_VERSION_$
|
|||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "--c99" "--strict_ansi")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "--c99" "--relaxed_ansi")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
|
||||
if(DEFINED __COMPILER_TI_C11_VERSION_${CMAKE_C_COMPILER_ARCHITECTURE_ID} AND
|
||||
CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_C11_VERSION_${CMAKE_C_COMPILER_ARCHITECTURE_ID}}")
|
||||
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "--c11" "--strict_ansi")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "--c11" "--relaxed_ansi")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
endif()
|
||||
|
||||
else()
|
||||
|
||||
set(CMAKE_C90_STANDARD_COMPILE_OPTION "--strict_ansi")
|
||||
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
|
||||
set(CMAKE_C_STANDARD_LATEST 90)
|
||||
|
||||
endif()
|
||||
|
||||
|
|
|
@ -39,16 +39,19 @@ if(DEFINED __COMPILER_TI_CXX14_VERSION AND
|
|||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "--c++14" "--strict_ansi")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "--c++14" "--relaxed_ansi")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
|
||||
elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_CXX03_VERSION}")
|
||||
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "--c++03" "--strict_ansi")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "--c++03" "--relaxed_ansi")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
|
||||
else()
|
||||
|
||||
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "--strict_ansi")
|
||||
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
|
||||
set(CMAKE_CXX_STANDARD_LATEST 98)
|
||||
|
||||
endif()
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
|||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
# Including the "${CMAKE_ROOT}/Modules/Compiler/Clang-C.cmake" script above may set several other compile option
|
||||
# variables which do not necessarily apply here. So, we unset those variables accordingly.
|
||||
unset(CMAKE_C17_STANDARD_COMPILE_OPTION)
|
||||
|
|
|
@ -24,6 +24,8 @@ set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
|||
set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
|
||||
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 17)
|
||||
|
||||
# Including the "${CMAKE_ROOT}/Modules/Compiler/Clang-CXX.cmake" script above may set several other compile option
|
||||
# variables which do not necessarily apply here. So, we unset those variables accordingly.
|
||||
unset(CMAKE_CXX20_STANDARD_COMPILE_OPTION)
|
||||
|
|
|
@ -10,6 +10,8 @@ set(CMAKE_C99_EXTENSION_COMPILE_OPTION "--iso=99" " ")
|
|||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "--iso=11" "--strict")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "--iso=11" " ")
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
|
||||
if(CMAKE_C_COMPILER_ARCHITECTURE_ID STREQUAL "TriCore")
|
||||
if(CMAKE_TASKING_TOOLSET STREQUAL "SmartCode")
|
||||
__compiler_check_default_language_standard(C 10.1 11)
|
||||
|
|
|
@ -12,6 +12,8 @@ set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "--c++=11" " ")
|
|||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "--c++=14" "--strict")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "--c++=14" " ")
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "TriCore")
|
||||
if(CMAKE_TASKING_TOOLSET STREQUAL "SmartCode")
|
||||
__compiler_check_default_language_standard(CXX 10.1 14)
|
||||
|
|
|
@ -13,10 +13,13 @@ if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
|
|||
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-qlanglvl=stdc99")
|
||||
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-qlanglvl=extc99")
|
||||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 99)
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.1)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -24,10 +24,13 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.1)
|
|||
# compiler mode for the corresponding standard.
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.1.0 AND CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-qlanglvl=extended1y")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-qlanglvl=extended1y")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
|
|
|
@ -12,11 +12,14 @@ if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
|
|||
set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-qlanglvl=extc1x")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-qlanglvl=extc1x")
|
||||
|
||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
||||
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
||||
set(CMAKE_C11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
endif ()
|
||||
|
||||
set(CMAKE_C_STANDARD_LATEST 11)
|
||||
endif()
|
||||
|
||||
__compiler_check_default_language_standard(C 13.1.1 99)
|
||||
|
|
|
@ -10,12 +10,17 @@ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.1)
|
|||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-qlanglvl=extended0x")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-qlanglvl=extended0x")
|
||||
set(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 11)
|
||||
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 13.1.2)
|
||||
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
||||
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++1y")
|
||||
set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std=gnu++1y")
|
||||
set(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_LATEST 14)
|
||||
endif ()
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.1.0)
|
||||
set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std=c++14")
|
||||
|
|
|
@ -440,6 +440,16 @@ add_RunCMake_test(GoogleTest # Note: does not actually depend on Google Test
|
|||
)
|
||||
add_RunCMake_test(Graphviz)
|
||||
add_RunCMake_test(Languages)
|
||||
|
||||
add_RunCMake_test(LanguageStandards
|
||||
-DCMake_NO_C_STANDARD=${CMake_NO_C_STANDARD}
|
||||
-DCMake_NO_CXX_STANDARD=${CMake_NO_CXX_STANDARD}
|
||||
-DCMake_TEST_CUDA=${CMake_TEST_CUDA}
|
||||
-DCMake_TEST_HIP=${CMake_TEST_HIP}
|
||||
-DCMake_TEST_OBJC=${CMake_TEST_OBJC}
|
||||
)
|
||||
set_property(TEST RunCMake.LanguageStandards APPEND PROPERTY LABELS "CUDA" "HIP")
|
||||
|
||||
add_RunCMake_test(LinkItemValidation)
|
||||
add_RunCMake_test(LinkStatic)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^(Cray|PGI|NVHPC|XL|XLClang|IBMClang|Fujitsu|FujitsuClang)$")
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
cmake_minimum_required(VERSION 3.29)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
|
@ -0,0 +1,14 @@
|
|||
enable_language(C)
|
||||
enable_language(CXX)
|
||||
|
||||
set(info "")
|
||||
foreach(var
|
||||
CMAKE_C_STANDARD_DEFAULT
|
||||
CMAKE_CXX_STANDARD_DEFAULT
|
||||
)
|
||||
if(DEFINED ${var})
|
||||
string(APPEND info "set(${var} \"${${var}}\")\n")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}")
|
|
@ -0,0 +1,32 @@
|
|||
include(RunCMake)
|
||||
|
||||
# Detect information from the toolchain:
|
||||
# - CMAKE_C_STANDARD_DEFAULT
|
||||
# - CMAKE_CXX_STANDARD_DEFAULT
|
||||
run_cmake(Inspect)
|
||||
include("${RunCMake_BINARY_DIR}/Inspect-build/info.cmake")
|
||||
|
||||
function(run_StdLatest lang)
|
||||
set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/StdLatest-${lang}-build)
|
||||
run_cmake(StdLatest-${lang})
|
||||
set(RunCMake_TEST_NO_CLEAN 1)
|
||||
set(RunCMake_TEST_OUTPUT_MERGE 1)
|
||||
run_cmake_command(StdLatest-${lang}-build ${CMAKE_COMMAND} --build . --config Debug)
|
||||
endfunction()
|
||||
|
||||
if(NOT CMake_NO_C_STANDARD AND DEFINED CMAKE_C_STANDARD_DEFAULT)
|
||||
run_StdLatest(C)
|
||||
endif()
|
||||
if(NOT CMake_NO_CXX_STANDARD AND DEFINED CMAKE_CXX_STANDARD_DEFAULT)
|
||||
run_StdLatest(CXX)
|
||||
endif()
|
||||
if(CMake_TEST_CUDA)
|
||||
run_StdLatest(CUDA)
|
||||
endif()
|
||||
if(CMake_TEST_HIP)
|
||||
run_StdLatest(HIP)
|
||||
endif()
|
||||
if(CMake_TEST_OBJC)
|
||||
run_StdLatest(OBJC)
|
||||
run_StdLatest(OBJCXX)
|
||||
endif()
|
|
@ -0,0 +1 @@
|
|||
-- CMAKE_C_STANDARD_LATEST='[0-9][0-9]'
|
|
@ -0,0 +1,4 @@
|
|||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,4 @@
|
|||
enable_language(C)
|
||||
message(STATUS "CMAKE_C_STANDARD_LATEST='${CMAKE_C_STANDARD_LATEST}'")
|
||||
add_executable(StdLatest StdLatest-C.c)
|
||||
target_compile_features(StdLatest PRIVATE c_std_${CMAKE_C_STANDARD_LATEST})
|
|
@ -0,0 +1 @@
|
|||
-- CMAKE_CUDA_STANDARD_LATEST='[0-9][0-9]'
|
|
@ -0,0 +1,4 @@
|
|||
enable_language(CUDA)
|
||||
message(STATUS "CMAKE_CUDA_STANDARD_LATEST='${CMAKE_CUDA_STANDARD_LATEST}'")
|
||||
add_executable(StdLatest StdLatest-CUDA.cu)
|
||||
target_compile_features(StdLatest PRIVATE cuda_std_${CMAKE_CUDA_STANDARD_LATEST})
|
|
@ -0,0 +1,4 @@
|
|||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
-- CMAKE_CXX_STANDARD_LATEST='[0-9][0-9]'
|
|
@ -0,0 +1,5 @@
|
|||
enable_language(CXX)
|
||||
set(CMAKE_CXX_SCAN_FOR_MODULES OFF) # In case C++20 or higher is the latest.
|
||||
message(STATUS "CMAKE_CXX_STANDARD_LATEST='${CMAKE_CXX_STANDARD_LATEST}'")
|
||||
add_executable(StdLatest StdLatest-CXX.cxx)
|
||||
target_compile_features(StdLatest PRIVATE cxx_std_${CMAKE_CXX_STANDARD_LATEST})
|
|
@ -0,0 +1,4 @@
|
|||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
-- CMAKE_HIP_STANDARD_LATEST='[0-9][0-9]'
|
|
@ -0,0 +1,4 @@
|
|||
enable_language(HIP)
|
||||
message(STATUS "CMAKE_HIP_STANDARD_LATEST='${CMAKE_HIP_STANDARD_LATEST}'")
|
||||
add_executable(StdLatest StdLatest-HIP.hip)
|
||||
target_compile_features(StdLatest PRIVATE hip_std_${CMAKE_HIP_STANDARD_LATEST})
|
|
@ -0,0 +1,4 @@
|
|||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
-- CMAKE_OBJC_STANDARD_LATEST='[0-9][0-9]'
|
|
@ -0,0 +1,4 @@
|
|||
enable_language(OBJC)
|
||||
message(STATUS "CMAKE_OBJC_STANDARD_LATEST='${CMAKE_OBJC_STANDARD_LATEST}'")
|
||||
add_executable(StdLatest StdLatest-OBJC.m)
|
||||
set_property(TARGET StdLatest PROPERTY OBJC_STANDARD "${CMAKE_OBJC_STANDARD_LATEST}")
|
|
@ -0,0 +1,4 @@
|
|||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
-- CMAKE_OBJCXX_STANDARD_LATEST='[0-9][0-9]'
|
|
@ -0,0 +1,4 @@
|
|||
enable_language(OBJCXX)
|
||||
message(STATUS "CMAKE_OBJCXX_STANDARD_LATEST='${CMAKE_OBJCXX_STANDARD_LATEST}'")
|
||||
add_executable(StdLatest StdLatest-OBJCXX.mm)
|
||||
set_property(TARGET StdLatest PROPERTY OBJCXX_STANDARD "${CMAKE_OBJCXX_STANDARD_LATEST}")
|
|
@ -0,0 +1,4 @@
|
|||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue