authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-16 06:01:46+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-02-16 02:37:20-08:00
log51e96a823ce21a6b027bfdf55d94c3872a103703
tree15f2106ade89aa20c7e85e56c302d1b98efac934
parent6f08e172299320a3b243998878b38b0b3f43d8d5

build.zig: support multiple args in `cxx_compiler_arg1`

An example of this happening is during CI runs where it has a value such as `c++ -target x86_64-linux-musl -mcpu=baseline`.

1 files changed, 8 insertions(+), 4 deletions(-)

build.zig+8-4
...@@ -811,10 +811,14 @@ fn addCxxKnownPath(...@@ -811,10 +811,14 @@ fn addCxxKnownPath(
811 if (!std.process.can_spawn)811 if (!std.process.can_spawn)
812 return error.RequiredLibraryNotFound;812 return error.RequiredLibraryNotFound;
813813
814 const path_padded = if (ctx.cxx_compiler_arg1.len > 0)814 const path_padded = run: {
815 b.run(&.{ ctx.cxx_compiler, ctx.cxx_compiler_arg1, b.fmt("-print-file-name={s}", .{objname}) })815 var args = std.ArrayList([]const u8).init(b.allocator);
816 else816 try args.append(ctx.cxx_compiler);
817 b.run(&.{ ctx.cxx_compiler, b.fmt("-print-file-name={s}", .{objname}) });817 var it = std.mem.tokenizeAny(u8, ctx.cxx_compiler_arg1, &std.ascii.whitespace);
818 while (it.next()) |arg| try args.append(arg);
819 try args.append(b.fmt("-print-file-name={s}", .{objname}));
820 break :run b.run(args.items);
821 };
818 var tokenizer = mem.tokenizeAny(u8, path_padded, "\r\n");822 var tokenizer = mem.tokenizeAny(u8, path_padded, "\r\n");
819 const path_unpadded = tokenizer.next().?;823 const path_unpadded = tokenizer.next().?;
820 if (mem.eql(u8, path_unpadded, objname)) {824 if (mem.eql(u8, path_unpadded, objname)) {