diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | build.zig | 40 | ||||
-rw-r--r-- | build.zig.zon | 13 | ||||
-rw-r--r-- | examples/hrtf.zig | 3 | ||||
-rw-r--r-- | src/al.zig | 6 | ||||
-rw-r--r-- | src/alc.zig | 4 | ||||
-rw-r--r-- | src/zeal.zig | 4 |
7 files changed, 35 insertions, 37 deletions
diff --git a/.gitignore b/.gitignore index e73c965..3389c86 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -zig-cache/ +.zig-cache/ zig-out/ diff --git a/build.zig b/build.zig index aa7fbff..5998a56 100644 --- a/build.zig +++ b/build.zig @@ -1,5 +1,5 @@ // Build recipe -// Copyright (C) 2021-2023 Nguyễn Gia Phong +// Copyright (C) 2021-2023, 2025 Nguyễn Gia Phong // // This file is part of zeal. // @@ -19,31 +19,22 @@ const std = @import("std"); const Build = std.Build; const Compile = Build.Step.Compile; -const CrossTarget = std.zig.CrossTarget; +const ResolvedTarget = Build.ResolvedTarget; const Module = Build.Module; const OptimizeMode = std.builtin.OptimizeMode; -/// Link given library, executable, or object with shared libraries. -pub fn link(compile: *Compile) void { - compile.linkSystemLibrary("openal"); - compile.linkSystemLibrary("sndfile"); - compile.linkSystemLibrary("c"); -} - fn addExampleStep(comptime name: []const u8, description: []const u8, b: *Build, module: *Module, - target: CrossTarget, optimize: OptimizeMode) void { + target: ResolvedTarget, optimize: OptimizeMode) void { const bin = b.addExecutable(.{ .name = name, - .root_source_file = .{ .path = "examples/" ++ name ++ ".zig" }, + .root_source_file = b.path("examples/" ++ name ++ ".zig"), .target = target, .optimize = optimize, }); - bin.addModule("zeal", module); - link(bin); + bin.root_module.addImport("zeal", module); const cmd = b.addRunArtifact(bin); - cmd.step.dependOn(b.getInstallStep()); if (b.args) |args| cmd.addArgs(args); b.step(name, description).dependOn(&cmd.step); @@ -52,25 +43,18 @@ fn addExampleStep(comptime name: []const u8, description: []const u8, pub fn build(b: *Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); - const lib = b.addStaticLibrary(.{ - .name = "zeal", - .root_source_file = .{ .path = "src/zeal.zig" }, + const module = b.addModule("zeal", .{ + .root_source_file = b.path("src/zeal.zig"), .target = target, .optimize = optimize, }); - link(lib); + module.linkSystemLibrary("openal", .{}); + module.linkSystemLibrary("sndfile", .{}); + module.linkSystemLibrary("c", .{}); - var main_tests = b.addTest(.{ - .root_source_file = .{ .path = "src/zeal.zig" }, - .target = target, - .optimize = optimize, - }); - main_tests.linkLibrary(lib); - b.step("test", "Run library tests").dependOn(&main_tests.step); + const tests = b.addTest(.{ .root_module = module }); + b.step("test", "Run library tests").dependOn(&b.addRunArtifact(tests).step); - const module = b.createModule(.{ - .source_file = .{ .path = "src/zeal.zig" }, - }); addExampleStep("play", "Play audio", b, module, target, optimize); addExampleStep("hrtf", "Play audio with HRTF", b, module, target, optimize); } diff --git a/build.zig.zon b/build.zig.zon new file mode 100644 index 0000000..d489ae9 --- /dev/null +++ b/build.zig.zon @@ -0,0 +1,13 @@ +.{ + .name = .zeal, + .fingerprint = 0x5338e1ba856048f7, + .version = "0.1.0", + .minimum_zig_version = "0.14.0", + .paths = .{ + "COPYING", + "README.md", + "build.zig", + "build.zig.zon", + "src", + }, +} diff --git a/examples/hrtf.zig b/examples/hrtf.zig index 99c1780..43e83c0 100644 --- a/examples/hrtf.zig +++ b/examples/hrtf.zig @@ -1,5 +1,5 @@ // Positional audio example with HRTF -// Copyright (C) 2021, 2023 Nguyễn Gia Phong +// Copyright (C) 2021, 2023, 2025 Nguyễn Gia Phong // // This file is part of zeal. // @@ -59,6 +59,7 @@ pub fn main() !void { while (try source.isPlaying()) { const offset = try source.getSecOffset(); try source.setPosition(.{ @sin(offset), 0, @cos(offset) }); + print("\r{d:.1} s", .{ try source.getSecOffset() }); sleep(10_000_000); } } diff --git a/src/al.zig b/src/al.zig index 1eea14e..1fa11df 100644 --- a/src/al.zig +++ b/src/al.zig @@ -1,5 +1,5 @@ // OpenAL wrapper -// Copyright (C) 2021-2023 Nguyễn Gia Phong +// Copyright (C) 2021-2023, 2025 Nguyễn Gia Phong // // This file is part of zeal. // @@ -197,7 +197,7 @@ pub const source = struct { f32 => c.alSourcef(reference, param, value), i32 => c.alSourcei(reference, param, value), else => switch (@typeInfo(T)) { - .Enum => c.alSourcei(reference, param, @intFromEnum(value)), + .@"enum" => c.alSourcei(reference, param, @intFromEnum(value)), else => switch (Child(T)) { f32 => c.alSourcefv(reference, param, value[0..]), i32 => c.alSourceiv(reference, param, value[0..]), @@ -224,7 +224,7 @@ pub const source = struct { f32 => c.alGetSourcef(reference, param, &value), i32 => c.alGetSourcei(reference, param, &value), else => switch (@typeInfo(T)) { - .Enum => { + .@"enum" => { var raw: i32 = undefined; c.alGetSourcei(reference, param, &raw); value = @enumFromInt(raw); diff --git a/src/alc.zig b/src/alc.zig index 3db5440..59a517e 100644 --- a/src/alc.zig +++ b/src/alc.zig @@ -1,5 +1,5 @@ // Audio Library Context wrapper -// Copyright (C) 2021-2023 Nguyễn Gia Phong +// Copyright (C) 2021-2023, 2025 Nguyễn Gia Phong // // This file is part of zeal. // @@ -267,7 +267,7 @@ fn getInfo(comptime T: type, device: ?*Device, attr: Enum) !T { i32 => return (try getInfo([1]i32, device, attr))[0], [:0]const u8 => span(c.alcGetString(device, @intFromEnum(attr))), else => array: { - assert(@typeInfo(T).Array.child == i32); + assert(@typeInfo(T).array.child == i32); var data: T = undefined; c.alcGetIntegerv(device, @intFromEnum(attr), data.len, &data); break :array data; diff --git a/src/zeal.zig b/src/zeal.zig index cf88b11..2f4db85 100644 --- a/src/zeal.zig +++ b/src/zeal.zig @@ -1,5 +1,5 @@ // Zig easy audio library -// Copyright (C) 2021-2023 Nguyễn Gia Phong +// Copyright (C) 2021-2023, 2025 Nguyễn Gia Phong // // This file is part of zeal. // @@ -86,7 +86,7 @@ pub const Context = struct { }; pub fn init(device: Device, attributes: Attributes) alc.Error!Context { - const fields = @typeInfo(Attributes).Struct.fields; + const fields = @typeInfo(Attributes).@"struct".fields; var attr_list = [_]i32{ 0 } ** (fields.len * 2 + 1); var i: u8 = 0; inline for (fields) |f| if (@field(attributes, f.name)) |v| { |