authorgravatar for enfipy@gmail.comDavid <enfipy@gmail.com> 2026-10-21 18:57:44+05:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-23 02:15:09+02:00
log2de7cf9425737a1ce98fda505b5a0166eaad137c
tree586b51d7afd26f5a8ddee65730551fe5d4f65d5a
parent3a7eee7d0bc55891d3b83339a1679f1bf88759b7

link: read the Darwin SDK version from `Version`

Simulator SDKs set `MinimalDisplayName` to "Simulator - 27.0", so linking with one as the libc failed with "failed to parse Darwin SDK version". Every SDK has a plain `Version`, which is also what clang reads.

2 files changed, 4 insertions(+), 4 deletions(-)

lib/libc/darwin/SDKSettings.json+1-1
...@@ -1 +1 @@...@@ -1 +1 @@
1{"MinimalDisplayName":"27.0"}1{"Version":"27.0"}
src/link.zig+3-3
...@@ -1297,16 +1297,16 @@ pub const File = struct {...@@ -1297,16 +1297,16 @@ pub const File = struct {
1297 else => return diags.failParse(sdk_settings_path, "failed to parse Darwin SDK settings: file is not a JSON object", .{}),1297 else => return diags.failParse(sdk_settings_path, "failed to parse Darwin SDK settings: file is not a JSON object", .{}),
1298 };1298 };
12991299
1300 const version_json = parsed_object.get("MinimalDisplayName") orelse return diags.failParse(1300 const version_json = parsed_object.get("Version") orelse return diags.failParse(
1301 sdk_settings_path,1301 sdk_settings_path,
1302 "failed to parse Darwin SDK settings: 'MinimalDisplayName' missing",1302 "failed to parse Darwin SDK settings: 'Version' missing",
1303 .{},1303 .{},
1304 );1304 );
1305 const version_str: []const u8 = switch (version_json) {1305 const version_str: []const u8 = switch (version_json) {
1306 .string => |str| str,1306 .string => |str| str,
1307 else => return diags.failParse(1307 else => return diags.failParse(
1308 sdk_settings_path,1308 sdk_settings_path,
1309 "failed to parse Darwin SDK settings: 'MinimalDisplayName' not a string",1309 "failed to parse Darwin SDK settings: 'Version' not a string",
1310 .{},1310 .{},
1311 ),1311 ),
1312 };1312 };