mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-07 06:14:33 +00:00
stage2: implement zig version
This commit is contained in:
parent
66d76cc4f9
commit
8d8d568854
3 changed files with 26 additions and 6 deletions
20
build.zig
20
build.zig
|
|
@ -10,6 +10,8 @@ const io = std.io;
|
||||||
const fs = std.fs;
|
const fs = std.fs;
|
||||||
const InstallDirectoryOptions = std.build.InstallDirectoryOptions;
|
const InstallDirectoryOptions = std.build.InstallDirectoryOptions;
|
||||||
|
|
||||||
|
const zig_version = std.builtin.Version{ .major = 0, .minor = 6, .patch = 0 };
|
||||||
|
|
||||||
pub fn build(b: *Builder) !void {
|
pub fn build(b: *Builder) !void {
|
||||||
b.setPreferredReleaseMode(.ReleaseFast);
|
b.setPreferredReleaseMode(.ReleaseFast);
|
||||||
const mode = b.standardReleaseOptions();
|
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 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([]const []const u8, "log_scopes", log_scopes);
|
||||||
exe.addBuildOption(bool, "enable_tracy", tracy != null);
|
exe.addBuildOption(bool, "enable_tracy", tracy != null);
|
||||||
if (tracy) |tracy_path| {
|
if (tracy) |tracy_path| {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,9 @@ const leb128 = std.debug.leb;
|
||||||
const Package = @import("Package.zig");
|
const Package = @import("Package.zig");
|
||||||
const Value = @import("value.zig").Value;
|
const Value = @import("value.zig").Value;
|
||||||
const Type = @import("type.zig").Type;
|
const Type = @import("type.zig").Type;
|
||||||
|
const build_options = @import("build_options");
|
||||||
|
|
||||||
|
const producer_string = if (std.builtin.is_test) "zig test" else "zig " ++ build_options.version;
|
||||||
|
|
||||||
// TODO Turn back on zig fmt when https://github.com/ziglang/zig/issues/5948 is implemented.
|
// TODO Turn back on zig fmt when https://github.com/ziglang/zig/issues/5948 is implemented.
|
||||||
// zig fmt: off
|
// zig fmt: off
|
||||||
|
|
@ -1132,7 +1135,7 @@ pub const File = struct {
|
||||||
// Write the form for the compile unit, which must match the abbrev table above.
|
// Write the form for the compile unit, which must match the abbrev table above.
|
||||||
const name_strp = try self.makeDebugString(self.base.options.root_pkg.root_src_path);
|
const name_strp = try self.makeDebugString(self.base.options.root_pkg.root_src_path);
|
||||||
const comp_dir_strp = try self.makeDebugString(self.base.options.root_pkg.root_src_dir_path);
|
const comp_dir_strp = try self.makeDebugString(self.base.options.root_pkg.root_src_dir_path);
|
||||||
const producer_strp = try self.makeDebugString("zig (TODO version here)");
|
const producer_strp = try self.makeDebugString(producer_string);
|
||||||
// Currently only one compilation unit is supported, so the address range is simply
|
// Currently only one compilation unit is supported, so the address range is simply
|
||||||
// identical to the main program header virtual address and memory size.
|
// identical to the main program header virtual address and memory size.
|
||||||
const text_phdr = &self.program_headers.items[self.phdr_load_re_index.?];
|
const text_phdr = &self.program_headers.items[self.phdr_load_re_index.?];
|
||||||
|
|
|
||||||
|
|
@ -95,11 +95,8 @@ pub fn main() !void {
|
||||||
const stdout = io.getStdOut().outStream();
|
const stdout = io.getStdOut().outStream();
|
||||||
return @import("print_targets.zig").cmdTargets(arena, cmd_args, stdout, info.target);
|
return @import("print_targets.zig").cmdTargets(arena, cmd_args, stdout, info.target);
|
||||||
} else if (mem.eql(u8, cmd, "version")) {
|
} else if (mem.eql(u8, cmd, "version")) {
|
||||||
// Need to set up the build script to give the version as a comptime value.
|
std.io.getStdOut().writeAll(build_options.version ++ "\n") catch process.exit(1);
|
||||||
// TODO when you solve this, also take a look at link.zig, there is a placeholder
|
return;
|
||||||
// that says "TODO version here".
|
|
||||||
std.debug.print("TODO version command not implemented yet\n", .{});
|
|
||||||
return error.Unimplemented;
|
|
||||||
} else if (mem.eql(u8, cmd, "zen")) {
|
} else if (mem.eql(u8, cmd, "zen")) {
|
||||||
try io.getStdOut().writeAll(info_zen);
|
try io.getStdOut().writeAll(info_zen);
|
||||||
} else if (mem.eql(u8, cmd, "help")) {
|
} else if (mem.eql(u8, cmd, "help")) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue