aboutsummaryrefslogtreecommitdiff
path: root/lib/std/Build/Step/Compile.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-07-03 21:47:57 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-07-04 10:53:35 -0700
commit8ae92fd17ee9a3d46e4f441864a8544b440c0b2d (patch)
treee906abcf860cf86dc0709759bb4c7bd7c5004bc0 /lib/std/Build/Step/Compile.zig
parentd3eaa75c07aaac09d9dd74aa2a175ba799159faa (diff)
downloadzig-8ae92fd17ee9a3d46e4f441864a8544b440c0b2d.tar.gz
zig-8ae92fd17ee9a3d46e4f441864a8544b440c0b2d.zip
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.
Diffstat (limited to 'lib/std/Build/Step/Compile.zig')
-rw-r--r--lib/std/Build/Step/Compile.zig18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/std/Build/Step/Compile.zig b/lib/std/Build/Step/Compile.zig
index 88fdb2ecb0..7ca8748dbf 100644
--- a/lib/std/Build/Step/Compile.zig
+++ b/lib/std/Build/Step/Compile.zig
@@ -1344,7 +1344,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
try transitive_deps.seen_steps.put(&self.step, {});
try transitive_deps.add(self.link_objects.items);
- var prev_has_extra_flags = false;
+ var prev_has_cflags = false;
for (transitive_deps.link_objects.items) |link_object| {
switch (link_object) {
@@ -1413,20 +1413,20 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
},
.assembly_file => |asm_file| {
- if (prev_has_extra_flags) {
- try zig_args.append("-extra-cflags");
+ if (prev_has_cflags) {
+ try zig_args.append("-cflags");
try zig_args.append("--");
- prev_has_extra_flags = false;
+ prev_has_cflags = false;
}
try zig_args.append(asm_file.getPath(b));
},
.c_source_file => |c_source_file| {
if (c_source_file.args.len == 0) {
- if (prev_has_extra_flags) {
+ if (prev_has_cflags) {
try zig_args.append("-cflags");
try zig_args.append("--");
- prev_has_extra_flags = false;
+ prev_has_cflags = false;
}
} else {
try zig_args.append("-cflags");
@@ -1434,16 +1434,17 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
try zig_args.append(arg);
}
try zig_args.append("--");
+ prev_has_cflags = true;
}
try zig_args.append(c_source_file.source.getPath(b));
},
.c_source_files => |c_source_files| {
if (c_source_files.flags.len == 0) {
- if (prev_has_extra_flags) {
+ if (prev_has_cflags) {
try zig_args.append("-cflags");
try zig_args.append("--");
- prev_has_extra_flags = false;
+ prev_has_cflags = false;
}
} else {
try zig_args.append("-cflags");
@@ -1451,6 +1452,7 @@ fn make(step: *Step, prog_node: *std.Progress.Node) !void {
try zig_args.append(flag);
}
try zig_args.append("--");
+ prev_has_cflags = true;
}
for (c_source_files.files) |file| {
try zig_args.append(b.pathFromRoot(file));