summaryrefslogtreecommitdiff
path: root/xmake/plugins/project
diff options
context:
space:
mode:
authorruki <[email protected]>2024-02-19 22:56:34 +0800
committerruki <[email protected]>2024-02-19 22:56:34 +0800
commit42a99c91fca4e56d5166751cd7667886e1a6801f (patch)
treee50de63432b0b68837f538e0b713932f051535e1 /xmake/plugins/project
parentf4a9a9e3fa36f3f0cf1e655c58bf3fa4d546348b (diff)
ignore c++ modules rules
Diffstat (limited to 'xmake/plugins/project')
-rw-r--r--xmake/plugins/project/cmake/cmakelists.lua13
-rw-r--r--xmake/plugins/project/utils/target_cmds.lua21
2 files changed, 22 insertions, 12 deletions
diff --git a/xmake/plugins/project/cmake/cmakelists.lua b/xmake/plugins/project/cmake/cmakelists.lua
index a6316adf2..503cbd384 100644
--- a/xmake/plugins/project/cmake/cmakelists.lua
+++ b/xmake/plugins/project/cmake/cmakelists.lua
@@ -973,19 +973,22 @@ function _add_target_custom_commands(cmakelists, target, outputdir)
-- build sourcebatch groups first
local sourcegroups = rule_groups.build_sourcebatch_groups(target, target:sourcebatches())
+ -- ignore c++ modules rules
+ local ignored_rules = {"c++.build.modules", "c++.build.modules.builder"}
+
-- add before commands
-- we use irpairs(groups), because the last group that should be given the highest priority.
local cmds_before = {}
- target_cmds.get_target_buildcmd(target, cmds_before, {suffix = "before"})
- target_cmds.get_target_buildcmd_sourcegroups(target, cmds_before, sourcegroups, {suffix = "before"})
+ target_cmds.get_target_buildcmd(target, cmds_before, {suffix = "before", ignored_rules = ignored_rules})
+ target_cmds.get_target_buildcmd_sourcegroups(target, cmds_before, sourcegroups, {suffix = "before", ignored_rules = ignored_rules})
-- rule.on_buildcmd_files should also be executed before building the target, as cmake PRE_BUILD does not work.
- target_cmds.get_target_buildcmd_sourcegroups(target, cmds_before, sourcegroups)
+ target_cmds.get_target_buildcmd_sourcegroups(target, cmds_before, sourcegroups, {ignored_rules = ignored_rules})
_add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, "before", cmds_before)
-- add after commands
local cmds_after = {}
- target_cmds.get_target_buildcmd_sourcegroups(target, cmds_after, sourcegroups, {suffix = "after"})
- target_cmds.get_target_buildcmd(target, cmds_after, {suffix = "after"})
+ target_cmds.get_target_buildcmd_sourcegroups(target, cmds_after, sourcegroups, {suffix = "after", ignored_rules = ignored_rules})
+ target_cmds.get_target_buildcmd(target, cmds_after, {suffix = "after", ignored_rules = ignored_rules})
_add_target_custom_commands_for_batchcmds(cmakelists, target, outputdir, "after", cmds_after)
end
diff --git a/xmake/plugins/project/utils/target_cmds.lua b/xmake/plugins/project/utils/target_cmds.lua
index 92d1bee47..0b98a4ed7 100644
--- a/xmake/plugins/project/utils/target_cmds.lua
+++ b/xmake/plugins/project/utils/target_cmds.lua
@@ -42,14 +42,17 @@ end
function get_target_buildcmd(target, cmds, opt)
opt = opt or {}
local suffix = opt.suffix
+ local ignored_rules = hashset.from(opt.ignored_rules or {})
for _, ruleinst in ipairs(target:orderules()) do
- local scriptname = "buildcmd" .. (suffix and ("_" .. suffix) or "")
- local script = ruleinst:script(scriptname)
- if script then
- local batchcmds_ = batchcmds.new({target = target})
- script(target, batchcmds_, {})
- if not batchcmds_:empty() then
- table.join2(cmds, batchcmds_:cmds())
+ if not ignored_rules:has(ruleinst:name()) then
+ local scriptname = "buildcmd" .. (suffix and ("_" .. suffix) or "")
+ local script = ruleinst:script(scriptname)
+ if script then
+ local batchcmds_ = batchcmds.new({target = target})
+ script(target, batchcmds_, {})
+ if not batchcmds_:empty() then
+ table.join2(cmds, batchcmds_:cmds())
+ end
end
end
end
@@ -62,6 +65,10 @@ function get_target_buildcmd_files(target, cmds, sourcebatch, opt)
-- get rule
local rulename = assert(sourcebatch.rulename, "unknown rule for sourcebatch!")
local ruleinst = assert(target:rule(rulename) or project.rule(rulename) or rule.rule(rulename), "unknown rule: %s", rulename)
+ local ignored_rules = hashset.from(opt.ignored_rules or {})
+ if ignored_rules:has(ruleinst:name()) then
+ return
+ end
-- generate commands for xx_buildcmd_files
local suffix = opt.suffix