From e89e8193985730fcd7fae61e44bb8c9b3b5ee1af Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 1 May 2024 23:08:06 -0400 Subject: Tests/CXXModules: add tests for C++26 `import std` support --- Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake | 11 +++++++++++ Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt | 1 + Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt | 9 +++++++++ Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake | 11 +++++++++++ Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake | 13 +++++++++++++ Tests/RunCMake/CXXModules/RunCMakeTest.cmake | 7 +++++++ 6 files changed, 52 insertions(+) create mode 100644 Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake create mode 100644 Tests/RunCMake/CXXModules/NoCXX26TargetRequired-result.txt create mode 100644 Tests/RunCMake/CXXModules/NoCXX26TargetRequired-stderr.txt create mode 100644 Tests/RunCMake/CXXModules/NoCXX26TargetRequired.cmake create mode 100644 Tests/RunCMake/CXXModules/NoCXX26TargetUnset.cmake 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 1fbe498..28abf87 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) -- cgit v0.12