diff --git a/build.zig b/build.zig index f8922712d..a25336a48 100644 --- a/build.zig +++ b/build.zig @@ -4,6 +4,7 @@ const LibExeObjStep = std.build.LibExeObjStep; const glfw = @import("vendor/mach/glfw/build.zig"); const ft = @import("src/freetype/build.zig"); const uv = @import("src/libuv/build.zig"); +const system_sdk = @import("vendor/mach/glfw/system_sdk.zig"); pub fn build(b: *std.build.Builder) !void { const target = b.standardTargetOptions(.{}); @@ -26,6 +27,7 @@ pub fn build(b: *std.build.Builder) !void { ftlib.link(exe); const libuv = try uv.create(b, target, mode); + system_sdk.include(b, libuv.step, .{}); libuv.link(exe); // stb if we need it diff --git a/src/libuv/build.zig b/src/libuv/build.zig index c2d4411e8..c4d4e88bd 100644 --- a/src/libuv/build.zig +++ b/src/libuv/build.zig @@ -50,6 +50,13 @@ pub fn create( }); } + if (target.isDarwin()) { + try flags.appendSlice(&.{ + "-D_DARWIN_UNLIMITED_SELECT=1", + "-D_DARWIN_USE_64_BIT_INODE=1", + }); + } + // C files common to all platforms ret.addCSourceFiles(&.{ root() ++ "src/fs-poll.c", @@ -106,6 +113,32 @@ pub fn create( }, flags.items); } + if (target.isDarwin() or + target.isOpenBSD() or + target.isNetBSD() or + target.isFreeBSD() or + target.isDragonFlyBSD()) + { + ret.addCSourceFiles(&.{ + root() ++ "src/unix/bsd-ifaddrs.c", + root() ++ "src/unix/kqueue.c", + }, flags.items); + } + + if (target.isDarwin() or target.isOpenBSD()) { + ret.addCSourceFiles(&.{ + root() ++ "src/unix/random-getentropy.c", + }, flags.items); + } + + if (target.isDarwin()) { + ret.addCSourceFiles(&.{ + root() ++ "src/unix/darwin-proctitle.c", + root() ++ "src/unix/darwin.c", + root() ++ "src/unix/fsevents.c", + }, flags.items); + } + ret.addIncludeDir(include_dir); ret.addIncludeDir(root() ++ "src"); if (target.isWindows()) {