const std = @import("std"); const Backlog = @import("Backlog"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); var blbuild = Backlog.init(b, .{ .target = target, .optimize = optimize, .backlogRoot = "../", }); const sampleGame = blbuild.program(.{ .name = "sampleGame", .desc = "sdl3 project sample", .root_source_file = b.path("sampleGame/main.zig"), }); // new paradigm has all engine modules be zig modules, // in that way zig modules act as headers. // // due to conditional compiling, we do NOT need to do any special linking against them sampleGame.setModuleEnabled("imgui", true); sampleGame.setModuleEnabled("audio", true); sampleGame.setModuleEnabled("physics", true); sampleGame.setModuleEnabled("ui", true); sampleGame.setModuleEnabled("sys", true); sampleGame.setModuleEnabled("net", true); sampleGame.addExtraModule("gameExtras"); sampleGame.addExtraModule("videoplayer"); sampleGame.addExtraModule("doomplayer"); sampleGame.addExtraModule("bsp"); { // extern game const externGame = sampleGame.addDynamicModule("externGame", b.path("sampleGame/externGame/externGame.zig")); _ = externGame.compileInstall(); } sampleGame.setIconPath("icons/icon.ico"); const sampleGameExe = sampleGame.compileInstall(); _ = sampleGameExe; // tools const newProjectMaker = blbuild.program(.{ .name = "newProject", .desc = "new project maker", .root_source_file = b.path("tools/newProjectMaker.zig"), }); newProjectMaker.setModuleEnabled("imgui", true); newProjectMaker.setModuleEnabled("audio", false); newProjectMaker.setModuleEnabled("sys", true); newProjectMaker.setIconPath("icons/NewProject.ico"); _ = newProjectMaker.compileInstall(); // const toolbox = blbuild.program(.{ // .name = "toolbox", // .desc = "graphical toolbox for random stuff", // .root_source_file = b.path("tools/toolbox.zig"), // }); // toolbox.setModuleEnabled("imgui", true); // toolbox.setModuleEnabled("audio", false); // toolbox.setModuleEnabled("sys", true); // toolbox.setModuleEnabled("net", false); // toolbox.addExtraModule("gameExtras"); // const toolboxExe = toolbox.compileInstall(); // Add Windows icon resource for toolbox // if (target.result.os.tag == .windows) { // toolboxExe.addWin32ResourceFile(.{ // .file = b.path("tools/toolbox.rc"), // .flags = &.{}, // }); // } const headless = blbuild.program(.{ .name = "headless", .desc = "headless program, core-only", .root_source_file = b.path("headless/main.zig"), }); headless.setModuleEnabled("assets", false); headless.setModuleEnabled("platform", false); headless.setModuleEnabled("audio", false); headless.setModuleEnabled("net", false); headless.setModuleEnabled("rend", false); _ = headless.compileInstall(); blbuild.addDependencyInstalls(b, .ReleaseFast); //.ReleaseFast); }