summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2022-08-06 00:48:30 +0800
committerruki <[email protected]>2022-08-06 00:48:30 +0800
commitbee2b91e6e7171c5034f2beef7bb6d0f1af247d8 (patch)
tree95fc537824794b6bed7c5eba40873f8e561bc6e3
parent9d29942180b6b623632ec133484f3c058937f3d5 (diff)
wrap generate deps
-rw-r--r--xmake/rules/c++/modules/modules_support/common.lua14
-rw-r--r--xmake/rules/c++/modules/xmake.lua20
2 files changed, 18 insertions, 16 deletions
diff --git a/xmake/rules/c++/modules/modules_support/common.lua b/xmake/rules/c++/modules/modules_support/common.lua
index 88b9ab9fd..2cba5fe89 100644
--- a/xmake/rules/c++/modules/modules_support/common.lua
+++ b/xmake/rules/c++/modules/modules_support/common.lua
@@ -405,3 +405,17 @@ function fallback_generate_dependencies(target, jsonfile, sourcefile)
io.writefile(jsonfile, jsondata)
end
+-- generate dependencies
+function generate_dependencies(target, opt)
+
+ -- get sourcebatch
+ local sourcebatch = target:sourcebatches()["c++.build.modules.builder"]
+ patch_sourcebatch(target, sourcebatch)
+
+ -- generate dependencies
+ modules_support(target).generate_dependencies(target, sourcebatch, opt)
+
+ -- load and parse module dependencies
+ local moduleinfos = load_moduleinfos(target, sourcebatch)
+ return parse_dependency_data(target, moduleinfos)
+end
diff --git a/xmake/rules/c++/modules/xmake.lua b/xmake/rules/c++/modules/xmake.lua
index fcfcc18df..d3dac2b69 100644
--- a/xmake/rules/c++/modules/xmake.lua
+++ b/xmake/rules/c++/modules/xmake.lua
@@ -52,23 +52,11 @@ rule("c++.build.modules")
-- build dependencies
rule("c++.build.modules.dependencies")
before_buildcmd(function(target, batchcmds, opt)
- if not target:data("cxx.has_modules") then
- return
+ if target:data("cxx.has_modules") then
+ import("modules_support.common")
+ local modules = common.generate_dependencies(target, opt)
+ target:data_set("cxx.modules", modules)
end
-
- -- patch sourcebatch
- import("modules_support.common")
- local sourcebatch = target:sourcebatches()["c++.build.modules.builder"]
- common.patch_sourcebatch(target, sourcebatch)
-
- -- generate dependencies
- local modules_support = common.modules_support(target)
- modules_support.generate_dependencies(target, sourcebatch, opt)
-
- -- load and parse module dependencies
- local moduleinfos = common.load_moduleinfos(target, sourcebatch)
- local modules = common.parse_dependency_data(target, moduleinfos)
- target:data_set("cxx.modules", modules)
end)
-- build modules