mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
Tests/CompileFeatures: Cover <LANG>_STANDARD properties
Extend commit c37e279014 (Tests/CompileFeatures: Cover c_std_## and
cxx_std_## meta-features, 2024-04-02, v3.30.0-rc1~279^2~1) to cover the
per-language standard level target properties.
This commit is contained in:
@@ -1 +1,4 @@
|
||||
set(CMake_TEST_C_STANDARDS "90;99;11" CACHE STRING "")
|
||||
set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20" CACHE STRING "")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_intelcompiler_common.cmake")
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "")
|
||||
set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23;26" CACHE STRING "")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_intelcompiler_common.cmake")
|
||||
|
||||
@@ -25,8 +25,21 @@ foreach(lang C CXX CUDA HIP)
|
||||
string(TOLOWER "${lang}_std_${std}" feature)
|
||||
if("${std}" IN_LIST CMake_TEST_${lang}_STANDARDS
|
||||
OR CMAKE_${lang}${std}_STANDARD_COMPILE_OPTION)
|
||||
# Test <lang>_std_<std> feature.
|
||||
add_library(test_${feature} OBJECT ${feature}.${ext_${lang}})
|
||||
target_compile_features(test_${feature} PRIVATE ${feature})
|
||||
# Test <lang>_STANDARD <std> property.
|
||||
if(NOT "${lang}_STANDARD_${std}" MATCHES "^(CUDA_STANDARD_03|HIP_STANDARD_98)$")
|
||||
add_library(test_${lang}_STANDARD_${std} OBJECT ${lang}_STANDARD_${std}.${ext_${lang}})
|
||||
set_property(TARGET test_${lang}_STANDARD_${std} PROPERTY ${lang}_STANDARD ${std})
|
||||
if(CMAKE_${lang}${std}_STANDARD_COMPILE_OPTION STREQUAL [[]]
|
||||
OR "${CMAKE_${lang}_COMPILER_ID};${CMAKE_${lang}_SIMULATE_ID};${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT};${lang};${std}" MATCHES "^(Clang;MSVC;GNU;CXX;(98|11)|Intel;MSVC;(MSVC)?;CXX;11)$")
|
||||
target_compile_definitions(test_${lang}_STANDARD_${std} PRIVATE ${lang}_STD_MISSING)
|
||||
elseif(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC"
|
||||
AND CMAKE_${lang}${std}_STANDARD_COMPILE_OPTION MATCHES [[^-std:c\+*latest$]])
|
||||
target_compile_definitions(test_${lang}_STANDARD_${std} PRIVATE ${lang}_STD_LATEST)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endforeach()
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_11
|
||||
# error "CUDA_STANDARD 11 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD < CXX_STD_11
|
||||
# error "CUDA_STANDARD 11 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_14
|
||||
# error "CUDA_STANDARD 14 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_11
|
||||
# error "CUDA_STANDARD 14 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_17
|
||||
# error "CUDA_STANDARD 17 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_14
|
||||
# error "CUDA_STANDARD 17 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_20
|
||||
# error "CUDA_STANDARD 20 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_17
|
||||
# error "CUDA_STANDARD 20 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_23
|
||||
# error "CUDA_STANDARD 23 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_20
|
||||
# error "CUDA_STANDARD 23 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_23
|
||||
# error "CUDA_STANDARD 26 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,9 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_11 && !defined(CXX_STD_MISSING)
|
||||
# error "CXX_STANDARD 11 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD < CXX_STD_11 && \
|
||||
!(CXX_STD == CXX_STD_98 && \
|
||||
(defined(__IBMCPP__) && defined(_AIX) && __IBMCPP__ == 1610))
|
||||
# error "CXX_STANDARD 11 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,12 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_14
|
||||
# error "CXX_STANDARD 14 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_11 && \
|
||||
!(CXX_STD == CXX_STD_11 && \
|
||||
((defined(__GNUC__) && defined(__GNUC_MINOR__) && __GNUC__ == 4 && \
|
||||
__GNUC_MINOR__ <= 8 && !defined(__clang__) && \
|
||||
!defined(__INTEL_COMPILER) && !defined(__PGI)) || \
|
||||
(defined(__SUNPRO_CC) && __SUNPRO_CC < 0x5150)))
|
||||
# error "CXX_STANDARD 14 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_17
|
||||
# error "CXX_STANDARD 17 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_14
|
||||
# error "CXX_STANDARD 17 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_20
|
||||
# error "CXX_STANDARD 20 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_17
|
||||
# error "CXX_STANDARD 20 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_23 && !defined(CXX_STD_LATEST)
|
||||
# error "CXX_STANDARD 23 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_20
|
||||
# error "CXX_STANDARD 23 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_23
|
||||
# error "CXX_STANDARD 26 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD >= CXX_STD_11 && !defined(CXX_STD_MISSING)
|
||||
# error "CXX_STANDARD 98 honored as higher standard"
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "c_std.h"
|
||||
#if defined(C_STD) && C_STD > C_STD_11
|
||||
# error "C_STANDARD 11 honored as higher standard"
|
||||
#endif
|
||||
#if defined(C_STD) && C_STD <= C_STD_99 && \
|
||||
!(defined(__SUNPRO_C) && __SUNPRO_C < 0x5140 && C_STD == C_STD_99)
|
||||
# error "C_STANDARD 11 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "c_std.h"
|
||||
#if defined(C_STD) && C_STD > C_STD_17
|
||||
# error "C_STANDARD 17 honored as higher standard"
|
||||
#endif
|
||||
#if defined(C_STD) && C_STD <= C_STD_11
|
||||
# error "C_STANDARD 17 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,8 @@
|
||||
#include "c_std.h"
|
||||
#if defined(C_STD) && C_STD > C_STD_23 && !defined(C_STD_LATEST)
|
||||
# error "C_STANDARD 23 honored as higher standard"
|
||||
#endif
|
||||
#if defined(C_STD) && C_STD <= C_STD_17 && \
|
||||
!(C_STD == C_STD_17 && defined(__clang_major__) && __clang_major__ < 14)
|
||||
# error "C_STANDARD 23 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "c_std.h"
|
||||
#if defined(C_STD) && C_STD >= C_STD_99 && !defined(C_STD_MISSING)
|
||||
# error "C_STANDARD 90 honored as higher standard"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "c_std.h"
|
||||
#if defined(C_STD) && C_STD > C_STD_99 && !defined(C_STD_MISSING)
|
||||
# error "C_STANDARD 99 honored as higher standard"
|
||||
#endif
|
||||
#if defined(C_STD) && C_STD < C_STD_99
|
||||
# error "C_STANDARD 99 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_11
|
||||
# error "HIP_STANDARD 11 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD < CXX_STD_11
|
||||
# error "HIP_STANDARD 11 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_14
|
||||
# error "HIP_STANDARD 14 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_11
|
||||
# error "HIP_STANDARD 14 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_17
|
||||
# error "HIP_STANDARD 17 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_14
|
||||
# error "HIP_STANDARD 17 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_20
|
||||
# error "HIP_STANDARD 20 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_17
|
||||
# error "HIP_STANDARD 20 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,7 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD > CXX_STD_23
|
||||
# error "HIP_STANDARD 23 honored as higher standard"
|
||||
#endif
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_20
|
||||
# error "HIP_STANDARD 23 not honored"
|
||||
#endif
|
||||
@@ -0,0 +1,4 @@
|
||||
#include "cxx_std.h"
|
||||
#if defined(CXX_STD) && CXX_STD <= CXX_STD_23
|
||||
# error "HIP_STANDARD 26 not honored"
|
||||
#endif
|
||||
Reference in New Issue
Block a user