authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-03-11 18:40:04-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-25 18:54:34-07:00
logc8f7e270608e3f44b5dce898a6eab8efdcf56bd0
tree6cdc53b072129704d4029a11a588446db9fec478
parentec2b156720dec2873ca0a7958b282bfda12d5250

zig build: add --debug-maker CLI flag

for changing the optimization mode of the maker executable

3 files changed, 17 insertions(+), 9 deletions(-)

BRANCH_TODO+1-1
...@@ -9,4 +9,4 @@...@@ -9,4 +9,4 @@
9* get zig tests passing9* get zig tests passing
10* test a bunch of third party projects / help people migrate10* test a bunch of third party projects / help people migrate
11* refactor with DefaultingEnum11* refactor with DefaultingEnum
12* add flag for compiling maker in debug mode12* inspect b4ffb402c082605c4b324e88120306fc8fb3cf32 diff and apply changes as needed (merge conflict)
lib/compiler/Maker/ScannedConfig.zig+1-1
...@@ -341,7 +341,7 @@ pub fn printUsage(sc: *const ScannedConfig, graph: *Graph, w: *Writer) !void {...@@ -341,7 +341,7 @@ pub fn printUsage(sc: *const ScannedConfig, graph: *Graph, w: *Writer) !void {
341 \\ none (default) No build ID341 \\ none (default) No build ID
342 \\ --debug-log [scope] Enable debugging the compiler342 \\ --debug-log [scope] Enable debugging the compiler
343 \\ --debug-pkg-config Fail if unknown pkg-config flags encountered343 \\ --debug-pkg-config Fail if unknown pkg-config flags encountered
344 \\ --debug-rt Debug compiler runtime libraries344 \\ --debug-maker[=mode] Change maker executable optimization mode
345 \\ --verbose-link Enable compiler debug output for linking345 \\ --verbose-link Enable compiler debug output for linking
346 \\ --verbose-air Enable compiler debug output for Zig AIR346 \\ --verbose-air Enable compiler debug output for Zig AIR
347 \\ --verbose-llvm-ir Enable compiler debug output for LLVM IR347 \\ --verbose-llvm-ir Enable compiler debug output for LLVM IR
src/main.zig+15-7
...@@ -4942,6 +4942,10 @@ fn cmdBuild(...@@ -4942,6 +4942,10 @@ fn cmdBuild(
4942 var override_local_cache_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_CACHE_DIR.get(environ_map);4942 var override_local_cache_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_CACHE_DIR.get(environ_map);
4943 var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);4943 var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);
4944 var override_make_runner: ?[]const u8 = EnvVar.ZIG_BUILD_RUNNER.get(environ_map);4944 var override_make_runner: ?[]const u8 = EnvVar.ZIG_BUILD_RUNNER.get(environ_map);
4945 var maker_optimize_mode: std.builtin.OptimizeMode = if (EnvVar.ZIG_DEBUG_CMD.isSet(environ_map))
4946 .Debug
4947 else
4948 .ReleaseSafe;
4945 var configure_argv: std.ArrayList([]const u8) = .empty;4949 var configure_argv: std.ArrayList([]const u8) = .empty;
4946 var make_argv: std.ArrayList([]const u8) = .empty;4950 var make_argv: std.ArrayList([]const u8) = .empty;
4947 var forks: std.ArrayList(Fork) = .empty;4951 var forks: std.ArrayList(Fork) = .empty;
...@@ -5079,6 +5083,12 @@ fn cmdBuild(...@@ -5079,6 +5083,12 @@ fn cmdBuild(
5079 };5083 };
5080 } else if (mem.eql(u8, arg, "-fno-reference-trace")) {5084 } else if (mem.eql(u8, arg, "-fno-reference-trace")) {
5081 reference_trace = null;5085 reference_trace = null;
5086 } else if (mem.eql(u8, arg, "--debug-maker")) {
5087 maker_optimize_mode = .Debug;
5088 continue;
5089 } else if (mem.cutPrefix(u8, arg, "--debug-maker=")) |rest| {
5090 maker_optimize_mode = parseOptimizeMode(rest);
5091 continue;
5082 } else if (mem.eql(u8, arg, "--debug-log")) {5092 } else if (mem.eql(u8, arg, "--debug-log")) {
5083 if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});5093 if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
5084 try make_argv.appendSlice(arena, args[i .. i + 2]);5094 try make_argv.appendSlice(arena, args[i .. i + 2]);
...@@ -5270,6 +5280,7 @@ fn cmdBuild(...@@ -5270,6 +5280,7 @@ fn cmdBuild(
5270 .self_exe_path = self_exe_path,5280 .self_exe_path = self_exe_path,
5271 .color = color,5281 .color = color,
5272 .reference_trace = reference_trace,5282 .reference_trace = reference_trace,
5283 .optimize_mode = maker_optimize_mode,
5273 } });5284 } });
5274 defer _ = make_runner_task.cancel(io) catch {};5285 defer _ = make_runner_task.cancel(io) catch {};
52755286
...@@ -5779,6 +5790,7 @@ const MakeRunner = struct {...@@ -5779,6 +5790,7 @@ const MakeRunner = struct {
5779 thread_limit: usize,5790 thread_limit: usize,
5780 color: Color,5791 color: Color,
5781 reference_trace: ?u32,5792 reference_trace: ?u32,
5793 optimize_mode: std.builtin.OptimizeMode,
5782 };5794 };
5783};5795};
57845796
...@@ -5786,11 +5798,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn...@@ -5786,11 +5798,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn
5786 const compile_prog_node = options.parent_prog_node.start("Compile Maker", 0);5798 const compile_prog_node = options.parent_prog_node.start("Compile Maker", 0);
5787 defer compile_prog_node.end();5799 defer compile_prog_node.end();
57885800
5789 const optimize_mode: std.builtin.OptimizeMode = if (EnvVar.ZIG_DEBUG_CMD.isSet(options.environ_map))5801 const strip = options.optimize_mode != .Debug;
5790 .Debug
5791 else
5792 .ReleaseSafe;
5793 const strip = optimize_mode != .Debug;
57945802
5795 const main_mod_paths: Package.Module.CreateOptions.Paths = .{5803 const main_mod_paths: Package.Module.CreateOptions.Paths = .{
5796 .root = try .fromRoot(arena, options.dirs, .zig_lib, "compiler"),5804 .root = try .fromRoot(arena, options.dirs, .zig_lib, "compiler"),
...@@ -5800,7 +5808,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn...@@ -5800,7 +5808,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn
5800 const config = try Compilation.Config.resolve(.{5808 const config = try Compilation.Config.resolve(.{
5801 .output_mode = .Exe,5809 .output_mode = .Exe,
5802 .root_strip = strip,5810 .root_strip = strip,
5803 .root_optimize_mode = optimize_mode,5811 .root_optimize_mode = options.optimize_mode,
5804 .resolved_target = options.resolved_target,5812 .resolved_target = options.resolved_target,
5805 .have_zcu = true,5813 .have_zcu = true,
5806 .emit_bin = true,5814 .emit_bin = true,
...@@ -5813,7 +5821,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn...@@ -5813,7 +5821,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn
5813 .cc_argv = &.{},5821 .cc_argv = &.{},
5814 .inherited = .{5822 .inherited = .{
5815 .resolved_target = options.resolved_target,5823 .resolved_target = options.resolved_target,
5816 .optimize_mode = optimize_mode,5824 .optimize_mode = options.optimize_mode,
5817 .strip = strip,5825 .strip = strip,
5818 },5826 },
5819 .global = config,5827 .global = config,