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 @@
99* get zig tests passing
1010* test a bunch of third party projects / help people migrate
1111* refactor with DefaultingEnum
12* add flag for compiling maker in debug mode
12* 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 {
341341 \\ none (default) No build ID
342342 \\ --debug-log [scope] Enable debugging the compiler
343343 \\ --debug-pkg-config Fail if unknown pkg-config flags encountered
344 \\ --debug-rt Debug compiler runtime libraries
344 \\ --debug-maker[=mode] Change maker executable optimization mode
345345 \\ --verbose-link Enable compiler debug output for linking
346346 \\ --verbose-air Enable compiler debug output for Zig AIR
347347 \\ --verbose-llvm-ir Enable compiler debug output for LLVM IR
src/main.zig+15-7
......@@ -4942,6 +4942,10 @@ fn cmdBuild(
49424942 var override_local_cache_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_CACHE_DIR.get(environ_map);
49434943 var override_pkg_dir: ?[]const u8 = EnvVar.ZIG_LOCAL_PKG_DIR.get(environ_map);
49444944 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;
49454949 var configure_argv: std.ArrayList([]const u8) = .empty;
49464950 var make_argv: std.ArrayList([]const u8) = .empty;
49474951 var forks: std.ArrayList(Fork) = .empty;
......@@ -5079,6 +5083,12 @@ fn cmdBuild(
50795083 };
50805084 } else if (mem.eql(u8, arg, "-fno-reference-trace")) {
50815085 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;
50825092 } else if (mem.eql(u8, arg, "--debug-log")) {
50835093 if (i + 1 >= args.len) fatal("expected argument after '{s}'", .{arg});
50845094 try make_argv.appendSlice(arena, args[i .. i + 2]);
......@@ -5270,6 +5280,7 @@ fn cmdBuild(
52705280 .self_exe_path = self_exe_path,
52715281 .color = color,
52725282 .reference_trace = reference_trace,
5283 .optimize_mode = maker_optimize_mode,
52735284 } });
52745285 defer _ = make_runner_task.cancel(io) catch {};
52755286
......@@ -5779,6 +5790,7 @@ const MakeRunner = struct {
57795790 thread_limit: usize,
57805791 color: Color,
57815792 reference_trace: ?u32,
5793 optimize_mode: std.builtin.OptimizeMode,
57825794 };
57835795};
57845796
......@@ -5786,11 +5798,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn
57865798 const compile_prog_node = options.parent_prog_node.start("Compile Maker", 0);
57875799 defer compile_prog_node.end();
57885800
5789 const optimize_mode: std.builtin.OptimizeMode = if (EnvVar.ZIG_DEBUG_CMD.isSet(options.environ_map))
5790 .Debug
5791 else
5792 .ReleaseSafe;
5793 const strip = optimize_mode != .Debug;
5801 const strip = options.optimize_mode != .Debug;
57945802
57955803 const main_mod_paths: Package.Module.CreateOptions.Paths = .{
57965804 .root = try .fromRoot(arena, options.dirs, .zig_lib, "compiler"),
......@@ -5800,7 +5808,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn
58005808 const config = try Compilation.Config.resolve(.{
58015809 .output_mode = .Exe,
58025810 .root_strip = strip,
5803 .root_optimize_mode = optimize_mode,
5811 .root_optimize_mode = options.optimize_mode,
58045812 .resolved_target = options.resolved_target,
58055813 .have_zcu = true,
58065814 .emit_bin = true,
......@@ -5813,7 +5821,7 @@ fn compileMakeRunner(gpa: Allocator, arena: Allocator, io: Io, options: MakeRunn
58135821 .cc_argv = &.{},
58145822 .inherited = .{
58155823 .resolved_target = options.resolved_target,
5816 .optimize_mode = optimize_mode,
5824 .optimize_mode = options.optimize_mode,
58175825 .strip = strip,
58185826 },
58195827 .global = config,