summary refs log tree commit diff
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2025-03-11 16:20:35 +0900
committerNguyễn Gia Phong <mcsinyx@disroot.org>2025-03-11 16:20:35 +0900
commit7580c25a081e39732afaaa7a630d7f58005d5ab1 (patch)
treeecfb353f669af3d5df23bc099e514a7460ca4b73
parenteb65c5633e1bfae26ae95c6183cc74c2b5937943 (diff)
downloadzeal-0.1.0.tar.gz
Port to Zig 0.14 0.1.0
-rw-r--r--.gitignore2
-rw-r--r--build.zig40
-rw-r--r--build.zig.zon13
-rw-r--r--examples/hrtf.zig3
-rw-r--r--src/al.zig6
-rw-r--r--src/alc.zig4
-rw-r--r--src/zeal.zig4
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| {