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:
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);