summaryrefslogtreecommitdiff
path: root/xmake/rules/c++/modules/build_modules/clang.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-04-03 13:40:24 +0800
committerruki <[email protected]>2022-04-03 13:40:24 +0800
commitcd159c7c62fb2746f85484fa813628598d068072 (patch)
treec2f5ff7bc12550f9650890080826b46f542a1ff1 /xmake/rules/c++/modules/build_modules/clang.lua
parentfa972ccbdda55a44ae8f245f727e410fc9e179e9 (diff)
improve c++ modules and jobpool
Diffstat (limited to 'xmake/rules/c++/modules/build_modules/clang.lua')
-rw-r--r--xmake/rules/c++/modules/build_modules/clang.lua22
1 files changed, 5 insertions, 17 deletions
diff --git a/xmake/rules/c++/modules/build_modules/clang.lua b/xmake/rules/c++/modules/build_modules/clang.lua
index 5a7b108ac..b62f2d269 100644
--- a/xmake/rules/c++/modules/build_modules/clang.lua
+++ b/xmake/rules/c++/modules/build_modules/clang.lua
@@ -74,10 +74,7 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt)
end
-- load moduledeps
- local moduledeps = module_parser.load(target, sourcebatch, opt)
-
- -- build moduledeps
- local moduledeps_files = module_parser.build(moduledeps)
+ local moduledeps, moduledeps_files = module_parser.load(target, sourcebatch, opt)
-- compile module files to object files
local count = 0
@@ -85,15 +82,15 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt)
local sourcefiles_total = #sourcebatch.sourcefiles
for i = 1, sourcefiles_total do
local sourcefile = sourcebatch.sourcefiles[i]
- local moduledep = moduledeps_files[sourcefile] or {}
+ local moduleinfo = moduledeps_files[sourcefile] or {}
-- make module file path, @note we need process submodule name, e.g. module.submodule.mpp -> module.submodule.pcm
-- @see https://github.com/xmake-io/xmake/pull/1982
- local modulefile = path.join(cachedir, (moduledep.name or path.basename(sourcefile)) .. ".pcm")
+ local modulefile = path.join(cachedir, (moduleinfo.name or path.basename(sourcefile)) .. ".pcm")
table.insert(modulefiles, modulefile)
-- make build job
- moduledep.job = batchjobs:newjob(sourcefile, function (index, total)
+ moduleinfo.job = batchjobs:newjob(sourcefile, function (index, total)
-- compile module files to *.pcm
local opt2 = table.join(opt, {configs = {force = {cxxflags = {modulesflag,
@@ -128,14 +125,5 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt)
end
-- build batchjobs
- local rootjob = opt.rootjob
- for _, moduledep in pairs(moduledeps) do
- if moduledep.parents then
- for _, parent in ipairs(moduledep.parents) do
- batchjobs:add(moduledep.job, parent.job)
- end
- else
- batchjobs:add(moduledep.job, rootjob)
- end
- end
+ module_parser.build_batchjobs(moduledeps, batchjobs, opt.rootjob)
end