@@ -13,35 +13,33 @@ pub fn build(b: *std.Build) void {
1313 const cova_mod = b .addModule ("cova" , .{
1414 .root_source_file = b .path ("src/cova.zig" ),
1515 });
16+ // - Meta Module (for Docs and Tests)
17+ const cova_meta_mod = b .addModule ("cova" , .{
18+ .root_source_file = b .path ("src/cova.zig" ),
19+ .target = target ,
20+ .optimize = optimize ,
21+ });
1622 // - Generator Artifact
1723 _ = b .addModule ("cova_gen" , .{
1824 .root_source_file = b .path ("src/generator.zig" ),
1925 });
2026
21- // Static Lib (Used for Docs)
22- const cova_lib = b .addStaticLibrary (.{
27+ // Library (Used for Docs)
28+ const cova_lib = b .addLibrary (.{
2329 .name = "cova" ,
24- .root_source_file = b .path ("src/cova.zig" ),
25- .target = target ,
26- .optimize = optimize ,
30+ .linkage = .static ,
31+ .root_module = cova_meta_mod ,
2732 });
28- //b.installArtifact(cova_lib);
2933
3034 // Tests
31- const cova_tests = b .addTest (.{
32- .root_source_file = b .path ("src/cova.zig" ),
33- .target = target ,
34- .optimize = optimize ,
35- });
35+ const cova_tests = b .addTest (.{ .root_module = cova_meta_mod });
3636 const run_cova_tests = b .addRunArtifact (cova_tests );
3737 const test_step = b .step ("test" , "Run the cova library tests" );
3838 test_step .dependOn (& run_cova_tests .step );
3939
4040 // Docs
41- const cova_docs = cova_lib ;
42- //const cova_docs = cova_tests;
4341 const build_docs = b .addInstallDirectory (.{
44- .source_dir = cova_docs .getEmittedDocs (),
42+ .source_dir = cova_lib .getEmittedDocs (),
4543 .install_dir = .prefix ,
4644 .install_subdir = "../docs" ,
4745 });
@@ -53,7 +51,7 @@ pub fn build(b: *std.Build) void {
5351 // Examples
5452 //==========================================
5553 const examples = &.{ "cova-demo" , "basic_app" , "logger" };
56- var ex_arena = std .heap .ArenaAllocator .init (b .allocator );
54+ var ex_arena : std.heap.ArenaAllocator = .init (b .allocator );
5755 defer ex_arena .deinit ();
5856 const ex_alloc = ex_arena .allocator ();
5957 inline for (examples ) | example | {
@@ -63,13 +61,17 @@ pub fn build(b: *std.Build) void {
6361 if (std .mem .eql (u8 , example , "cova-demo" )) break :exName "covademo" ;
6462 break :exName example ;
6563 };
66- // - Exe
67- const ex_exe = b .addExecutable (.{
68- .name = bin_name orelse ex_name ,
64+ // - Mod
65+ const ex_mod = b .createModule (.{
6966 .root_source_file = b .path (std .fmt .allocPrint (ex_alloc , "examples/{s}.zig" , .{ ex_name }) catch @panic ("OOM" )),
7067 .target = target ,
7168 .optimize = optimize ,
7269 });
70+ // - Exe
71+ const ex_exe = b .addExecutable (.{
72+ .name = bin_name orelse ex_name ,
73+ .root_module = ex_mod ,
74+ });
7375 ex_exe .root_module .addImport ("cova" , cova_mod );
7476 const build_ex_demo = b .addInstallArtifact (ex_exe , .{});
7577 const build_ex_demo_step = b .step (example , "Build the '" ++ example ++ "' example (default: Debug)" );
@@ -163,21 +165,25 @@ fn createDocGenStep(
163165 doc_gen_config : generate.MetaDocConfig ,
164166) * std.Build.Step.Run {
165167 const program_mod = program_step .root_module ;
166- const cova_gen_exe = b .addExecutable (.{
167- .name = std .fmt .allocPrint (b .allocator , "cova_generator_{s}" , .{ program_step .name }) catch @panic ("OOM" ),
168+ const cova_gen_mod = b .createModule (.{
168169 .root_source_file = cova_gen_path ,
169170 .target = b .graph .host ,
170171 .optimize = .Debug ,
171172 });
173+ const cova_gen_exe = b .addExecutable (.{
174+ .name = std .fmt .allocPrint (b .allocator , "cova_generator_{s}" , .{ program_step .name }) catch @panic ("OOM" ),
175+ .root_module = cova_gen_mod ,
176+ });
172177 b .installArtifact (cova_gen_exe );
173178 cova_gen_exe .root_module .addImport ("cova" , cova_mod );
174179 cova_gen_exe .root_module .addImport ("program" , program_mod );
175180
176181 const md_conf_opts = b .addOptions ();
177- var sub_conf_map = std .StringHashMap (? * std .Build .Step .Options ).init (b .allocator );
178- sub_conf_map .put ("help_docs_config" , null ) catch @panic ("OOM" );
179- sub_conf_map .put ("tab_complete_config" , null ) catch @panic ("OOM" );
180- sub_conf_map .put ("arg_template_config" , null ) catch @panic ("OOM" );
182+ var sub_conf_map : std .StringHashMapUnmanaged (? * std .Build .Step .Options ) = .empty ;
183+ defer sub_conf_map .deinit (b .allocator );
184+ sub_conf_map .put (b .allocator , "help_docs_config" , null ) catch @panic ("OOM" );
185+ sub_conf_map .put (b .allocator , "tab_complete_config" , null ) catch @panic ("OOM" );
186+ sub_conf_map .put (b .allocator , "arg_template_config" , null ) catch @panic ("OOM" );
181187
182188 inline for (@typeInfo (generate .MetaDocConfig ).@"struct" .fields ) | field | {
183189 switch (@typeInfo (field .type )) {
@@ -196,7 +202,7 @@ fn createDocGenStep(
196202 doc_conf_opts .addOption (s_field .type , s_field .name , @field (conf , s_field .name ));
197203 }
198204 doc_conf_opts .addOption (bool , "provided" , true );
199- sub_conf_map .put (field .name , doc_conf_opts ) catch @panic ("OOM" );
205+ sub_conf_map .put (b . allocator , field .name , doc_conf_opts ) catch @panic ("OOM" );
200206 }
201207 continue ;
202208 },
@@ -205,13 +211,14 @@ fn createDocGenStep(
205211 },
206212 .pointer = > | ptr | {
207213 if (ptr .child == generate .MetaDocConfig .MetaDocKind ) {
208- var kinds_list = std .ArrayList (usize ).init (b .allocator );
214+ var kinds_list : std .ArrayList (usize ) = .empty ;
215+ defer kinds_list .deinit (b .allocator );
209216 for (@field (doc_gen_config , field .name )) | kind |
210- kinds_list .append (@intFromEnum (kind )) catch @panic ("There was an issue with the Meta Doc Config." );
217+ kinds_list .append (b . allocator , @intFromEnum (kind )) catch @panic ("There was an issue with the Meta Doc Config." );
211218 md_conf_opts .addOption (
212219 []const usize ,
213220 field .name ,
214- kinds_list .toOwnedSlice () catch @panic ("There was an issue with the Meta Doc Config." ),
221+ kinds_list .toOwnedSlice (b . allocator ) catch @panic ("There was an issue with the Meta Doc Config." ),
215222 );
216223 continue ;
217224 }
0 commit comments