summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur LAURENT <[email protected]>2025-05-09 17:20:52 +0200
committerArthur LAURENT <[email protected]>2025-05-09 20:59:32 +0200
commitdf0df783b8a9398ead31d38214f5d6cba9a818d5 (patch)
tree029f0089950f23dc3c2b2d8ed845f99e5fef1cbb
parent0b5e5a641897f1de3e6c1ff429f19a2baa31ce8f (diff)
(rules) optimize win.subsystem rule by caching frequently called functions
-rw-r--r--xmake/rules/windows/xmake.lua14
1 files changed, 8 insertions, 6 deletions
diff --git a/xmake/rules/windows/xmake.lua b/xmake/rules/windows/xmake.lua
index 6bffb4bea..f02927a88 100644
--- a/xmake/rules/windows/xmake.lua
+++ b/xmake/rules/windows/xmake.lua
@@ -18,8 +18,10 @@ rule("win.subsystem")
local subsystem = target:data("win.subsystem")
local valid = false
+ local startswith = string.startswith
+ local upper = string.upper
for _, s in ipairs(subsystems) do
- if string.upper(subsystem):startswith(s) then
+ if startswith(upper(subsystem), s) then
valid = true
break
end
@@ -28,13 +30,13 @@ rule("win.subsystem")
local linker = target:tool("ld")
linker = path.filename(linker)
- if linker:startswith("clang") then
+ if startswith(linker, "clang") then
target:add("ldflags", "-Wl,-subsystem:" .. subsystem, { force = true })
- elseif linker:startswith("link") or linker:startswith("lld-link") then
- target:add("ldflags", "/SUBSYSTEM:" .. string.upper(subsystem), { force = true })
- elseif linker:startswith("gcc") or linker:startswith("g++") then
+ elseif startswith(linker, "link") or startswith(linker, "lld-link") then
+ target:add("ldflags", "/SUBSYSTEM:" .. upper(subsystem), { force = true })
+ elseif startswith(linker, "gcc") or startswith(linker, "g++") then
target:add("ldflags", "-Wl,-m" .. subsystem, { force = true })
- elseif linker:startswith("ld") then
+ elseif startswith(linker, "ld") then
target:add("ldflags", "-m" .. subsystem, { force = true })
end
end)