diff options
| author | Arthur LAURENT <[email protected]> | 2025-05-09 17:04:13 +0200 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2025-05-09 17:04:13 +0200 |
| commit | 0b5e5a641897f1de3e6c1ff429f19a2baa31ce8f (patch) | |
| tree | 899fcca87ce7ce0972b9240e2b09c9af5364bf35 | |
| parent | 7d1f8a065d1eb5c886016ab5af201e086c9c5f67 (diff) | |
(rules) update rules that set subsystem manually to use new subsystem rule
| -rw-r--r-- | xmake/rules/qt/load.lua | 9 | ||||
| -rw-r--r-- | xmake/rules/wdk/load.lua | 9 | ||||
| -rw-r--r-- | xmake/rules/winsdk/mfc/mfc.lua | 2 | ||||
| -rw-r--r-- | xmake/rules/winsdk/xmake.lua | 22 |
4 files changed, 17 insertions, 25 deletions
diff --git a/xmake/rules/qt/load.lua b/xmake/rules/qt/load.lua index 0c7b68d71..9fc2919c2 100644 --- a/xmake/rules/qt/load.lua +++ b/xmake/rules/qt/load.lua @@ -518,7 +518,7 @@ function main(target, opt) -- is gui application? if opt.gui then - -- add -subsystem:windows for windows platform + -- add windows subsystem for windows and mingw platforms if target:is_plat("windows") then target:add("defines", "_WINDOWS") local subsystem = false @@ -533,7 +533,12 @@ function main(target, opt) end -- maybe user will set subsystem to console if not subsystem then - target:add("ldflags", "-subsystem:windows", "-entry:mainCRTStartup", {force = true}) + target:add("rules", "win.subsystem.windows") + local linker = target:tool("ld") + linker = path.filename(linker) + if linker:startswith("link") or linker:startswith("lld-link") then + target:add("ldflags", "-entry:mainCRTStartup", {force = true}) + end end elseif target:is_plat("mingw") then target:add("ldflags", "-mwindows", {force = true}) diff --git a/xmake/rules/wdk/load.lua b/xmake/rules/wdk/load.lua index 62cf99467..8ffdab1e0 100644 --- a/xmake/rules/wdk/load.lua +++ b/xmake/rules/wdk/load.lua @@ -34,7 +34,8 @@ function driver_umdf(target) -- add subsystem local winver = target:values("wdk.env.winver") or config.get("wdk_winver") - target:add("shflags", "-subsystem:windows," .. os_winver.subsystem(winver), {force = true}) + target:data_set("win.subsystem", "windows," .. os_winver.subsystem(winver)) + target:add("rules", "win.subsystem") -- set default driver entry if does not exist local entry = false @@ -74,7 +75,8 @@ function driver_kmdf(target) target:add("ldflags", "-nodefaultlib", {force = true}) -- add subsystem - target:add("ldflags", "-subsystem:native," .. os_winver.subsystem(winver), {force = true}) + target:data_set("win.subsystem", "native," .. os_winver.subsystem(winver)) + target:add("rules", "win.subsystem") -- set default driver entry if does not exist local entry = false @@ -117,7 +119,8 @@ function driver_wdm(target) target:add("ldflags", "-nodefaultlib", {force = true}) -- add subsystem - target:add("ldflags", "-subsystem:native," .. os_winver.subsystem(winver), {force = true}) + target:data_set("win.subsystem", "native," .. os_winver.subsystem(winver)) + target:add("rules", "win.subsystem") -- set default driver entry if does not exist local entry = false diff --git a/xmake/rules/winsdk/mfc/mfc.lua b/xmake/rules/winsdk/mfc/mfc.lua index 69b4f9eff..ebf9375f5 100644 --- a/xmake/rules/winsdk/mfc/mfc.lua +++ b/xmake/rules/winsdk/mfc/mfc.lua @@ -87,7 +87,7 @@ function application(target, mfc_kind) _remove_flags(target) -- set windows subsystem - target:add("ldflags", "-subsystem:windows", {force = true}) + target:add("rules", "win.subsystem.windows") -- forces a link to complete even with unresolved symbols if mfc_kind == "static" then diff --git a/xmake/rules/winsdk/xmake.lua b/xmake/rules/winsdk/xmake.lua index 6461c4eca..0f42cf27a 100644 --- a/xmake/rules/winsdk/xmake.lua +++ b/xmake/rules/winsdk/xmake.lua @@ -29,26 +29,10 @@ rule("win.sdk.application") target:set("kind", "binary") end) - after_load(function (target) + -- set subsystem: windows + add_deps("win.subsystem.windows") - -- set subsystem: windows - if target:is_plat("mingw") then - target:add("ldflags", "-mwindows", {force = true}) - else - local subsystem = false - for _, ldflag in ipairs(target:get("ldflags")) do - if type(ldflag) == "string" then - ldflag = ldflag:lower() - if ldflag:find("[/%-]subsystem:") then - subsystem = true - break - end - end - end - if not subsystem then - target:add("ldflags", "-subsystem:windows", {force = true, tools = {"link"}}) - end - end + after_load(function (target) -- add links target:add("syslinks", "kernel32", "user32", "gdi32", "winspool", "comdlg32", "advapi32") |
