| ... | ... | @@ -2368,6 +2368,16 @@ pub fn isNative(actual_target: *const std.Build.ResolvedTarget, host: *const std |
| 2368 | 2368 | if (actual.os.tag != host.os.tag) |
| 2369 | 2369 | return false; |
| 2370 | 2370 | |
| 2371 | // This check is really only necessary for the case where `host.cpu.arch.isAarch64()` and |
| 2372 | // `actual.cpu.arch.isArm()`. As they are wholly separate `std.Target` families with their own |
| 2373 | // feature bits, the logic below would produce complete nonsense. |
| 2374 | // |
| 2375 | // This does mean that we aren't actually checking feature compatibility between these two |
| 2376 | // families even though we should. That's not a problem currently, but in the future, we may |
| 2377 | // need to add a special code path just for this specific case... |
| 2378 | if (actual.cpu.arch.family() != host.cpu.arch.family()) |
| 2379 | return true; |
| 2380 | |
| 2371 | 2381 | // Remove features that don't actually affect compatibility. |
| 2372 | 2382 | const irrelevant: std.Target.Cpu.Feature.Set = switch (host.cpu.arch) { |
| 2373 | 2383 | .x86_64 => std.Target.x86.featureSet(&.{ |