| ... | @@ -3774,7 +3774,9 @@ fn serve( | ... | @@ -3774,7 +3774,9 @@ fn serve( |
| 3774 | try comp.makeBinFileWritable(); | 3774 | try comp.makeBinFileWritable(); |
| 3775 | } | 3775 | } |
| 3776 | | 3776 | |
| 3777 | { | 3777 | if (builtin.single_threaded) { |
| | 3778 | try comp.update(main_progress_node); |
| | 3779 | } else { |
| 3778 | var reset: std.Thread.ResetEvent = .{}; | 3780 | var reset: std.Thread.ResetEvent = .{}; |
| 3779 | | 3781 | |
| 3780 | var progress_thread = try std.Thread.spawn(.{}, progressThread, .{ | 3782 | var progress_thread = try std.Thread.spawn(.{}, progressThread, .{ |
| ... | @@ -4920,6 +4922,17 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi | ... | @@ -4920,6 +4922,17 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi |
| 4920 | var child_argv = std.ArrayList([]const u8).init(arena); | 4922 | var child_argv = std.ArrayList([]const u8).init(arena); |
| 4921 | var reference_trace: ?u32 = null; | 4923 | var reference_trace: ?u32 = null; |
| 4922 | var debug_compile_errors = false; | 4924 | var debug_compile_errors = false; |
| | 4925 | var verbose_link = (builtin.os.tag != .wasi or builtin.link_libc) and |
| | 4926 | EnvVar.ZIG_VERBOSE_LINK.isSet(); |
| | 4927 | var verbose_cc = (builtin.os.tag != .wasi or builtin.link_libc) and |
| | 4928 | EnvVar.ZIG_VERBOSE_CC.isSet(); |
| | 4929 | var verbose_air = false; |
| | 4930 | var verbose_intern_pool = false; |
| | 4931 | var verbose_generic_instances = false; |
| | 4932 | var verbose_llvm_ir: ?[]const u8 = null; |
| | 4933 | var verbose_llvm_bc: ?[]const u8 = null; |
| | 4934 | var verbose_cimport = false; |
| | 4935 | var verbose_llvm_cpu_features = false; |
| 4923 | var fetch_only = false; | 4936 | var fetch_only = false; |
| 4924 | | 4937 | |
| 4925 | const argv_index_exe = child_argv.items.len; | 4938 | const argv_index_exe = child_argv.items.len; |
| ... | @@ -4956,7 +4969,7 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi | ... | @@ -4956,7 +4969,7 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi |
| 4956 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); | 4969 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); |
| 4957 | i += 1; | 4970 | i += 1; |
| 4958 | override_lib_dir = args[i]; | 4971 | override_lib_dir = args[i]; |
| 4959 | try child_argv.appendSlice(&[_][]const u8{ arg, args[i] }); | 4972 | try child_argv.appendSlice(&.{ arg, args[i] }); |
| 4960 | continue; | 4973 | continue; |
| 4961 | } else if (mem.eql(u8, arg, "--build-runner")) { | 4974 | } else if (mem.eql(u8, arg, "--build-runner")) { |
| 4962 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); | 4975 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); |
| ... | @@ -4974,22 +4987,52 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi | ... | @@ -4974,22 +4987,52 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi |
| 4974 | override_global_cache_dir = args[i]; | 4987 | override_global_cache_dir = args[i]; |
| 4975 | continue; | 4988 | continue; |
| 4976 | } else if (mem.eql(u8, arg, "-freference-trace")) { | 4989 | } else if (mem.eql(u8, arg, "-freference-trace")) { |
| 4977 | try child_argv.append(arg); | | |
| 4978 | reference_trace = 256; | 4990 | reference_trace = 256; |
| 4979 | } else if (mem.eql(u8, arg, "--fetch")) { | 4991 | } else if (mem.eql(u8, arg, "--fetch")) { |
| 4980 | fetch_only = true; | 4992 | fetch_only = true; |
| 4981 | } else if (mem.startsWith(u8, arg, "-freference-trace=")) { | 4993 | } else if (mem.startsWith(u8, arg, "-freference-trace=")) { |
| 4982 | try child_argv.append(arg); | | |
| 4983 | const num = arg["-freference-trace=".len..]; | 4994 | const num = arg["-freference-trace=".len..]; |
| 4984 | reference_trace = std.fmt.parseUnsigned(u32, num, 10) catch |err| { | 4995 | reference_trace = std.fmt.parseUnsigned(u32, num, 10) catch |err| { |
| 4985 | fatal("unable to parse reference_trace count '{s}': {s}", .{ num, @errorName(err) }); | 4996 | fatal("unable to parse reference_trace count '{s}': {s}", .{ num, @errorName(err) }); |
| 4986 | }; | 4997 | }; |
| 4987 | } else if (mem.eql(u8, arg, "-fno-reference-trace")) { | 4998 | } else if (mem.eql(u8, arg, "-fno-reference-trace")) { |
| 4988 | try child_argv.append(arg); | | |
| 4989 | reference_trace = null; | 4999 | reference_trace = null; |
| | 5000 | } else if (mem.eql(u8, arg, "--debug-log")) { |
| | 5001 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); |
| | 5002 | try child_argv.appendSlice(args[i .. i + 2]); |
| | 5003 | i += 1; |
| | 5004 | if (!build_options.enable_logging) { |
| | 5005 | std.log.warn("Zig was compiled without logging enabled (-Dlog). --debug-log has no effect.", .{}); |
| | 5006 | } else { |
| | 5007 | try log_scopes.append(gpa, args[i]); |
| | 5008 | } |
| | 5009 | continue; |
| 4990 | } else if (mem.eql(u8, arg, "--debug-compile-errors")) { | 5010 | } else if (mem.eql(u8, arg, "--debug-compile-errors")) { |
| 4991 | try child_argv.append(arg); | 5011 | if (!crash_report.is_enabled) { |
| 4992 | debug_compile_errors = true; | 5012 | std.log.warn("Zig was compiled in a release mode. --debug-compile-errors has no effect.", .{}); |
| | 5013 | } else { |
| | 5014 | debug_compile_errors = true; |
| | 5015 | } |
| | 5016 | } else if (mem.eql(u8, arg, "--verbose-link")) { |
| | 5017 | verbose_link = true; |
| | 5018 | } else if (mem.eql(u8, arg, "--verbose-cc")) { |
| | 5019 | verbose_cc = true; |
| | 5020 | } else if (mem.eql(u8, arg, "--verbose-air")) { |
| | 5021 | verbose_air = true; |
| | 5022 | } else if (mem.eql(u8, arg, "--verbose-intern-pool")) { |
| | 5023 | verbose_intern_pool = true; |
| | 5024 | } else if (mem.eql(u8, arg, "--verbose-generic-instances")) { |
| | 5025 | verbose_generic_instances = true; |
| | 5026 | } else if (mem.eql(u8, arg, "--verbose-llvm-ir")) { |
| | 5027 | verbose_llvm_ir = "-"; |
| | 5028 | } else if (mem.startsWith(u8, arg, "--verbose-llvm-ir=")) { |
| | 5029 | verbose_llvm_ir = arg["--verbose-llvm-ir=".len..]; |
| | 5030 | } else if (mem.startsWith(u8, arg, "--verbose-llvm-bc=")) { |
| | 5031 | verbose_llvm_bc = arg["--verbose-llvm-bc=".len..]; |
| | 5032 | } else if (mem.eql(u8, arg, "--verbose-cimport")) { |
| | 5033 | verbose_cimport = true; |
| | 5034 | } else if (mem.eql(u8, arg, "--verbose-llvm-cpu-features")) { |
| | 5035 | verbose_llvm_cpu_features = true; |
| 4993 | } else if (mem.eql(u8, arg, "--seed")) { | 5036 | } else if (mem.eql(u8, arg, "--seed")) { |
| 4994 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); | 5037 | if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg}); |
| 4995 | i += 1; | 5038 | i += 1; |
| ... | @@ -5264,6 +5307,15 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi | ... | @@ -5264,6 +5307,15 @@ pub fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !voi |
| 5264 | .optimize_mode = .Debug, | 5307 | .optimize_mode = .Debug, |
| 5265 | .self_exe_path = self_exe_path, | 5308 | .self_exe_path = self_exe_path, |
| 5266 | .thread_pool = &thread_pool, | 5309 | .thread_pool = &thread_pool, |
| | 5310 | .verbose_cc = verbose_cc, |
| | 5311 | .verbose_link = verbose_link, |
| | 5312 | .verbose_air = verbose_air, |
| | 5313 | .verbose_intern_pool = verbose_intern_pool, |
| | 5314 | .verbose_generic_instances = verbose_generic_instances, |
| | 5315 | .verbose_llvm_ir = verbose_llvm_ir, |
| | 5316 | .verbose_llvm_bc = verbose_llvm_bc, |
| | 5317 | .verbose_cimport = verbose_cimport, |
| | 5318 | .verbose_llvm_cpu_features = verbose_llvm_cpu_features, |
| 5267 | .cache_mode = .whole, | 5319 | .cache_mode = .whole, |
| 5268 | .reference_trace = reference_trace, | 5320 | .reference_trace = reference_trace, |
| 5269 | .debug_compile_errors = debug_compile_errors, | 5321 | .debug_compile_errors = debug_compile_errors, |