@@ -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