authorgravatar for lgustaf1@binghamton.eduLayne Gustafson <lgustaf1@binghamton.edu> 2019-12-21 21:38:39-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-01-19 20:53:19-05:00
logc1798cb632a1f8b7a0824a9e5d58cd8c30e4f373
treed118c0a2cc9a8fded2a6b05852f343ed0897c57d
parentb3324f1901ab9eb7321ad65161e6e07047284cab
signaturelock-open Commit is signed but in an unrecognized format.

Add build.zig cpu and feature options


1 files changed, 30 insertions(+), 0 deletions(-)

lib/std/build.zig+30
......@@ -1199,6 +1199,9 @@ pub const LibExeObjStep = struct {
11991199
12001200 subsystem: ?builtin.SubSystem = null,
12011201
1202 cpu: ?[]const u8 = null,
1203 features: ?[]const u8 = null,
1204
12021205 const LinkObject = union(enum) {
12031206 StaticPath: []const u8,
12041207 OtherStep: *LibExeObjStep,
......@@ -1384,6 +1387,23 @@ pub const LibExeObjStep = struct {
13841387 self.computeOutFileNames();
13851388 }
13861389
1390 pub fn setCpu(self: *LibExeObjStep, cpu: *const std.target.Cpu) void {
1391 self.cpu = cpu.name;
1392 }
1393
1394 pub fn setFeatures(self: *LibExeObjStep, features: []*const std.target.Feature) void {
1395 var features_str_buffer = std.Buffer.init(self.builder.allocator, "") catch unreachable;
1396 defer features_str_buffer.deinit();
1397
1398 for (features) |feature| {
1399 features_str_buffer.append("+") catch unreachable;
1400 features_str_buffer.append(feature.name) catch unreachable;
1401 features_str_buffer.append(",") catch unreachable;
1402 }
1403
1404 self.features = features_str_buffer.toOwnedSlice();
1405 }
1406
13871407 pub fn setTargetGLibC(self: *LibExeObjStep, major: u32, minor: u32, patch: u32) void {
13881408 self.target_glibc = Version{
13891409 .major = major,
......@@ -1974,6 +1994,16 @@ pub const LibExeObjStep = struct {
19741994 },
19751995 }
19761996
1997 if (self.cpu) |cpu| {
1998 try zig_args.append("--cpu");
1999 try zig_args.append(cpu);
2000 }
2001
2002 if (self.features) |features| {
2003 try zig_args.append("--features");
2004 try zig_args.append(features);
2005 }
2006
19772007 if (self.target_glibc) |ver| {
19782008 try zig_args.append("-target-glibc");
19792009 try zig_args.append(builder.fmt("{}.{}.{}", .{ ver.major, ver.minor, ver.patch }));