95 lines
3.1 KiB
Zig
95 lines
3.1 KiB
Zig
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);
|
|
}
|