diff options
| author | ruki <[email protected]> | 2024-10-24 23:50:21 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2024-10-24 23:50:21 +0800 |
| commit | 82aafe2ab3822f8f1228cb6f2f06368ecc09ef87 (patch) | |
| tree | a05a4e10d051d16ada1aa2956eb2d1f172e8c188 | |
| parent | 13c88acff1ee187c5df4382b0f9f603552fefc94 (diff) | |
improve to object target #5729
| -rw-r--r-- | xmake/actions/build/kinds/binary.lua | 4 | ||||
| -rw-r--r-- | xmake/actions/build/kinds/object.lua | 17 | ||||
| -rw-r--r-- | xmake/actions/build/kinds/shared.lua | 4 | ||||
| -rw-r--r-- | xmake/actions/build/kinds/static.lua | 4 |
4 files changed, 22 insertions, 7 deletions
diff --git a/xmake/actions/build/kinds/binary.lua b/xmake/actions/build/kinds/binary.lua index e9607707d..3acc3bcd9 100644 --- a/xmake/actions/build/kinds/binary.lua +++ b/xmake/actions/build/kinds/binary.lua @@ -26,7 +26,7 @@ import("core.tool.compiler") import("core.project.depend") import("utils.progress") import("private.utils.batchcmds") -import("object", {alias = "add_batchjobs_for_object"}) +import("object", {alias = "object_target"}) import("linkdepfiles", {alias = "get_linkdepfiles"}) -- do link target @@ -143,6 +143,6 @@ function main(batchjobs, rootjob, target) -- -- unless call set_policy("build.across_targets_in_parallel", false) to disable to build across targets in parallel. -- - local job_objects = add_batchjobs_for_object(batchjobs, job_link, target) + local job_objects = object_target.add_batchjobs_for_object(batchjobs, job_link, target) return target:policy("build.across_targets_in_parallel") == false and job_objects or job_link, job_objects end diff --git a/xmake/actions/build/kinds/object.lua b/xmake/actions/build/kinds/object.lua index ab7f3b149..b5359f79e 100644 --- a/xmake/actions/build/kinds/object.lua +++ b/xmake/actions/build/kinds/object.lua @@ -252,7 +252,22 @@ function add_batchjobs_for_sourcefiles(batchjobs, rootjob, target, sourcebatches end -- add batch jobs for building object files -function main(batchjobs, rootjob, target) +function add_batchjobs_for_object(batchjobs, rootjob, target) return add_batchjobs_for_sourcefiles(batchjobs, rootjob, target, target:sourcebatches()) end +-- add batch jobs for building object target +function main(batchjobs, rootjob, target) + + -- add a fake link job + local job_link = batchjobs:addjob(target:name() .. "/fakelink", function (index, total, opt) + end, {rootjob = rootjob}) + + -- we only need to return and depend the link job for each target, + -- so we can compile the source files for each target in parallel + -- + -- unless call set_policy("build.across_targets_in_parallel", false) to disable to build across targets in parallel. + -- + local job_objects = add_batchjobs_for_object(batchjobs, job_link, target) + return target:policy("build.across_targets_in_parallel") == false and job_objects or job_link, job_objects +end diff --git a/xmake/actions/build/kinds/shared.lua b/xmake/actions/build/kinds/shared.lua index 9b65381e6..1b7065766 100644 --- a/xmake/actions/build/kinds/shared.lua +++ b/xmake/actions/build/kinds/shared.lua @@ -26,7 +26,7 @@ import("core.tool.compiler") import("core.project.depend") import("utils.progress") import("private.utils.batchcmds") -import("object", {alias = "add_batchjobs_for_object"}) +import("object", {alias = "object_target"}) import("linkdepfiles", {alias = "get_linkdepfiles"}) -- do link target @@ -144,6 +144,6 @@ function main(batchjobs, rootjob, target) -- -- unless call set_policy("build.across_targets_in_parallel", false) to disable to build across targets in parallel. -- - local job_objects = add_batchjobs_for_object(batchjobs, job_link, target) + local job_objects = object_target.add_batchjobs_for_object(batchjobs, job_link, target) return target:policy("build.across_targets_in_parallel") == false and job_objects or job_link, job_objects end diff --git a/xmake/actions/build/kinds/static.lua b/xmake/actions/build/kinds/static.lua index 6b28eb4e1..7a1161849 100644 --- a/xmake/actions/build/kinds/static.lua +++ b/xmake/actions/build/kinds/static.lua @@ -26,7 +26,7 @@ import("core.tool.compiler") import("core.project.depend") import("utils.progress") import("private.utils.batchcmds") -import("object", {alias = "add_batchjobs_for_object"}) +import("object", {alias = "object_target"}) import("linkdepfiles", {alias = "get_linkdepfiles"}) -- do link target @@ -144,6 +144,6 @@ function main(batchjobs, rootjob, target) -- -- unless call set_policy("build.across_targets_in_parallel", false) to disable to build across targets in parallel. -- - local job_objects = add_batchjobs_for_object(batchjobs, job_link, target) + local job_objects = object_target.add_batchjobs_for_object(batchjobs, job_link, target) return target:policy("build.across_targets_in_parallel") == false and job_objects or job_link, job_objects end |
