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 {...@@ -2706,6 +2706,11 @@ pub fn addIncrementalTests(b: *std.Build, test_step: *Step) !void {
2706 run.addFileArg(b.path("test/incremental/").path(b, entry.path));2706 run.addFileArg(b.path("test/incremental/").path(b, entry.path));
2707 run.addArgs(&.{ "--zig-lib-dir", b.fmt("{f}", .{b.graph.zig_lib_directory}) });2707 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
2709 run.addCheck(.{ .expect_term = .{ .Exited = 0 } });2714 run.addCheck(.{ .expect_term = .{ .Exited = 0 } });
27102715
2711 test_step.dependOn(&run.step);2716 test_step.dependOn(&run.step);
tools/incr-check.zig+57-5
...@@ -27,6 +27,10 @@ pub fn main() !void {...@@ -27,6 +27,10 @@ pub fn main() !void {
27 var debug_dwarf = false;27 var debug_dwarf = false;
28 var debug_link = false;28 var debug_link = false;
29 var preserve_tmp = false;29 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
31 var arg_it = try std.process.argsWithAllocator(arena);35 var arg_it = try std.process.argsWithAllocator(arena);
32 _ = arg_it.skip();36 _ = arg_it.skip();
...@@ -42,6 +46,14 @@ pub fn main() !void {...@@ -42,6 +46,14 @@ pub fn main() !void {
42 debug_link = true;46 debug_link = true;
43 } else if (std.mem.eql(u8, arg, "--preserve-tmp")) {47 } else if (std.mem.eql(u8, arg, "--preserve-tmp")) {
44 preserve_tmp = true;48 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;
45 } else if (std.mem.eql(u8, arg, "--zig-cc-binary")) {57 } else if (std.mem.eql(u8, arg, "--zig-cc-binary")) {
46 opt_cc_zig = arg_it.next() orelse fatal("expect arg after '--zig-cc-binary'\n{s}", .{usage});58 opt_cc_zig = arg_it.next() orelse fatal("expect arg after '--zig-cc-binary'\n{s}", .{usage});
47 } else {59 } else {
...@@ -196,6 +208,10 @@ pub fn main() !void {...@@ -196,6 +208,10 @@ pub fn main() !void {
196 .allow_stderr = debug_log_verbose,208 .allow_stderr = debug_log_verbose,
197 .preserve_tmp_on_fatal = preserve_tmp,209 .preserve_tmp_on_fatal = preserve_tmp,
198 .cc_child_args = &cc_child_args,210 .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,
199 };215 };
200216
201 try child.spawn(io);217 try child.spawn(io);
...@@ -243,6 +259,11 @@ const Eval = struct {...@@ -243,6 +259,11 @@ const Eval = struct {
243 /// The arguments `out.c in.c` must be appended before spawning the subprocess.259 /// The arguments `out.c in.c` must be appended before spawning the subprocess.
244 cc_child_args: *std.ArrayList([]const u8),260 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
246 const StreamEnum = enum { stdout, stderr };267 const StreamEnum = enum { stdout, stderr };
247 const Poller = Io.Poller(StreamEnum);268 const Poller = Io.Poller(StreamEnum);
248269
...@@ -439,7 +460,7 @@ const Eval = struct {...@@ -439,7 +460,7 @@ const Eval = struct {
439 const io = eval.io;460 const io = eval.io;
440461
441 var argv_buf: [2][]const u8 = undefined;462 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(
443 io,464 io,
444 &eval.host,465 &eval.host,
445 &eval.target.resolved,466 &eval.target.resolved,
...@@ -459,10 +480,41 @@ const Eval = struct {...@@ -459,10 +480,41 @@ const Eval = struct {
459 argv_buf[0] = binary_path;480 argv_buf[0] = binary_path;
460 break :argv .{ argv_buf[0..1], false };481 break :argv .{ argv_buf[0..1], false };
461 },482 },
462 .qemu, .wine, .wasmtime, .darling => |executor_cmd| argv: {483 .qemu => |executor_cmd| argv: {
463 argv_buf[0] = executor_cmd;484 if (eval.enable_qemu) {
464 argv_buf[1] = binary_path;485 argv_buf[0] = executor_cmd;
465 break :argv .{ argv_buf[0..2], true };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 }
466 },518 },
467 };519 };
468520