summaryrefslogtreecommitdiff
path: root/xmake/scripts/platform/windows
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-03 16:21:14 +0800
committerruki <[email protected]>2015-06-03 16:21:14 +0800
commitfc3638d5128d6f652d79df8985ca5efcb104d22f (patch)
tree87ddca12301de8a3e19b210708288ebfdee31f28 /xmake/scripts/platform/windows
parentbcb0d8e7eb53865f627cadd79eb181de34e86f5a (diff)
run the given target
Diffstat (limited to 'xmake/scripts/platform/windows')
-rw-r--r--xmake/scripts/platform/windows/_maker.lua57
-rw-r--r--xmake/scripts/platform/windows/_windows.lua12
2 files changed, 58 insertions, 11 deletions
diff --git a/xmake/scripts/platform/windows/_maker.lua b/xmake/scripts/platform/windows/_maker.lua
index 9b459ad45..f7bdddbf3 100644
--- a/xmake/scripts/platform/windows/_maker.lua
+++ b/xmake/scripts/platform/windows/_maker.lua
@@ -25,13 +25,57 @@ local os = require("base/os")
local path = require("base/path")
local utils = require("base/utils")
local string = require("base/string")
+local config = require("base/config")
-- define module: _maker
local _maker = _maker or {}
+-- enter the given environment
+function _maker._enter(name)
+
+ -- check
+ assert(name)
+
+ -- get the pathes for the vs environment
+ local old = nil
+ local new = config.get("__vsenv_" .. name)
+ if new then
+
+ -- get the current pathes
+ old = os.getenv(name) or ""
+
+ -- append the current pathes
+ new = new .. ";" .. old
+
+ -- update the pathes for the environment
+ os.setenv(name, new)
+ end
+
+ -- return the previous environment
+ return old;
+end
+
+-- leave the given environment
+function _maker._leave(name, old)
+
+ -- check
+ assert(name)
+
+ -- restore the previous environment
+ if old then
+ os.setenv(name, old)
+ end
+end
+
-- build the target from the given makefile
function _maker.done(mkfile, target)
+ -- enter the vs environment
+ local pathes = _maker._enter("path")
+ local libs = _maker._enter("lib")
+ local includes = _maker._enter("include")
+ local libpathes = _maker._enter("libpath")
+
-- make command
local cmd = nil
if mkfile and os.isfile(mkfile) then
@@ -42,12 +86,15 @@ function _maker.done(mkfile, target)
-- done
local ok = os.execute(cmd)
- if ok ~= 0 then
- return false
- end
- -- ok
- return true
+ -- leave the vs environment
+ _maker._leave("path", pathes)
+ _maker._leave("lib", libs)
+ _maker._leave("include", includes)
+ _maker._leave("libpath", libpathes)
+
+ -- ok?
+ return utils.ifelse(ok == 0, true, false)
end
-- return module: _maker
diff --git a/xmake/scripts/platform/windows/_windows.lua b/xmake/scripts/platform/windows/_windows.lua
index 012b0a0ff..b1bc0890b 100644
--- a/xmake/scripts/platform/windows/_windows.lua
+++ b/xmake/scripts/platform/windows/_windows.lua
@@ -46,18 +46,18 @@ function _windows.make(configs)
configs.format.static = {"", ".lib"}
configs.format.object = {"", ".obj"}
configs.format.shared = {"", ".dll"}
- configs.format.execute = {"", ".exe"}
+ configs.format.binary = {"", ".exe"}
-- init the compiler
configs.compiler = {}
- configs.compiler.cc = config.get("cc") or "cl.exe"
- configs.compiler.cxx = config.get("cxx") or "cl.exe"
+ configs.compiler.cc = config.get("cc") or "cl.exe"
+ configs.compiler.cxx = config.get("cxx") or "cl.exe"
-- init the linker
configs.linker = {}
- configs.linker.binary = config.get("ld") or "link.exe"
- configs.linker.static = config.get("ar") or "link.exe"
- configs.linker.shared = config.get("sh") or "link.exe"
+ configs.linker.binary = config.get("ld") or "link.exe"
+ configs.linker.static = config.get("ar") or "link.exe"
+ configs.linker.shared = config.get("sh") or "link.exe"
end