From 64548fef160f2daf4489caf17bc5cd79fdc802aa Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 26 Feb 2024 17:38:24 -0500 Subject: Tests/CXXModules: test using targets that import `std` --- Tests/RunCMake/CXXModules/RunCMakeTest.cmake | 6 ++++++ .../examples/import-std-transitive/CMakeLists.txt | 25 ++++++++++++++++++++++ .../examples/import-std-transitive/main.cxx | 6 ++++++ 3 files changed, 37 insertions(+) create mode 100644 Tests/RunCMake/CXXModules/examples/import-std-transitive/CMakeLists.txt create mode 100644 Tests/RunCMake/CXXModules/examples/import-std-transitive/main.cxx diff --git a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake index 725ff2f..94e380d 100644 --- a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake +++ b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake @@ -250,10 +250,16 @@ if ("named" IN_LIST CMake_TEST_MODULE_COMPILATION) if ("collation" IN_LIST CMake_TEST_MODULE_COMPILATION) run_cxx_module_test(import-std-not-in-export-build) + run_cxx_module_test(import-std-transitive import-std-transitive-not-in-export-build "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/import-std-not-in-export-build-build") set(RunCMake_CXXModules_INSTALL 1) run_cxx_module_test(import-std-not-in-export-install) unset(RunCMake_CXXModules_INSTALL) + run_cxx_module_test(import-std-transitive import-std-transitive-not-in-export-install "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/import-std-not-in-export-install-install") + + run_cxx_module_test(import-std-transitive import-std-transitive-export-no-std-build "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/import-std-export-no-std-build-build" -DEXPORT_NO_STD=1) + run_cxx_module_test(import-std-transitive import-std-transitive-export-no-std-install "-DCMAKE_PREFIX_PATH=${RunCMake_BINARY_DIR}/examples/import-std-export-no-std-install-install" -DEXPORT_NO_STD=1) + endif () endif () endif () diff --git a/Tests/RunCMake/CXXModules/examples/import-std-transitive/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/import-std-transitive/CMakeLists.txt new file mode 100644 index 0000000..526298c --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/import-std-transitive/CMakeLists.txt @@ -0,0 +1,25 @@ +cmake_minimum_required(VERSION 3.29) + +if (EXPORT_NO_STD) + # Block making C++ `import std` targets. + add_library(__CMAKE::CXX23 IMPORTED INTERFACE) +endif () + +project(cxx_modules_import_std_transitive CXX) + +include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake") + +if (EXPORT_NO_STD) + set(package "import_std_export_no_std") +else () + set(package "import_std_not_in_export") +endif () +find_package("${package}" REQUIRED) + +set(CMAKE_CXX_MODULE_STD 0) + +add_executable(main + main.cxx) +target_link_libraries(main PRIVATE "CXXModules::${package}") + +add_test(NAME main COMMAND main) diff --git a/Tests/RunCMake/CXXModules/examples/import-std-transitive/main.cxx b/Tests/RunCMake/CXXModules/examples/import-std-transitive/main.cxx new file mode 100644 index 0000000..a6dd8d8 --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/import-std-transitive/main.cxx @@ -0,0 +1,6 @@ +import uses_std; + +int main(int argc, char* argv[]) +{ + return f(); +} -- cgit v0.12