diff --git a/build.zig.zon b/build.zig.zon index f009c56..df83108 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -48,8 +48,8 @@ }, .translate_c = .{ - .url = "git+https://codeberg.org/ziglang/translate-c#d67f0a5821b0c5ad16f60c425ad2af3499e7995f", - .hash = "translate_c-0.0.0-Q_BUWho9BwAx1Nyc_gDzXBjXZg62qETbgze15f50x29Y", + .url = "git+https://codeberg.org/ziglang/translate-c#3da873cacdd7e9190fe1cf40372ddf5387c970ea", + .hash = "translate_c-0.0.0-Q_BUWktLBwBO7VLbmrOKUcAMRtE5fmOxI35189X5XbJs", }, }, } diff --git a/build/luajit-prng.patch b/build/luajit-prng.patch new file mode 100644 index 0000000..1e71abb --- /dev/null +++ b/build/luajit-prng.patch @@ -0,0 +1,24 @@ +--- lj_prng.c 2026-08-23 19:02:07.137486000 +0100 ++++ lj_prng.c.patch 2026-08-23 19:07:14.481771000 +0100 +@@ -128,6 +128,10 @@ + #elif (LJ_TARGET_BSD && !defined(__NetBSD__)) || LJ_TARGET_SOLARIS || LJ_TARGET_CYGWIN || LJ_TARGET_QNX || LJ_TARGET_HURD + #define LJ_TARGET_HAS_GETENTROPY 1 + #endif ++ ++/* For the /dev/urandom fallback. */ ++#include ++#include + + #if LJ_TARGET_HAS_GETENTROPY + extern int getentropy(void *buf, size_t len) +@@ -139,10 +143,6 @@ + + #endif + +-/* For the /dev/urandom fallback. */ +-#include +-#include +- + #endif + + #if LUAJIT_SECURITY_PRNG == 0 diff --git a/build/luajit.zig b/build/luajit.zig index 61f229a..adb435c 100644 --- a/build/luajit.zig +++ b/build/luajit.zig @@ -58,6 +58,14 @@ pub fn configure(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin. dynasm_run.addFileArg(upstream.path("dynasm/dynasm.lua")); } + // Patch lj_prng.c for FreeBSD SSP + if (b.graph.host.result.os.tag == .freebsd) { + const prng_patch = applyPatchToFile(b, b.graph.host, upstream.path("src/lj_prng.c"), b.path("build/luajit-prng.patch"), "src/lj_prng.c"); + prng_patch.run.addFileArg(prng_patch.output); + } else { + lib.addCSourceFile(.{ .file = upstream.path("src/lj_prng.c") }); + } + // TODO: Many more flags to figure out if (target.result.cpu.arch.endian() == .little) { dynasm_run.addArgs(&.{ "-D", "ENDIAN_LE" }); @@ -203,7 +211,7 @@ pub fn configure(b: *Build, target: Build.ResolvedTarget, optimize: std.builtin. library.step.dependOn(&buildvm_folddef.step); library.step.dependOn(&buildvm_ljvm.step); - library.is_linking_libc = true; + library.root_module.link_libc = true; lib.addCMacro("LUAJIT_UNWIND_EXTERNAL", ""); lib.linkSystemLibrary("unwind", .{}); @@ -264,7 +272,6 @@ const luajit_vm = luajit_lib ++ [_][]const u8{ "src/lj_udata.c", "src/lj_meta.c", "src/lj_debug.c", - "src/lj_prng.c", "src/lj_state.c", "src/lj_dispatch.c", "src/lj_vmevent.c",