| ... | ... | @@ -1199,6 +1199,9 @@ pub const LibExeObjStep = struct { |
| 1199 | 1199 | |
| 1200 | 1200 | subsystem: ?builtin.SubSystem = null, |
| 1201 | 1201 | |
| 1202 | cpu: ?[]const u8 = null, |
| 1203 | features: ?[]const u8 = null, |
| 1204 | |
| 1202 | 1205 | const LinkObject = union(enum) { |
| 1203 | 1206 | StaticPath: []const u8, |
| 1204 | 1207 | OtherStep: *LibExeObjStep, |
| ... | ... | @@ -1384,6 +1387,23 @@ pub const LibExeObjStep = struct { |
| 1384 | 1387 | self.computeOutFileNames(); |
| 1385 | 1388 | } |
| 1386 | 1389 | |
| 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 | |
| 1387 | 1407 | pub fn setTargetGLibC(self: *LibExeObjStep, major: u32, minor: u32, patch: u32) void { |
| 1388 | 1408 | self.target_glibc = Version{ |
| 1389 | 1409 | .major = major, |
| ... | ... | @@ -1974,6 +1994,16 @@ pub const LibExeObjStep = struct { |
| 1974 | 1994 | }, |
| 1975 | 1995 | } |
| 1976 | 1996 | |
| 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 | |
| 1977 | 2007 | if (self.target_glibc) |ver| { |
| 1978 | 2008 | try zig_args.append("-target-glibc"); |
| 1979 | 2009 | try zig_args.append(builder.fmt("{}.{}.{}", .{ ver.major, ver.minor, ver.patch })); |