From eb40cce45e6593a4065a32681d27c75c4ca3a9c9 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Wed, 8 Jan 2025 13:49:45 -0800 Subject: [PATCH] build: requireZig cleanup --- build.zig | 16 +--------------- src/build/main.zig | 3 +++ src/build/zig.zig | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 15 deletions(-) create mode 100644 src/build/zig.zig diff --git a/build.zig b/build.zig index 1364745ce..38d2bca6d 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 8228abfbf..291791917 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 000000000..7e327127d --- /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 }, + )); + } +}