summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-01-05 12:15:59 +0800
committerruki <[email protected]>2017-01-06 17:20:08 +0800
commit2e58f26793dc910c024eeba4adb6d52df26e0e22 (patch)
tree61703e4e89fc3609a1774871645d5032a74eae6f
parent7d17523c795681265900d109c0ee26d2349eaf73 (diff)
move checker to on_check
-rw-r--r--xmake/core/platform/checker.lua144
-rw-r--r--xmake/core/platform/platform.lua9
-rw-r--r--xmake/core/sandbox/modules/import/core/project/config.lua10
-rw-r--r--xmake/core/sandbox/modules/import/core/project/global.lua31
-rw-r--r--xmake/platforms/android/check.lua (renamed from xmake/platforms/android/checker.lua)14
-rwxr-xr-xxmake/platforms/android/xmake.lua6
-rw-r--r--xmake/platforms/checker.lua23
-rw-r--r--xmake/platforms/iphoneos/check.lua (renamed from xmake/platforms/iphoneos/checker.lua)15
-rwxr-xr-xxmake/platforms/iphoneos/xmake.lua6
-rw-r--r--xmake/platforms/linux/check.lua (renamed from xmake/platforms/linux/checker.lua)15
-rwxr-xr-xxmake/platforms/linux/xmake.lua6
-rw-r--r--xmake/platforms/macosx/check.lua (renamed from xmake/platforms/macosx/checker.lua)15
-rwxr-xr-xxmake/platforms/macosx/xmake.lua6
-rw-r--r--xmake/platforms/mingw/check.lua (renamed from xmake/platforms/mingw/checker.lua)15
-rwxr-xr-xxmake/platforms/mingw/xmake.lua4
-rw-r--r--xmake/platforms/watchos/check.lua (renamed from xmake/platforms/watchos/checker.lua)15
-rwxr-xr-xxmake/platforms/watchos/xmake.lua6
-rw-r--r--xmake/platforms/windows/check.lua (renamed from xmake/platforms/windows/checker.lua)15
-rwxr-xr-xxmake/platforms/windows/xmake.lua6
19 files changed, 109 insertions, 252 deletions
diff --git a/xmake/core/platform/checker.lua b/xmake/core/platform/checker.lua
deleted file mode 100644
index da0bd891f..000000000
--- a/xmake/core/platform/checker.lua
+++ /dev/null
@@ -1,144 +0,0 @@
---!The Make-like Build Utility based on Lua
---
--- 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) 2015 - 2016, ruki All rights reserved.
---
--- @author ruki
--- @file checker.lua
---
-
--- define module
-local checker = checker or {}
-
--- load modules
-local os = require("base/os")
-local path = require("base/path")
-local utils = require("base/utils")
-local config = require("project/config")
-local global = require("project/global")
-local sandbox = require("sandbox/sandbox")
-local platform = require("platform/platform")
-
--- check it
-function checker._check(callers, ...)
-
- -- check all
- for _, caller in ipairs(table.wrap(callers)) do
-
- -- has arguments?
- local args = nil
- if type(caller) == "table" then
- if #caller > 1 then
- args = caller[2]
- end
- caller = caller[1]
- end
-
- -- check
- assert(type(caller) == "function")
-
- -- call it
- local ok, errors = sandbox.load(caller, ..., args)
- if not ok then
- return false, errors
- end
- end
-
- -- ok
- return true
-end
-
--- load the given checker from the given platform
-function checker.load(plat)
-
- -- load platform
- local instance, errors = platform.load(plat)
- if not instance then
- return nil, errors
- end
-
- -- get checker
- return instance:checker()
-end
-
--- check the project or global configure
---
--- @param name the configure name: global or config
---
-function checker.check(name)
-
- -- check the project configure?
- if name == "config" then
-
- -- get the current platform
- local plat = config.get("plat")
- if not plat then
- return false, string.format("the current platform is unknown!")
- end
-
- -- load the checker module
- local module, errors = checker.load(plat)
- if not module then
- return false, errors
- end
-
- -- check it
- return checker._check(module.get("config"), config)
-
- -- check the global configure?
- elseif name == "global" then
-
- -- check all platforms with the current host
- for _, plat in ipairs(table.wrap(platform.plats())) do
-
- -- load platform
- local instance, errors = platform.load(plat)
- if not instance then
- return false, errors
- end
-
- -- belong to the current host?
- for _, host in ipairs(table.wrap(instance:hosts())) do
- if host == xmake._HOST then
-
- -- get the checker module
- local module, errors = instance:checker()
- if not module then
- return false, errors
- end
-
- -- check it
- local ok, errors = checker._check(module.get("global"), global)
- if not ok then
- return false, errors
- end
-
- -- ok
- break
- end
- end
- end
-
- -- ok
- return true
- end
-
- -- failed
- return false, string.format("unknown check name: %s", name)
-end
-
--- return module
-return checker
diff --git a/xmake/core/platform/platform.lua b/xmake/core/platform/platform.lua
index 079e42de3..ded064214 100644
--- a/xmake/core/platform/platform.lua
+++ b/xmake/core/platform/platform.lua
@@ -167,13 +167,6 @@ function _instance:tooldirs()
return self._INFO.tooldirs
end
--- get the checker
-function _instance:checker()
-
- -- load checker
- return self:_load("checker")
-end
-
-- get the environment
function _instance:environment()
@@ -213,7 +206,6 @@ function platform._interpreter()
, "platform.set_hosts"
, "platform.set_archs"
, "platform.set_menu"
- , "platform.set_checker"
, "platform.set_tooldirs"
, "platform.set_environment"
}
@@ -221,6 +213,7 @@ function platform._interpreter()
{
-- platform.on_xxx
"platform.on_load"
+ , "platform.on_check"
, "platform.on_install"
, "platform.on_uninstall"
}
diff --git a/xmake/core/sandbox/modules/import/core/project/config.lua b/xmake/core/sandbox/modules/import/core/project/config.lua
index 897d1e669..9be136fa7 100644
--- a/xmake/core/sandbox/modules/import/core/project/config.lua
+++ b/xmake/core/sandbox/modules/import/core/project/config.lua
@@ -25,7 +25,6 @@ local sandbox_core_project_config = sandbox_core_project_config or {}
-- load modules
local config = require("project/config")
-local checker = require("platform/checker")
local platform = require("platform/platform")
local raise = require("sandbox/modules/raise")
@@ -133,12 +132,11 @@ end
-- check the configure
function sandbox_core_project_config.check()
- -- check it
- local ok, errors = checker.check("config")
- if not ok then
- raise(errors)
+ -- get the check script
+ local check = platform.get("check")
+ if check then
+ check("config")
end
-
end
-- dump the configure
diff --git a/xmake/core/sandbox/modules/import/core/project/global.lua b/xmake/core/sandbox/modules/import/core/project/global.lua
index d9d418b4f..26dc58676 100644
--- a/xmake/core/sandbox/modules/import/core/project/global.lua
+++ b/xmake/core/sandbox/modules/import/core/project/global.lua
@@ -24,8 +24,8 @@
local sandbox_core_project_global = sandbox_core_project_global or {}
-- load modules
+local table = require("base/table")
local global = require("project/global")
-local checker = require("platform/checker")
local platform = require("platform/platform")
local raise = require("sandbox/modules/raise")
@@ -80,10 +80,31 @@ end
-- check the configure
function sandbox_core_project_global.check()
- -- check it
- local ok, errors = checker.check("global")
- if not ok then
- raise(errors)
+ -- check all platforms with the current host
+ for _, plat in ipairs(table.wrap(platform.plats())) do
+
+ -- load platform
+ local instance, errors = platform.load(plat)
+ if not instance then
+ raise(errors)
+ end
+
+ -- belong to the current host?
+ for _, host in ipairs(table.wrap(instance:hosts())) do
+ if host == xmake._HOST then
+
+ -- get the check script
+ local check = instance:get("check")
+ if check ~= nil then
+
+ -- check it
+ check("global")
+ end
+
+ -- ok
+ break
+ end
+ end
end
end
diff --git a/xmake/platforms/android/checker.lua b/xmake/platforms/android/check.lua
index 4d6ac4087..10c15e8cc 100644
--- a/xmake/platforms/android/checker.lua
+++ b/xmake/platforms/android/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -136,8 +136,8 @@ function _check_toolchains(config)
checker.check_toolchain(config, "sh", cross, "gcc", "the shared library linker")
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -155,12 +155,8 @@ function init()
, _check_ndk_sdkver
}
+ -- check it
+ checker.check(kind, _g)
end
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
-end
diff --git a/xmake/platforms/android/xmake.lua b/xmake/platforms/android/xmake.lua
index 7595d78c7..83ad9d17d 100755
--- a/xmake/platforms/android/xmake.lua
+++ b/xmake/platforms/android/xmake.lua
@@ -32,12 +32,12 @@ platform("android")
-- set archs
set_archs("armv5te", "armv6", "armv7-a", "armv8-a", "arm64-v8a")
- -- set checker
- set_checker("checker")
-
-- set tooldirs
set_tooldirs("/usr/bin", "/usr/local/bin", "/opt/bin", "/opt/local/bin")
+ -- on check
+ on_check("check")
+
-- on load
on_load(function ()
diff --git a/xmake/platforms/checker.lua b/xmake/platforms/checker.lua
index 8b30f7dd5..02d5daa71 100644
--- a/xmake/platforms/checker.lua
+++ b/xmake/platforms/checker.lua
@@ -23,6 +23,29 @@
-- imports
import("core.tool.tool")
+-- check all for the given config kind
+function check(kind, checkers)
+
+ -- import config module
+ local config = import("core.project." .. kind)
+
+ -- check all
+ for _, checker in ipairs(checkers[kind]) do
+
+ -- has arguments?
+ local args = nil
+ if type(checker) == "table" then
+ if #checker > 1 then
+ args = checker[2]
+ end
+ checker = checker[1]
+ end
+
+ -- check it
+ checker(config, args)
+ end
+end
+
-- check the architecture
function check_arch(config, default)
diff --git a/xmake/platforms/iphoneos/checker.lua b/xmake/platforms/iphoneos/check.lua
index 47face8ef..c3eeee453 100644
--- a/xmake/platforms/iphoneos/checker.lua
+++ b/xmake/platforms/iphoneos/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -76,8 +76,8 @@ function _check_toolchains(config)
end
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -97,12 +97,7 @@ function init()
, checker.check_ccache
}
-end
-
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
+ -- check it
+ checker.check(kind, _g)
end
diff --git a/xmake/platforms/iphoneos/xmake.lua b/xmake/platforms/iphoneos/xmake.lua
index 869ab3e60..dfbf3a1c7 100755
--- a/xmake/platforms/iphoneos/xmake.lua
+++ b/xmake/platforms/iphoneos/xmake.lua
@@ -32,12 +32,12 @@ platform("iphoneos")
-- set archs
set_archs("armv7", "armv7s", "arm64", "i386", "x86_64")
- -- set checker
- set_checker("checker")
-
-- set tooldirs
set_tooldirs("/usr/bin", "/usr/local/bin", "/opt/bin", "/opt/local/bin")
+ -- on check
+ on_check("check")
+
-- on load
on_load(function ()
diff --git a/xmake/platforms/linux/checker.lua b/xmake/platforms/linux/check.lua
index b295db26a..5912dc348 100644
--- a/xmake/platforms/linux/checker.lua
+++ b/xmake/platforms/linux/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -113,8 +113,8 @@ function _check_toolchains(config)
checker.check_toolchain(config, "dd", cross, "lldb", "the debugger")
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -131,12 +131,7 @@ function init()
, _check_ndk_sdkver
}
-end
-
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
+ -- check it
+ checker.check(kind, _g)
end
diff --git a/xmake/platforms/linux/xmake.lua b/xmake/platforms/linux/xmake.lua
index 9a64b8918..bfefad521 100755
--- a/xmake/platforms/linux/xmake.lua
+++ b/xmake/platforms/linux/xmake.lua
@@ -32,9 +32,6 @@ platform("linux")
-- set archs
set_archs("i386", "x86_64")
- -- set checker
- set_checker("checker")
-
-- set tooldirs
set_tooldirs("/usr/bin", "/usr/local/bin", "/opt/bin", "/opt/local/bin")
@@ -44,6 +41,9 @@ platform("linux")
-- on uninstall
on_uninstall("uninstall")
+ -- on check
+ on_check("check")
+
-- on load
on_load(function ()
diff --git a/xmake/platforms/macosx/checker.lua b/xmake/platforms/macosx/check.lua
index bf6789733..cea1708f3 100644
--- a/xmake/platforms/macosx/checker.lua
+++ b/xmake/platforms/macosx/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -76,8 +76,8 @@ function _check_toolchains(config)
checker.check_toolchain(config, "dd", "", "lldb", "the debugger")
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -97,12 +97,7 @@ function init()
, checker.check_ccache
}
-end
-
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
+ -- check it
+ checker.check(kind, _g)
end
diff --git a/xmake/platforms/macosx/xmake.lua b/xmake/platforms/macosx/xmake.lua
index c6c3588e5..e6248e7c2 100755
--- a/xmake/platforms/macosx/xmake.lua
+++ b/xmake/platforms/macosx/xmake.lua
@@ -32,12 +32,12 @@ platform("macosx")
-- set archs
set_archs("i386", "x86_64")
- -- set checker
- set_checker("checker")
-
-- set tooldirs
set_tooldirs("/usr/bin", "/usr/local/bin", "/opt/bin", "/opt/local/bin")
+ -- on check
+ on_check("check")
+
-- on install
on_install("install")
diff --git a/xmake/platforms/mingw/checker.lua b/xmake/platforms/mingw/check.lua
index 0a59fe8e7..06ca8b2b4 100644
--- a/xmake/platforms/mingw/checker.lua
+++ b/xmake/platforms/mingw/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -62,8 +62,8 @@ function _check_toolchains(config)
checker.check_toolchain(config, "sc", cross, "swiftc", "the swift compiler")
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -79,12 +79,7 @@ function init()
checker.check_ccache
}
-end
-
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
+ -- check it
+ checker.check(kind, _g)
end
diff --git a/xmake/platforms/mingw/xmake.lua b/xmake/platforms/mingw/xmake.lua
index 66f15d7ba..03e259186 100755
--- a/xmake/platforms/mingw/xmake.lua
+++ b/xmake/platforms/mingw/xmake.lua
@@ -32,8 +32,8 @@ platform("mingw")
-- set archs
set_archs("i386", "x86_64")
- -- set checker
- set_checker("checker")
+ -- on check
+ on_check("check")
-- on load
on_load(function ()
diff --git a/xmake/platforms/watchos/checker.lua b/xmake/platforms/watchos/check.lua
index e3709ce72..a540dfbb0 100644
--- a/xmake/platforms/watchos/checker.lua
+++ b/xmake/platforms/watchos/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -76,8 +76,8 @@ function _check_toolchains(config)
end
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -97,12 +97,7 @@ function init()
, checker.check_ccache
}
-end
-
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
+ -- check it
+ checker.check(kind, _g)
end
diff --git a/xmake/platforms/watchos/xmake.lua b/xmake/platforms/watchos/xmake.lua
index f7a15d396..54e179e57 100755
--- a/xmake/platforms/watchos/xmake.lua
+++ b/xmake/platforms/watchos/xmake.lua
@@ -32,12 +32,12 @@ platform("watchos")
-- set archs
set_archs("armv7k", "i386")
- -- set checker
- set_checker("checker")
-
-- set tooldirs
set_tooldirs("/usr/bin", "/usr/local/bin", "/opt/bin", "/opt/local/bin")
+ -- on check
+ on_check("check")
+
-- on load
on_load(function ()
diff --git a/xmake/platforms/windows/checker.lua b/xmake/platforms/windows/check.lua
index 44d2ac9ee..57c3c3de9 100644
--- a/xmake/platforms/windows/checker.lua
+++ b/xmake/platforms/windows/check.lua
@@ -17,7 +17,7 @@
-- Copyright (C) 2015 - 2016, ruki All rights reserved.
--
-- @author ruki
--- @file checker.lua
+-- @file check.lua
--
-- imports
@@ -261,8 +261,8 @@ function _check_debugger(config)
end
end
--- init it
-function init()
+-- check it
+function main(kind)
-- init the check list of config
_g.config =
@@ -281,12 +281,7 @@ function init()
, _clean_global
}
-end
-
--- get the property
-function get(name)
-
- -- get it
- return _g[name]
+ -- check it
+ checker.check(kind, _g)
end
diff --git a/xmake/platforms/windows/xmake.lua b/xmake/platforms/windows/xmake.lua
index 9b8fbab26..46ae56054 100755
--- a/xmake/platforms/windows/xmake.lua
+++ b/xmake/platforms/windows/xmake.lua
@@ -32,12 +32,12 @@ platform("windows")
-- set archs
set_archs("x86", "x64", "amd64", "x86_amd64")
- -- set checker
- set_checker("checker")
-
-- set environment
set_environment("environment")
+ -- on check
+ on_check("check")
+
-- on load
on_load(function ()