summaryrefslogtreecommitdiff
path: root/xmake/scripts/platform
diff options
context:
space:
mode:
authorruki <[email protected]>2015-06-03 13:47:32 +0800
committerruki <[email protected]>2015-06-03 13:47:32 +0800
commit6ba8d0eb8d09d5170242837ef091c04ab4da6047 (patch)
tree33ad58bbaccaec6d0b3a0035fd92602070454ba2 /xmake/scripts/platform
parent8f5a561006bb5b0952278075deb908633317c987 (diff)
add string split
Diffstat (limited to 'xmake/scripts/platform')
-rw-r--r--xmake/scripts/platform/platform.lua27
-rw-r--r--xmake/scripts/platform/windows/_maker.lua54
-rw-r--r--xmake/scripts/platform/windows/_windows.lua3
3 files changed, 84 insertions, 0 deletions
diff --git a/xmake/scripts/platform/platform.lua b/xmake/scripts/platform/platform.lua
index 4361ea42a..e968137fd 100644
--- a/xmake/scripts/platform/platform.lua
+++ b/xmake/scripts/platform/platform.lua
@@ -289,5 +289,32 @@ function platform.probe(configs, is_global)
end
end
+-- build target from the given makefile
+function platform.build(mkfile, target)
+
+ -- attempt to done the platform special make first
+ local p = platform._load(config.get("plat"))
+ if p and p._MAKER and p._MAKER.done then
+ return p._MAKER.done(mkfile, target)
+ end
+
+ -- make command
+ local cmd = nil
+ if mkfile and os.isfile(mkfile) then
+ cmd = string.format("make -f %s %s", mkfile, target or "")
+ else
+ cmd = string.format("make %s", target or "")
+ end
+
+ -- done
+ local ok = os.execute(cmd)
+ if ok ~= 0 then
+ return false
+ end
+
+ -- ok
+ return true
+end
+
-- return module: platform
return platform
diff --git a/xmake/scripts/platform/windows/_maker.lua b/xmake/scripts/platform/windows/_maker.lua
new file mode 100644
index 000000000..9b459ad45
--- /dev/null
+++ b/xmake/scripts/platform/windows/_maker.lua
@@ -0,0 +1,54 @@
+--!The Automatic Cross-platform Build Tool
+--
+-- XMake is free software; you can redistribute it and/or modify
+-- it under the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+-- XMake is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU Lesser General Public License for more details.
+--
+-- You should have received a copy of the GNU Lesser General Public License
+-- along with XMake;
+-- If not, see <a href="http://www.gnu.org/licenses/"> http://www.gnu.org/licenses/</a>
+--
+-- Copyright (C) 2009 - 2015, ruki All rights reserved.
+--
+-- @author ruki
+-- @file _maker.lua
+--
+
+-- load modules
+local os = require("base/os")
+local path = require("base/path")
+local utils = require("base/utils")
+local string = require("base/string")
+
+-- define module: _maker
+local _maker = _maker or {}
+
+-- build the target from the given makefile
+function _maker.done(mkfile, target)
+
+ -- make command
+ local cmd = nil
+ if mkfile and os.isfile(mkfile) then
+ cmd = string.format("nmake /f %s %s", mkfile, target or "")
+ else
+ cmd = string.format("nmake %s", target or "")
+ end
+
+ -- done
+ local ok = os.execute(cmd)
+ if ok ~= 0 then
+ return false
+ end
+
+ -- ok
+ return true
+end
+
+-- return module: _maker
+return _maker
diff --git a/xmake/scripts/platform/windows/_windows.lua b/xmake/scripts/platform/windows/_windows.lua
index 1e13e134b..012b0a0ff 100644
--- a/xmake/scripts/platform/windows/_windows.lua
+++ b/xmake/scripts/platform/windows/_windows.lua
@@ -32,6 +32,9 @@ _windows._HOST = "windows"
-- init architectures
_windows._ARCHS = {"x86", "x64"}
+-- init maker
+_windows._MAKER = require("platform/windows/_maker")
+
-- init prober
_windows._PROBER = require("platform/windows/_prober")