summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2021-01-18 14:25:05 +0800
committerGitHub <[email protected]>2021-01-18 14:25:05 +0800
commit3ce4a0366dc45361ee2ed1881391589cdf1b5c26 (patch)
tree02f415db4d4ad83fe2bb7ea2aaa360b0ae9a9d2d
parent49f0297ee150cca94803fb6b83dc048c9881b2c5 (diff)
parentb2b1b52eb1286d1d7631c4e316b5785b8cf08e95 (diff)
Merge pull request #1199 from knightjun/dev
Recursively add target dependency env
-rw-r--r--xmake/actions/run/main.lua22
1 files changed, 18 insertions, 4 deletions
diff --git a/xmake/actions/run/main.lua b/xmake/actions/run/main.lua
index a9a838651..88156f5b5 100644
--- a/xmake/actions/run/main.lua
+++ b/xmake/actions/run/main.lua
@@ -89,15 +89,29 @@ function _on_run_target(target)
_do_run_target(target)
end
+-- recursively target add env
+function _add_target_pkgenvs(target, oldenvs, targets_added)
+ if targets_added[target:name()] then
+ return
+ end
+ targets_added[target:name()] = true
+ for name, values in pairs(target:pkgenvs()) do
+ if not oldenvs[name] then
+ oldenvs[name] = os.getenv(name)
+ end
+ os.addenv(name, unpack(values))
+ end
+ for _, dep in ipairs(target:orderdeps()) do
+ _add_target_pkgenvs(dep, oldenvs, targets_added)
+ end
+end
+
-- run the given target
function _run(target)
-- enter the environments of the target packages
local oldenvs = {}
- for name, values in pairs(target:pkgenvs()) do
- oldenvs[name] = os.getenv(name)
- os.addenv(name, unpack(values))
- end
+ _add_target_pkgenvs(target, oldenvs, {})
-- the target scripts
local scripts =