libsood
libsood is a Zig library providing parsing and constructing of SOOD message, a binary format used in Roon Server discovery. libsood is available as,
- Zig module (
sood) - static or dynamic library (C API) (
libsood) - WebAssembly Module (
sood.wasm)
Installation
This library requires Zig toolchain v0.14.
Zig module
Add an entry with .url = "https://git.pocka.jp/libsood.git/archive/<GIT REF>.tar.gz" to dependencies section in your build.zig.zon.
Or, run the below command:
$ zig fetch --save https://git.pocka.jp/libsood.git/archive/<GIT REF>.tar.gz
Then, in your build.zig:
fn build(b: *std.Build) void {
// [snip]
const sood = b.dependency("sood", .{
.target = target,
.optimize = optimize,
});
// [snip]
libOrExe.root_module.addImport("sood", sood.module("sood"));
// [snip]
}
Static library
Clone the repository and run the below command:
$ zig build
This emits files under zig-out/.
A static library file will be generated at zig-out/lib/ (filename differs by platform).
Dynamic library
Clone the repository and run the below command:
$ zig build -Dlinkage=dynamic
This emits files under zig-out/.
A dynamic library file will be generated at zig-out/lib/ (filename differs by platform).
WebAssembly module
Clone the repository and run the below command:
$ zig build wasm -Doptimize=ReleaseSmall
This emits files under zig-out/.
A WebAssembly module file will be generated as zig-out/bin/sood.wasm.
If binary size does not matter to your use-case, set ReleaseFast to -Doptimize instead.
Documentation
Library documentation is available as man pages.
$ man ./man/sood.7
Currently, Zig module and WebAssembly module do not have API documentation.
sood.7... General documentation.sood.3... C API index.sood_*.3... C API function documentation.