summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSineStriker <[email protected]>2025-04-19 19:19:34 +0800
committerruki <[email protected]>2025-04-23 11:30:30 +0800
commitcef17b4c566a186ba8e9dd3dc52ab44901fed9f1 (patch)
treea44e45b6f8620b0c9496f900c7ca0cae8757484e
parent160fee7b3a714f18a00e27dcc6cae01f0a8c9a45 (diff)
Fix wrong link cmd
-rw-r--r--xmake/core/tool/linker.lua24
1 files changed, 18 insertions, 6 deletions
diff --git a/xmake/core/tool/linker.lua b/xmake/core/tool/linker.lua
index 994695480..451c0ac7e 100644
--- a/xmake/core/tool/linker.lua
+++ b/xmake/core/tool/linker.lua
@@ -67,6 +67,21 @@ function linker:_add_flags_from_linker(flags)
end
end
+-- add implib-dir to the options
+function linker:_add_implibdir_to_options(opt)
+ opt = opt or {}
+ if not opt.implibdir then
+ local target = self:target()
+ if target:type() == "target" then
+ local implibdir = target:implibdir()
+ if implibdir then
+ opt.implibdir = implibdir
+ end
+ end
+ end
+ return opt
+end
+
-- load tool
function linker._load_tool(targetkind, sourcekinds, target)
@@ -229,12 +244,7 @@ function linker:link(objectfiles, targetfile, opt)
opt = table.copy(opt)
opt.target = self:target()
- if self:target():type() == "target" then
- local implibdir = self:target():implibdir()
- if implibdir then
- opt.implibdir = implibdir
- end
- end
+ opt = self:_add_implibdir_to_options(opt)
profiler:enter(self:name(), "link", targetfile)
local ok, errors = sandbox.load(self:_tool().link, self:_tool(), table.wrap(objectfiles), self:_targetkind(), targetfile, linkflags, opt)
@@ -244,11 +254,13 @@ end
-- get the link arguments list
function linker:linkargv(objectfiles, targetfile, opt)
+ opt = self:_add_implibdir_to_options(opt)
return self:_tool():linkargv(table.wrap(objectfiles), self:_targetkind(), targetfile, opt.linkflags or self:linkflags(opt), opt)
end
-- get the link command
function linker:linkcmd(objectfiles, targetfile, opt)
+ opt = self:_add_implibdir_to_options(opt)
return os.args(table.join(self:linkargv(objectfiles, targetfile, opt)))
end