libsood

Zig library for Roon Core discovery message, with C-compatible API and WebAssembly.

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,

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.