aboutsummaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-08-15 14:17:40 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-08-15 20:04:08 -0400
commit8d8d568854d33be7bcc2bc9874029d1082914af7 (patch)
tree5f586a97c22f088515f9291e37f3af229aa28db3 /build.zig
parent66d76cc4f938209470fedd8e52f71267f0e0d0e4 (diff)
downloadzig-8d8d568854d33be7bcc2bc9874029d1082914af7.tar.gz
zig-8d8d568854d33be7bcc2bc9874029d1082914af7.zip
stage2: implement zig version
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig20
1 files changed, 20 insertions, 0 deletions
diff --git a/build.zig b/build.zig
index 9fd86f93ab..95761a2fd3 100644
--- a/build.zig
+++ b/build.zig
@@ -10,6 +10,8 @@ const io = std.io;
const fs = std.fs;
const InstallDirectoryOptions = std.build.InstallDirectoryOptions;
+const zig_version = std.builtin.Version{ .major = 0, .minor = 6, .patch = 0 };
+
pub fn build(b: *Builder) !void {
b.setPreferredReleaseMode(.ReleaseFast);
const mode = b.standardReleaseOptions();
@@ -79,6 +81,24 @@ pub fn build(b: *Builder) !void {
const log_scopes = b.option([]const []const u8, "log", "Which log scopes to enable") orelse &[0][]const u8{};
+ const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");
+ const version = if (opt_version_string) |version| version else v: {
+ var code: u8 = undefined;
+ const version_untrimmed = b.execAllowFail(&[_][]const u8{
+ "git", "-C", b.build_root, "name-rev", "HEAD",
+ "--tags", "--name-only", "--no-undefined", "--always",
+ }, &code, .Ignore) catch |err| {
+ std.debug.print(
+ \\Unable to determine zig version string: {}
+ \\Provide the zig version string explicitly using the `version-string` build option.
+ , .{err});
+ std.process.exit(1);
+ };
+ const trimmed = mem.trim(u8, version_untrimmed, " \n\r");
+ break :v b.fmt("{}.{}.{}+{}", .{ zig_version.major, zig_version.minor, zig_version.patch, trimmed });
+ };
+ exe.addBuildOption([]const u8, "version", version);
+
exe.addBuildOption([]const []const u8, "log_scopes", log_scopes);
exe.addBuildOption(bool, "enable_tracy", tracy != null);
if (tracy) |tracy_path| {