diff options
| author | ruki <[email protected]> | 2025-04-03 00:50:38 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-04-08 15:31:57 +0800 |
| commit | c3632af574ac5f23da61406b49a363f245287b5f (patch) | |
| tree | 7cf71b84abf1a68050be218e31f02b69a02248ff | |
| parent | 38695f0bf5875dc5db9ccaa8c9ddbf8ef46d4f5e (diff) | |
add build.fence
| -rw-r--r-- | xmake/actions/build/target_utils.lua | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/xmake/actions/build/target_utils.lua b/xmake/actions/build/target_utils.lua index 9529fd490..a4820fd51 100644 --- a/xmake/actions/build/target_utils.lua +++ b/xmake/actions/build/target_utils.lua @@ -283,19 +283,26 @@ end -- add target jobs for the given target and deps function add_targetjobs_and_deps(jobgraph, target, targetrefs, opt) + local job_kind = opt.job_kind local targetname = target:fullname() if not targetrefs[targetname] then targetrefs[targetname] = target add_targetjobs(jobgraph, target, opt) - local linkjob = target:fullname() .. "/link_objects" + local jobname, jobname_dep for _, depname in ipairs(target:get("deps")) do local dep = project.target(depname, {namespace = target:namespace()}) add_targetjobs_and_deps(jobgraph, dep, targetrefs, opt) - local linkjob_dep = dep:fullname() .. "/link_objects" - if jobgraph:has(linkjob) and jobgraph:has(linkjob_dep) then - jobgraph:add_orders(linkjob_dep, linkjob) + if dep:policy("build.fence") then + jobname = string.format("target/%s/begin_%s", target:fullname(), job_kind) + jobname_dep = string.format("target/%s/end_%s", dep:fullname(), job_kind) + elseif job_kind == "build" then + jobname = target:fullname() .. "/link_objects" + jobname_dep = dep:fullname() .. "/link_objects" + end + if jobname and jobname_dep and jobgraph:has(jobname) and jobgraph:has(jobname_dep) then + jobgraph:add_orders(jobname_dep, jobname) end end end |
