From 4ddf0453d5381ae2035994057c2d0c535e5e3443 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Wed, 6 Mar 2024 01:13:01 -0500 Subject: Tests/CXXModules: add a test using `TARGET_OBJECTS` from modules See: #25732 --- Tests/RunCMake/CXXModules/RunCMakeTest.cmake | 1 + .../examples/target-objects/CMakeLists.txt | 22 ++++++++++++++++++++++ .../examples/target-objects/importable.cxx | 13 +++++++++++++ .../CXXModules/examples/target-objects/main.cxx | 6 ++++++ 4 files changed, 42 insertions(+) create mode 100644 Tests/RunCMake/CXXModules/examples/target-objects/CMakeLists.txt create mode 100644 Tests/RunCMake/CXXModules/examples/target-objects/importable.cxx create mode 100644 Tests/RunCMake/CXXModules/examples/target-objects/main.cxx diff --git a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake index c2c00d2..14829a1 100644 --- a/Tests/RunCMake/CXXModules/RunCMakeTest.cmake +++ b/Tests/RunCMake/CXXModules/RunCMakeTest.cmake @@ -220,6 +220,7 @@ if ("named" IN_LIST CMake_TEST_MODULE_COMPILATION) unset(RunCMake_CXXModules_NO_TEST) run_cxx_module_test(same-src-name) run_cxx_module_test(scan_properties) + run_cxx_module_test(target-objects) endif () # Tests which require compile commands support. diff --git a/Tests/RunCMake/CXXModules/examples/target-objects/CMakeLists.txt b/Tests/RunCMake/CXXModules/examples/target-objects/CMakeLists.txt new file mode 100644 index 0000000..4f2f4a2 --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/target-objects/CMakeLists.txt @@ -0,0 +1,22 @@ +cmake_minimum_required(VERSION 3.28) +project(cxx_modules_target_objects CXX) + +include("${CMAKE_SOURCE_DIR}/../cxx-modules-rules.cmake") + +add_library(target_objects) +target_sources(target_objects + PRIVATE + FILE_SET CXX_MODULES + BASE_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}" + FILES + importable.cxx) +target_compile_features(target_objects PRIVATE cxx_std_20) + +add_executable(main) +target_sources(main + PRIVATE + main.cxx + "$") + +add_test(NAME main COMMAND main) diff --git a/Tests/RunCMake/CXXModules/examples/target-objects/importable.cxx b/Tests/RunCMake/CXXModules/examples/target-objects/importable.cxx new file mode 100644 index 0000000..1aee1a6 --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/target-objects/importable.cxx @@ -0,0 +1,13 @@ +export module importable; + +export int from_import() +{ + return 0; +} + +extern "C++" { +int f() +{ + return from_import(); +} +} diff --git a/Tests/RunCMake/CXXModules/examples/target-objects/main.cxx b/Tests/RunCMake/CXXModules/examples/target-objects/main.cxx new file mode 100644 index 0000000..a652ccf --- /dev/null +++ b/Tests/RunCMake/CXXModules/examples/target-objects/main.cxx @@ -0,0 +1,6 @@ +int f(); + +int main(int argc, char* argv[]) +{ + return f(); +} -- cgit v0.12