From cd725062f43a77d8919ccc29d751ad3763fc80b8 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 18 Dec 2022 14:01:31 +0800 Subject: fix link --- tests/apis/clone_target/test.lua | 2 +- xmake/core/base/private/instance_deps.lua | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/tests/apis/clone_target/test.lua b/tests/apis/clone_target/test.lua index a4a38b0ce..83c0a9546 100644 --- a/tests/apis/clone_target/test.lua +++ b/tests/apis/clone_target/test.lua @@ -1,3 +1,3 @@ function main() - os.exec("xmake") + os.exec("xmake -vD") end diff --git a/xmake/core/base/private/instance_deps.lua b/xmake/core/base/private/instance_deps.lua index 535b2d2bb..2473a4c3f 100644 --- a/xmake/core/base/private/instance_deps.lua +++ b/xmake/core/base/private/instance_deps.lua @@ -32,11 +32,19 @@ local table = require("base/table") -- -- a.deps = b -- b.deps = c +-- foo.deps = a d -- --- orderdeps: c -> b -> a +-- orderdeps: c -> b -> d -> a -> foo +-- +-- if they're target, their links order is reverse(orderdeps), e.g. foo-> a -> d -> b -> c -- function instance_deps.load_deps(instance, instances, deps, orderdeps, depspath) - for _, dep in ipairs(table.wrap(instance:get("deps"))) do + local deps = table.wrap(instance:get("deps")) + local total = #deps + for idx, _ in ipairs(deps) do + -- we reverse to get the flat dependencies in order to ensure the correct linking order + -- @see https://github.com/xmake-io/xmake/issues/3144 + local dep = deps[total + 1 - idx] local depinst = instances[dep] if depinst then local depspath_sub @@ -75,3 +83,4 @@ end -- return module return instance_deps + -- cgit v1.3.1 From 7108528ba8b47cc9388109f1f246e910204ff030 Mon Sep 17 00:00:00 2001 From: ruki Date: Sun, 18 Dec 2022 14:30:57 +0800 Subject: fix load_deps --- xmake/core/base/private/instance_deps.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/xmake/core/base/private/instance_deps.lua b/xmake/core/base/private/instance_deps.lua index 2473a4c3f..857e3a2e1 100644 --- a/xmake/core/base/private/instance_deps.lua +++ b/xmake/core/base/private/instance_deps.lua @@ -39,12 +39,12 @@ local table = require("base/table") -- if they're target, their links order is reverse(orderdeps), e.g. foo-> a -> d -> b -> c -- function instance_deps.load_deps(instance, instances, deps, orderdeps, depspath) - local deps = table.wrap(instance:get("deps")) - local total = #deps - for idx, _ in ipairs(deps) do + local plaindeps = table.wrap(instance:get("deps")) + local total = #plaindeps + for idx, _ in ipairs(plaindeps) do -- we reverse to get the flat dependencies in order to ensure the correct linking order -- @see https://github.com/xmake-io/xmake/issues/3144 - local dep = deps[total + 1 - idx] + local dep = plaindeps[total + 1 - idx] local depinst = instances[dep] if depinst then local depspath_sub -- cgit v1.3.1