| ... | @@ -36,6 +36,25 @@ const TestTarget = struct { | ... | @@ -36,6 +36,25 @@ const TestTarget = struct { |
| 36 | // invocation. This could be because of a slow backend, requiring a newer LLVM version, being | 36 | // invocation. This could be because of a slow backend, requiring a newer LLVM version, being |
| 37 | // too niche, etc. | 37 | // too niche, etc. |
| 38 | extra_target: bool = false, | 38 | extra_target: bool = false, |
| | 39 | |
| | 40 | pub fn supportsModule( |
| | 41 | self: *const TestTarget, |
| | 42 | target: *const std.Build.ResolvedTarget, |
| | 43 | name: []const u8, |
| | 44 | ) bool { |
| | 45 | if (mem.eql(u8, name, "zigc")) { |
| | 46 | if (target.result.isMuslLibC()) return self.linkage == .static or (self.linkage == null and !target.query.isNative()); |
| | 47 | if (target.result.isMinGW()) return true; |
| | 48 | if (target.result.isWasiLibC()) return true; |
| | 49 | return false; |
| | 50 | } |
| | 51 | if (mem.eql(u8, name, "std")) { |
| | 52 | if (target.result.cpu.arch.isSpirV()) return false; |
| | 53 | return true; |
| | 54 | } |
| | 55 | |
| | 56 | return true; |
| | 57 | } |
| 39 | }; | 58 | }; |
| 40 | | 59 | |
| 41 | const test_targets = blk: { | 60 | const test_targets = blk: { |
| ... | @@ -1463,7 +1482,6 @@ const test_targets = blk: { | ... | @@ -1463,7 +1482,6 @@ const test_targets = blk: { |
| 1463 | // }) catch unreachable, | 1482 | // }) catch unreachable, |
| 1464 | // .use_llvm = false, | 1483 | // .use_llvm = false, |
| 1465 | // .use_lld = false, | 1484 | // .use_lld = false, |
| 1466 | // .skip_modules = &.{ "c-import", "zigc", "std" }, | | |
| 1467 | //}, | 1485 | //}, |
| 1468 | | 1486 | |
| 1469 | // WASI Targets | 1487 | // WASI Targets |
| ... | @@ -2355,8 +2373,12 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { | ... | @@ -2355,8 +2373,12 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { |
| 2355 | }, | 2373 | }, |
| 2356 | }; | 2374 | }; |
| 2357 | const resolved_target = b.resolveTargetQuery(test_target.target); | 2375 | const resolved_target = b.resolveTargetQuery(test_target.target); |
| 2358 | const triple_txt = resolved_target.query.zigTriple(b.allocator) catch @panic("OOM"); | 2376 | |
| 2359 | addOneModuleTest(b, step, test_target, &resolved_target, triple_txt, options); | 2377 | if (test_target.supportsModule(&resolved_target, options.name)) { |
| | 2378 | const triple_txt = resolved_target.query.zigTriple(b.allocator) catch @panic("OOM"); |
| | 2379 | addOneModuleTest(b, step, test_target, &resolved_target, triple_txt, options); |
| | 2380 | } |
| | 2381 | |
| 2360 | return step; | 2382 | return step; |
| 2361 | } | 2383 | } |
| 2362 | | 2384 | |
| ... | @@ -2368,13 +2390,16 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { | ... | @@ -2368,13 +2390,16 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step { |
| 2368 | } | 2390 | } |
| 2369 | | 2391 | |
| 2370 | const resolved_target = b.resolveTargetQuery(test_target.target); | 2392 | const resolved_target = b.resolveTargetQuery(test_target.target); |
| 2371 | const target = &resolved_target.result; | 2393 | |
| | 2394 | if (!test_target.supportsModule(&resolved_target, options.name)) continue; |
| 2372 | | 2395 | |
| 2373 | if (!options.test_extra_targets and test_target.extra_target) continue; | 2396 | if (!options.test_extra_targets and test_target.extra_target) continue; |
| 2374 | | 2397 | |
| 2375 | if (options.skip_non_native and !test_target.target.isNative()) | 2398 | if (options.skip_non_native and !test_target.target.isNative()) |
| 2376 | continue; | 2399 | continue; |
| 2377 | | 2400 | |
| | 2401 | const target = &resolved_target.result; |
| | 2402 | |
| 2378 | if (options.skip_spirv and target.cpu.arch.isSpirV()) continue; | 2403 | if (options.skip_spirv and target.cpu.arch.isSpirV()) continue; |
| 2379 | if (options.skip_wasm and target.cpu.arch.isWasm()) continue; | 2404 | if (options.skip_wasm and target.cpu.arch.isWasm()) continue; |
| 2380 | | 2405 | |