A Zig build wrapper for the ZFP C compression library
- Zig 83.1%
- C 16.9%
|
All checks were successful
CI Build / build (ubuntu-latest) (push) Successful in 36s
|
||
|---|---|---|
| .forgejo/workflows | ||
| freestanding-libc | ||
| src/freestanding | ||
| test | ||
| .gitignore | ||
| build.zig | ||
| build.zig.zon | ||
| LICENSE | ||
| README.md | ||
Zfp packaged for the Zig programming language
This is the ZFP C compression library for the Zig programming language. Currently does not wrap the C++ compressed array classes.
How do I include it in my Zig program?
If you are starting a new package:
mkdir my_project; cd my_project
zig init
## add the package to 'build.zig.zon'
zig fetch --save=zfp git+https://labs.stormscale.io/kelton.halbert/zfp.git
This will add the zig C library as a dependency to your project. Next, if you are linking it to a library or executable, add the following to build.zig:
pub fn build(b: *std.Build) !void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const zfp_dep = b.dependency("zfp", .{
.target = target,
.optimize = optimize,
});
// if you are linking it to a library...
const lib_mod = b.createModule(.{
.root_source_file = b.path("src/root.zig"),
.target = target,
.optimize = optimize,
});
lib_mod.linkLibrary(zfp_dep.artifact("zfp"));
// or, if you are linking it to an executable...
const exe_mod = b.createModule(.{
.root_source_file = b.path("src/main.zig"),
.target = target,
.optimize = optimize,
});
exe_mod.linkLibrary(zfp_dep.artifact("zfp"));
}
Freestanding WASM
This package includes the libc shims required to build freestanding wasm targets.
It currently manually specified the wasm allocator for malloc and free function calls, though later versions may require consumers of the freestanding package to provide their own malloc and free wrappers.
Requirements
The target version of Zig is 0.16.0. It may work with earlier versions, but has not been tested.