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/platforms/linux/check.lua | |
| parent | 7d17523c795681265900d109c0ee26d2349eaf73 (diff) | |
move checker to on_check
Diffstat (limited to 'xmake/platforms/linux/check.lua')
| -rw-r--r-- | xmake/platforms/linux/check.lua | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/xmake/platforms/linux/check.lua b/xmake/platforms/linux/check.lua new file mode 100644 index 000000000..5912dc348 --- /dev/null +++ b/xmake/platforms/linux/check.lua @@ -0,0 +1,137 @@ +--!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 check.lua +-- + +-- imports +import("core.tool.tool") +import("platforms.checker", {rootdir = os.programdir()}) + +-- check the architecture +function __check_arch(config) + + -- get the architecture + local arch = config.get("arch") + if not arch then + + -- init the default architecture + config.set("arch", ifelse(config.get("cross"), "none", os.arch())) + + -- trace + print("checking for the architecture ... %s", config.get("arch")) + end +end + +-- check the toolchains +function _check_toolchains(config) + + -- get toolchains + local toolchains = config.get("toolchains") + if not toolchains then + local sdkdir = config.get("sdk") + if sdkdir then + toolchains = path.join(sdkdir, "bin") + end + end + + -- get cross + local cross = "" + if toolchains then + local ldpathes = os.match(path.join(toolchains, "*-ld")) + for _, ldpath in ipairs(ldpathes) do + local ldname = path.basename(ldpath) + if ldname then + cross = ldname:sub(1, -3) + end + end + end + + -- no cross toolchains? + if cross and cross:trim() == "" then + -- check from env + checker.check_toolchain_from_env(config, "cc", "CC", "the c compiler") + checker.check_toolchain_from_env(config, "cxx", "CXX", "the c++ compiler") + checker.check_toolchain_from_env(config, "mm", "MM", "the objc compiler") + checker.check_toolchain_from_env(config, "mxx", "MXX", "the objc++ compiler") + checker.check_toolchain_from_env(config, "as", "AS", "the assember") + checker.check_toolchain_from_env(config, "ld", "LD", "the linker") + checker.check_toolchain_from_env(config, "ar", "AR", "the static library archiver") + checker.check_toolchain_from_env(config, "ex", "AR", "the static library extractor") + checker.check_toolchain_from_env(config, "sh", "SH", "the shared library linker") + checker.check_toolchain_from_env(config, "sc", "SC", "the swift compiler") + checker.check_toolchain_from_env(config, "dd", "DD", "the debugger") + end + + -- check for gcc + checker.check_toolchain(config, "cc", cross, "gcc", "the c compiler") + checker.check_toolchain(config, "cxx", cross, "gcc", "the c++ compiler") + checker.check_toolchain(config, "cxx", cross, "g++", "the c++ compiler") + checker.check_toolchain(config, "mm", cross, "gcc", "the objc compiler") + checker.check_toolchain(config, "mxx", cross, "gcc", "the objc++ compiler") + checker.check_toolchain(config, "mxx", cross, "g++", "the objc++ compiler") + checker.check_toolchain(config, "as", cross, "gcc", "the assember") + checker.check_toolchain(config, "ld", cross, "g++", "the linker") + checker.check_toolchain(config, "ld", cross, "gcc", "the linker") + checker.check_toolchain(config, "ar", cross, "ar", "the static library archiver") + checker.check_toolchain(config, "ex", cross, "ar", "the static library extractor") + checker.check_toolchain(config, "sh", cross, "g++", "the shared library linker") + checker.check_toolchain(config, "sh", cross, "gcc", "the shared library linker") + checker.check_toolchain(config, "dd", cross, "gdb", "the debugger") + + -- check for clang + checker.check_toolchain(config, "cc", cross, "clang", "the c compiler") + checker.check_toolchain(config, "cxx", cross, "clang", "the c++ compiler") + checker.check_toolchain(config, "cxx", cross, "clang++", "the c++ compiler") + checker.check_toolchain(config, "mm", cross, "clang", "the objc compiler") + checker.check_toolchain(config, "mxx", cross, "clang++", "the objc++ compiler") + checker.check_toolchain(config, "mxx", cross, "clang", "the objc++ compiler") + checker.check_toolchain(config, "as", cross, "clang", "the assember") + checker.check_toolchain(config, "ld", cross, "clang++", "the linker") + checker.check_toolchain(config, "ld", cross, "clang", "the linker") + checker.check_toolchain(config, "ar", cross, "ar", "the static library archiver") + checker.check_toolchain(config, "ex", cross, "ar", "the static library extractor") + checker.check_toolchain(config, "sh", cross, "clang++", "the shared library linker") + checker.check_toolchain(config, "sh", cross, "clang", "the shared library linker") + checker.check_toolchain(config, "sc", cross, "swiftc", "the swift compiler") + checker.check_toolchain(config, "dd", cross, "lldb", "the debugger") +end + +-- check it +function main(kind) + + -- init the check list of config + _g.config = + { + __check_arch + , checker.check_ccache + , _check_toolchains + } + + -- init the check list of global + _g.global = + { + checker.check_ccache + , _check_ndk_sdkver + } + + -- check it + checker.check(kind, _g) +end + |
