diff options
| author | Arthur LAURENT <[email protected]> | 2025-05-05 17:13:25 +0200 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2025-05-09 15:56:33 +0200 |
| commit | 5d6d36e0db45d90dfa7f0cdf2937d989de683833 (patch) | |
| tree | 2d1fbb82ee8d38921af1863fd3ce968f7c5cea75 /xmake/rules/c++/modules/xmake.lua | |
| parent | d88bd9c5ace6c64981420569fb886f7c646135c0 (diff) | |
(C++ module support) improve jobgraph support
Diffstat (limited to 'xmake/rules/c++/modules/xmake.lua')
| -rw-r--r-- | xmake/rules/c++/modules/xmake.lua | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/xmake/rules/c++/modules/xmake.lua b/xmake/rules/c++/modules/xmake.lua index c1b48ed41..64de8e017 100644 --- a/xmake/rules/c++/modules/xmake.lua +++ b/xmake/rules/c++/modules/xmake.lua @@ -21,36 +21,52 @@ -- define rule: c++.build.modules rule("c++.build.modules") - -- @note common.contains_modules() need it + -- @note support.contains_modules() need it set_extensions(".cppm", ".ccm", ".cxxm", ".c++m", ".mpp", ".mxx", ".ixx") - add_deps("c++.build.modules.builder") - add_deps("c++.build.modules.install") + add_deps("c++.build.modules.scanner", + "c++.build.modules.builder", + "c++.build.modules.install") on_config("config") --- build modules -rule("c++.build.modules.builder") + -- insert std modules early to enable culling them if unused + after_config("config.insert_stdmodules") + +-- scan modules +rule("c++.build.modules.scanner") set_sourcekinds("cxx") set_extensions(".mpp", ".mxx", ".cppm", ".ixx") -- generate module dependencies on_prepare_files("scanner", {jobgraph = true}) + -- insert objectfiles + after_prepare_files("scanner.after_scan") + +-- build modules +rule("c++.build.modules.builder") + set_sourcekinds("cxx") + set_extensions(".mpp", ".mxx", ".cppm", ".ixx") + + add_orders("c++.build.modules.scanner", "c++.build.modules.builder") + -- parallel build support to accelerate `xmake build` to build modules - before_build_files("builder", {jobgraph = true, batch = true}) + before_build_files("builder.build_bmis", {jobgraph = true, batch = true}) + + on_build_files("builder.build_objectfiles", {jobgraph = true, batch = true}) -- serial compilation only, usually used to support project generator - before_buildcmd_files("builder") + before_buildcmd_files("builder.build_bmis") + + on_buildcmd_files("builder.build_objectfiles") - after_clean(function (target) - import("builder.clean") - end) + after_clean("builder.clean") -- install modules rule("c++.build.modules.install") set_extensions(".mpp", ".mxx", ".cppm", ".ixx") - before_install("builder.install") + before_install("install.install") - before_uninstall("builder.uninstall") + before_uninstall("install.uninstall") |
