From 9dd819c6ecbd3d8097447a7395e1295c8e485195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Fri, 28 Nov 2025 01:35:10 +0100 Subject: [PATCH] build: add -Dskip-spirv and -Dskip-wasm options --- build.zig | 14 ++++++++++++++ test/src/Cases.zig | 5 +++++ test/src/Libc.zig | 3 +++ test/tests.zig | 9 +++++++++ 4 files changed, 31 insertions(+) diff --git a/build.zig b/build.zig index 1b986d6192..3d826485ab 100644 --- a/build.zig +++ b/build.zig @@ -91,6 +91,8 @@ pub fn build(b: *std.Build) !void { const skip_libc = b.option(bool, "skip-libc", "Main test suite skips tests that link libc") orelse false; const skip_single_threaded = b.option(bool, "skip-single-threaded", "Main test suite skips tests that are single-threaded") orelse false; const skip_compile_errors = b.option(bool, "skip-compile-errors", "Main test suite skips compile error tests") orelse false; + const skip_spirv = b.option(bool, "skip-spirv", "Main test suite skips targets with spirv32/spirv64 architecture") orelse false; + const skip_wasm = b.option(bool, "skip-wasm", "Main test suite skips targets with wasm32/wasm64 architecture") orelse false; const skip_freebsd = b.option(bool, "skip-freebsd", "Main test suite skips targets with freebsd OS") orelse false; const skip_netbsd = b.option(bool, "skip-netbsd", "Main test suite skips targets with netbsd OS") orelse false; const skip_windows = b.option(bool, "skip-windows", "Main test suite skips targets with windows OS") orelse false; @@ -421,6 +423,8 @@ pub fn build(b: *std.Build) !void { .test_target_filters = test_target_filters, .skip_compile_errors = skip_compile_errors, .skip_non_native = skip_non_native, + .skip_spirv = skip_spirv, + .skip_wasm = skip_wasm, .skip_freebsd = skip_freebsd, .skip_netbsd = skip_netbsd, .skip_windows = skip_windows, @@ -452,6 +456,8 @@ pub fn build(b: *std.Build) !void { .skip_single_threaded = skip_single_threaded, .skip_non_native = skip_non_native, .test_default_only = no_matrix, + .skip_spirv = skip_spirv, + .skip_wasm = skip_wasm, .skip_freebsd = skip_freebsd, .skip_netbsd = skip_netbsd, .skip_windows = skip_windows, @@ -475,6 +481,8 @@ pub fn build(b: *std.Build) !void { .skip_single_threaded = true, .skip_non_native = skip_non_native, .test_default_only = no_matrix, + .skip_spirv = skip_spirv, + .skip_wasm = skip_wasm, .skip_freebsd = skip_freebsd, .skip_netbsd = skip_netbsd, .skip_windows = skip_windows, @@ -497,6 +505,8 @@ pub fn build(b: *std.Build) !void { .skip_single_threaded = true, .skip_non_native = skip_non_native, .test_default_only = no_matrix, + .skip_spirv = skip_spirv, + .skip_wasm = skip_wasm, .skip_freebsd = skip_freebsd, .skip_netbsd = skip_netbsd, .skip_windows = skip_windows, @@ -519,6 +529,8 @@ pub fn build(b: *std.Build) !void { .skip_single_threaded = skip_single_threaded, .skip_non_native = skip_non_native, .test_default_only = no_matrix, + .skip_spirv = skip_spirv, + .skip_wasm = skip_wasm, .skip_freebsd = skip_freebsd, .skip_netbsd = skip_netbsd, .skip_windows = skip_windows, @@ -560,6 +572,7 @@ pub fn build(b: *std.Build) !void { test_step.dependOn(tests.addCAbiTests(b, .{ .test_target_filters = test_target_filters, .skip_non_native = skip_non_native, + .skip_wasm = skip_wasm, .skip_freebsd = skip_freebsd, .skip_netbsd = skip_netbsd, .skip_windows = skip_windows, @@ -616,6 +629,7 @@ pub fn build(b: *std.Build) !void { .optimize_modes = optimization_modes, .test_filters = test_filters, .test_target_filters = test_target_filters, + .skip_wasm = skip_wasm, // Highest RSS observed in any test case was exactly 1802878976 on x86_64-linux. .max_rss = 2253598720, })) |test_libc_step| test_step.dependOn(test_libc_step); diff --git a/test/src/Cases.zig b/test/src/Cases.zig index 95ee7e21e7..f39820c7b6 100644 --- a/test/src/Cases.zig +++ b/test/src/Cases.zig @@ -444,6 +444,8 @@ pub const CaseTestOptions = struct { test_target_filters: []const []const u8, skip_compile_errors: bool, skip_non_native: bool, + skip_spirv: bool, + skip_wasm: bool, skip_freebsd: bool, skip_netbsd: bool, skip_windows: bool, @@ -472,6 +474,9 @@ pub fn lowerToBuildSteps( if (options.skip_non_native and !case.target.query.isNative()) continue; + if (options.skip_spirv and case.target.query.cpu_arch != null and case.target.query.cpu_arch.?.isSpirV()) continue; + if (options.skip_wasm and case.target.query.cpu_arch != null and case.target.query.cpu_arch.?.isWasm()) continue; + if (options.skip_freebsd and case.target.query.os_tag == .freebsd) continue; if (options.skip_netbsd and case.target.query.os_tag == .netbsd) continue; if (options.skip_windows and case.target.query.os_tag == .windows) continue; diff --git a/test/src/Libc.zig b/test/src/Libc.zig index 708e4c7bb8..7c61b58e02 100644 --- a/test/src/Libc.zig +++ b/test/src/Libc.zig @@ -10,6 +10,7 @@ pub const Options = struct { optimize_modes: []const std.builtin.OptimizeMode, test_filters: []const []const u8, test_target_filters: []const []const u8, + skip_wasm: bool, max_rss: usize, }; @@ -41,6 +42,8 @@ pub fn addLibcTestCase( } pub fn addTarget(libc: *const Libc, target: std.Build.ResolvedTarget) void { + if (libc.options.skip_wasm and target.query.cpu_arch != null and target.query.cpu_arch.?.isWasm()) return; + if (libc.options.test_target_filters.len > 0) { const triple_txt = target.query.zigTriple(libc.b.allocator) catch @panic("OOM"); for (libc.options.test_target_filters) |filter| { diff --git a/test/tests.zig b/test/tests.zig index 4ea42c2eb5..9dae4786bd 100644 --- a/test/tests.zig +++ b/test/tests.zig @@ -2246,6 +2246,8 @@ const ModuleTestOptions = struct { test_default_only: bool, skip_single_threaded: bool, skip_non_native: bool, + skip_spirv: bool, + skip_wasm: bool, skip_freebsd: bool, skip_netbsd: bool, skip_windows: bool, @@ -2281,6 +2283,9 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { if (options.skip_non_native and !test_target.target.isNative()) continue; + if (options.skip_spirv and test_target.target.cpu_arch != null and test_target.target.cpu_arch.?.isSpirV()) continue; + if (options.skip_wasm and test_target.target.cpu_arch != null and test_target.target.cpu_arch.?.isWasm()) continue; + if (options.skip_freebsd and test_target.target.os_tag == .freebsd) continue; if (options.skip_netbsd and test_target.target.os_tag == .netbsd) continue; if (options.skip_windows and test_target.target.os_tag == .windows) continue; @@ -2519,6 +2524,7 @@ pub fn wouldUseLlvm(use_llvm: ?bool, query: std.Target.Query, optimize_mode: Opt const CAbiTestOptions = struct { test_target_filters: []const []const u8, skip_non_native: bool, + skip_wasm: bool, skip_freebsd: bool, skip_netbsd: bool, skip_windows: bool, @@ -2538,6 +2544,9 @@ pub fn addCAbiTests(b: *std.Build, options: CAbiTestOptions) *Step { for (c_abi_targets) |c_abi_target| { if (options.skip_non_native and !c_abi_target.target.isNative()) continue; + + if (options.skip_wasm and c_abi_target.target.cpu_arch != null and c_abi_target.target.cpu_arch.?.isWasm()) continue; + if (options.skip_freebsd and c_abi_target.target.os_tag == .freebsd) continue; if (options.skip_netbsd and c_abi_target.target.os_tag == .netbsd) continue; if (options.skip_windows and c_abi_target.target.os_tag == .windows) continue;