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:16:42+02:00
logd760b840ec08ee5485354b113ebddcf8672b1cf4
tree531bc848392257525b8a3ccc72782880c3c08a76
parenta4695d4db91763b5aabe15c8cc4c906325815d50
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

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
......@@ -1270,16 +1270,16 @@ pub const File = struct {
12701270 else => return diags.failParse(sdk_settings_path, "failed to parse Darwin SDK settings: file is not a JSON object", .{}),
12711271 };
12721272
1273 const version_json = parsed_object.get("MinimalDisplayName") orelse return diags.failParse(
1273 const version_json = parsed_object.get("Version") orelse return diags.failParse(
12741274 sdk_settings_path,
1275 "failed to parse Darwin SDK settings: 'MinimalDisplayName' missing",
1275 "failed to parse Darwin SDK settings: 'Version' missing",
12761276 .{},
12771277 );
12781278 const version_str: []const u8 = switch (version_json) {
12791279 .string => |str| str,
12801280 else => return diags.failParse(
12811281 sdk_settings_path,
1282 "failed to parse Darwin SDK settings: 'MinimalDisplayName' not a string",
1282 "failed to parse Darwin SDK settings: 'Version' not a string",
12831283 .{},
12841284 ),
12851285 };