summaryrefslogtreecommitdiff
path: root/xmake/core/platform/environment.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2018-09-23 21:03:42 +0800
committerruki <[email protected]>2018-09-23 21:03:42 +0800
commitd9d422c8fe2f838052fc2dd92b6801a81a515b34 (patch)
tree760c31d11c480a36ac0378824c270abda8b9d60b /xmake/core/platform/environment.lua
parent6935be8876c358d89b5c5c2d5c0a56f4ea9d1590 (diff)
add envars for package
Diffstat (limited to 'xmake/core/platform/environment.lua')
-rw-r--r--xmake/core/platform/environment.lua39
1 files changed, 30 insertions, 9 deletions
diff --git a/xmake/core/platform/environment.lua b/xmake/core/platform/environment.lua
index 0a549df17..381181004 100644
--- a/xmake/core/platform/environment.lua
+++ b/xmake/core/platform/environment.lua
@@ -35,12 +35,21 @@ local package = require("package/package")
function environment._enter_toolchains()
-- save the toolchains environment
- environment._PATH = os.getenv("PATH")
- environment._LD_LIBRARY_PATH = os.getenv("LD_LIBRARY_PATH")
+ environment._PATH = os.getenv("PATH")
- -- add search binary pathes of packages
- os.addenv("PATH", path.join(package.prefixdir(true), "release", os.host(), os.arch(), "bin")) -- globaldir/release/../bin
- os.addenv("PATH", path.join(package.prefixdir(false), "release", os.host(), os.arch(), "bin")) -- localdir/release/../bin
+ -- add global search binary pathes
+ local globaldir = package.prefixdir(true, false, os.host(), os.arch())
+ for _, dir in ipairs(table.wrap(package.getenv(true, false, os.host(), os.arch(), "PATH"))) do
+ os.addenv("PATH", path.join(globaldir, dir))
+ end
+ os.addenv("PATH", path.join(globaldir, "bin"))
+
+ -- add local search binary pathes
+ local localdir = package.prefixdir(false, false, os.host(), os.arch())
+ for _, dir in ipairs(table.wrap(package.getenv(false, false, os.host(), os.arch(), "PATH"))) do
+ os.addenv("PATH", path.join(localdir, dir))
+ end
+ os.addenv("PATH", path.join(localdir, "bin"))
end
-- leave the toolchains environment
@@ -54,12 +63,23 @@ end
function environment._enter_run()
-- save the running environment
+ environment._PATH = os.getenv("PATH")
environment._LD_LIBRARY_PATH = os.getenv("LD_LIBRARY_PATH")
- -- add search library pathes of packages
- if os.host() ~= "windows" then
- os.addenv("LD_LIBRARY_PATH", path.join(package.prefixdir(true), "release", os.host(), os.arch(), "lib")) -- globaldir/release/../lib
- os.addenv("LD_LIBRARY_PATH", path.join(package.prefixdir(false), "release", os.host(), os.arch(), "lib")) -- localdir/release/../lib
+ -- add global search library pathes of pathes
+ local globaldir = package.prefixdir(true, false, os.host(), os.arch())
+ if os.host() == "windows" then
+ os.addenv("PATH", path.join(globaldir, "lib"))
+ else
+ os.addenv("LD_LIBRARY_PATH", path.join(globaldir, "lib"))
+ end
+
+ -- add local search library pathes of pathes
+ local localdir = package.prefixdir(false, false, os.host(), os.arch())
+ if os.host() == "windows" then
+ os.addenv("PATH", path.join(localdir, "lib"))
+ else
+ os.addenv("LD_LIBRARY_PATH", path.join(localdir, "lib"))
end
end
@@ -67,6 +87,7 @@ end
function environment._leave_run()
-- leave the running environment
+ os.setenv("PATH", environment._PATH)
os.setenv("LD_LIBRARY_PATH", environment._LD_LIBRARY_PATH)
end