const std = @import("std");
const vkgen = @import("lib/vulkan/generator/index.zig");
const xrgen = @import("lib/openxr/generator/index.zig");
const dggen = @import("lib/diligent/index.zig");
const Step = std.build.Step;
const Builder = std.build.Builder;
pub fn build(b: *Builder) void {
const target = b.standardTargetOptions(.{});
const mode = b.standardReleaseOptions();
const exe = b.addExecutable("openxPriments", "src/main.zig");
exe.setTarget(target);
exe.setBuildMode(mode);
exe.install();
exe.linkSystemLibrary("c");
exe.linkSystemLibrary("vulkan");
exe.linkSystemLibrary("openxr_loader");
exe.linkSystemLibrary("GraphicsEngineVk");
exe.linkSystemLibrary("DiligentCore");
exe.linkSystemLibrary("DiligentTools");
exe.linkSystemLibrary("DiligentFX");
exe.addPackagePath("glm", "lib/glm/glm.zig");
const gen_dg = dggen.DgGenerateStep.init(b, "lib/DiligentEngine", "dg.zig");
gen_dg.addDeps(exe, "Debug");
const vk_xml_path = b.option([]const u8, "vulkan-registry", "Override the path to the Vulkan registry") orelse "res/vk.xml";
const gen_vk = vkgen.VkGenerateStep.init(b, vk_xml_path, "vk.zig");
exe.step.dependOn(&gen_vk.step);
exe.addPackage(gen_vk.package);
const xr_xml_path = b.option([]const u8, "openxr-registry", "Override the path to the OpenXR registry") orelse "res/xr.xml";
const gen_xr = xrgen.XrGenerateStep.init(b, xr_xml_path, "xr.zig");
const dep_list = [_]std.build.Pkg{gen_vk.package};
gen_xr.package.dependencies = dep_list[0..];
exe.step.dependOn(&gen_xr.step);
exe.addPackage(gen_xr.package);
const run_cmd = exe.run();
run_cmd.step.dependOn(b.getInstallStep());
const run_step = b.step("run", "Run the example example");
run_step.dependOn(&run_cmd.step);
const renderdoc = b.option(bool, "renderdoc", "Enable Renderdoc debugging") orelse false;
exe.addBuildOption(bool, "renderdoc", renderdoc);
if (renderdoc) {
exe.linkSystemLibrary("renderdoc");
run_cmd.setEnvironmentVariable("VK_INSTANCE_LAYERS", "VK_LAYER_RENDERDOC_Capture");
}
}