--!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 http://www.gnu.org/licenses/ -- -- Copyright (C) 2009 - 2015, ruki All rights reserved. -- -- @author ruki -- @file prober.lua -- -- load modules local os = require("base/os") local path = require("base/path") local utils = require("base/utils") local string = require("base/string") local tools = require("tools/tools") local config = require("base/config") local global = require("base/global") -- define module: prober local prober = prober or {} -- probe the architecture function prober._probe_arch(configs) -- get the architecture local arch = configs.get("arch") -- ok? if arch then return true end -- init the default architecture configs.set("arch", xmake._ARCH) -- trace utils.verbose("checking the architecture ... %s", configs.get("arch")) -- ok return true end -- probe the ccache function prober._probe_ccache(configs) -- ok? local ccache_enable = configs.get("ccache") if ccache_enable and configs.get("__ccache") then return true end -- disable? if type(ccache_enable) == "boolean" and not ccache_enable then configs.set("__ccache", nil) return true end -- probe the ccache path local ccache_path = tools.probe("ccache", {"/usr/bin", "/usr/local/bin", "/opt/bin", "/opt/local/bin"}) -- probe ok? update it if ccache_path then configs.set("ccache", true) configs.set("__ccache", ccache_path) else configs.set("ccache", false) end -- trace utils.verbose("checking for the ccache ... %s", utils.ifelse(ccache_path, ccache_path, "no")) -- ok return true end -- probe the project configure function prober.config() -- call all probe functions utils.call( { prober._probe_arch , prober._probe_ccache} , nil , config) end -- probe the global configure function prober.global() -- call all probe functions utils.call( prober._probe_ccache , nil , global) end -- return module: prober return prober