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 | |
| parent | 7d17523c795681265900d109c0ee26d2349eaf73 (diff) | |
move checker to on_check
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 () |
