diff options
| author | ruki <[email protected]> | 2025-03-25 23:54:49 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2025-04-08 15:31:55 +0800 |
| commit | 085bc689412b300623a6bddf6899213359f5f823 (patch) | |
| tree | 09b2f865b6fb22aa4002b6b876d84fada2a2d3ae | |
| parent | 0a01105ef8e83039523a4aa97cb3ca0c8726df04 (diff) | |
walk prepare targets
| -rw-r--r-- | xmake/actions/build/prepare.lua | 49 |
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) |
