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 {...@@ -1344,7 +1344,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
1344 try transitive_deps.seen_steps.put(&self.step, {});1344 try transitive_deps.seen_steps.put(&self.step, {});
1345 try transitive_deps.add(self.link_objects.items);1345 try transitive_deps.add(self.link_objects.items);
13461346
1347 var prev_has_extra_flags = false;1347 var prev_has_cflags = false;
13481348
1349 for (transitive_deps.link_objects.items) |link_object| {1349 for (transitive_deps.link_objects.items) |link_object| {
1350 switch (link_object) {1350 switch (link_object) {
...@@ -1413,20 +1413,20 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {...@@ -1413,20 +1413,20 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
1413 },1413 },
14141414
1415 .assembly_file => |asm_file| {1415 .assembly_file => |asm_file| {
1416 if (prev_has_extra_flags) {1416 if (prev_has_cflags) {
1417 try zig_args.append("-extra-cflags");1417 try zig_args.append("-cflags");
1418 try zig_args.append("--");1418 try zig_args.append("--");
1419 prev_has_extra_flags = false;1419 prev_has_cflags = false;
1420 }1420 }
1421 try zig_args.append(asm_file.getPath(b));1421 try zig_args.append(asm_file.getPath(b));
1422 },1422 },
14231423
1424 .c_source_file => |c_source_file| {1424 .c_source_file => |c_source_file| {
1425 if (c_source_file.args.len == 0) {1425 if (c_source_file.args.len == 0) {
1426 if (prev_has_extra_flags) {1426 if (prev_has_cflags) {
1427 try zig_args.append("-cflags");1427 try zig_args.append("-cflags");
1428 try zig_args.append("--");1428 try zig_args.append("--");
1429 prev_has_extra_flags = false;1429 prev_has_cflags = false;
1430 }1430 }
1431 } else {1431 } else {
1432 try zig_args.append("-cflags");1432 try zig_args.append("-cflags");
...@@ -1434,16 +1434,17 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {...@@ -1434,16 +1434,17 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
1434 try zig_args.append(arg);1434 try zig_args.append(arg);
1435 }1435 }
1436 try zig_args.append("--");1436 try zig_args.append("--");
1437 prev_has_cflags = true;
1437 }1438 }
1438 try zig_args.append(c_source_file.source.getPath(b));1439 try zig_args.append(c_source_file.source.getPath(b));
1439 },1440 },
14401441
1441 .c_source_files => |c_source_files| {1442 .c_source_files => |c_source_files| {
1442 if (c_source_files.flags.len == 0) {1443 if (c_source_files.flags.len == 0) {
1443 if (prev_has_extra_flags) {1444 if (prev_has_cflags) {
1444 try zig_args.append("-cflags");1445 try zig_args.append("-cflags");
1445 try zig_args.append("--");1446 try zig_args.append("--");
1446 prev_has_extra_flags = false;1447 prev_has_cflags = false;
1447 }1448 }
1448 } else {1449 } else {
1449 try zig_args.append("-cflags");1450 try zig_args.append("-cflags");
...@@ -1451,6 +1452,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {...@@ -1451,6 +1452,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
1451 try zig_args.append(flag);1452 try zig_args.append(flag);
1452 }1453 }
1453 try zig_args.append("--");1454 try zig_args.append("--");
1455 prev_has_cflags = true;
1454 }1456 }
1455 for (c_source_files.files) |file| {1457 for (c_source_files.files) |file| {
1456 try zig_args.append(b.pathFromRoot(file));1458 try zig_args.append(b.pathFromRoot(file));