diff options
author | Brad King <brad.king@kitware.com> | 2024-05-01 13:20:31 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2024-05-01 13:20:47 (GMT) |
commit | cab2a6634da09fe2eea3bbceb44a61335217ed05 (patch) | |
tree | 63cf70b566de66df382c006cb5cbb18b3a907b96 /Tests | |
parent | 39f7ad1cd083e365d99c5a1fb322774c08ac0d92 (diff) | |
parent | 7c38e6bb526ceb6a678497aaeb1e6076f7a38ba3 (diff) | |
download | CMake-cab2a6634da09fe2eea3bbceb44a61335217ed05.zip CMake-cab2a6634da09fe2eea3bbceb44a61335217ed05.tar.gz CMake-cab2a6634da09fe2eea3bbceb44a61335217ed05.tar.bz2 |
Merge topic 'lang-standard-latest'
7c38e6bb52 Add CMAKE_<LANG>_STANDARD_LATEST variables
fddb165c6c AppleClang: Fix Objective C 23 support detection
1dff17108d Modules: Fix ARMClang and TIClang language standard compile options
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !9314
Diffstat (limited to 'Tests')
22 files changed, 114 insertions, 0 deletions
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 9e85179..005bd17 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -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)$") diff --git a/Tests/RunCMake/LanguageStandards/CMakeLists.txt b/Tests/RunCMake/LanguageStandards/CMakeLists.txt new file mode 100644 index 0000000..94e43ba --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.29) +project(${RunCMake_TEST} NONE) +include(${RunCMake_TEST}.cmake) diff --git a/Tests/RunCMake/LanguageStandards/Inspect.cmake b/Tests/RunCMake/LanguageStandards/Inspect.cmake new file mode 100644 index 0000000..b0f2e60 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/Inspect.cmake @@ -0,0 +1,14 @@ +enable_language(C) +enable_language(CXX) + +set(info "") +foreach(var + CMAKE_C_STANDARD_DEFAULT + CMAKE_CXX_STANDARD_DEFAULT + ) + if(DEFINED ${var}) + string(APPEND info "set(${var} \"${${var}}\")\n") + endif() +endforeach() + +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/info.cmake" "${info}") diff --git a/Tests/RunCMake/LanguageStandards/RunCMakeTest.cmake b/Tests/RunCMake/LanguageStandards/RunCMakeTest.cmake new file mode 100644 index 0000000..bc9dfd4 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/RunCMakeTest.cmake @@ -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() diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-C-stdout.txt b/Tests/RunCMake/LanguageStandards/StdLatest-C-stdout.txt new file mode 100644 index 0000000..57aad4d --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-C-stdout.txt @@ -0,0 +1 @@ +-- CMAKE_C_STANDARD_LATEST='[0-9][0-9]' diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-C.c b/Tests/RunCMake/LanguageStandards/StdLatest-C.c new file mode 100644 index 0000000..8488f4e --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-C.c @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-C.cmake b/Tests/RunCMake/LanguageStandards/StdLatest-C.cmake new file mode 100644 index 0000000..54f5a19 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-C.cmake @@ -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}) diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-CUDA-stdout.txt b/Tests/RunCMake/LanguageStandards/StdLatest-CUDA-stdout.txt new file mode 100644 index 0000000..207541a --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-CUDA-stdout.txt @@ -0,0 +1 @@ +-- CMAKE_CUDA_STANDARD_LATEST='[0-9][0-9]' diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cmake b/Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cmake new file mode 100644 index 0000000..496abb0 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cmake @@ -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}) diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cu b/Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cu new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cu @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-CXX-stdout.txt b/Tests/RunCMake/LanguageStandards/StdLatest-CXX-stdout.txt new file mode 100644 index 0000000..db83723 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-CXX-stdout.txt @@ -0,0 +1 @@ +-- CMAKE_CXX_STANDARD_LATEST='[0-9][0-9]' diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-CXX.cmake b/Tests/RunCMake/LanguageStandards/StdLatest-CXX.cmake new file mode 100644 index 0000000..34aba55 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-CXX.cmake @@ -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}) diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-CXX.cxx b/Tests/RunCMake/LanguageStandards/StdLatest-CXX.cxx new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-CXX.cxx @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-HIP-stdout.txt b/Tests/RunCMake/LanguageStandards/StdLatest-HIP-stdout.txt new file mode 100644 index 0000000..681ea9e --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-HIP-stdout.txt @@ -0,0 +1 @@ +-- CMAKE_HIP_STANDARD_LATEST='[0-9][0-9]' diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-HIP.cmake b/Tests/RunCMake/LanguageStandards/StdLatest-HIP.cmake new file mode 100644 index 0000000..4eaa56c --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-HIP.cmake @@ -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}) diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-HIP.hip b/Tests/RunCMake/LanguageStandards/StdLatest-HIP.hip new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-HIP.hip @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-OBJC-stdout.txt b/Tests/RunCMake/LanguageStandards/StdLatest-OBJC-stdout.txt new file mode 100644 index 0000000..577c126 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-OBJC-stdout.txt @@ -0,0 +1 @@ +-- CMAKE_OBJC_STANDARD_LATEST='[0-9][0-9]' diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-OBJC.cmake b/Tests/RunCMake/LanguageStandards/StdLatest-OBJC.cmake new file mode 100644 index 0000000..6d05ab6 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-OBJC.cmake @@ -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}") diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-OBJC.m b/Tests/RunCMake/LanguageStandards/StdLatest-OBJC.m new file mode 100644 index 0000000..8488f4e --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-OBJC.m @@ -0,0 +1,4 @@ +int main(void) +{ + return 0; +} diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX-stdout.txt b/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX-stdout.txt new file mode 100644 index 0000000..0c5567b --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX-stdout.txt @@ -0,0 +1 @@ +-- CMAKE_OBJCXX_STANDARD_LATEST='[0-9][0-9]' diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.cmake b/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.cmake new file mode 100644 index 0000000..c7418d0 --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.cmake @@ -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}") diff --git a/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.mm b/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.mm new file mode 100644 index 0000000..f8b643a --- /dev/null +++ b/Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.mm @@ -0,0 +1,4 @@ +int main() +{ + return 0; +} |