diff options
| author | 夕伽 <[email protected]> | 2018-09-04 15:50:51 +0800 |
|---|---|---|
| committer | 夕伽 <[email protected]> | 2018-09-04 15:50:51 +0800 |
| commit | a95991384a08d1876dd20814f3652abb2fedd23d (patch) | |
| tree | 81b2749a80d2de2f501de0452e2d328796fd0188 | |
| parent | 26b8ecc0d3d69fb57d7be53fee59f619232db9d6 (diff) | |
mfc's rule full match flags on remove or check
| -rw-r--r-- | xmake/rules/winsdk/mfc/mfc.lua | 28 |
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 |
