authorgravatar for emekankurumeh@outlook.comemekoi <emekankurumeh@outlook.com> 2019-05-10 09:48:32-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-29 16:55:01-04:00
log6bc5b07e3e24871fc81ddd5a3780523bf95cf8d5
tree09c92a4731eb380da1995f105884a7caebad06b6
parentfb5dc2892171b4f9f14460844b67163b5aa4d269
signature Commit is signed but in an unrecognized format.

try to resolve TargetSubSystemAuto to actual subsystem


1 files changed, 14 insertions(+), 5 deletions(-)

src/codegen.cpp+14-5
...@@ -7872,7 +7872,6 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {...@@ -7872,7 +7872,6 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7872 {7872 {
7873 buf_appendf(contents,7873 buf_appendf(contents,
7874 "pub const SubSystem = enum {\n"7874 "pub const SubSystem = enum {\n"
7875 " Auto,\n"
7876 " Console,\n"7875 " Console,\n"
7877 " Windows,\n"7876 " Windows,\n"
7878 " Posix,\n"7877 " Posix,\n"
...@@ -7883,7 +7882,6 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {...@@ -7883,7 +7882,6 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7883 " EfiRuntimeDriver,\n"7882 " EfiRuntimeDriver,\n"
7884 "};\n\n");7883 "};\n\n");
78857884
7886 assert(TargetSubsystemAuto == 0);
7887 assert(TargetSubsystemConsole == 1);7885 assert(TargetSubsystemConsole == 1);
7888 assert(TargetSubsystemWindows == 2);7886 assert(TargetSubsystemWindows == 2);
7889 assert(TargetSubsystemPosix == 3);7887 assert(TargetSubsystemPosix == 3);
...@@ -7911,7 +7909,6 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {...@@ -7911,7 +7909,6 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
79117909
7912 {7910 {
7913 static const char* subsystem_strings[] = {7911 static const char* subsystem_strings[] = {
7914 "Auto",
7915 "Console",7912 "Console",
7916 "Windows",7913 "Windows",
7917 "Posix",7914 "Posix",
...@@ -7921,7 +7918,19 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {...@@ -7921,7 +7918,19 @@ Buf *codegen_generate_builtin_source(CodeGen *g) {
7921 "EfiRom",7918 "EfiRom",
7922 "EfiRuntimeDriver",7919 "EfiRuntimeDriver",
7923 };7920 };
7924 buf_appendf(contents, "pub const subsystem = SubSystem.%s;\n", subsystem_strings[g->subsystem]);7921
7922 if (g->subsystem == TargetSubsystemAuto) {
7923 if (g->have_c_main || g->have_pub_main) {
7924 buf_appendf(contents, "pub const subsystem = SubSystem.%s;\n", subsystem_strings[TargetSubsystemConsole - 1]);
7925 } else if (g->have_winmain || g->have_winmain_crt_startup) {
7926 buf_appendf(contents, "pub const subsystem = SubSystem.%s;\n", subsystem_strings[TargetSubsystemWindows - 1]);
7927 } else if (g->have_dllmain_crt_startup || g->out_type == OutTypeLib) {
7928 buf_appendf(contents, "pub const subsystem = null;\n");
7929 }
7930 } else {
7931 buf_appendf(contents, "pub const subsystem = SubSystem.%s;\n", subsystem_strings[g->subsystem - 1]);
7932 }
7933
7925 }7934 }
79267935
7927 if (g->is_test_build) {7936 if (g->is_test_build) {
...@@ -7967,7 +7976,7 @@ static Error define_builtin_compile_vars(CodeGen *g) {...@@ -7967,7 +7976,7 @@ static Error define_builtin_compile_vars(CodeGen *g) {
7967 cache_bool(&cache_hash, g->have_err_ret_tracing);7976 cache_bool(&cache_hash, g->have_err_ret_tracing);
7968 cache_bool(&cache_hash, g->libc_link_lib != nullptr);7977 cache_bool(&cache_hash, g->libc_link_lib != nullptr);
7969 cache_bool(&cache_hash, g->valgrind_support);7978 cache_bool(&cache_hash, g->valgrind_support);
7970 cache_int(&cache_hash, g->subsystem);7979 cache_int(&cache_hash, g->subsystem - 1);
79717980
7972 Buf digest = BUF_INIT;7981 Buf digest = BUF_INIT;
7973 buf_resize(&digest, 0);7982 buf_resize(&digest, 0);