diff options
| author | ruki <[email protected]> | 2017-01-25 21:58:20 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2017-01-25 21:58:20 +0800 |
| commit | b9685215fcd76bc92a20f0d534f65fa692a599ec (patch) | |
| tree | ec577d8737dbc338e9b8ae55dfa9de96f6b0b3f9 | |
| parent | 52d3b60f66b27a0a7f6fad5048f72de396d91ca3 (diff) | |
parse named flags for language
| -rw-r--r-- | xmake/core/language/language.lua | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/xmake/core/language/language.lua b/xmake/core/language/language.lua index f14ebc613..bf2a8517f 100644 --- a/xmake/core/language/language.lua +++ b/xmake/core/language/language.lua @@ -141,7 +141,53 @@ end -- get the named flags function _instance:namedflags() - -- TODO + -- attempt to get it from cache first + if self._NAMEDFLAGS then + return self._NAMEDFLAGS + end + + -- get namedflags + local results = {} + for toolkind, namedflags in pairs(table.wrap(self._INFO.namedflags)) do + + -- make tool info + local toolinfo = results[toolkind] or {} + for _, namedflag in ipairs(namedflags) do + + -- split it by '.' + local splitinfo = namedflag:split('.') + assert(#splitinfo == 2) + + -- get flag scope + local flagscope = splitinfo[1] + assert(flagscope) + + -- get flag info + local flaginfo = splitinfo[2]:split(':') + + -- get flag name + local flagname = flaginfo[1] + assert(flagname) + + -- get check state + local checkstate = false + if #flaginfo == 2 and flaginfo[2] == "check" then + checkstate = true + end + + -- insert this flag info + table.insert(toolinfo, {flagname, checkstate}) + end + + -- save this tool info + results[toolkind] = toolinfo + end + + -- cache this results + self._NAMEDFLAGS = results + + -- ok? + return results end -- the directory of language |
