summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-05-01 13:20:31 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-05-01 13:20:47 (GMT)
commitcab2a6634da09fe2eea3bbceb44a61335217ed05 (patch)
tree63cf70b566de66df382c006cb5cbb18b3a907b96 /Tests
parent39f7ad1cd083e365d99c5a1fb322774c08ac0d92 (diff)
parent7c38e6bb526ceb6a678497aaeb1e6076f7a38ba3 (diff)
downloadCMake-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')
-rw-r--r--Tests/RunCMake/CMakeLists.txt10
-rw-r--r--Tests/RunCMake/LanguageStandards/CMakeLists.txt3
-rw-r--r--Tests/RunCMake/LanguageStandards/Inspect.cmake14
-rw-r--r--Tests/RunCMake/LanguageStandards/RunCMakeTest.cmake32
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-C-stdout.txt1
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-C.c4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-C.cmake4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-CUDA-stdout.txt1
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cmake4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-CUDA.cu4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-CXX-stdout.txt1
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-CXX.cmake5
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-CXX.cxx4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-HIP-stdout.txt1
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-HIP.cmake4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-HIP.hip4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-OBJC-stdout.txt1
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-OBJC.cmake4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-OBJC.m4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX-stdout.txt1
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.cmake4
-rw-r--r--Tests/RunCMake/LanguageStandards/StdLatest-OBJCXX.mm4
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;
+}