zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit fb5dc2892171b4f9f14460844b67163b5aa4d269 (tree)
parent 7017388e9ea9a5b144780c0a5c090bb7a221c9b6
Author: emekoi <emekankurumeh@outlook.com>
Date:   Thu,  9 May 2019 18:01:12 -0500

added subsystem to builtin.zig

Diffstat:
Msrc/codegen.cpp | 40++++++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/codegen.cpp b/src/codegen.cpp @@ -7870,6 +7870,30 @@ Buf *codegen_generate_builtin_source(CodeGen *g) { //assert(EndianLittle == 1); } { + buf_appendf(contents, + "pub const SubSystem = enum {\n" + " Auto,\n" + " Console,\n" + " Windows,\n" + " Posix,\n" + " Native,\n" + " EfiApplication,\n" + " EfiBootServiceDriver,\n" + " EfiRom,\n" + " EfiRuntimeDriver,\n" + "};\n\n"); + + assert(TargetSubsystemAuto == 0); + assert(TargetSubsystemConsole == 1); + assert(TargetSubsystemWindows == 2); + assert(TargetSubsystemPosix == 3); + assert(TargetSubsystemNative == 4); + assert(TargetSubsystemEfiApplication == 5); + assert(TargetSubsystemEfiBootServiceDriver == 6); + assert(TargetSubsystemEfiRom == 7); + assert(TargetSubsystemEfiRuntimeDriver == 8); + } + { const char *endian_str = g->is_big_endian ? "Endian.Big" : "Endian.Little"; buf_appendf(contents, "pub const endian = %s;\n", endian_str); } @@ -7885,6 +7909,21 @@ Buf *codegen_generate_builtin_source(CodeGen *g) { buf_appendf(contents, "pub const valgrind_support = %s;\n", bool_to_str(want_valgrind_support(g))); buf_appendf(contents, "pub const position_independent_code = %s;\n", bool_to_str(g->have_pic)); + { + static const char* subsystem_strings[] = { + "Auto", + "Console", + "Windows", + "Posix", + "Native", + "EfiApplication", + "EfiBootServiceDriver", + "EfiRom", + "EfiRuntimeDriver", + }; + buf_appendf(contents, "pub const subsystem = SubSystem.%s;\n", subsystem_strings[g->subsystem]); + } + if (g->is_test_build) { buf_appendf(contents, "const TestFn = struct {\n" @@ -7928,6 +7967,7 @@ static Error define_builtin_compile_vars(CodeGen *g) { cache_bool(&cache_hash, g->have_err_ret_tracing); cache_bool(&cache_hash, g->libc_link_lib != nullptr); cache_bool(&cache_hash, g->valgrind_support); + cache_int(&cache_hash, g->subsystem); Buf digest = BUF_INIT; buf_resize(&digest, 0);