Skip to content

Commit a6a7f86

Browse files
committed
build example programs
1 parent 10c93ce commit a6a7f86

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

build.zig

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,55 @@ pub fn build(b: *std.Build) void {
9292
c_blosc2_library.installHeadersDirectory(c_blosc2_source.path("include"), ".", .{});
9393

9494
b.installArtifact(c_blosc2_library);
95+
96+
// Examples
97+
const example_options: ExampleOptions = .{
98+
.target = target,
99+
.optimize = optimize,
100+
.c_blosc2 = c_blosc2_library,
101+
};
102+
addExample(b, "contexts", c_blosc2_source.path("examples/contexts.c"), example_options);
103+
addExample(b, "instrument_codec", c_blosc2_source.path("examples/instrument_codec.c"), example_options);
104+
addExample(b, "delta_schunk_ex", c_blosc2_source.path("examples/delta_schunk_ex.c"), example_options);
105+
addExample(b, "multithread", c_blosc2_source.path("examples/multithread.c"), example_options);
106+
addExample(b, "simple", c_blosc2_source.path("examples/simple.c"), example_options);
107+
addExample(b, "frame_metalayers", c_blosc2_source.path("examples/frame_metalayers.c"), example_options);
108+
addExample(b, "noinit", c_blosc2_source.path("examples/noinit.c"), example_options);
109+
addExample(b, "find_roots", c_blosc2_source.path("examples/find_roots.c"), example_options);
110+
addExample(b, "schunk_simple", c_blosc2_source.path("examples/schunk_simple.c"), example_options);
111+
addExample(b, "frame_simple", c_blosc2_source.path("examples/frame_simple.c"), example_options);
112+
addExample(b, "schunk_postfilter", c_blosc2_source.path("examples/schunk_postfilter.c"), example_options);
113+
addExample(b, "urcodecs", c_blosc2_source.path("examples/urcodecs.c"), example_options);
114+
addExample(b, "urfilters", c_blosc2_source.path("examples/urfilters.c"), example_options);
115+
addExample(b, "frame_vlmetalayers", c_blosc2_source.path("examples/frame_vlmetalayers.c"), example_options);
116+
addExample(b, "sframe_simple", c_blosc2_source.path("examples/sframe_simple.c"), example_options);
117+
addExample(b, "frame_backed_schunk", c_blosc2_source.path("examples/frame_backed_schunk.c"), example_options);
118+
addExample(b, "compress_file", c_blosc2_source.path("examples/compress_file.c"), example_options);
119+
addExample(b, "decompress_file", c_blosc2_source.path("examples/decompress_file.c"), example_options);
120+
addExample(b, "frame_offset", c_blosc2_source.path("examples/frame_offset.c"), example_options);
121+
addExample(b, "frame_roundtrip", c_blosc2_source.path("examples/frame_roundtrip.c"), example_options);
122+
addExample(b, "get_set_slice", c_blosc2_source.path("examples/get_set_slice.c"), example_options);
123+
addExample(b, "get_blocksize", c_blosc2_source.path("examples/get_blocksize.c"), example_options);
124+
}
125+
126+
pub const ExampleOptions = struct {
127+
target: std.Build.ResolvedTarget,
128+
optimize: std.builtin.OptimizeMode,
129+
c_blosc2: *std.Build.Step.Compile,
130+
};
131+
132+
fn addExample(b: *std.Build, name: []const u8, path: std.Build.LazyPath, options: ExampleOptions) void {
133+
const exe = b.addExecutable(.{
134+
.name = name,
135+
.root_module = b.createModule(.{
136+
.target = options.target,
137+
.optimize = options.optimize,
138+
.link_libc = true,
139+
}),
140+
});
141+
exe.root_module.linkLibrary(options.c_blosc2);
142+
exe.root_module.addCSourceFile(.{
143+
.file = path,
144+
});
145+
b.installArtifact(exe);
95146
}

0 commit comments

Comments
 (0)