authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-07-03 21:47:57-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-07-04 10:53:35-07:00
log8ae92fd17ee9a3d46e4f441864a8544b440c0b2d
treee906abcf860cf86dc0709759bb4c7bd7c5004bc0
parentd3eaa75c07aaac09d9dd74aa2a175ba799159faa

std.Build.Step.Compile: fix clearing logic for empty cflags

Commit c0b774fbc65e3e406a38d37b02fffda7c5d3df26 originally added this logic but it did not properly clear the C command line flags to empty when a previous positional argument had command line flags, because it never set the "previous" flag to true. This fixes C compiler flags not being reset to empty when using the build system and a second positional argument has no arguments after a first positional argument has arguments. Thanks to @squeek502 for finding this.

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

lib/std/Build/Step/Compile.zig+10-8
......@@ -1344,7 +1344,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
13441344 try transitive_deps.seen_steps.put(&self.step, {});
13451345 try transitive_deps.add(self.link_objects.items);
13461346
1347 var prev_has_extra_flags = false;
1347 var prev_has_cflags = false;
13481348
13491349 for (transitive_deps.link_objects.items) |link_object| {
13501350 switch (link_object) {
......@@ -1413,20 +1413,20 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
14131413 },
14141414
14151415 .assembly_file => |asm_file| {
1416 if (prev_has_extra_flags) {
1417 try zig_args.append("-extra-cflags");
1416 if (prev_has_cflags) {
1417 try zig_args.append("-cflags");
14181418 try zig_args.append("--");
1419 prev_has_extra_flags = false;
1419 prev_has_cflags = false;
14201420 }
14211421 try zig_args.append(asm_file.getPath(b));
14221422 },
14231423
14241424 .c_source_file => |c_source_file| {
14251425 if (c_source_file.args.len == 0) {
1426 if (prev_has_extra_flags) {
1426 if (prev_has_cflags) {
14271427 try zig_args.append("-cflags");
14281428 try zig_args.append("--");
1429 prev_has_extra_flags = false;
1429 prev_has_cflags = false;
14301430 }
14311431 } else {
14321432 try zig_args.append("-cflags");
......@@ -1434,16 +1434,17 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
14341434 try zig_args.append(arg);
14351435 }
14361436 try zig_args.append("--");
1437 prev_has_cflags = true;
14371438 }
14381439 try zig_args.append(c_source_file.source.getPath(b));
14391440 },
14401441
14411442 .c_source_files => |c_source_files| {
14421443 if (c_source_files.flags.len == 0) {
1443 if (prev_has_extra_flags) {
1444 if (prev_has_cflags) {
14441445 try zig_args.append("-cflags");
14451446 try zig_args.append("--");
1446 prev_has_extra_flags = false;
1447 prev_has_cflags = false;
14471448 }
14481449 } else {
14491450 try zig_args.append("-cflags");
......@@ -1451,6 +1452,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
14511452 try zig_args.append(flag);
14521453 }
14531454 try zig_args.append("--");
1455 prev_has_cflags = true;
14541456 }
14551457 for (c_source_files.files) |file| {
14561458 try zig_args.append(b.pathFromRoot(file));