#import "Basic"; #import "Compiler"; #import "File"; #import "File_Utilities"; #run { // Disable output for default workspace immediately build_options: Build_Options_During_Compile; build_options.do_output = false; set_build_options_dc(build_options); w := compiler_create_workspace("Target Workspace"); if !w return; options := get_build_options(w); options.output_executable_name = "sing-box_tray"; // No longer need to copy libcurl.dll since we use native Windows WinINet API. // options.additional_linker_arguments is a slice, so copy it to a dynamic array, append, and assign back new_args: [..] string; new_args.allocator = temp; for options.additional_linker_arguments { array_add(*new_args, it); } // Set subsystem to Windows so no console window is created/shown. array_add(*new_args, "/SUBSYSTEM:WINDOWS"); // Route MSVC Windows subsystem entry point to the standard main function. array_add(*new_args, "/ENTRY:mainCRTStartup"); options.additional_linker_arguments = new_args; set_build_options(options, w); compiler_begin_intercept(w); add_build_file("main.jai", w); while true { message := compiler_wait_for_message(); if !message break; if message.workspace != w continue; if message.kind == .COMPLETE break; } compiler_end_intercept(w); }