|
1 | | -rule("win.subsystem.console") |
2 | | - add_deps("win.subsystem") |
3 | | - on_load(function(target) |
4 | | - target:data_set("win.subsystem", "console") |
5 | | - end) |
6 | | - |
7 | | -rule("win.subsystem.windows") |
8 | | - add_deps("win.subsystem") |
9 | | - on_load(function(target) |
10 | | - target:data_set("win.subsystem", "windows") |
11 | | - end) |
12 | | - |
13 | | -rule("win.subsystem") |
| 1 | +rule("platform.windows.subsystem") |
14 | 2 | on_config("mingw", "windows", function(target) |
15 | 3 | local subsystems = { |
16 | 4 | "BOOT_APPLICATION", "CONSOLE", "EFI_APPLICATION", "EFI_BOOT_SERVICE_DRIVER", "EFI_ROM", "EFI_RUNTIME_DRIVER", "NATIVE", "POSIX", "WINDOWS" |
17 | 5 | } |
18 | 6 |
|
19 | | - local subsystem = target:data("win.subsystem") |
| 7 | + local subsystem = target:values("windows.subsystem") |
20 | 8 | local valid = false |
21 | | - local startswith = string.startswith |
22 | 9 | local upper = string.upper |
23 | 10 | for _, s in ipairs(subsystems) do |
24 | | - if startswith(upper(subsystem), s) then |
| 11 | + if (subsystem:upper():startwiths(s)) then |
25 | 12 | valid = true |
26 | 13 | break |
27 | 14 | end |
28 | 15 | end |
29 | 16 | assert(valid, "Invalid subsystem " .. subsystem) |
30 | 17 |
|
31 | | - local linker = target:tool("ld") |
32 | | - linker = path.filename(linker) |
33 | | - if startswith(linker, "clang") then |
| 18 | + if target:has_tool("ld", "clang") then |
34 | 19 | target:add("ldflags", "-Wl,-subsystem:" .. subsystem, { force = true }) |
35 | | - elseif startswith(linker, "link") or startswith(linker, "lld-link") then |
| 20 | + elseif target:has_tool("ld", "link", "lld-link") then |
36 | 21 | target:add("ldflags", "/SUBSYSTEM:" .. upper(subsystem), { force = true }) |
37 | | - elseif startswith(linker, "gcc") or startswith(linker, "g++") then |
| 22 | + elseif target:has_tool("ld", "gcc", "g++") then |
38 | 23 | target:add("ldflags", "-Wl,-m" .. subsystem, { force = true }) |
39 | | - elseif startswith(linker, "ld") then |
| 24 | + elseif target:has_tool("ld", "ld") then |
40 | 25 | target:add("ldflags", "-m" .. subsystem, { force = true }) |
41 | 26 | end |
42 | 27 | end) |
0 commit comments