| ... | ... | @@ -3,7 +3,7 @@ const Build = std.Build; |
| 3 | 3 | const Target = std.Target; |
| 4 | 4 | const OsVersion = Target.Query.OsVersion; |
| 5 | 5 | |
| 6 | | pub fn build(b: *std.Build) void { |
| 6 | pub fn build(b: *std.Build) !void { |
| 7 | 7 | b.reference_trace = 20; |
| 8 | 8 | |
| 9 | 9 | const native_target = b.resolveTargetQuery(.{}); |
| ... | ... | @@ -40,8 +40,20 @@ pub fn build(b: *std.Build) void { |
| 40 | 40 | "Experiment with the Zig self-hosted backends", |
| 41 | 41 | ) orelse false; |
| 42 | 42 | |
| 43 | | const native_debug = buildWithTarget(b, native_target, .Debug, .none, no_llvm); |
| 44 | | const main = buildWithTarget(b, target, optimize, tracing, no_llvm); |
| 43 | const version = version: { |
| 44 | const text = try b.build_root.handle.readFileAlloc( |
| 45 | b.graph.arena, |
| 46 | "CHANGELOG.md", |
| 47 | std.math.maxInt(usize), |
| 48 | ); |
| 49 | const first_header = std.mem.indexOf(u8, text, "## ") orelse unreachable; |
| 50 | var tokenizer = std.mem.tokenizeAny(u8, text[first_header + 2 ..], " \t\n"); |
| 51 | const version_text = tokenizer.next() orelse unreachable; |
| 52 | break :version std.SemanticVersion.parse(version_text) catch unreachable; |
| 53 | }; |
| 54 | |
| 55 | const native_debug = buildWithTarget(b, native_target, .Debug, .none, version, no_llvm); |
| 56 | const main = buildWithTarget(b, target, optimize, tracing, version, no_llvm); |
| 45 | 57 | |
| 46 | 58 | b.installArtifact(main.compiler); |
| 47 | 59 | |
| ... | ... | @@ -133,7 +145,7 @@ pub fn build(b: *std.Build) void { |
| 133 | 145 | }, |
| 134 | 146 | ) catch @panic("OOM"); |
| 135 | 147 | |
| 136 | | const artifacts = buildWithTarget(b, cross_target, .ReleaseSafe, .none, no_llvm); |
| 148 | const artifacts = buildWithTarget(b, cross_target, .ReleaseSafe, .none, version, no_llvm); |
| 137 | 149 | |
| 138 | 150 | inline for (.{ |
| 139 | 151 | .{ artifacts.compiler, "compiler" }, |
| ... | ... | @@ -173,6 +185,7 @@ fn buildWithTarget( |
| 173 | 185 | target: Build.ResolvedTarget, |
| 174 | 186 | optimize: std.builtin.OptimizeMode, |
| 175 | 187 | tracing: TracingMode, |
| 188 | version: std.SemanticVersion, |
| 176 | 189 | no_llvm: bool, |
| 177 | 190 | ) Artifacts { |
| 178 | 191 | const dep_opts = .{ .target = target, .optimize = optimize }; |
| ... | ... | @@ -185,6 +198,7 @@ fn buildWithTarget( |
| 185 | 198 | |
| 186 | 199 | // Options |
| 187 | 200 | const opts = b.addOptions(); |
| 201 | opts.addOption(std.SemanticVersion, "version", version); |
| 188 | 202 | opts.addOption([]const u8, "tracing", @tagName(tracing)); |
| 189 | 203 | const opts_mod = opts.createModule(); |
| 190 | 204 | |