diff --git a/build.zig b/build.zig index 0a2d1d2..8ffb8cc 100644 --- a/build.zig +++ b/build.zig @@ -1,7 +1,13 @@ const std = @import("std"); +const builtin = @import("builtin"); const zine = @import("zine"); +const minimum_build_zig_version_string = @import("build.zig.zon").minimum_zig_version; +const minimum_build_zig_version = std.SemanticVersion.parse(minimum_build_zig_version_string) catch unreachable; + pub fn build(b: *std.Build) !void { + checkZigVersion(); + // Workaround for Zine's early return bug on macOS due to lazy dependencies const zine_dep = b.dependencyFromBuildZig(zine, .{ .@"no-git-version" = true }); if (zine_dep.builder.install_tls.step.dependencies.items.len == 0) { @@ -57,3 +63,19 @@ pub fn build(b: *std.Build) !void { serve.dependOn(&run_zine.step); } + +fn checkZigVersion() void { + comptime if (builtin.zig_version.order(minimum_build_zig_version) == .lt) { + const message = std.fmt.comptimePrint( + \\Your Zig version does not meet the minimum build requirement: + \\ required Zig version: {[minimum_version]f} (or greater) + \\ actual Zig version: {[current_version]s} + \\ + \\Download the latest nightly of Zig (https://ziglang.org/download/) + , .{ + .current_version = builtin.zig_version_string, + .minimum_version = minimum_build_zig_version, + }); + @compileError(message); + }; +}