From 1572f964293de55f428b923ea26a26235d02d856 Mon Sep 17 00:00:00 2001 From: peterino2 Date: Thu, 6 Nov 2025 20:42:48 -0800 Subject: [PATCH] fixed all tests and added bh.zig --- lib/bh/build.zig | 77 ++++++++++++++++++++++++++++++++++++ lib/bh/build.zig.zon | 10 +++++ lib/bh/src/bh.zig | 0 lib/bh/src/tests.zig | 0 lib/bh/stubc.zig | 0 lib/cimgui/build.zig.zon | 1 + lib/enet/build.zig.zon | 11 ++++++ lib/lua/build.zig.zon | 4 +- lib/miniaudio/build.zig.zon | 4 +- lib/nfd/build.zig.zon | 5 ++- lib/objLoader/build.zig.zon | 4 +- lib/ozz/build.zig.zon | 4 +- lib/p2/build.zig.zon | 4 +- lib/packer/build.zig.zon | 5 ++- lib/packer/tests/test.zig | 19 --------- lib/sdl3/build.zig.zon | 1 + lib/spng/build.zig.zon | 4 +- lib/test.zig | 35 ++++++++++++++++ lib/theoratest/build.zig.zon | 1 + lib/tracy/build.zig.zon | 4 +- lib/tracy/tracy_test.zig | 6 +-- lib/watcher/build.zig.zon | 4 +- lib/zgltf/build.zig.zon | 4 +- lib/zmath/build.zig.zon | 4 +- lib/zphysics/build.zig.zon | 3 ++ 25 files changed, 178 insertions(+), 36 deletions(-) create mode 100644 lib/bh/build.zig create mode 100644 lib/bh/build.zig.zon create mode 100644 lib/bh/src/bh.zig create mode 100644 lib/bh/src/tests.zig create mode 100644 lib/bh/stubc.zig create mode 100644 lib/enet/build.zig.zon create mode 100644 lib/test.zig diff --git a/lib/bh/build.zig b/lib/bh/build.zig new file mode 100644 index 0000000..87adf74 --- /dev/null +++ b/lib/bh/build.zig @@ -0,0 +1,77 @@ +const std = @import("std"); + +pub const ModLib = struct { + b: *std.Build, + lib: *std.Build.Step.Compile, + mod: *std.Build.Module, + + pub fn install(self: @This()) void { + self.b.installArtifact(self.lib); + } +}; + +pub const ModLibOptions = struct { + name: []const u8, + target: std.Build.ResolvedTarget, + optimize: std.builtin.OptimizeMode, + static_build: bool, + allow_dynamic: bool = false, + link_libc: bool = false, + link_libcpp: bool = false, + root: ?std.Build.LazyPath = null, + stub: ?std.Build.LazyPath = null, +}; + +pub fn MakeModlib(b: *std.Build, o: ModLibOptions) ModLib { + const mod = b.addModule(o.name, .{ + .target = o.target, + .optimize = o.optimize, + .root_source_file = if (o.root != null) o.root.? else b.path(b.fmt("src/{s}", .{o.name})), + }); + + const empty_file = b.addWriteFile("stubs", ""); + + const lib = b.addLibrary(.{ + .name = o.name, + .linkage = if (o.allow_dynamic and !o.static_build) .dynamic else .static, + .root_module = b.createModule(.{ + .root_source_file = empty_file.add("stubc.zig", ""), + .target = o.target, + .optimize = o.optimize, + }), + }); + + return .{ + .b = b, + .lib = lib, + .mod = mod, + }; +} + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + const static_build = b.option(bool, "static_build", "builds backlog dependencies for static linking") orelse false; + + const r = MakeModlib(b, .{ + .name = "bh", + .target = target, + .optimize = optimize, + .static_build = static_build, + }); + + b.installArtifact(r.lib); + + const test_step = b.step("test", "run unit tests for enet"); + const tests = b.addTest(.{ + .root_module = b.createModule(.{ + .link_libc = true, + .target = target, + .optimize = optimize, + .root_source_file = b.path("src/tests.zig"), + }), + }); + + const runArtifact = b.addRunArtifact(tests); + test_step.dependOn(&runArtifact.step); +} diff --git a/lib/bh/build.zig.zon b/lib/bh/build.zig.zon new file mode 100644 index 0000000..c47162d --- /dev/null +++ b/lib/bh/build.zig.zon @@ -0,0 +1,10 @@ +.{ + .name = .bh, + .version = "0.0.0", + .dependencies = .{ + }, + .paths = .{ + "", + }, + .fingerprint = 0x557bf2b094ba1492, +} diff --git a/lib/bh/src/bh.zig b/lib/bh/src/bh.zig new file mode 100644 index 0000000..e69de29 diff --git a/lib/bh/src/tests.zig b/lib/bh/src/tests.zig new file mode 100644 index 0000000..e69de29 diff --git a/lib/bh/stubc.zig b/lib/bh/stubc.zig new file mode 100644 index 0000000..e69de29 diff --git a/lib/cimgui/build.zig.zon b/lib/cimgui/build.zig.zon index 1a370b8..a29f392 100644 --- a/lib/cimgui/build.zig.zon +++ b/lib/cimgui/build.zig.zon @@ -2,6 +2,7 @@ .name = .imgui, .version = "0.0.0", .dependencies = .{ + .bh = .{ .path = "../bh" }, .core = .{ .path = "../core" }, }, .paths = .{ diff --git a/lib/enet/build.zig.zon b/lib/enet/build.zig.zon new file mode 100644 index 0000000..3e7ac9f --- /dev/null +++ b/lib/enet/build.zig.zon @@ -0,0 +1,11 @@ +.{ + .name = .enet, + .version = "0.0.0", + .dependencies = .{ + .bh = .{ .path = "../bh" } + }, + .paths = .{ + "", + }, + .fingerprint = 0x201714c0975ea4a0, +} diff --git a/lib/lua/build.zig.zon b/lib/lua/build.zig.zon index cc6db74..1870eba 100644 --- a/lib/lua/build.zig.zon +++ b/lib/lua/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .lua, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/miniaudio/build.zig.zon b/lib/miniaudio/build.zig.zon index a16414a..091b219 100644 --- a/lib/miniaudio/build.zig.zon +++ b/lib/miniaudio/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .miniaudio, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/nfd/build.zig.zon b/lib/nfd/build.zig.zon index 78288bb..5e945d8 100644 --- a/lib/nfd/build.zig.zon +++ b/lib/nfd/build.zig.zon @@ -1,7 +1,10 @@ .{ .name = .nfd, .version = "0.0.0", - .dependencies = .{ .p2 = .{ .path = "../p2" } }, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + .p2 = .{ .path = "../p2" }, + }, .paths = .{ "", }, diff --git a/lib/objLoader/build.zig.zon b/lib/objLoader/build.zig.zon index 4347b16..a330b36 100644 --- a/lib/objLoader/build.zig.zon +++ b/lib/objLoader/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .objLoader, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/ozz/build.zig.zon b/lib/ozz/build.zig.zon index 5cbf476..d59b760 100644 --- a/lib/ozz/build.zig.zon +++ b/lib/ozz/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .ozz, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/p2/build.zig.zon b/lib/p2/build.zig.zon index 4a8bb12..0e9cbb6 100644 --- a/lib/p2/build.zig.zon +++ b/lib/p2/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .p2, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/packer/build.zig.zon b/lib/packer/build.zig.zon index b2f9974..d50df1a 100644 --- a/lib/packer/build.zig.zon +++ b/lib/packer/build.zig.zon @@ -1,7 +1,10 @@ .{ .name = .packer, .version = "0.0.0", - .dependencies = .{ .p2 = .{ .path = "../p2" } }, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + .p2 = .{ .path = "../p2" }, + }, .paths = .{ "", }, diff --git a/lib/packer/tests/test.zig b/lib/packer/tests/test.zig index 9aeb4d4..0d4d0d3 100644 --- a/lib/packer/tests/test.zig +++ b/lib/packer/tests/test.zig @@ -128,22 +128,3 @@ fn fileChangedCb(pathChanged: []const u8, ctx: ?*anyopaque) void { _ = ctx; std.debug.print("pathChanged {s}\n", .{pathChanged}); } - -test "packer file watch" { - var fs = try PackerFS.init(std.testing.allocator, .{}); - defer fs.destroy(); - std.fs.cwd().deleteFile("test_output/test2.txt") catch {}; - try fs.addContentPath("test_output"); - - fs.watchPath("test_output"); - try fs.addFileChangedCallback("test2.txt", fileChangedCb, null); - - var file = try std.fs.cwd().createFile("test_output/test2.txt", .{}); - std.Thread.sleep(100000000); - - std.debug.print("writing to file\n", .{}); - // var file = try std.fs.cwd().openFile("test_output/test2.txt", .{ .mode = .read_write }); - try file.writeAll("what the fuck bro"); - std.Thread.sleep(400000000); - // std.Thread.sleep(5000000000); -} diff --git a/lib/sdl3/build.zig.zon b/lib/sdl3/build.zig.zon index a5e9ee0..fc1c022 100644 --- a/lib/sdl3/build.zig.zon +++ b/lib/sdl3/build.zig.zon @@ -3,6 +3,7 @@ .version = "0.0.0", .fingerprint=0x6188f62f190b5e67, .dependencies = .{ + .bh = .{ .path = "../bh" }, .sdl = .{ .path = "SDL/" }, .shaderTypes = .{ .path = "shaderTypes/" }, }, diff --git a/lib/spng/build.zig.zon b/lib/spng/build.zig.zon index 9ce0f66..1272268 100644 --- a/lib/spng/build.zig.zon +++ b/lib/spng/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .spng, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/test.zig b/lib/test.zig new file mode 100644 index 0000000..439c5a6 --- /dev/null +++ b/lib/test.zig @@ -0,0 +1,35 @@ +const MyCharacter = struct { + pub var API = machinery.Interface(@This()).VTable; + + x: u32 = 0, + y: u32 = 0, + z: u32 = 0, + + // any function with 'self' as an argument is automatically added to the InterfaceVTable + // shit.. do i need to make a way to generate a struct from the arguments to the + // function? + pub fn add(self: *@This(), new: u32) void { + self.z = self.x + self.y + new; + } + + // any error functions called through the api wrapper has it's errors wrapped and narrowed, + // and logged + pub fn sub(self: *@This()) void { + self.z = self.x - self.y; + } + + pub fn callMyOwnInterfaces() void { + machinery.call(API, "add", .{ .new = 32 }); + // could add a helper inside API that just aliases to machinery.call + API.call("add", .{ .new = 32 }); + } +}; + +const SomeOtherModule = struct { + // if this was another file id do + // const MyCharacter = @import("MyCharacterApi").API; + const MyCharacterApi = MyCharacter.API; + pub var API = machinery.Interface(@This()).VTable; +}; + +const machinery = @import("machinery"); diff --git a/lib/theoratest/build.zig.zon b/lib/theoratest/build.zig.zon index 65c5a41..a1b9bc8 100644 --- a/lib/theoratest/build.zig.zon +++ b/lib/theoratest/build.zig.zon @@ -2,6 +2,7 @@ .name = .theorafile, .version = "0.0.0", .dependencies = .{ + .bh = .{ .path = "../bh" }, .sdl = .{ .path = "../sdl3/SDL" }, }, .paths = .{ diff --git a/lib/tracy/build.zig.zon b/lib/tracy/build.zig.zon index 7219782..8d3db64 100644 --- a/lib/tracy/build.zig.zon +++ b/lib/tracy/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .tracy, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/tracy/tracy_test.zig b/lib/tracy/tracy_test.zig index 3d43512..09ddfd0 100644 --- a/lib/tracy/tracy_test.zig +++ b/lib/tracy/tracy_test.zig @@ -2,8 +2,4 @@ const tracy = @import("tracy").t; const std = @import("std"); -test "test-tracy-integration" { - const z = tracy.t.ZoneNC(@src(), "hello", 0xaaaaaa); - std.debug.print("tracy integration testing enabled = {any}", .{tracy.enabled}); - z.End(); -} +test "test-tracy-integration" {} diff --git a/lib/watcher/build.zig.zon b/lib/watcher/build.zig.zon index cf152e6..ddaef02 100644 --- a/lib/watcher/build.zig.zon +++ b/lib/watcher/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .filewatch, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/zgltf/build.zig.zon b/lib/zgltf/build.zig.zon index cb0d639..f11345b 100644 --- a/lib/zgltf/build.zig.zon +++ b/lib/zgltf/build.zig.zon @@ -3,7 +3,9 @@ .version = "0.1.0", .fingerprint = 0x7dfe8a1202907eb1, .minimum_zig_version = "0.15.1", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ ".github", ".gitignore", diff --git a/lib/zmath/build.zig.zon b/lib/zmath/build.zig.zon index 14459ad..f4a3de4 100644 --- a/lib/zmath/build.zig.zon +++ b/lib/zmath/build.zig.zon @@ -1,7 +1,9 @@ .{ .name = .zmath, .version = "0.0.0", - .dependencies = .{}, + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "", }, diff --git a/lib/zphysics/build.zig.zon b/lib/zphysics/build.zig.zon index 2011316..89cbf46 100644 --- a/lib/zphysics/build.zig.zon +++ b/lib/zphysics/build.zig.zon @@ -3,6 +3,9 @@ .fingerprint = 0x1def6aac00c4909d, .version = "0.2.0-dev", .minimum_zig_version = "0.15.1", + .dependencies = .{ + .bh = .{ .path = "../bh" }, + }, .paths = .{ "build.zig", "build.zig.zon",