diff options
| author | ruki <[email protected]> | 2017-01-05 12:15:59 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-01-06 17:20:08 +0800 |
| commit | 2e58f26793dc910c024eeba4adb6d52df26e0e22 (patch) | |
| tree | 61703e4e89fc3609a1774871645d5032a74eae6f /xmake/core | |
| parent | 7d17523c795681265900d109c0ee26d2349eaf73 (diff) | |
move checker to on_check
Diffstat (limited to 'xmake/core')
| -rw-r--r-- | xmake/core/platform/checker.lua | 144 | ||||
| -rw-r--r-- | xmake/core/platform/platform.lua | 9 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/config.lua | 10 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/project/global.lua | 31 |
4 files changed, 31 insertions, 163 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 |
