// Build recipe // Copyright (C) 2021-2023, 2025 Nguyễn Gia Phong // // This file is part of zeal. // // Zeal is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published // by the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Zeal is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with zeal. If not, see . const std = @import("std"); const Build = std.Build; const Compile = Build.Step.Compile; const ResolvedTarget = Build.ResolvedTarget; const Module = Build.Module; const OptimizeMode = std.builtin.OptimizeMode; fn addExampleStep(comptime name: []const u8, description: []const u8, b: *Build, module: *Module, target: ResolvedTarget, optimize: OptimizeMode) void { const bin = b.addExecutable(.{ .name = name, .root_source_file = b.path("examples/" ++ name ++ ".zig"), .target = target, .optimize = optimize, }); bin.root_module.addImport("zeal", module); const cmd = b.addRunArtifact(bin); if (b.args) |args| cmd.addArgs(args); b.step(name, description).dependOn(&cmd.step); } pub fn build(b: *Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const module = b.addModule("zeal", .{ .root_source_file = b.path("src/zeal.zig"), .target = target, .optimize = optimize, }); module.linkSystemLibrary("openal", .{}); module.linkSystemLibrary("sndfile", .{}); module.linkSystemLibrary("c", .{}); const tests = b.addTest(.{ .root_module = module }); b.step("test", "Run library tests").dependOn(&b.addRunArtifact(tests).step); addExampleStep("play", "Play audio", b, module, target, optimize); addExampleStep("hrtf", "Play audio with HRTF", b, module, target, optimize); }