summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2017-11-21 22:41:46 +0800
committerruki <[email protected]>2017-11-21 10:10:39 +0800
commit5b98e5ebcabfdb83a4ab0d333210839d056a98fb (patch)
tree219b4668f147b58e52d9a47fec29c7b73f8b5355
parent3c7a0f6690678337f9e86b777e35094ba34a34ad (diff)
force to set flags without auto checking
-rw-r--r--CHANGELOG.md4
-rw-r--r--xmake/core/tool/builder.lua24
2 files changed, 27 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 610d6b894..630fb7382 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,8 @@
* [#151](https://github.com/tboox/xmake/issues/151): Improve to build the share library for the mingw platform
* Improve to generate makefile plugin
* Improve the checking errors tips
+* Improve `add_cxflags` .., force to set flags without auto checking: `add_cxflags("-DTEST", {force = true})`
+* Improve `add_files`, add force block to force to set flags without auto checking: `add_files("src/*.c", {force = {cxflags = "-DTEST"}})`
### Bugs fixed
@@ -424,6 +426,8 @@
* [#151](https://github.com/tboox/xmake/issues/151): 改进mingw平台下动态库生成
* 改进生成makefile插件
* 改进检测错误提示
+* 改进`add_cxflags`等flags api的设置,添加force参数,来禁用自动检测和映射,强制设置选项:`add_cxflags("-DTEST", {force = true})`
+* 改进`add_files`的flags设置,添加force域,用于设置不带自动检测和映射的原始flags:`add_files("src/*.c", {force = {cxflags = "-DTEST"}})`
## Bugs修复
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