summaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-07-28 01:00:54 +0500
committerphysick <mynameisgennadiy@vk.com>2026-07-28 01:00:54 +0500
commit26957338e8b42df4ad18ab38f08c70fba4c14bb4 (patch)
treebce84b3ef7656937f8577b4a60611fb6e1e50220 /build.zig
parent6d02a213770715d5093bd8a7c6619735d9a05963 (diff)
build info
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig31
1 files changed, 31 insertions, 0 deletions
diff --git a/build.zig b/build.zig
index 9ceae7f..ebde0a2 100644
--- a/build.zig
+++ b/build.zig
@@ -1,6 +1,9 @@
const std = @import("std");
const builtin = @import("builtin");
+const HEAD_location = ".git/HEAD";
+const commit_location = ".git/refs/heads/master";
+
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
@@ -11,6 +14,11 @@ pub fn build(b: *std.Build) void {
.link_libc = true,
});
+
+ // Adding a build version
+
+ root.addCMacro("BUILD_VERSION", GetVersionString(b, optimize) catch "Build UNTRACKED");
+
root.addCSourceFiles(.{
.files = &[_][]const u8 {
"src/main.c",
@@ -62,3 +70,26 @@ pub fn build(b: *std.Build) void {
run_cmd.addArgs(args);
}
}
+
+// Returns a build version. Returns an empty string if build in release mode
+fn GetVersionString(b: *std.Build, optimization: std.builtin.OptimizeMode) ![]u8 {
+ if (optimization != .Debug) {
+ return "";
+ }
+
+ const allocator = b.allocator;
+ var threaded = std.Io.Threaded.init(allocator, .{});
+ defer threaded.deinit();
+
+ const headContents = try std.Io.Dir.cwd().readFileAlloc(threaded.io(), HEAD_location, allocator, .limited(std.math.maxInt(usize)));
+ var headIter = std.mem.tokenizeAny(u8, headContents[0..headContents.len - 1], "/");
+ var branchName: []const u8 = "";
+ while (headIter.next()) |token| {
+ branchName = token;
+ }
+ const commitContents = try std.Io.Dir.cwd().readFileAlloc(threaded.io(), commit_location, allocator, .limited(std.math.maxInt(usize)));
+ return try std.fmt.allocPrint(allocator, "\"Build {s}:{s}\"", .{
+ branchName,
+ commitContents[0..@min(commitContents.len-1, 10)]
+ });
+}