summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/scanner.lua
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2025-05-10 22:07:13 +0200
committerArthur LAURENT <[email protected]>2025-05-10 22:07:13 +0200
commit8149a35e80a5ec233956cdb02a93e0a4b62855a0 (patch)
tree658d278fc22a84ef242d75285075907300fa51f7 /xmake/rules/c++/modules/scanner.lua
parentfdc7b4ee8cec6f9164f0a42f1d2c5c0b44f2025f (diff)
(C++ modules support) fix modules not saved in cache if missing dependencies
Diffstat (limited to 'xmake/rules/c++/modules/scanner.lua')
-rw-r--r--xmake/rules/c++/modules/scanner.lua9
1 files changed, 5 insertions, 4 deletions
diff --git a/xmake/rules/c++/modules/scanner.lua b/xmake/rules/c++/modules/scanner.lua
index da15e9177..efbaa20c3 100644
--- a/xmake/rules/c++/modules/scanner.lua
+++ b/xmake/rules/c++/modules/scanner.lua
@@ -391,6 +391,8 @@ function _do_parse(target, sourcebatch)
local moduleinfos = support.load_moduleinfos(target, sourcebatch)
modules = _parse_dependencies_data(target, moduleinfos)
local localcache = support.localcache()
+ localcache:set2(target:fullname(), "c++.modules", modules)
+ localcache:save()
mapper.feed(target, modules, sourcebatch.sourcefiles)
@@ -408,13 +410,11 @@ function _do_parse(target, sourcebatch)
end
end
end
- localcache:set2(target:fullname(), "c++.modules", modules)
- localcache:save()
else
modules = get_modules(target)
end
- -- steal from c++.build sourcebatch named modules
+ -- steal from c++.build sourcebatch named modules with cpp extensions
local cxx_sourcebatch = target:sourcebatches()["c++.build"]
if cxx_sourcebatch then
cxx_sourcebatch.sourcefiles = {}
@@ -771,7 +771,8 @@ function after_scan(target)
local sourcebatch_scanner = target:sourcebatches()["c++.build.modules.scanner"]
local sourcebatch_builder = target:sourcebatches()["c++.build.modules.builder"]
if target:data("cxx.has_modules") and not target:is_moduleonly() then
- local _, _, objectfiles = sort_modules_by_dependencies(target, get_modules(target), {jobgraph = target:policy("build.jobgraph")})
+ local modules = get_modules(target)
+ local _, _, objectfiles = sort_modules_by_dependencies(target, modules, {jobgraph = target:policy("build.jobgraph")})
sourcebatch_scanner.objectfiles = objectfiles
sourcebatch_builder.objectfiles = objectfiles
elseif sourcebatch_scanner then