summaryrefslogtreecommitdiff
path: root/xmake/modules
diff options
context:
space:
mode:
authorruki <[email protected]>2025-08-06 00:07:50 +0800
committerruki <[email protected]>2025-08-06 10:30:26 +0800
commit973082f48ff11a714de9e1859d3349755375e955 (patch)
tree88e2be13b58c3ebee009e8261f7baf89ece061f1 /xmake/modules
parent3d0ccd9842e7083863f42870157aa76cc0cddff7 (diff)
Merge pull request #6667 from xmake-io/config
improve to config targets
Diffstat (limited to 'xmake/modules')
-rw-r--r--xmake/modules/private/action/build/target.lua18
1 files changed, 13 insertions, 5 deletions
diff --git a/xmake/modules/private/action/build/target.lua b/xmake/modules/private/action/build/target.lua
index 370145188..bd5730e1c 100644
--- a/xmake/modules/private/action/build/target.lua
+++ b/xmake/modules/private/action/build/target.lua
@@ -131,13 +131,13 @@ end
-- add target jobs for the builtin script
function add_targetjobs_for_builtin_script(jobgraph, target, opt)
opt = opt or {}
- local job_kind = opt.job_kind
+ local job_kind = opt.job_kind or "build"
if target:is_static() or target:is_binary() or target:is_shared() or target:is_object() or target:is_moduleonly() then
if job_kind == "prepare" then
import("private.action.build.prepare_files", {anonymous = true})(jobgraph, target, opt)
elseif job_kind == "link" then
import("private.action.build.link_objects", {anonymous = true})(jobgraph, target, opt)
- else
+ elseif job_kind == "build" then
import("private.action.build.build_" .. target:kind(), {anonymous = true})(jobgraph, target, opt)
end
end
@@ -148,6 +148,7 @@ function add_targetjobs_for_script(jobgraph, target, instance, opt)
opt = opt or {}
local has_script = false
local buildcmds = opt.buildcmds
+ local job_opt = opt.job_opt
local job_prefix = target:fullname()
if target == instance then
job_prefix = job_prefix .. "/target"
@@ -179,7 +180,7 @@ function add_targetjobs_for_script(jobgraph, target, instance, opt)
-- end)
local jobname = string.format("%s/%s", job_prefix, script_name)
jobgraph:add(jobname, function (index, total, opt)
- script(target, {progress = opt.progress})
+ script(target, table.join({progress = opt.progress}, job_opt))
end)
end
has_script = true
@@ -203,7 +204,7 @@ function add_targetjobs_for_script(jobgraph, target, instance, opt)
scriptcmd(target, buildcmds, {progress = opt.progress})
else
local batchcmds_ = batchcmds.new({target = target})
- scriptcmd(target, batchcmds_, {progress = opt.progress})
+ scriptcmd(target, batchcmds_, table.join({progress = opt.progress}, job_opt))
batchcmds_:runcmds({changed = target:is_rebuilt(), dryrun = option.get("dry-run")})
end
end)
@@ -237,13 +238,20 @@ function add_targetjobs_with_stage(jobgraph, target, stage, opt)
table.insert(instances, ruleinst)
end
end
+ -- on_config is different from on_build/on_prepare,
+ -- it does not rewrite all rules, and target.on_config needs to be called last.
+ if job_kind == "config" then
+ instances = table.slice(instances, 2)
+ table.insert(instances, target)
+ end
local jobsize = jobgraph:size()
jobgraph:group(group_name, function ()
local has_script = false
local script_opt = {
script_name = script_name,
scriptcmd_name = scriptcmd_name,
- buildcmds = opt.buildcmds
+ buildcmds = opt.buildcmds,
+ job_opt = opt.job_opt
}
for _, instance in ipairs(instances) do
-- we need to use this group to sort rule scripts with add_orders