summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2023-09-02 00:38:30 +0800
committerruki <[email protected]>2023-09-02 00:38:30 +0800
commit28b382739fa9cef9298b0e515e020d0f5ab7039b (patch)
tree9e33b17d4fe61b8eecda5153e92564001028c409
parenta3f09cd2c9ef5e73f6f49cb4f335b9d6361ace4f (diff)
improve object target
-rw-r--r--xmake/core/project/target.lua9
1 files changed, 6 insertions, 3 deletions
diff --git a/xmake/core/project/target.lua b/xmake/core/project/target.lua
index 491c00729..c296a529e 100644
--- a/xmake/core/project/target.lua
+++ b/xmake/core/project/target.lua
@@ -1614,9 +1614,12 @@ function _instance:objectfiles()
local deduplicate = batchcount > 1
-- get object files from all dependent targets (object kind)
- if self:orderdeps() then
- for _, dep in ipairs(self:orderdeps()) do
- if dep:kind() == "object" then
+ -- @note we only merge objects in plain deps, e.g. binary -> (static -> object, object ...)
+ local plaindeps = self:get("deps")
+ if plaindeps and (self:is_binary() or self:is_shared() or self:is_static()) then
+ for _, depname in ipairs(table.wrap(plaindeps)) do
+ local dep = self:dep(depname)
+ if dep and dep:is_object() then
table.join2(objectfiles, dep:objectfiles())
deduplicate = true
end