From 03662d8063356e730d63aa03a7d90bc5ec0b4360 Mon Sep 17 00:00:00 2001 From: David Allemang Date: Thu, 21 Nov 2024 11:27:41 -0500 Subject: [PATCH] improve build.zig; run nu tests --- .gitignore | 2 ++ build.zig | 53 ++++++++++++++++++++++++++++++++++++++-------------- src/main.zig | 2 +- src/nu.zig | 7 ++++++- 4 files changed, 48 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index c33569d..2206cc9 100644 --- a/.gitignore +++ b/.gitignore @@ -45,5 +45,7 @@ build-*/ docgen_tmp/ .idea/ +.direnv/ +.envrc imgui.ini diff --git a/build.zig b/build.zig index 1177ab2..9ab99d6 100644 --- a/build.zig +++ b/build.zig @@ -14,12 +14,28 @@ pub fn build(b: *std.Build) void { const cimgui = b.dependency("cimgui", .{}); + const nu = b.addModule("nu", .{ + .root_source_file = b.path("src/nu.zig"), + .target = target, + .optimize = optimize, + .link_libc = true, + }); + nu.addImport("cimgui", cimgui.module("cimgui")); + nu.addImport("vk", vkmod); + nu.linkSystemLibrary("glfw3", .{ + .needed = true, + .preferred_link_mode = .static, + .use_pkg_config = .force, + }); + const exe = b.addExecutable(.{ .name = "scratchzig", .root_source_file = b.path("src/main.zig"), .target = target, .optimize = optimize, }); + exe.root_module.addImport("nu", nu); + exe.root_module.addImport("vk", vkmod); exe.root_module.addImport("cimgui", cimgui.module("cimgui")); const shaders = vkgen.ShaderCompileStep.create( @@ -31,14 +47,6 @@ pub fn build(b: *std.Build) void { shaders.add("triangle_frag", "src/shaders/triangle.frag", .{}); exe.root_module.addImport("shaders", shaders.getModule()); - exe.linkSystemLibrary2("glfw3", .{ - .needed = true, - .preferred_link_mode = .static, - .use_pkg_config = .force, - }); - exe.linkLibC(); - exe.root_module.addImport("vk", vkmod); - b.installArtifact(exe); const run_cmd = b.addRunArtifact(exe); @@ -51,19 +59,36 @@ pub fn build(b: *std.Build) void { const run_step = b.step("run", "Run the app"); run_step.dependOn(&run_cmd.step); - const exe_unit_tests = b.addTest(.{ - .root_source_file = b.path("src/main.zig"), + const nu_unit_tests = b.addTest(.{ + .root_source_file = b.path("src/nu.zig"), .target = target, .optimize = optimize, }); - exe_unit_tests.linkSystemLibrary2("glfw3", .{ + nu_unit_tests.root_module.addImport("cimgui", cimgui.module("cimgui")); + nu_unit_tests.root_module.addImport("vk", vkmod); + nu_unit_tests.root_module.linkSystemLibrary("glfw3", .{ .needed = true, .preferred_link_mode = .static, .use_pkg_config = .force, }); - exe_unit_tests.linkLibC(); - const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests); + nu_unit_tests.linkLibC(); + + const run_nu_unit_tests = b.addRunArtifact(nu_unit_tests); + + // const exe_unit_tests = b.addTest(.{ + // .root_source_file = b.path("src/main.zig"), + // .target = target, + // .optimize = optimize, + // }); + // exe_unit_tests.linkSystemLibrary2("glfw3", .{ + // .needed = true, + // .preferred_link_mode = .static, + // .use_pkg_config = .force, + // }); + // exe_unit_tests.linkLibC(); + // const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests); const test_step = b.step("test", "Run unit tests"); - test_step.dependOn(&run_exe_unit_tests.step); + // test_step.dependOn(&run_exe_unit_tests.step); + test_step.dependOn(&run_nu_unit_tests.step); } diff --git a/src/main.zig b/src/main.zig index ef9b065..887ab29 100644 --- a/src/main.zig +++ b/src/main.zig @@ -3,7 +3,7 @@ const nu = @import("nu.zig"); pub const nu_modules = .{ App, - // UI, + UI, }; pub const main = nu.main; diff --git a/src/nu.zig b/src/nu.zig index b94a17a..8e60c18 100644 --- a/src/nu.zig +++ b/src/nu.zig @@ -1,12 +1,13 @@ const std = @import("std"); const root = @import("root"); +const hooks = @import("nu/hooks.zig"); pub const Window = @import("nu/Window.zig"); pub const Render = @import("nu/Render.zig"); pub const ImGui = @import("nu/ImGui.zig"); pub const Bus = @import("nu/Bus.zig"); -pub const Hook = @import("nu/hooks.zig").Hook; +pub const Hook = hooks.Hook; const Config = struct { window: Window.Config = .{}, @@ -109,3 +110,7 @@ const Graph = struct { return result; } }; + +test { + std.testing.refAllDecls(hooks); +} \ No newline at end of file