summaryrefslogtreecommitdiff
path: root/xmake/core/tool/builder.lua
diff options
context:
space:
mode:
Diffstat (limited to 'xmake/core/tool/builder.lua')
-rw-r--r--xmake/core/tool/builder.lua24
1 files changed, 23 insertions, 1 deletions
diff --git a/xmake/core/tool/builder.lua b/xmake/core/tool/builder.lua
index 01e779fda..5795cadd4 100644
--- a/xmake/core/tool/builder.lua
+++ b/xmake/core/tool/builder.lua
@@ -230,7 +230,21 @@ function builder:_addflags_from_target(flags, target)
-- add the target flags
for _, flagkind in ipairs(self:_flagkinds()) do
- table.join2(targetflags, self:_mapflags(target:get(flagkind)))
+
+ -- get flag and extra info
+ local flag = target:get(flagkind)
+ local flagextra = target:get("__extra_" .. flagkind)
+ local force = false
+ if flagextra then
+ force = (flagextra[flag] or {}).force
+ end
+
+ -- add original or auto mapping flag?
+ if force then
+ table.join2(targetflags, flag)
+ else
+ table.join2(targetflags, self:_mapflags(flag))
+ end
end
-- cache it
@@ -246,7 +260,15 @@ function builder:_addflags_from_argument(flags, target, args)
-- add flags from the flag kinds (cxflags, ..)
for _, flagkind in ipairs(self:_flagkinds()) do
+
+ -- add auto mapping flags
table.join2(flags, self:_mapflags(args[flagkind]))
+
+ -- add original flags
+ local original_flags = (args.force or {})[flagkind]
+ if original_flags then
+ table.join2(flags, original_flags)
+ end
end
-- add flags (named) from the language