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{"MinimalDisplayName":"27.0"}
1{"Version":"27.0"}
src/link.zig+3-3
......@@ -1297,16 +1297,16 @@ pub const File = struct {
12971297 else => return diags.failParse(sdk_settings_path, "failed to parse Darwin SDK settings: file is not a JSON object", .{}),
12981298 };
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(
13011301 sdk_settings_path,
1302 "failed to parse Darwin SDK settings: 'MinimalDisplayName' missing",
1302 "failed to parse Darwin SDK settings: 'Version' missing",
13031303 .{},
13041304 );
13051305 const version_str: []const u8 = switch (version_json) {
13061306 .string => |str| str,
13071307 else => return diags.failParse(
13081308 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",
13101310 .{},
13111311 ),
13121312 };