diff options
| author | Arthur LAURENT <[email protected]> | 2025-05-09 17:20:52 +0200 |
|---|---|---|
| committer | Arthur LAURENT <[email protected]> | 2025-05-09 20:59:32 +0200 |
| commit | df0df783b8a9398ead31d38214f5d6cba9a818d5 (patch) | |
| tree | 029f0089950f23dc3c2b2d8ed845f99e5fef1cbb | |
| parent | 0b5e5a641897f1de3e6c1ff429f19a2baa31ce8f (diff) | |
(rules) optimize win.subsystem rule by caching frequently called functions
| -rw-r--r-- | xmake/rules/windows/xmake.lua | 14 |
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) |
