diff options
Diffstat (limited to 'xmake/core/tool/builder.lua')
| -rw-r--r-- | xmake/core/tool/builder.lua | 69 |
1 files changed, 26 insertions, 43 deletions
diff --git a/xmake/core/tool/builder.lua b/xmake/core/tool/builder.lua index 43bed8bfa..d62eb4d1b 100644 --- a/xmake/core/tool/builder.lua +++ b/xmake/core/tool/builder.lua @@ -76,8 +76,8 @@ function builder:_mapflag(flag, mapflags) end end - -- check it - if self:check(flag) then + -- has this flag? + if self:has_flags(flag) then return flag end end @@ -103,9 +103,9 @@ function builder:_mapflags(flags) else - -- check flags + -- has flags? for _, flag in pairs(flags) do - if self:check(flag) then + if self:has_flags(flag) then table.insert(results, flag) end end @@ -261,8 +261,8 @@ function builder:_addflags_from_language(flags, target) for _, flagvalue in ipairs(table.wrap(getter(flagname))) do -- map and check flag - local flag = mapper(flagvalue, target, self:_targetkind()) - if flag and flag ~= "" and (not checkstate or self:check(flag)) then + local flag = mapper(self:_tool(), flagvalue, target, self:_targetkind()) + if flag and flag ~= "" and (not checkstate or self:has_flags(flag)) then table.join2(flags, flag) end end @@ -270,11 +270,29 @@ function builder:_addflags_from_language(flags, target) end end +-- get tool name +function builder:name() + return self:_tool():name() +end + +-- get tool kind +function builder:kind() + return self:_tool():kind() +end + +-- get tool program +function builder:program() + return self:_tool():program() +end + -- get properties of the tool function builder:get(name) + return self:_tool():get(name) +end - -- get it - return self:_tool().get(name) +-- has flags? +function builder:has_flags(flags) + return self:_tool():has_flags(name) end -- get the format of the given target kind @@ -297,40 +315,5 @@ function builder:feature(name) end end --- check the given flags -function builder:check(flags) - - -- the builder tool - local ctool = self:_tool() - - -- no check? - if not ctool.check then - return true - end - - -- have been checked? return it directly - self._CHECKED = self._CHECKED or {} - if self._CHECKED[flags] ~= nil then - return self._CHECKED[flags] - end - - -- check it - local ok, errors = sandbox.load(ctool.check, flags) - - -- trace - if option.get("verbose") then - utils.cprint("checking for the flags %s ... %s", flags, utils.ifelse(ok, "${green}ok", "${red}no")) - if not ok then - utils.cprint("${red}" .. errors or "") - end - end - - -- save the checked result - self._CHECKED[flags] = ok - - -- ok? - return ok -end - -- return module return builder |
