Tests/CXXModules: add tests for C++26 import std support

This commit is contained in:
Ben Boeckel 2024-05-01 23:08:06 -04:00
parent 6dad18f060
commit e89e819398
6 changed files with 52 additions and 0 deletions

View File

@ -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)

View File

@ -0,0 +1 @@
1

View File

@ -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.

View File

@ -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)

View File

@ -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)

View File

@ -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)