diff options
| author | ruki <[email protected]> | 2023-06-09 17:26:57 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-06-09 17:26:57 +0800 |
| commit | e13615bd53b985222986cbe01e4eb6d7fe69f47e (patch) | |
| tree | 6ec14f60da8feddae9ebdd981f149f624542108c | |
| parent | 683c5ceadfbcfdb43ab82374065adc4d9881dc53 (diff) | |
| parent | 4ebf83eebe32704a5b7b286952b1b36fca643ac1 (diff) | |
Merge pull request #3824 from SirLynix/patch-14
Make runpath recursive on Windows
| -rw-r--r-- | xmake/modules/private/action/run/make_runenvs.lua | 42 |
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 |
