summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2023-06-09 17:26:57 +0800
committerGitHub <[email protected]>2023-06-09 17:26:57 +0800
commite13615bd53b985222986cbe01e4eb6d7fe69f47e (patch)
tree6ec14f60da8feddae9ebdd981f149f624542108c
parent683c5ceadfbcfdb43ab82374065adc4d9881dc53 (diff)
parent4ebf83eebe32704a5b7b286952b1b36fca643ac1 (diff)
Merge pull request #3824 from SirLynix/patch-14
Make runpath recursive on Windows
-rw-r--r--xmake/modules/private/action/run/make_runenvs.lua42
1 files changed, 26 insertions, 16 deletions
diff --git a/xmake/modules/private/action/run/make_runenvs.lua b/xmake/modules/private/action/run/make_runenvs.lua
index a902a8cc8..8b804e3fc 100644
--- a/xmake/modules/private/action/run/make_runenvs.lua
+++ b/xmake/modules/private/action/run/make_runenvs.lua
@@ -35,24 +35,34 @@ function _make_runpath_on_windows(target)
end
end
- for _, linkdir in ipairs(target:get("linkdirs")) do
- insert(linkdir)
- end
- for _, opt in ipairs(target:orderopts()) do
- for _, linkdir in ipairs(opt:get("linkdirs")) do
- insert(linkdir)
- end
- end
- for _, pkg in ipairs(target:orderpkgs()) do
- for _, linkdir in ipairs(pkg:get("linkdirs")) do
- insert(linkdir)
- end
- end
- for _, dep in ipairs(target:orderdeps()) do
- if dep:kind() == "shared" then
- insert(dep:targetdir())
+ -- recursively add targets and dep targets linkdirs
+ local seentargets = hashset.new()
+ local function insert_target(target)
+ if seentargets:insert(target) then
+ for _, linkdir in ipairs(target:get("linkdirs")) do
+ insert(linkdir)
+ end
+ for _, opt in ipairs(target:orderopts()) do
+ for _, linkdir in ipairs(opt:get("linkdirs")) do
+ insert(linkdir)
+ end
+ end
+ for _, pkg in ipairs(target:orderpkgs()) do
+ for _, linkdir in ipairs(pkg:get("linkdirs")) do
+ insert(linkdir)
+ end
+ end
+ for _, dep in ipairs(target:orderdeps()) do
+ if dep:kind() == "shared" then
+ insert(dep:targetdir())
+ end
+ insert_target(dep)
+ end
end
end
+
+ insert_target(target)
+
return pathenv
end