summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2025-03-25 23:54:49 +0800
committerruki <[email protected]>2025-04-08 15:31:55 +0800
commit085bc689412b300623a6bddf6899213359f5f823 (patch)
tree09b2f865b6fb22aa4002b6b876d84fada2a2d3ae
parent0a01105ef8e83039523a4aa97cb3ca0c8726df04 (diff)
walk prepare targets
-rw-r--r--xmake/actions/build/prepare.lua49
1 files changed, 22 insertions, 27 deletions
diff --git a/xmake/actions/build/prepare.lua b/xmake/actions/build/prepare.lua
index aea951168..13ffa4e60 100644
--- a/xmake/actions/build/prepare.lua
+++ b/xmake/actions/build/prepare.lua
@@ -20,41 +20,36 @@
-- imports
import("core.base.option")
-import("core.project.config")
+import("core.project.project")
import("async.runjobs")
import("async.jobgraph", {alias = "async_jobgraph"})
+-- add prepare jobs for the given target
+function _add_prepare_jobs_for_target(jobgraph, target)
+ print("prepare", target:fullname())
+end
+
+-- add prepare jobs for the given target and deps
+function _add_preprare_jobs_for_target_and_deps(jobgraph, target, targetrefs)
+ local targetname = target:fullname()
+ if not targetrefs[targetname] then
+ targetrefs[targetname] = target
+ _add_prepare_jobs_for_target(jobgraph, target)
+ for _, depname in ipairs(target:get("deps")) do
+ local dep = project.target(depname, {namespace = target:namespace()})
+ _add_preprare_jobs_for_target_and_deps(jobgraph, dep, targetrefs)
+ end
+ end
+end
+
-- get prepare jobs
function _get_prepare_jobs(targets_root, opt)
local jobgraph = async_jobgraph.new()
- return jobgraph
-
- --[[
-
- -- generate batch jobs for default or all targets
- local jobrefs = {}
- local jobrefs_before = {}
- local jobgraph = jobpool.new()
+ local targetrefs = {}
for _, target in ipairs(targets_root) do
- _add_jobgraph_for_target_and_deps(jobgraph, jobgraph:rootjob(), target, jobrefs, jobrefs_before)
+ _add_preprare_jobs_for_target_and_deps(jobgraph, target, targetrefs)
end
-
- -- add fence jobs, @see https://github.com/xmake-io/xmake/issues/5003
- for _, target in ipairs(project.ordertargets()) do
- local target_job_before = jobrefs_before[target:name()]
- if target_job_before then
- for _, dep in ipairs(target:orderdeps()) do
- if dep:policy("build.fence") then
- local fence_job = jobrefs[dep:name()]
- if fence_job then
- jobgraph:add(fence_job, target_job_before)
- end
- end
- end
- end
- end
-
- return jobgraph]]
+ return jobgraph
end
function main(targets_root, opt)