aboutsummaryrefslogtreecommitdiff
path: root/lib/std
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std')
-rw-r--r--lib/std/target.zig21
1 files changed, 21 insertions, 0 deletions
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 "" {