summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-10-15 23:57:07 +0800
committerruki <[email protected]>2021-10-15 23:57:07 +0800
commitd71f50b60d8872c1ab5fc92b21d9f41fe93983b3 (patch)
treef26135cff47a67a688fc818ff3b5b6b7c6786b9b
parent091e754eb4d5328385fed59d5c4f92e09355ff51 (diff)
improve to load moduledeps
-rw-r--r--xmake/rules/c++/modules/build_modules/module_parser.lua12
-rw-r--r--xmake/rules/c++/modules/build_modules/msvc.lua2
-rw-r--r--xmake/rules/c++/modules/xmake.lua9
3 files changed, 9 insertions, 14 deletions
diff --git a/xmake/rules/c++/modules/build_modules/module_parser.lua b/xmake/rules/c++/modules/build_modules/module_parser.lua
index a3991a5e1..5ac4e42e9 100644
--- a/xmake/rules/c++/modules/build_modules/module_parser.lua
+++ b/xmake/rules/c++/modules/build_modules/module_parser.lua
@@ -20,14 +20,13 @@
-- imports
import("core.project.depend")
-import("utils.progress")
-- get depend file of module source file
function _get_dependfile_of_modulesource(target, sourcefile)
return target:dependfile(sourcefile)
end
--- get depend file of module object file
+-- get depend file of module object file, compiler will rewrite it
function _get_dependfile_of_moduleobject(target, sourcefile)
local objectfile = target:objectfile(sourcefile)
return target:dependfile(objectfile)
@@ -38,8 +37,8 @@ function _generate_moduledeps(target, sourcefile, opt)
local dependfile = _get_dependfile_of_modulesource(target, sourcefile)
depend.on_changed(function ()
- -- trace progress
- progress.show(opt.progress, "${color.build.target}generating.deps %s", sourcefile)
+ -- trace
+ vprint("generating.moduledeps %s", sourcefile)
-- generating deps
local module_name
@@ -76,6 +75,11 @@ end
-- load module deps
function load(target, sourcebatch, opt)
+
+ -- do generate first
+ generate(target, sourcebatch, opt)
+
+ -- load deps
local moduledeps
for _, sourcefile in ipairs(sourcebatch.sourcefiles) do
local dependfile = _get_dependfile_of_modulesource(target, sourcefile)
diff --git a/xmake/rules/c++/modules/build_modules/msvc.lua b/xmake/rules/c++/modules/build_modules/msvc.lua
index 15be07a41..a463f036a 100644
--- a/xmake/rules/c++/modules/build_modules/msvc.lua
+++ b/xmake/rules/c++/modules/build_modules/msvc.lua
@@ -82,7 +82,7 @@ function build_with_batchjobs(target, batchjobs, sourcebatch, opt)
-- load moduledeps
local moduledeps = module_parser.load(target, sourcebatch, opt)
- print(moduledeps)
+ --print(moduledeps)
-- compile module files to object files
local rootjob = opt.rootjob
diff --git a/xmake/rules/c++/modules/xmake.lua b/xmake/rules/c++/modules/xmake.lua
index ad36226eb..9018f5e2d 100644
--- a/xmake/rules/c++/modules/xmake.lua
+++ b/xmake/rules/c++/modules/xmake.lua
@@ -21,15 +21,6 @@
-- define rule: c++.build.modules
rule("c++.build.modules")
set_extensions(".mpp", ".mxx", ".cppm", ".ixx")
- before_build(function (target, opt)
- local sourcebatches = target:sourcebatches()
- if sourcebatches then
- local sourcebatch = sourcebatches["c++.build.modules"]
- if sourcebatch then
- import("build_modules.module_parser").generate(target, sourcebatch, opt)
- end
- end
- end)
before_build_files(function (target, batchjobs, sourcebatch, opt)
-- we disable to build across targets in parallel, because the source files may depend on other target modules
-- @note we cannot set it in on_load, because it will affect all c++ projects