authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-04-30 18:15:05-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-25 18:54:35-07:00
log9ae410eec22dd0afaa93c3d2f33f3fa6ce6b7861
tree37bc755b2104bcd226217443b7f291c662108276
parentac0b1bfda2c8ac6093b86a000c3515c57535ef07

zig build: actually the configure passthru args are ordered


1 files changed, 6 insertions(+), 19 deletions(-)

src/main.zig+6-19
...@@ -4951,7 +4951,7 @@ fn cmdBuild(...@@ -4951,7 +4951,7 @@ fn cmdBuild(
4951 .ReleaseSafe;4951 .ReleaseSafe;
4952 var configure_argv: std.ArrayList([]const u8) = .empty;4952 var configure_argv: std.ArrayList([]const u8) = .empty;
4953 var make_argv: std.ArrayList([]const u8) = .empty;4953 var make_argv: std.ArrayList([]const u8) = .empty;
4954 var cached_unordered_passthru_configure: std.ArrayList(u32) = .empty;4954 var cached_passthru_configure: std.ArrayList(u32) = .empty;
4955 var forks: std.ArrayList(Fork) = .empty;4955 var forks: std.ArrayList(Fork) = .empty;
4956 var reference_trace: ?u32 = null;4956 var reference_trace: ?u32 = null;
4957 var debug_compile_errors = false;4957 var debug_compile_errors = false;
...@@ -4976,7 +4976,7 @@ fn cmdBuild(...@@ -4976,7 +4976,7 @@ fn cmdBuild(
49764976
4977 try configure_argv.ensureUnusedCapacity(arena, 16);4977 try configure_argv.ensureUnusedCapacity(arena, 16);
4978 try make_argv.ensureUnusedCapacity(arena, 16);4978 try make_argv.ensureUnusedCapacity(arena, 16);
4979 try cached_unordered_passthru_configure.ensureUnusedCapacity(arena, 16);4979 try cached_passthru_configure.ensureUnusedCapacity(arena, 16);
49804980
4981 _ = configure_argv.addOneAssumeCapacity(); // configurer executable4981 _ = configure_argv.addOneAssumeCapacity(); // configurer executable
4982 _ = make_argv.addOneAssumeCapacity(); // maker executable4982 _ = make_argv.addOneAssumeCapacity(); // maker executable
...@@ -5017,7 +5017,7 @@ fn cmdBuild(...@@ -5017,7 +5017,7 @@ fn cmdBuild(
5017 mem.startsWith(u8, arg, "--release=") or5017 mem.startsWith(u8, arg, "--release=") or
5018 mem.eql(u8, arg, "--release"))5018 mem.eql(u8, arg, "--release"))
5019 {5019 {
5020 try cached_unordered_passthru_configure.append(arena, @intCast(configure_argv.items.len));5020 try cached_passthru_configure.append(arena, @intCast(configure_argv.items.len));
5021 configure_argv.appendAssumeCapacity(arg);5021 configure_argv.appendAssumeCapacity(arg);
5022 continue;5022 continue;
5023 } else if (mem.eql(u8, arg, "--system")) {5023 } else if (mem.eql(u8, arg, "--system")) {
...@@ -5025,14 +5025,14 @@ fn cmdBuild(...@@ -5025,14 +5025,14 @@ fn cmdBuild(
5025 i += 1;5025 i += 1;
5026 system_pkg_dir_path = args[i];5026 system_pkg_dir_path = args[i];
50275027
5028 try cached_unordered_passthru_configure.append(arena, @intCast(configure_argv.items.len));5028 try cached_passthru_configure.append(arena, @intCast(configure_argv.items.len));
5029 configure_argv.appendAssumeCapacity(arg); // Intentionally "--system" only; not the path.5029 configure_argv.appendAssumeCapacity(arg); // Intentionally "--system" only; not the path.
5030 continue;5030 continue;
5031 } else if (mem.cutPrefix(u8, arg, "--color=")) |rest| {5031 } else if (mem.cutPrefix(u8, arg, "--color=")) |rest| {
5032 color = std.meta.stringToEnum(Color, rest) orelse5032 color = std.meta.stringToEnum(Color, rest) orelse
5033 fatal("expected --color=[auto|on|off]; found: {s}", .{arg});5033 fatal("expected --color=[auto|on|off]; found: {s}", .{arg});
50345034
5035 try cached_unordered_passthru_configure.append(arena, @intCast(configure_argv.items.len));5035 try cached_passthru_configure.append(arena, @intCast(configure_argv.items.len));
5036 configure_argv.appendAssumeCapacity(arg);5036 configure_argv.appendAssumeCapacity(arg);
5037 continue;5037 continue;
5038 } else if (mem.eql(u8, arg, "--build-file")) {5038 } else if (mem.eql(u8, arg, "--build-file")) {
...@@ -5223,21 +5223,8 @@ fn cmdBuild(...@@ -5223,21 +5223,8 @@ fn cmdBuild(
5223 defer config_man.deinit();5223 defer config_man.deinit();
5224 config_man.hash.addBytes(build_options.version);5224 config_man.hash.addBytes(build_options.version);
52255225
5226 const SortContext = struct {5226 for (cached_passthru_configure.items) |i|
5227 list: []const []const u8,
5228 fn lessThan(this: @This(), lhs: u32, rhs: u32) bool {
5229 return mem.lessThan(u8, this.list[lhs], this.list[rhs]);
5230 }
5231 };
5232 mem.sortUnstable(
5233 u32,
5234 cached_unordered_passthru_configure.items,
5235 @as(SortContext, .{ .list = configure_argv.items }),
5236 SortContext.lessThan,
5237 );
5238 for (cached_unordered_passthru_configure.items) |i| {
5239 config_man.hash.addBytes(configure_argv.items[i]);5227 config_man.hash.addBytes(configure_argv.items[i]);
5240 }
52415228
5242 // Normally the build runner is compiled for the host target but here is5229 // Normally the build runner is compiled for the host target but here is
5243 // some code to help when debugging edits to the build runner so that you5230 // some code to help when debugging edits to the build runner so that you