| ... | ... | @@ -2398,6 +2398,16 @@ pub fn isNative(actual_target: *const std.Build.ResolvedTarget, host: *const std |
| 2398 | 2398 | if (actual.os.tag != host.os.tag) |
| 2399 | 2399 | return false; |
| 2400 | 2400 | |
| 2401 | // This check is really only necessary for the case where `host.cpu.arch.isAarch64()` and |
| 2402 | // `actual.cpu.arch.isArm()`. As they are wholly separate `std.Target` families with their own |
| 2403 | // feature bits, the logic below would produce complete nonsense. |
| 2404 | // |
| 2405 | // This does mean that we aren't actually checking feature compatibility between these two |
| 2406 | // families even though we should. That's not a problem currently, but in the future, we may |
| 2407 | // need to add a special code path just for this specific case... |
| 2408 | if (actual.cpu.arch.family() != host.cpu.arch.family()) |
| 2409 | return true; |
| 2410 | |
| 2401 | 2411 | // Remove features that don't actually affect compatibility. |
| 2402 | 2412 | const irrelevant: std.Target.Cpu.Feature.Set = switch (host.cpu.arch) { |
| 2403 | 2413 | .x86_64 => std.Target.x86.featureSet(&.{ |