mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 21:59:54 -06:00
Merge topic 'lang-standard-latest'
7c38e6bb52Add CMAKE_<LANG>_STANDARD_LATEST variablesfddb165c6cAppleClang: Fix Objective C 23 support detection1dff17108dModules: Fix ARMClang and TIClang language standard compile options Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Merge-request: !9314
This commit is contained in:
@@ -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
|
||||
|
||||
5
Help/release/dev/lang-standard-latest.rst
Normal file
5
Help/release/dev/lang-standard-latest.rst
Normal file
@@ -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>``.
|
||||
64
Help/variable/CMAKE_LANG_STANDARD_LATEST.rst
Normal file
64
Help/variable/CMAKE_LANG_STANDARD_LATEST.rst
Normal file
@@ -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)
|
||||
|
||||
@@ -21,3 +21,13 @@ set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
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)
|
||||
unset(CMAKE_C17_EXTENSION_COMPILE_OPTION)
|
||||
|
||||
unset(CMAKE_C23_STANDARD_COMPILE_OPTION)
|
||||
unset(CMAKE_C23_EXTENSION_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)
|
||||
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()
|
||||
|
||||
|
||||
@@ -21,3 +21,13 @@ set(CMAKE_C99_STANDARD__HAS_FULL_SUPPORT ON)
|
||||
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)
|
||||
unset(CMAKE_C17_EXTENSION_COMPILE_OPTION)
|
||||
|
||||
unset(CMAKE_C23_STANDARD_COMPILE_OPTION)
|
||||
unset(CMAKE_C23_EXTENSION_COMPILE_OPTION)
|
||||
|
||||
@@ -23,3 +23,16 @@ 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)
|
||||
unset(CMAKE_CXX20_EXTENSION_COMPILE_OPTION)
|
||||
|
||||
unset(CMAKE_CXX23_STANDARD_COMPILE_OPTION)
|
||||
unset(CMAKE_CXX23_EXTENSION_COMPILE_OPTION)
|
||||
|
||||
unset(CMAKE_CXX26_STANDARD_COMPILE_OPTION)
|
||||
unset(CMAKE_CXX26_EXTENSION_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)$")
|
||||
|
||||
3
Tests/RunCMake/LanguageStandards/CMakeLists.txt
Normal file
3
Tests/RunCMake/LanguageStandards/CMakeLists.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
cmake_minimum_required(VERSION 3.29)
|
||||
project(${RunCMake_TEST} NONE)
|
||||
include(${RunCMake_TEST}.cmake)
|
||||
14
Tests/RunCMake/LanguageStandards/Inspect.cmake
Normal file
14
Tests/RunCMake/LanguageStandards/Inspect.cmake
Normal file
@@ -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}")
|
||||
32
Tests/RunCMake/LanguageStandards/RunCMakeTest.cmake
Normal file
32
Tests/RunCMake/LanguageStandards/RunCMakeTest.cmake
Normal file
@@ -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()
|
||||
1
Tests/RunCMake/LanguageStandards/StdLatest-C-stdout.txt
Normal file
1
Tests/RunCMake/LanguageStandards/StdLatest-C-stdout.txt
Normal file
@@ -0,0 +1 @@
|
||||
-- CMAKE_C_STANDARD_LATEST='[0-9][0-9]'
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-C.c
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-C.c
Normal file
@@ -0,0 +1,4 @@
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-C.cmake
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-C.cmake
Normal file
@@ -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]'
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cmake
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cmake
Normal file
@@ -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})
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cu
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cu
Normal file
@@ -0,0 +1,4 @@
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
-- CMAKE_CXX_STANDARD_LATEST='[0-9][0-9]'
|
||||
5
Tests/RunCMake/LanguageStandards/StdLatest-CXX.cmake
Normal file
5
Tests/RunCMake/LanguageStandards/StdLatest-CXX.cmake
Normal file
@@ -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})
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-CXX.cxx
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-CXX.cxx
Normal file
@@ -0,0 +1,4 @@
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
-- CMAKE_HIP_STANDARD_LATEST='[0-9][0-9]'
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-HIP.cmake
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-HIP.cmake
Normal file
@@ -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})
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-HIP.hip
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-HIP.hip
Normal file
@@ -0,0 +1,4 @@
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
-- CMAKE_OBJC_STANDARD_LATEST='[0-9][0-9]'
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJC.cmake
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJC.cmake
Normal file
@@ -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}")
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJC.m
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJC.m
Normal file
@@ -0,0 +1,4 @@
|
||||
int main(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
-- CMAKE_OBJCXX_STANDARD_LATEST='[0-9][0-9]'
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.cmake
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.cmake
Normal file
@@ -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}")
|
||||
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.mm
Normal file
4
Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.mm
Normal file
@@ -0,0 +1,4 @@
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user