zig

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

commit fd7654e4e80f59e18bfaf7ba4872fefcd74feeb5 (tree)
parent f54aff46721b04fe43b645f27d3c4dbb8d2cc74d
Author: Andrew Kelley <superjoe30@gmail.com>
Date:   Sat, 14 Oct 2017 20:12:15 -0400

build-exe allows direct export of WinMainCRTStartup

Diffstat:
Msrc/all_types.hpp | 1+
Msrc/analyze.cpp | 4++++
Msrc/codegen.cpp | 3++-
3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/all_types.hpp b/src/all_types.hpp @@ -1455,6 +1455,7 @@ struct CodeGen { bool have_pub_main; bool have_c_main; bool have_winmain; + bool have_winmain_crt_startup; bool have_pub_panic; Buf *libc_lib_dir; Buf *libc_static_lib_dir; diff --git a/src/analyze.cpp b/src/analyze.cpp @@ -3196,6 +3196,10 @@ ImportTableEntry *add_source_file(CodeGen *g, PackageTableEntry *package, Buf *a g->have_winmain = true; g->windows_subsystem_windows = true; g->windows_subsystem_console = false; + } else if (proto_node->data.fn_proto.visib_mod == VisibModExport && + buf_eql_str(proto_name, "WinMainCRTStartup") && g->zig_target.os == ZigLLVM_Win32) + { + g->have_winmain_crt_startup = true; } } diff --git a/src/codegen.cpp b/src/codegen.cpp @@ -5213,7 +5213,8 @@ static void gen_root_source(CodeGen *g) { assert(g->root_out_name); assert(g->out_type != OutTypeUnknown); - if (!g->is_test_build && g->zig_target.os != ZigLLVM_UnknownOS && !g->have_c_main && !g->have_winmain && + if (!g->is_test_build && g->zig_target.os != ZigLLVM_UnknownOS && + !g->have_c_main && !g->have_winmain && !g->have_winmain_crt_startup && ((g->have_pub_main && g->out_type == OutTypeObj) || g->out_type == OutTypeExe)) { g->bootstrap_import = add_special_code(g, create_bootstrap_pkg(g, g->root_package), "bootstrap.zig");