Commit 3bf72f2b3a
Changed files (2)
lib
std
special
lib/std/special/build_runner.zig
@@ -60,6 +60,7 @@ pub fn main() !void {
const stderr_stream = io.getStdErr().writer();
const stdout_stream = io.getStdOut().writer();
+ var install_prefix: ?[]const u8 = null;
while (nextArg(args, &arg_idx)) |arg| {
if (mem.startsWith(u8, arg, "-D")) {
const option_contents = arg[2..];
@@ -82,7 +83,7 @@ pub fn main() !void {
} else if (mem.eql(u8, arg, "-h") or mem.eql(u8, arg, "--help")) {
return usage(builder, false, stdout_stream);
} else if (mem.eql(u8, arg, "--prefix")) {
- builder.install_prefix = nextArg(args, &arg_idx) orelse {
+ install_prefix = nextArg(args, &arg_idx) orelse {
warn("Expected argument after --prefix\n\n", .{});
return usageAndErr(builder, false, stderr_stream);
};
@@ -134,7 +135,7 @@ pub fn main() !void {
}
}
- builder.resolveInstallPrefix();
+ builder.resolveInstallPrefix(install_prefix);
try runBuild(builder);
if (builder.validateUserInputDidItFail())
@@ -162,8 +163,7 @@ fn runBuild(builder: *Builder) anyerror!void {
fn usage(builder: *Builder, already_ran_build: bool, out_stream: anytype) !void {
// run the build script to collect the options
if (!already_ran_build) {
- builder.setInstallPrefix(null);
- builder.resolveInstallPrefix();
+ builder.resolveInstallPrefix(null);
try runBuild(builder);
}
lib/std/build.zig
@@ -51,7 +51,7 @@ pub const Builder = struct {
default_step: *Step,
env_map: *BufMap,
top_level_steps: ArrayList(*TopLevelStep),
- install_prefix: ?[]const u8,
+ install_prefix: []const u8,
dest_dir: ?[]const u8,
lib_dir: []const u8,
exe_dir: []const u8,
@@ -156,7 +156,7 @@ pub const Builder = struct {
.default_step = undefined,
.env_map = env_map,
.search_prefixes = ArrayList([]const u8).init(allocator),
- .install_prefix = null,
+ .install_prefix = undefined,
.lib_dir = undefined,
.exe_dir = undefined,
.h_dir = undefined,
@@ -190,22 +190,13 @@ pub const Builder = struct {
}
/// This function is intended to be called by std/special/build_runner.zig, not a build.zig file.
- pub fn setInstallPrefix(self: *Builder, optional_prefix: ?[]const u8) void {
- self.install_prefix = optional_prefix;
- }
-
- /// This function is intended to be called by std/special/build_runner.zig, not a build.zig file.
- pub fn resolveInstallPrefix(self: *Builder) void {
+ pub fn resolveInstallPrefix(self: *Builder, install_prefix: ?[]const u8) void {
if (self.dest_dir) |dest_dir| {
- const install_prefix = self.install_prefix orelse "/usr";
- self.install_path = fs.path.join(self.allocator, &[_][]const u8{ dest_dir, install_prefix }) catch unreachable;
+ self.install_prefix = install_prefix orelse "/usr";
+ self.install_path = fs.path.join(self.allocator, &[_][]const u8{ dest_dir, self.install_prefix }) catch unreachable;
} else {
- const install_prefix = self.install_prefix orelse blk: {
- const p = self.cache_root;
- self.install_prefix = p;
- break :blk p;
- };
- self.install_path = install_prefix;
+ self.install_prefix = install_prefix orelse self.cache_root;
+ self.install_path = self.install_prefix;
}
self.lib_dir = fs.path.join(self.allocator, &[_][]const u8{ self.install_path, "lib" }) catch unreachable;
self.exe_dir = fs.path.join(self.allocator, &[_][]const u8{ self.install_path, "bin" }) catch unreachable;