mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-01 19:30:13 -06:00
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: #25717
75 lines
2.4 KiB
CMake
75 lines
2.4 KiB
CMake
include(Compiler/TI)
|
|
__compiler_ti(CXX)
|
|
|
|
# Architecture specific
|
|
|
|
if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
|
|
set(__COMPILER_TI_CXX03_VERSION 5.2)
|
|
set(__COMPILER_TI_CXX14_VERSION 18.1)
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
|
|
set(__COMPILER_TI_CXX03_VERSION 4.4)
|
|
set(__COMPILER_TI_CXX14_VERSION 18.1)
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C28x")
|
|
set(__COMPILER_TI_CXX03_VERSION 16.9)
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C6x")
|
|
set(__COMPILER_TI_CXX03_VERSION 8.1)
|
|
set(__COMPILER_TI_CXX14_VERSION 8.3)
|
|
|
|
else()
|
|
# architecture not handled
|
|
return()
|
|
|
|
endif()
|
|
|
|
|
|
if(DEFINED __COMPILER_TI_CXX14_VERSION AND
|
|
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "${__COMPILER_TI_CXX14_VERSION}")
|
|
|
|
# C++03 is not supported anymore
|
|
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "--strict_ansi")
|
|
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
|
|
|
|
# C++11 was never supported
|
|
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "--strict_ansi")
|
|
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "--relaxed_ansi")
|
|
|
|
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()
|
|
|
|
|
|
# Architecture specific
|
|
# CXX98 versions: https://processors.wiki.ti.com/index.php/C%2B%2B_Support_in_TI_Compilers
|
|
|
|
if("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "ARM")
|
|
__compiler_check_default_language_standard(CXX 4.5 98 ${__COMPILER_TI_CXX14_VERSION} 14)
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "MSP430")
|
|
__compiler_check_default_language_standard(CXX 3.0 98 ${__COMPILER_TI_CXX14_VERSION} 14)
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C28x")
|
|
__compiler_check_default_language_standard(CXX 5.1 98)
|
|
|
|
elseif("${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "TMS320C6x")
|
|
__compiler_check_default_language_standard(CXX 6.1 98 ${__COMPILER_TI_CXX14_VERSION} 14)
|
|
|
|
endif()
|