diff --git a/build.zig b/build.zig
--- a/build.zig
+++ b/build.zig
@@ -859,7 +859,15 @@
                 mod.linkSystemLibrary("unwind", .{});
             },
             .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => {
-                mod.link_libcpp = true;
+                const io = b.graph.io;
+                if (static or !std.zig.system.darwin.isSdkInstalled(b.allocator, io)) {
+                    mod.link_libcpp = true;
+                } else {
+                    const sdk = std.zig.system.darwin.getSdk(b.allocator, io, target) orelse
+                        return error.SdkDetectFailed;
+                    const libcpp_tbd = b.pathJoin(&.{ sdk, "usr/lib/libc++.tbd" });
+                    mod.addObjectFile(.{ .cwd_relative = libcpp_tbd });
+                }
             },
             .windows => {
                 if (target.abi != .msvc) mod.link_libcpp = true;