authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-22 23:48:24-08:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-12-23 22:15:12-08:00
logb45984ec809a09d94f1a982c1bbccc7ab9e2d678
treeeb12144aae66abcddaba50ffb958b69208a1c91c
parent669dae140c63b1bf4dbae6634145529333cd8371

test-incremental: respect the wine, qemu, etc build flags


2 files changed, 62 insertions(+), 5 deletions(-)

test/tests.zig+5
......@@ -2706,6 +2706,11 @@ pub fn addIncrementalTests(b: *std.Build, test_step: *Step) !void {
27062706 run.addFileArg(b.path("test/incremental/").path(b, entry.path));
27072707 run.addArgs(&.{ "--zig-lib-dir", b.fmt("{f}", .{b.graph.zig_lib_directory}) });
27082708
2709 if (b.enable_qemu) run.addArg("-fqemu");
2710 if (b.enable_wine) run.addArg("-fwine");
2711 if (b.enable_wasmtime) run.addArg("-fwasmtime");
2712 if (b.enable_darling) run.addArg("-fdarling");
2713
27092714 run.addCheck(.{ .expect_term = .{ .Exited = 0 } });
27102715
27112716 test_step.dependOn(&run.step);
tools/incr-check.zig+57-5
......@@ -27,6 +27,10 @@ pub fn main() !void {
2727 var debug_dwarf = false;
2828 var debug_link = false;
2929 var preserve_tmp = false;
30 var enable_qemu: bool = false;
31 var enable_wine: bool = false;
32 var enable_wasmtime: bool = false;
33 var enable_darling: bool = false;
3034
3135 var arg_it = try std.process.argsWithAllocator(arena);
3236 _ = arg_it.skip();
......@@ -42,6 +46,14 @@ pub fn main() !void {
4246 debug_link = true;
4347 } else if (std.mem.eql(u8, arg, "--preserve-tmp")) {
4448 preserve_tmp = true;
49 } else if (std.mem.eql(u8, arg, "-fqemu")) {
50 enable_qemu = true;
51 } else if (std.mem.eql(u8, arg, "-fwine")) {
52 enable_wine = true;
53 } else if (std.mem.eql(u8, arg, "-fwasmtime")) {
54 enable_wasmtime = true;
55 } else if (std.mem.eql(u8, arg, "-fdarling")) {
56 enable_darling = true;
4557 } else if (std.mem.eql(u8, arg, "--zig-cc-binary")) {
4658 opt_cc_zig = arg_it.next() orelse fatal("expect arg after '--zig-cc-binary'\n{s}", .{usage});
4759 } else {
......@@ -196,6 +208,10 @@ pub fn main() !void {
196208 .allow_stderr = debug_log_verbose,
197209 .preserve_tmp_on_fatal = preserve_tmp,
198210 .cc_child_args = &cc_child_args,
211 .enable_qemu = enable_qemu,
212 .enable_wine = enable_wine,
213 .enable_wasmtime = enable_wasmtime,
214 .enable_darling = enable_darling,
199215 };
200216
201217 try child.spawn(io);
......@@ -243,6 +259,11 @@ const Eval = struct {
243259 /// The arguments `out.c in.c` must be appended before spawning the subprocess.
244260 cc_child_args: *std.ArrayList([]const u8),
245261
262 enable_qemu: bool,
263 enable_wine: bool,
264 enable_wasmtime: bool,
265 enable_darling: bool,
266
246267 const StreamEnum = enum { stdout, stderr };
247268 const Poller = Io.Poller(StreamEnum);
248269
......@@ -439,7 +460,7 @@ const Eval = struct {
439460 const io = eval.io;
440461
441462 var argv_buf: [2][]const u8 = undefined;
442 const argv: []const []const u8, const is_foreign: bool = switch (std.zig.system.getExternalExecutor(
463 const argv: []const []const u8, const is_foreign: bool = sw: switch (std.zig.system.getExternalExecutor(
443464 io,
444465 &eval.host,
445466 &eval.target.resolved,
......@@ -459,10 +480,41 @@ const Eval = struct {
459480 argv_buf[0] = binary_path;
460481 break :argv .{ argv_buf[0..1], false };
461482 },
462 .qemu, .wine, .wasmtime, .darling => |executor_cmd| argv: {
463 argv_buf[0] = executor_cmd;
464 argv_buf[1] = binary_path;
465 break :argv .{ argv_buf[0..2], true };
483 .qemu => |executor_cmd| argv: {
484 if (eval.enable_qemu) {
485 argv_buf[0] = executor_cmd;
486 argv_buf[1] = binary_path;
487 break :argv .{ argv_buf[0..2], true };
488 } else {
489 continue :sw .bad_os_or_cpu;
490 }
491 },
492 .wine => |executor_cmd| argv: {
493 if (eval.enable_wine) {
494 argv_buf[0] = executor_cmd;
495 argv_buf[1] = binary_path;
496 break :argv .{ argv_buf[0..2], true };
497 } else {
498 continue :sw .bad_os_or_cpu;
499 }
500 },
501 .wasmtime => |executor_cmd| argv: {
502 if (eval.enable_wasmtime) {
503 argv_buf[0] = executor_cmd;
504 argv_buf[1] = binary_path;
505 break :argv .{ argv_buf[0..2], true };
506 } else {
507 continue :sw .bad_os_or_cpu;
508 }
509 },
510 .darling => |executor_cmd| argv: {
511 if (eval.enable_darling) {
512 argv_buf[0] = executor_cmd;
513 argv_buf[1] = binary_path;
514 break :argv .{ argv_buf[0..2], true };
515 } else {
516 continue :sw .bad_os_or_cpu;
517 }
466518 },
467519 };
468520