summaryrefslogtreecommitdiffstatshomepage
path: root/build.zig
diff options
context:
space:
mode:
authorManlio Perillo <manlio.perillo@gmail.com>2023-04-08 09:02:38 +0200
committerManlio Perillo <manlio.perillo@gmail.com>2023-04-08 09:31:03 +0200
commit1cf910fb51259e786e8964072eb98a17353bc3c8 (patch)
treedcabc53e4e485e24cbf9de890ea14c5226bcb342 /build.zig
parentb478c1bff44226b2b0c04f0aa832461f04d7f802 (diff)
build: enable full parallelism when -Dhealed is set
The eowyn.sh script is used in a github workflow, but after commit 0d56ba3 (build: restore the exercise chain), the github action will take more time to complete. Enable full build parallelism, when -Dhealed is true and -Dn is null. Use the standard CompileStep and RunStep, instead of ZiglingStep. On my PC, this change reduces the build time by about 30%.
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig24
1 files changed, 23 insertions, 1 deletions
diff --git a/build.zig b/build.zig
index d2702d0..6a0bcb8 100644
--- a/build.zig
+++ b/build.zig
@@ -594,6 +594,28 @@ pub fn build(b: *Build) !void {
start_step.dependOn(&prev_step.step);
return;
+ } else if (use_healed) {
+ const test_step = b.step("test", "Test the healed exercises");
+ b.default_step = test_step;
+
+ for (exercises) |ex| {
+ const base_name = ex.baseName();
+ const file_path = std.fs.path.join(b.allocator, &[_][]const u8{
+ "patches/healed", ex.main_file,
+ }) catch unreachable;
+
+ const build_step = b.addExecutable(.{ .name = base_name, .root_source_file = .{ .path = file_path } });
+ if (ex.C) {
+ build_step.linkLibC();
+ }
+ build_step.install();
+
+ const run_step = build_step.run();
+
+ test_step.dependOn(&run_step.step);
+ }
+
+ return;
}
const ziglings_step = b.step("ziglings", "Check all ziglings");
@@ -604,7 +626,7 @@ pub fn build(b: *Build) !void {
for (exercises, 0..) |ex, i| {
const base_name = ex.baseName();
const file_path = std.fs.path.join(b.allocator, &[_][]const u8{
- if (use_healed) "patches/healed" else "exercises", ex.main_file,
+ "exercises", ex.main_file,
}) catch unreachable;
const build_step = b.addExecutable(.{ .name = base_name, .root_source_file = .{ .path = file_path } });