diff options
| author | ruki <[email protected]> | 2025-11-06 09:20:52 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-06 09:20:52 +0800 |
| commit | 169c7ddce5a07c82b5aa60fbc6fcb37e4593fb7d (patch) | |
| tree | 2f2b90ec77ff0cf6093f2e534e69d9e9eda116dc /xmake/rules/c++/modules | |
| parent | c5d08dcde1187fbf3903d51d63af8e15e28650c1 (diff) | |
| parent | ce723897432dad8d8f94ddf831e3a8d7db6e2700 (diff) | |
Merge pull request #6993 from Arthapz/fix-xmake_tests_modules
Fix xmake tests modules
Diffstat (limited to 'xmake/rules/c++/modules')
| -rw-r--r-- | xmake/rules/c++/modules/builder.lua | 11 | ||||
| -rw-r--r-- | xmake/rules/c++/modules/scanner.lua | 13 |
2 files changed, 11 insertions, 13 deletions
diff --git a/xmake/rules/c++/modules/builder.lua b/xmake/rules/c++/modules/builder.lua index a1c93a35f..87cd143f0 100644 --- a/xmake/rules/c++/modules/builder.lua +++ b/xmake/rules/c++/modules/builder.lua @@ -121,13 +121,15 @@ function _get_jobdeps(target, module, jobgraph, buildfilejob) return jobdeps end -function _get_saved_jobdeps_for(buildfilejob) +function _get_saved_jobdeps_for(jobgraph, buildfilejob) local memcache = support.memcache() local dependent_jobs = memcache:get2("dependent_jobs", buildfilejob) local jobdeps = {} for _, dependent_job in ipairs(dependent_jobs) do - jobdeps[dependent_job] = jobdeps[dependent_job] or {} - table.insert(jobdeps[dependent_job], buildfilejob) + if jobgraph:has(dependent_job) then + jobdeps[dependent_job] = jobdeps[dependent_job] or {} + table.insert(jobdeps[dependent_job], buildfilejob) + end end return jobdeps end @@ -266,7 +268,7 @@ function build_modules_for_jobgraph(target, jobgraph, built_modules) -- insert saved jobdeps for _, buildfilejob in ipairs(buildfilejobs) do - table.join2(jobdeps, _get_saved_jobdeps_for(buildfilejob)) + table.join2(jobdeps, _get_saved_jobdeps_for(jobgraph, buildfilejob)) end -- apply jobdeps @@ -756,4 +758,3 @@ function build_objectfiles(target, jobgraph, _, opt) profiler.leave(target:fullname(), "c++ modules", "builder", "objectfiles") end end - diff --git a/xmake/rules/c++/modules/scanner.lua b/xmake/rules/c++/modules/scanner.lua index 818e37aa2..3c7a04aa4 100644 --- a/xmake/rules/c++/modules/scanner.lua +++ b/xmake/rules/c++/modules/scanner.lua @@ -234,7 +234,6 @@ function _get_packages_for(target) for name, dep in pairs(target:orderdeps()) do local dep_packages = _get_packages_for(dep) for pkgname, package in pairs(dep_packages) do - -- print(package) packages[pkgname] = {pkg = package.pkg, from_dep = package.from_dep or dep, from_package = true} end end @@ -377,13 +376,13 @@ function _patch_sourcebatch(target, sourcebatch) local localcache = support.localcache() local reuse = target:policy("build.c++.modules.reuse") or - target:policy("build.c++.modules.tryreuse") + target:policy("build.c++.modules.tryreuse") local reused = {} for sourcefile, fileconfig in pairs(from_depmodules) do if reuse and fileconfig.from_dep then local nocheck = target:policy("build.c++.modules.reuse.nocheck") local strict = target:policy("build.c++.modules.reuse.strict") or - target:policy("build.c++.modules.tryreuse.discriminate_on_defines") + target:policy("build.c++.modules.tryreuse.discriminate_on_defines") local dep = target:dep(fileconfig.from_dep) assert(dep, "dep target <%s> for <%s> not found", fileconfig.from_dep, target:fullname()) local can_reuse = nocheck or _are_flags_compatible(target, dep, sourcefile, {strict = strict}) @@ -415,7 +414,7 @@ function _patch_sourcebatch(target, sourcebatch) end table.sort(sourcebatch.sourcefiles) - memcache:set2(target:fullname(), "cached_sourcebatch", sourcebatch) + memcache:set2(target:fullname(), "cached_sourcebatch", table.clone(sourcebatch)) local keys = #sourcebatch.sourcefiles > 0 and table.concat(sourcebatch.sourcefiles) or "_" local sum = hash.strhash64(keys) @@ -566,7 +565,7 @@ function _schedule_module_dependencies_scan(target, jobgraph, sourcebatch) modules[name].alias = true end end - end) + end) local reused, from = support.is_reused(target, sourcefile) if reused then local scanfilejob = get_scanfilejob_for(from, sourcefile) @@ -886,9 +885,7 @@ function after_scan(target) local sourcebatches = target:sourcebatches() local sourcebatch_builder = sourcebatches and sourcebatches["c++.build.modules.builder"] local sourcebatch_scanner = sourcebatches and sourcebatches["c++.build.modules.scanner"] - if sourcebatch_scanner then - sourcebatch_scanner.sourcefiles = {} - end + support.memcache():set2(target:fullname(), "jobdeps", nil) if sourcebatch_builder then sourcebatch_builder.sourcefiles = {} sourcebatch_builder.dependfiles = {} |
