aboutsummaryrefslogtreecommitdiff
path: root/std/build.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2017-08-30 14:55:26 -0400
committerAndrew Kelley <superjoe30@gmail.com>2017-08-30 14:55:26 -0400
commit0e9bdb44a6ca022558ed703749353c76e796dc35 (patch)
treeaeedbc3a20024875139cf892fa6dbdf4f08e35d0 /std/build.zig
parent052b4ae9415596e0b6b6c32b9b4f2d3ff8c9e953 (diff)
downloadzig-0e9bdb44a6ca022558ed703749353c76e796dc35.tar.gz
zig-0e9bdb44a6ca022558ed703749353c76e796dc35.zip
test suite cross-compile builds tests for other targets
Diffstat (limited to 'std/build.zig')
-rw-r--r--std/build.zig28
1 files changed, 28 insertions, 0 deletions
diff --git a/std/build.zig b/std/build.zig
index 072a400b30..a42434da50 100644
--- a/std/build.zig
+++ b/std/build.zig
@@ -1027,6 +1027,7 @@ pub const TestStep = struct {
link_libs: BufSet,
name_prefix: []const u8,
filter: ?[]const u8,
+ target: Target,
pub fn init(builder: &Builder, root_src: []const u8) -> TestStep {
const step_name = builder.fmt("test {}", root_src);
@@ -1039,6 +1040,7 @@ pub const TestStep = struct {
.name_prefix = "",
.filter = null,
.link_libs = BufSet.init(builder.allocator),
+ .target = Target.Native,
}
}
@@ -1062,6 +1064,18 @@ pub const TestStep = struct {
self.filter = text;
}
+ pub fn setTarget(self: &TestStep, target_arch: builtin.Arch, target_os: builtin.Os,
+ target_environ: builtin.Environ)
+ {
+ self.target = Target.Cross {
+ CrossTarget {
+ .arch = target_arch,
+ .os = target_os,
+ .environ = target_environ,
+ }
+ };
+ }
+
fn make(step: &Step) -> %void {
const self = @fieldParentPtr(TestStep, "step", step);
const builder = self.builder;
@@ -1082,6 +1096,20 @@ pub const TestStep = struct {
builtin.Mode.ReleaseFast => %%zig_args.append("--release-fast"),
}
+ switch (self.target) {
+ Target.Native => {},
+ Target.Cross => |cross_target| {
+ %%zig_args.append("--target-arch");
+ %%zig_args.append(@enumTagName(cross_target.arch));
+
+ %%zig_args.append("--target-os");
+ %%zig_args.append(@enumTagName(cross_target.os));
+
+ %%zig_args.append("--target-environ");
+ %%zig_args.append(@enumTagName(cross_target.environ));
+ },
+ }
+
if (self.filter) |filter| {
%%zig_args.append("--test-filter");
%%zig_args.append(filter);