From fc3638d5128d6f652d79df8985ca5efcb104d22f Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 3 Jun 2015 16:21:14 +0800 Subject: run the given target --- xmake/scripts/platform/windows/_maker.lua | 57 ++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 5 deletions(-) (limited to 'xmake/scripts/platform/windows/_maker.lua') 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 -- cgit v1.3.1