diff --git a/build.zig b/build.zig index 1364745cec..38d2bca6dd 100644 --- a/build.zig +++ b/build.zig @@ -3,21 +3,7 @@ const builtin = @import("builtin"); const buildpkg = @import("src/build/main.zig"); comptime { - // This is the required Zig version for building this project. We allow - // any patch version but the major and minor must match exactly. - const required_zig = "0.13.0"; - - // Fail compilation if the current Zig version doesn't meet requirements. - const current_vsn = builtin.zig_version; - const required_vsn = std.SemanticVersion.parse(required_zig) catch unreachable; - if (current_vsn.major != required_vsn.major or - current_vsn.minor != required_vsn.minor) - { - @compileError(std.fmt.comptimePrint( - "Your Zig version v{} does not meet the required build version of v{}", - .{ current_vsn, required_vsn }, - )); - } + buildpkg.requireZig("0.13.0"); } pub fn build(b: *std.Build) !void { diff --git a/src/build/main.zig b/src/build/main.zig index 8228abfbff..2917919174 100644 --- a/src/build/main.zig +++ b/src/build/main.zig @@ -28,3 +28,6 @@ pub const XCFrameworkStep = @import("XCFrameworkStep.zig"); pub const fish_completions = @import("fish_completions.zig").completions; pub const zsh_completions = @import("zsh_completions.zig").completions; pub const bash_completions = @import("bash_completions.zig").completions; + +// Helpers +pub const requireZig = @import("zig.zig").requireZig; diff --git a/src/build/zig.zig b/src/build/zig.zig new file mode 100644 index 0000000000..7e327127d4 --- /dev/null +++ b/src/build/zig.zig @@ -0,0 +1,17 @@ +const std = @import("std"); +const builtin = @import("builtin"); + +/// Require a specific version of Zig to build this project. +pub fn requireZig(comptime required_zig: []const u8) void { + // Fail compilation if the current Zig version doesn't meet requirements. + const current_vsn = builtin.zig_version; + const required_vsn = std.SemanticVersion.parse(required_zig) catch unreachable; + if (current_vsn.major != required_vsn.major or + current_vsn.minor != required_vsn.minor) + { + @compileError(std.fmt.comptimePrint( + "Your Zig version v{} does not meet the required build version of v{}", + .{ current_vsn, required_vsn }, + )); + } +}