From 58cd9ee03c42531de652d7687e17eead8b42de0b Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 2 Apr 2024 16:50:51 -0400 Subject: Tests/CompileFeatures: Factor out headers to compute C and C++ standard levels --- Tests/CompileFeatures/c_std.h | 8 +++++ Tests/CompileFeatures/cxx_std.h | 50 +++++++++++++++++++++++++++++ Tests/CompileFeatures/default_dialect.c | 9 +----- Tests/CompileFeatures/default_dialect.cpp | 52 +------------------------------ 4 files changed, 60 insertions(+), 59 deletions(-) create mode 100644 Tests/CompileFeatures/c_std.h create mode 100644 Tests/CompileFeatures/cxx_std.h diff --git a/Tests/CompileFeatures/c_std.h b/Tests/CompileFeatures/c_std.h new file mode 100644 index 0000000..afe0308 --- /dev/null +++ b/Tests/CompileFeatures/c_std.h @@ -0,0 +1,8 @@ +#define C_STD_99 199901L +#define C_STD_11 201112L +#define C_STD_17 201710L +#define C_STD_23 202311L + +#ifdef __STDC_VERSION__ +# define C_STD __STDC_VERSION__ +#endif diff --git a/Tests/CompileFeatures/cxx_std.h b/Tests/CompileFeatures/cxx_std.h new file mode 100644 index 0000000..1fc8579 --- /dev/null +++ b/Tests/CompileFeatures/cxx_std.h @@ -0,0 +1,50 @@ +#define CXX_STD_98 199711L +#define CXX_STD_11 201103L +#define CXX_STD_14 201402L +#define CXX_STD_17 201703L +#define CXX_STD_20 202002L +#define CXX_STD_23 202302L + +#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) +# if _MSVC_LANG > CXX_STD_17 +# define CXX_STD _MSVC_LANG +# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 +# define CXX_STD CXX_STD_20 +# elif _MSVC_LANG > CXX_STD_14 +# define CXX_STD CXX_STD_17 +# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# elif defined(__INTEL_CXX11_MODE__) +# define CXX_STD CXX_STD_11 +# else +# define CXX_STD CXX_STD_98 +# endif +#elif defined(_MSC_VER) && defined(_MSVC_LANG) +# define CXX_STD _MSVC_LANG +#elif defined(__NVCOMPILER) +# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) +# define CXX_STD CXX_STD_20 +# else +# define CXX_STD __cplusplus +# endif +#elif defined(__INTEL_COMPILER) || defined(__PGI) +# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) +# define CXX_STD CXX_STD_17 +# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) +# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) +# define CXX_STD CXX_STD_14 +# else +# define CXX_STD __cplusplus +# endif +#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) +# define CXX_STD CXX_STD_11 +#else +# define CXX_STD __cplusplus +#endif diff --git a/Tests/CompileFeatures/default_dialect.c b/Tests/CompileFeatures/default_dialect.c index f1aa78f..4cd4ca0 100644 --- a/Tests/CompileFeatures/default_dialect.c +++ b/Tests/CompileFeatures/default_dialect.c @@ -1,11 +1,4 @@ -#define C_STD_99 199901L -#define C_STD_11 201112L -#define C_STD_17 201710L -#define C_STD_23 202311L - -#ifdef __STDC_VERSION__ -# define C_STD __STDC_VERSION__ -#endif +#include "c_std.h" #if DEFAULT_C23 # if C_STD <= C_STD_17 diff --git a/Tests/CompileFeatures/default_dialect.cpp b/Tests/CompileFeatures/default_dialect.cpp index f9b770b..c0cc1b6 100644 --- a/Tests/CompileFeatures/default_dialect.cpp +++ b/Tests/CompileFeatures/default_dialect.cpp @@ -1,58 +1,8 @@ +#include "cxx_std.h" template struct Outputter; -#define CXX_STD_98 199711L -#define CXX_STD_11 201103L -#define CXX_STD_14 201402L -#define CXX_STD_17 201703L -#define CXX_STD_20 202002L -#define CXX_STD_23 202302L - -#if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) -# if _MSVC_LANG > CXX_STD_17 -# define CXX_STD _MSVC_LANG -# elif _MSVC_LANG == CXX_STD_17 && defined(__cpp_aggregate_paren_init) -# define CXX_STD CXX_STD_20 -# elif _MSVC_LANG > CXX_STD_14 && __cplusplus > CXX_STD_17 -# define CXX_STD CXX_STD_20 -# elif _MSVC_LANG > CXX_STD_14 -# define CXX_STD CXX_STD_17 -# elif defined(__INTEL_CXX11_MODE__) && defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# elif defined(__INTEL_CXX11_MODE__) -# define CXX_STD CXX_STD_11 -# else -# define CXX_STD CXX_STD_98 -# endif -#elif defined(_MSC_VER) && defined(_MSVC_LANG) -# define CXX_STD _MSVC_LANG -#elif defined(__NVCOMPILER) -# if __cplusplus == CXX_STD_17 && defined(__cpp_aggregate_paren_init) -# define CXX_STD CXX_STD_20 -# else -# define CXX_STD __cplusplus -# endif -#elif defined(__INTEL_COMPILER) || defined(__PGI) -# if __cplusplus == CXX_STD_11 && defined(__cpp_namespace_attributes) -# define CXX_STD CXX_STD_17 -# elif __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# else -# define CXX_STD __cplusplus -# endif -#elif (defined(__IBMCPP__) || defined(__ibmxl__)) && defined(__linux__) -# if __cplusplus == CXX_STD_11 && defined(__cpp_aggregate_nsdmi) -# define CXX_STD CXX_STD_14 -# else -# define CXX_STD __cplusplus -# endif -#elif __cplusplus == 1 && defined(__GXX_EXPERIMENTAL_CXX0X__) -# define CXX_STD CXX_STD_11 -#else -# define CXX_STD __cplusplus -#endif - #if DEFAULT_CXX23 # if CXX_STD <= CXX_STD_20 Outputter o; -- cgit v0.12 From c37e2790145d0b304f2072bee3d5206ecb12eafc Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 2 Apr 2024 16:06:53 -0400 Subject: Tests/CompileFeatures: Cover c_std_## and cxx_std_## meta-features --- Tests/CompileFeatures/CMakeLists.txt | 12 ++++++++++++ Tests/CompileFeatures/c_std_11.c | 5 +++++ Tests/CompileFeatures/c_std_17.c | 4 ++++ Tests/CompileFeatures/c_std_23.c | 6 ++++++ Tests/CompileFeatures/c_std_90.c | 0 Tests/CompileFeatures/c_std_99.c | 4 ++++ Tests/CompileFeatures/cxx_std_11.cpp | 6 ++++++ Tests/CompileFeatures/cxx_std_14.cpp | 9 +++++++++ Tests/CompileFeatures/cxx_std_17.cpp | 4 ++++ Tests/CompileFeatures/cxx_std_20.cpp | 4 ++++ Tests/CompileFeatures/cxx_std_23.cpp | 4 ++++ Tests/CompileFeatures/cxx_std_98.cpp | 0 12 files changed, 58 insertions(+) create mode 100644 Tests/CompileFeatures/c_std_11.c create mode 100644 Tests/CompileFeatures/c_std_17.c create mode 100644 Tests/CompileFeatures/c_std_23.c create mode 100644 Tests/CompileFeatures/c_std_90.c create mode 100644 Tests/CompileFeatures/c_std_99.c create mode 100644 Tests/CompileFeatures/cxx_std_11.cpp create mode 100644 Tests/CompileFeatures/cxx_std_14.cpp create mode 100644 Tests/CompileFeatures/cxx_std_17.cpp create mode 100644 Tests/CompileFeatures/cxx_std_20.cpp create mode 100644 Tests/CompileFeatures/cxx_std_23.cpp create mode 100644 Tests/CompileFeatures/cxx_std_98.cpp diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index d9bb447..844c33e 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -6,6 +6,18 @@ project(CompileFeatures) set(ext_C c) set(ext_CXX cpp) +set(std_C 90 99 11 17 23) +set(std_CXX 98 11 14 17 20 23) + +foreach(lang C CXX) + foreach(std IN LISTS std_${lang}) + string(TOLOWER "${lang}_std_${std}" feature) + if(CMAKE_${lang}${std}_STANDARD_COMPILE_OPTION) + add_library(test_${feature} OBJECT ${feature}.${ext_${lang}}) + target_compile_features(test_${feature} PRIVATE ${feature}) + endif() + endforeach() +endforeach() macro(run_test feature lang) if (${feature} IN_LIST CMAKE_${lang}_COMPILE_FEATURES) diff --git a/Tests/CompileFeatures/c_std_11.c b/Tests/CompileFeatures/c_std_11.c new file mode 100644 index 0000000..2938c17 --- /dev/null +++ b/Tests/CompileFeatures/c_std_11.c @@ -0,0 +1,5 @@ +#include "c_std.h" +#if defined(C_STD) && C_STD <= C_STD_99 && \ + !(defined(__SUNPRO_C) && __SUNPRO_C < 0x5140 && C_STD == C_STD_99) +# error "c_std_11 not honored" +#endif diff --git a/Tests/CompileFeatures/c_std_17.c b/Tests/CompileFeatures/c_std_17.c new file mode 100644 index 0000000..938cba4 --- /dev/null +++ b/Tests/CompileFeatures/c_std_17.c @@ -0,0 +1,4 @@ +#include "c_std.h" +#if defined(C_STD) && C_STD <= C_STD_11 +# error "c_std_17 not honored" +#endif diff --git a/Tests/CompileFeatures/c_std_23.c b/Tests/CompileFeatures/c_std_23.c new file mode 100644 index 0000000..6073b552 --- /dev/null +++ b/Tests/CompileFeatures/c_std_23.c @@ -0,0 +1,6 @@ +#include "c_std.h" +#if defined(C_STD) && C_STD <= C_STD_17 && \ + !(C_STD == C_STD_17 && defined(__apple_build_version__) && \ + defined(__clang_major__) && __clang_major__ < 14) +# error "c_std_23 not honored" +#endif diff --git a/Tests/CompileFeatures/c_std_90.c b/Tests/CompileFeatures/c_std_90.c new file mode 100644 index 0000000..e69de29 diff --git a/Tests/CompileFeatures/c_std_99.c b/Tests/CompileFeatures/c_std_99.c new file mode 100644 index 0000000..20b6372 --- /dev/null +++ b/Tests/CompileFeatures/c_std_99.c @@ -0,0 +1,4 @@ +#include "c_std.h" +#if defined(C_STD) && C_STD < C_STD_99 +# error "c_std_99 not honored" +#endif diff --git a/Tests/CompileFeatures/cxx_std_11.cpp b/Tests/CompileFeatures/cxx_std_11.cpp new file mode 100644 index 0000000..aa85cdb --- /dev/null +++ b/Tests/CompileFeatures/cxx_std_11.cpp @@ -0,0 +1,6 @@ +#include "cxx_std.h" +#if defined(CXX_STD) && CXX_STD < CXX_STD_11 && \ + !(CXX_STD == CXX_STD_98 && \ + (defined(__IBMCPP__) && defined(_AIX) && __IBMCPP__ == 1610)) +# error "cxx_std_11 not honored" +#endif diff --git a/Tests/CompileFeatures/cxx_std_14.cpp b/Tests/CompileFeatures/cxx_std_14.cpp new file mode 100644 index 0000000..dabd2ee --- /dev/null +++ b/Tests/CompileFeatures/cxx_std_14.cpp @@ -0,0 +1,9 @@ +#include "cxx_std.h" +#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_std_14 not honored" +#endif diff --git a/Tests/CompileFeatures/cxx_std_17.cpp b/Tests/CompileFeatures/cxx_std_17.cpp new file mode 100644 index 0000000..3ca6bbe --- /dev/null +++ b/Tests/CompileFeatures/cxx_std_17.cpp @@ -0,0 +1,4 @@ +#include "cxx_std.h" +#if defined(CXX_STD) && CXX_STD <= CXX_STD_14 +# error "cxx_std_17 not honored" +#endif diff --git a/Tests/CompileFeatures/cxx_std_20.cpp b/Tests/CompileFeatures/cxx_std_20.cpp new file mode 100644 index 0000000..35f5ac1 --- /dev/null +++ b/Tests/CompileFeatures/cxx_std_20.cpp @@ -0,0 +1,4 @@ +#include "cxx_std.h" +#if defined(CXX_STD) && CXX_STD <= CXX_STD_17 +# error "cxx_std_20 not honored" +#endif diff --git a/Tests/CompileFeatures/cxx_std_23.cpp b/Tests/CompileFeatures/cxx_std_23.cpp new file mode 100644 index 0000000..020578d --- /dev/null +++ b/Tests/CompileFeatures/cxx_std_23.cpp @@ -0,0 +1,4 @@ +#include "cxx_std.h" +#if defined(CXX_STD) && CXX_STD <= CXX_STD_20 +# error "cxx_std_23 not honored" +#endif diff --git a/Tests/CompileFeatures/cxx_std_98.cpp b/Tests/CompileFeatures/cxx_std_98.cpp new file mode 100644 index 0000000..e69de29 -- cgit v0.12 From 31acc90abe7c5e97784a7c219ff50ac814d0a1fd Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 2 Apr 2024 16:36:15 -0400 Subject: ci: Record expected C and CXX language standard support Explicitly enable standard levels in the `CompileFeatures` test that are expected to work in each job regardless of whether compiler inspection detects support. --- .gitlab/ci/configure_debian12_aarch64_ninja.cmake | 3 +++ .gitlab/ci/configure_debian12_makefiles_clang.cmake | 3 +++ .gitlab/ci/configure_debian12_ninja_common.cmake | 3 +++ .gitlab/ci/configure_fedora39_makefiles.cmake | 3 +++ .gitlab/ci/configure_macos_arm64_ninja.cmake | 4 ++++ .gitlab/ci/configure_macos_x86_64_ninja.cmake | 3 +++ .gitlab/ci/configure_windows_clang_common.cmake | 9 +++++++++ .gitlab/ci/configure_windows_vs2022_x64_ninja.cmake | 3 +++ Tests/CMakeLists.txt | 8 ++++++++ Tests/CompileFeatures/CMakeLists.txt | 3 ++- 10 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.gitlab/ci/configure_debian12_aarch64_ninja.cmake b/.gitlab/ci/configure_debian12_aarch64_ninja.cmake index cdfd461..0e2c991 100644 --- a/.gitlab/ci/configure_debian12_aarch64_ninja.cmake +++ b/.gitlab/ci/configure_debian12_aarch64_ninja.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + set(CMake_TEST_CTestUpdate_BZR "ON" CACHE BOOL "") set(CMake_TEST_CTestUpdate_CVS "ON" CACHE BOOL "") set(CMake_TEST_CTestUpdate_GIT "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_debian12_makefiles_clang.cmake b/.gitlab/ci/configure_debian12_makefiles_clang.cmake index 69f1e7c..7cba6f3 100644 --- a/.gitlab/ci/configure_debian12_makefiles_clang.cmake +++ b/.gitlab/ci/configure_debian12_makefiles_clang.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_TICLANG_TOOLCHAINS "$ENV{CI_PROJECT_DIR}/.gitlab/ticlang" CACHE PATH "") endif() diff --git a/.gitlab/ci/configure_debian12_ninja_common.cmake b/.gitlab/ci/configure_debian12_ninja_common.cmake index 8cebd01..af260ee 100644 --- a/.gitlab/ci/configure_debian12_ninja_common.cmake +++ b/.gitlab/ci/configure_debian12_ninja_common.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + set(CMake_TEST_CTestUpdate_BZR "ON" CACHE BOOL "") set(CMake_TEST_CTestUpdate_CVS "ON" CACHE BOOL "") set(CMake_TEST_CTestUpdate_GIT "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_fedora39_makefiles.cmake b/.gitlab/ci/configure_fedora39_makefiles.cmake index 9cee918..39fe642 100644 --- a/.gitlab/ci/configure_fedora39_makefiles.cmake +++ b/.gitlab/ci/configure_fedora39_makefiles.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + set(CMake_TEST_CTestUpdate_BZR "ON" CACHE BOOL "") set(CMake_TEST_CTestUpdate_GIT "ON" CACHE BOOL "") set(CMake_TEST_CTestUpdate_HG "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_macos_arm64_ninja.cmake b/.gitlab/ci/configure_macos_arm64_ninja.cmake index a0a309e..672f5d4 100644 --- a/.gitlab/ci/configure_macos_arm64_ninja.cmake +++ b/.gitlab/ci/configure_macos_arm64_ninja.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + set(CMake_TEST_FindOpenAL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") @@ -5,5 +8,6 @@ set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") set(CMake_TEST_TLS_VERSION "1.3" CACHE STRING "") + include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_macos_x86_64_ninja.cmake b/.gitlab/ci/configure_macos_x86_64_ninja.cmake index f0bf1c0..8fdaba8 100644 --- a/.gitlab/ci/configure_macos_x86_64_ninja.cmake +++ b/.gitlab/ci/configure_macos_x86_64_ninja.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + set(CMake_TEST_FindOpenAL "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_windows_clang_common.cmake b/.gitlab/ci/configure_windows_clang_common.cmake index 3d93aae..8bef0d9 100644 --- a/.gitlab/ci/configure_windows_clang_common.cmake +++ b/.gitlab/ci/configure_windows_clang_common.cmake @@ -1,3 +1,12 @@ +if("$ENV{CMAKE_CI_BUILD_NAME}" MATCHES "(^|_)gnu(_|$)") + set(CMake_TEST_C_STANDARDS "90;99;11;17;23" CACHE STRING "") + set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") +else() + # FIXME: Implement C23 and C++23 support for clang-cl. + set(CMake_TEST_C_STANDARDS "90;99;11;17" CACHE STRING "") + set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20" CACHE STRING "") +endif() + set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") diff --git a/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake index 7321e10..e449d80 100644 --- a/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake +++ b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake @@ -1,3 +1,6 @@ +set(CMake_TEST_C_STANDARDS "90;99;11;17" CACHE STRING "") +set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "") + if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_CPACK_INNOSETUP "ON" CACHE STRING "") set(CMake_TEST_ISPC "ON" CACHE STRING "") diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 96beecc..bcf9254 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -392,7 +392,15 @@ if(BUILD_TESTING) ADD_TEST_MACRO(TryCompile TryCompile) ADD_TEST_MACRO(SystemInformation SystemInformation) ADD_TEST_MACRO(MathTest MathTest) + + string(REPLACE ";" "$" TEST_STDS_C "${CMake_TEST_C_STANDARDS}") + string(REPLACE ";" "$" TEST_STDS_CXX "${CMake_TEST_CXX_STANDARDS}") + set(CompileFeatures_BUILD_OPTIONS + -DCMake_TEST_C_STANDARDS=${TEST_STDS_C} + -DCMake_TEST_CXX_STANDARDS=${TEST_STDS_CXX} + ) ADD_TEST_MACRO(CompileFeatures CompileFeatures) + ADD_TEST_MACRO(CMakeCommands.target_compile_features) if(CMake_TEST_RESOURCES) diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index 844c33e..a33fad3 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -12,7 +12,8 @@ set(std_CXX 98 11 14 17 20 23) foreach(lang C CXX) foreach(std IN LISTS std_${lang}) string(TOLOWER "${lang}_std_${std}" feature) - if(CMAKE_${lang}${std}_STANDARD_COMPILE_OPTION) + if("${std}" IN_LIST CMake_TEST_${lang}_STANDARDS + OR CMAKE_${lang}${std}_STANDARD_COMPILE_OPTION) add_library(test_${feature} OBJECT ${feature}.${ext_${lang}}) target_compile_features(test_${feature} PRIVATE ${feature}) endif() -- cgit v0.12