summaryrefslogtreecommitdiffstats
path: root/Tests/RunCMake/CXXModules
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2024-05-03 13:26:30 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-05-03 13:26:39 (GMT)
commit1027c0e213a2dc0175c5645fbd9f5989751fae63 (patch)
treeca79dc323c162214253a958ac7733d0528edd6c7 /Tests/RunCMake/CXXModules
parent1f7cf849c3a6355762f507a81081a6cc1de99ce2 (diff)
parente89e8193985730fcd7fae61e44bb8c9b3b5ee1af (diff)
downloadCMake-1027c0e213a2dc0175c5645fbd9f5989751fae63.zip
CMake-1027c0e213a2dc0175c5645fbd9f5989751fae63.tar.gz
CMake-1027c0e213a2dc0175c5645fbd9f5989751fae63.tar.bz2
Merge topic 'cxxmodules-no-import-std-reason'
e89e819398 Tests/CXXModules: add tests for C++26 `import std` support 6dad18f060 cxxmodules: give a reason for unavailability of `import std` Acked-by: Kitware Robot <kwrobot@kitware.com> Tested-by: buildbot <buildbot@kitware.com> Merge-request: !9486
Diffstat (limited to 'Tests/RunCMake/CXXModules')
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX23TargetRequired-stderr.txt7
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake11
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt1
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt9
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake11
-rw-r--r--Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake13
-rw-r--r--Tests/RunCMake/CXXModules/RunCMakeTest.cmake7
7 files changed, 58 insertions, 1 deletions
diff --git a/Tests/RunCMake/CXXModules/NoCXX23TargetRequired-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX23TargetRequired-stderr.txt
index 56468d0..e3d31c5 100644
--- a/Tests/RunCMake/CXXModules/NoCXX23TargetRequired-stderr.txt
+++ b/Tests/RunCMake/CXXModules/NoCXX23TargetRequired-stderr.txt
@@ -1,4 +1,9 @@
CMake Error in CMakeLists.txt:
The "CXX_MODULE_STD" property on the target "nocxx23target" requires that
the "__CMAKE::CXX23" target exist, but it was not provided by the
- toolchain.
+ toolchain. Reason:
+
+ (Toolchain does not support discovering `import std` support|Experimental `import std` support not enabled when detecting toolchain|Unsupported generator: [^\n]*)
+
+
+CMake Generate step failed. Build files cannot be regenerated correctly.
diff --git a/Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake b/Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake
new file mode 100644
index 0000000..b91fa9b
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake
@@ -0,0 +1,11 @@
+enable_language(CXX)
+set(CMAKE_CXX_SCANDEP_SOURCE "echo")
+
+set(CMAKE_CXX_MODULE_STD 0)
+
+add_library(nocxx26target)
+target_sources(nocxx26target
+ PRIVATE
+ FILE_SET fs TYPE CXX_MODULES FILES
+ sources/module.cxx)
+target_compile_features(nocxx26target PRIVATE cxx_std_26)
diff --git a/Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt b/Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt b/Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt
new file mode 100644
index 0000000..8addcb2
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt
@@ -0,0 +1,9 @@
+CMake Error in CMakeLists.txt:
+ The "CXX_MODULE_STD" property on the target "nocxx26target" requires that
+ the "__CMAKE::CXX26" target exist, but it was not provided by the
+ toolchain. Reason:
+
+ (Toolchain does not support discovering `import std` support|Experimental `import std` support not enabled when detecting toolchain|Unsupported generator: [^\n]*)
+
+
+CMake Generate step failed. Build files cannot be regenerated correctly.
diff --git a/Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake b/Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake
new file mode 100644
index 0000000..79dcb79
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake
@@ -0,0 +1,11 @@
+enable_language(CXX)
+set(CMAKE_CXX_SCANDEP_SOURCE "echo")
+
+set(CMAKE_CXX_MODULE_STD 1)
+
+add_library(nocxx26target)
+target_sources(nocxx26target
+ PRIVATE
+ FILE_SET fs TYPE CXX_MODULES FILES
+ sources/module.cxx)
+target_compile_features(nocxx26target PRIVATE cxx_std_26)
diff --git a/Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake b/Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake
new file mode 100644
index 0000000..85108ff
--- /dev/null
+++ b/Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake
@@ -0,0 +1,13 @@
+enable_language(CXX)
+set(CMAKE_CXX_SCANDEP_SOURCE "echo")
+
+# TODO(cxxmodules): Add instances of this test which test the policy
+# of the property's unset behavior.
+# set(CMAKE_CXX_MODULE_STD …)
+
+add_library(nocxx26target)
+target_sources(nocxx26target
+ PRIVATE
+ FILE_SET fs TYPE CXX_MODULES FILES
+ sources/module.cxx)
+target_compile_features(nocxx26target PRIVATE cxx_std_26)
diff --git a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake
index 8c76afc..8b7bc86 100644
--- a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake
@@ -97,6 +97,13 @@ if ("cxx_std_23" IN_LIST CMAKE_CXX_COMPILE_FEATURES AND
run_cmake(NoCXX23TargetRequired)
endif ()
+if ("cxx_std_26" IN_LIST CMAKE_CXX_COMPILE_FEATURES AND
+ NOT have_cxx26_import_std)
+ run_cmake(NoCXX26TargetUnset)
+ run_cmake(NoCXX26TargetNotRequired)
+ run_cmake(NoCXX26TargetRequired)
+endif ()
+
run_cmake(InstallBMI)
run_cmake(InstallBMIGenericArgs)
run_cmake(InstallBMIIgnore)