diff options
| author | ruki <[email protected]> | 2022-04-03 13:40:24 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2022-04-03 13:40:24 +0800 |
| commit | cd159c7c62fb2746f85484fa813628598d068072 (patch) | |
| tree | c2f5ff7bc12550f9650890080826b46f542a1ff1 /xmake/rules/c++/modules/build_modules/clang.lua | |
| parent | fa972ccbdda55a44ae8f245f727e410fc9e179e9 (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.lua | 22 |
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 |
