diff --git a/Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake b/Tests/RunCMake/CXXModules/NoCXX26TargetNotRequired.cmake new file mode 100644 index 0000000000..b91fa9b719 --- /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 0000000000..d00491fd7e --- /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 0000000000..8addcb2452 --- /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 0000000000..79dcb792e2 --- /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 0000000000..85108ff24a --- /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 1fbe498d90..28abf87ba5 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)