Skip to content

Commit 2b7e29f

Browse files
committed
Merge branch 'nebulaeonline-nebulaeonline'
Zig gains the UEFI OS target
2 parents 2801870 + a918ce2 commit 2b7e29f

16 files changed

+284
-181
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -590,6 +590,7 @@ set(ZIG_STD_FILES
590590
"os/freebsd/x86_64.zig"
591591
"os/path.zig"
592592
"os/time.zig"
593+
"os/uefi.zig"
593594
"os/windows/advapi32.zig"
594595
"os/windows/error.zig"
595596
"os/windows/index.zig"

README.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -87,26 +87,26 @@ clarity.
8787

8888
#### Support Table
8989

90-
| | freestanding | linux | macosx | windows | freebsd | other |
91-
|--------|--------------|--------|--------|---------|---------|--------|
92-
|x86_64 | Tier 2 | Tier 1 | Tier 1 | Tier 1 | Tier 2 | Tier 3 |
93-
|i386 | Tier 2 | Tier 2 | Tier 2 | Tier 2 | Tier 3 | Tier 3 |
94-
|arm | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 |
95-
|arm64 | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 |
96-
|bpf | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
97-
|hexagon | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
98-
|mips | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
99-
|powerpc | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
100-
|r600 | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
101-
|amdgcn | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
102-
|sparc | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
103-
|s390x | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
104-
|spir | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
105-
|lanai | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 |
106-
|wasm32 | Tier 4 | N/A | N/A | N/A | N/A | N/A |
107-
|wasm64 | Tier 4 | N/A | N/A | N/A | N/A | N/A |
108-
|riscv32 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 |
109-
|riscv64 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 |
90+
| | freestanding | linux | macosx | windows | freebsd | UEFI | other |
91+
|--------|--------------|--------|--------|---------|---------|--------|--------|
92+
|x86_64 | Tier 2 | Tier 1 | Tier 1 | Tier 1 | Tier 2 | Tier 2 | Tier 3 |
93+
|i386 | Tier 2 | Tier 2 | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 |
94+
|arm | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 |
95+
|arm64 | Tier 2 | Tier 2 | Tier 3 | Tier 3 | Tier 3 | Tier 3 | Tier 3 |
96+
|bpf | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
97+
|hexagon | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
98+
|mips | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
99+
|powerpc | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
100+
|r600 | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
101+
|amdgcn | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
102+
|sparc | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
103+
|s390x | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
104+
|spir | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
105+
|lanai | Tier 3 | Tier 3 | N/A | N/A | Tier 3 | Tier 3 | Tier 3 |
106+
|wasm32 | Tier 4 | N/A | N/A | N/A | N/A | N/A | N/A |
107+
|wasm64 | Tier 4 | N/A | N/A | N/A | N/A | N/A | N/A |
108+
|riscv32 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | Tier 4 |
109+
|riscv64 | Tier 4 | Tier 4 | N/A | N/A | Tier 4 | Tier 4 | Tier 4 |
110110

111111
## Community
112112

src-self-hosted/target.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ pub const Target = union(enum) {
520520
=> return 64,
521521
},
522522

523-
builtin.Os.windows => switch (id) {
523+
builtin.Os.windows, builtin.Os.uefi => switch (id) {
524524
CInt.Id.Short,
525525
CInt.Id.UShort,
526526
=> return 16,

src/all_types.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1750,12 +1750,11 @@ struct CodeGen {
17501750
BuildMode build_mode;
17511751
OutType out_type;
17521752
ZigTarget zig_target;
1753+
TargetSubsystem subsystem;
17531754
bool is_static;
17541755
bool strip_debug_symbols;
17551756
bool is_test_build;
17561757
bool is_native_target;
1757-
bool windows_subsystem_windows;
1758-
bool windows_subsystem_console;
17591758
bool linker_rdynamic;
17601759
bool no_rosegment_workaround;
17611760
bool each_lib_rpath;

src/analyze.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3203,14 +3203,12 @@ void add_fn_export(CodeGen *g, ZigFn *fn_table_entry, Buf *symbol_name, GlobalLi
32033203
if (ccc) {
32043204
if (buf_eql_str(symbol_name, "main") && g->libc_link_lib != nullptr) {
32053205
g->have_c_main = true;
3206-
g->windows_subsystem_windows = false;
3207-
g->windows_subsystem_console = true;
3206+
g->subsystem = TargetSubsystemConsole;
32083207
} else if (buf_eql_str(symbol_name, "WinMain") &&
32093208
g->zig_target.os == OsWindows)
32103209
{
32113210
g->have_winmain = true;
3212-
g->windows_subsystem_windows = true;
3213-
g->windows_subsystem_console = false;
3211+
g->subsystem = TargetSubsystemWindows;
32143212
} else if (buf_eql_str(symbol_name, "WinMainCRTStartup") &&
32153213
g->zig_target.os == OsWindows)
32163214
{
@@ -3221,6 +3219,7 @@ void add_fn_export(CodeGen *g, ZigFn *fn_table_entry, Buf *symbol_name, GlobalLi
32213219
g->have_dllmain_crt_startup = true;
32223220
}
32233221
}
3222+
32243223
FnExport *fn_export = fn_table_entry->export_list.add_one();
32253224
memset(fn_export, 0, sizeof(FnExport));
32263225
buf_init_from_buf(&fn_export->name, symbol_name);
@@ -4376,8 +4375,7 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *r
43764375
if (is_pub && ok_cc) {
43774376
if (buf_eql_str(proto_name, "main")) {
43784377
g->have_pub_main = true;
4379-
g->windows_subsystem_windows = false;
4380-
g->windows_subsystem_console = true;
4378+
g->subsystem = TargetSubsystemConsole;
43814379
} else if (buf_eql_str(proto_name, "panic")) {
43824380
g->have_pub_panic = true;
43834381
}

src/codegen.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -291,11 +291,6 @@ void codegen_add_framework(CodeGen *g, const char *framework) {
291291
g->darwin_frameworks.append(buf_create_from_str(framework));
292292
}
293293

294-
void codegen_set_windows_subsystem(CodeGen *g, bool mwindows, bool mconsole) {
295-
g->windows_subsystem_windows = mwindows;
296-
g->windows_subsystem_console = mconsole;
297-
}
298-
299294
void codegen_set_mmacosx_version_min(CodeGen *g, Buf *mmacosx_version_min) {
300295
g->mmacosx_version_min = mmacosx_version_min;
301296
}
@@ -7236,8 +7231,7 @@ static void init(CodeGen *g) {
72367231
}
72377232

72387233
if (g->is_test_build) {
7239-
g->windows_subsystem_windows = false;
7240-
g->windows_subsystem_console = true;
7234+
g->subsystem = TargetSubsystemConsole;
72417235
}
72427236

72437237
assert(g->root_out_name);
@@ -7273,7 +7267,7 @@ static void init(CodeGen *g) {
72737267
// LLVM creates invalid binaries on Windows sometimes.
72747268
// See https://github.com/ziglang/zig/issues/508
72757269
// As a workaround we do not use target native features on Windows.
7276-
if (g->zig_target.os == OsWindows) {
7270+
if (g->zig_target.os == OsWindows || g->zig_target.os == OsUefi) {
72777271
target_specific_cpu_args = "";
72787272
target_specific_features = "";
72797273
} else {
@@ -7519,6 +7513,7 @@ static void gen_root_source(CodeGen *g) {
75197513
report_errors_and_maybe_exit(g);
75207514

75217515
if (!g->is_test_build && g->zig_target.os != OsFreestanding &&
7516+
g->zig_target.os != OsUefi &&
75227517
!g->have_c_main && !g->have_winmain && !g->have_winmain_crt_startup &&
75237518
((g->have_pub_main && g->out_type == OutTypeObj) || g->out_type == OutTypeExe))
75247519
{
@@ -8075,12 +8070,11 @@ static Error check_cache(CodeGen *g, Buf *manifest_dir, Buf *digest) {
80758070
cache_int(ch, g->zig_target.os);
80768071
cache_int(ch, g->zig_target.env_type);
80778072
cache_int(ch, g->zig_target.oformat);
8073+
cache_int(ch, g->subsystem);
80788074
cache_bool(ch, g->is_static);
80798075
cache_bool(ch, g->strip_debug_symbols);
80808076
cache_bool(ch, g->is_test_build);
80818077
cache_bool(ch, g->is_native_target);
8082-
cache_bool(ch, g->windows_subsystem_windows);
8083-
cache_bool(ch, g->windows_subsystem_console);
80848078
cache_bool(ch, g->linker_rdynamic);
80858079
cache_bool(ch, g->no_rosegment_workaround);
80868080
cache_bool(ch, g->each_lib_rpath);

src/codegen.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ void codegen_set_libc_include_dir(CodeGen *codegen, Buf *libc_include_dir);
3333
void codegen_set_msvc_lib_dir(CodeGen *g, Buf *msvc_lib_dir);
3434
void codegen_set_kernel32_lib_dir(CodeGen *codegen, Buf *kernel32_lib_dir);
3535
void codegen_set_dynamic_linker(CodeGen *g, Buf *dynamic_linker);
36-
void codegen_set_windows_subsystem(CodeGen *g, bool mwindows, bool mconsole);
3736
void codegen_add_lib_dir(CodeGen *codegen, const char *dir);
3837
void codegen_add_forbidden_lib(CodeGen *codegen, Buf *lib);
3938
LinkLib *codegen_add_link_lib(CodeGen *codegen, Buf *lib);

0 commit comments

Comments
 (0)