From ef9582a1ec452aab816b67cd2d0d35ef7356ddae Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 28 Sep 2020 22:19:00 -0700 Subject: `zig test` and `zig run` do not try to run foreign binaries --- lib/std/target.zig | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'lib/std') diff --git a/lib/std/target.zig b/lib/std/target.zig index 1b8e7c1519..65e9f75457 100644 --- a/lib/std/target.zig +++ b/lib/std/target.zig @@ -1483,6 +1483,27 @@ pub const Target = struct { => return result, } } + + /// Return whether or not the given host target is capable of executing natively executables + /// of the other target. + pub fn canExecBinariesOf(host_target: std.Target, binary_target: std.Target) bool { + if (host_target.os.tag != binary_target.os.tag) + return false; + + if (host_target.cpu.arch == binary_target.cpu.arch) + return true; + + if (host_target.cpu.arch == .x86_64 and binary_target.cpu.arch == .i386) + return true; + + if (host_target.cpu.arch == .aarch64 and binary_target.cpu.arch == .arm) + return true; + + if (host_target.cpu.arch == .aarch64_be and binary_target.cpu.arch == .armeb) + return true; + + return false; + } }; test "" { -- cgit v1.2.3