Commit 197ffff0b8
src/link/MachO/Dylib.zig
@@ -751,8 +751,14 @@ pub const TargetMatcher = struct {
.v3 => |v3| blk: {
var targets = std.ArrayList([]const u8).init(arena.allocator());
for (v3.archs) |arch| {
- const target = try std.fmt.allocPrint(arena.allocator(), "{s}-{s}", .{ arch, v3.platform });
- try targets.append(target);
+ if (mem.eql(u8, v3.platform, "zippered")) {
+ // From Xcode 10.3 → 11.3.1, macos SDK .tbd files specify platform as 'zippered'
+ // which should map to [ '<arch>-macos', '<arch>-maccatalyst' ]
+ try targets.append(try std.fmt.allocPrint(arena.allocator(), "{s}-macos", .{arch}));
+ try targets.append(try std.fmt.allocPrint(arena.allocator(), "{s}-maccatalyst", .{arch}));
+ } else {
+ try targets.append(try std.fmt.allocPrint(arena.allocator(), "{s}-{s}", .{ arch, v3.platform }));
+ }
}
break :blk targets.items;
},
src/link/MachO.zig
@@ -4376,9 +4376,11 @@ pub const Platform = struct {
.IOS, .IOSSIMULATOR => .ios,
.TVOS, .TVOSSIMULATOR => .tvos,
.WATCHOS, .WATCHOSSIMULATOR => .watchos,
+ .MACCATALYST => .ios,
else => @panic("TODO"),
},
.abi = switch (cmd.platform) {
+ .MACCATALYST => .macabi,
.IOSSIMULATOR,
.TVOSSIMULATOR,
.WATCHOSSIMULATOR,
@@ -4425,7 +4427,11 @@ pub const Platform = struct {
pub fn toApplePlatform(plat: Platform) macho.PLATFORM {
return switch (plat.os_tag) {
.macos => .MACOS,
- .ios => if (plat.abi == .simulator) .IOSSIMULATOR else .IOS,
+ .ios => switch (plat.abi) {
+ .simulator => .IOSSIMULATOR,
+ .macabi => .MACCATALYST,
+ else => .IOS,
+ },
.tvos => if (plat.abi == .simulator) .TVOSSIMULATOR else .TVOS,
.watchos => if (plat.abi == .simulator) .WATCHOSSIMULATOR else .WATCHOS,
else => unreachable,