summaryrefslogtreecommitdiff
path: root/xmake/core/tool/builder.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2023-09-27 22:50:02 +0800
committerruki <[email protected]>2023-09-27 22:50:02 +0800
commit8f5d01b3d906d39b7ef306c504a84b6eac7d3ebc (patch)
tree74a1cd2d3c19d2c33c1af99c85c0db270b67dfc7 /xmake/core/tool/builder.lua
parentc835fd822cf03df508bdf9d766b20a8c70a6340e (diff)
get items for languages
Diffstat (limited to 'xmake/core/tool/builder.lua')
-rw-r--r--xmake/core/tool/builder.lua39
1 files changed, 24 insertions, 15 deletions
diff --git a/xmake/core/tool/builder.lua b/xmake/core/tool/builder.lua
index 3eda6ce6a..d0b50bd6f 100644
--- a/xmake/core/tool/builder.lua
+++ b/xmake/core/tool/builder.lua
@@ -336,7 +336,8 @@ function builder:_add_flags_from_language(flags, target, getters)
end
}
- -- get name flags for builder
+ -- get order named items
+ local items = {}
for _, flaginfo in ipairs(self:_nameflags()) do
-- get flag info
@@ -370,20 +371,28 @@ function builder:_add_flags_from_language(flags, target, getters)
-- map named flags to real flags
local mapper = self:_tool()["nf_" .. apiname]
if mapper then
- if multival then
- local results = mapper(self:_tool(), table.wrap(getter(flagname)), target, self:_targetkind())
- for _, flag in ipairs(table.wrap(results)) do
- if flag and flag ~= "" and (not checkstate or self:has_flags(flag)) then
- table.insert(flags, flag)
- end
- end
- else
- for _, flagvalue in ipairs(table.wrap(getter(flagname))) do
- local flag = mapper(self:_tool(), flagvalue, target, self:_targetkind())
- if flag and flag ~= "" and (not checkstate or self:has_flags(flag)) then
- table.insert(flags, flag)
- end
- end
+ table.insert(items, {name = flagname, values = table.wrap(getter(flagname)), check = checkstate, multival = multival, mapper = mapper})
+ end
+ end
+ end
+
+ -- get flags from the items
+ utils.dump(items)
+ for _, item in ipairs(items) do
+ local check = item.check
+ local mapper = item.mapper
+ if item.multival then
+ local results = mapper(self:_tool(), item.values, target, self:_targetkind())
+ for _, flag in ipairs(table.wrap(results)) do
+ if flag and flag ~= "" and (not check or self:has_flags(flag)) then
+ table.insert(flags, flag)
+ end
+ end
+ else
+ for _, flagvalue in ipairs(item.values) do
+ local flag = mapper(self:_tool(), flagvalue, target, self:_targetkind())
+ if flag and flag ~= "" and (not check or self:has_flags(flag)) then
+ table.insert(flags, flag)
end
end
end