summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author夕伽 <[email protected]>2018-09-04 15:50:51 +0800
committer夕伽 <[email protected]>2018-09-04 15:50:51 +0800
commita95991384a08d1876dd20814f3652abb2fedd23d (patch)
tree81b2749a80d2de2f501de0452e2d328796fd0188
parent26b8ecc0d3d69fb57d7be53fee59f619232db9d6 (diff)
mfc's rule full match flags on remove or check
-rw-r--r--xmake/rules/winsdk/mfc/mfc.lua28
1 files changed, 18 insertions, 10 deletions
diff --git a/xmake/rules/winsdk/mfc/mfc.lua b/xmake/rules/winsdk/mfc/mfc.lua
index 5232ae046..2b70ba920 100644
--- a/xmake/rules/winsdk/mfc/mfc.lua
+++ b/xmake/rules/winsdk/mfc/mfc.lua
@@ -27,8 +27,8 @@ function _mfc_remove_mt_md_flags(target, flagsname)
local flags = target:get(flagsname)
if type(flags) == "table" then
for key, flag in pairs(flags) do
- flag = flag:lower()
- if flag:find("[/%-]mt") or flag:find("[/%-]md") then
+ flag = flag:lower():trim()
+ if flag:find("^[/%-]?mt[d]?$") or flag:find("^[/%-]?md[d]?$") then
flags[key] = nil
end
end
@@ -45,20 +45,28 @@ end
function _mfc_remove_flags(target)
local ldflags = target:get("ldflags")
for key, ldflag in pairs(ldflags) do
- ldflag = ldflag:lower()
+ ldflag = ldflag:lower():trim()
if ldflag:find("[/%-]subsystem:") then
- ldflags[key] = nil
+ if type(ldflags) == "table" then
+ ldflags[key] = nil
+ else
+ ldflags = {}
+ end
break
end
end
target:set("ldflags", ldflags)
- -- remove defines /DMT /DMTd /DMD /DMDd
+ -- remove defines MT MTd MD MDd
local defines = target:get("defines")
for key, define in pairs(defines) do
- define = define:lower()
- if define:find("[/%-]dmt") or define:find("[/%-]dmd") then
- defines[key] = nil
+ define = define:lower():trim()
+ if define:find("^[/%-]?mt[d]?$") or define:find("^[/%-]?md[d]?$") then
+ if type(defines) == "table" then
+ defines[key] = nil
+ else
+ defines = {}
+ end
end
end
target:set("defines", defines)
@@ -77,8 +85,8 @@ end
function mfc_application_entry(target)
local defines = target:get("defines")
for key, define in pairs(defines) do
- define = define:lower()
- if define:find("unicode") or define:find("_unicode") then
+ define = define:lower():trim()
+ if define:find("^[_]?unicode$") then
return "-entry:wWinMainCRTStartup"
end
end