commit 9fd63daff2f6b98c2c7ae3a2668d2fa6cd92589c (tree)
parent e2a6c74c9afef9734a65549b0b55c63b437199b4
Author: Jan200101 <sentrycraft123@gmail.com>
Date: Thu, 12 Mar 2026 21:23:28 +0100
std.Build.Step.ConfigHeader: handle leading whitespace for cmake
Diffstat:
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/lib/std/Build/Step/ConfigHeader.zig b/lib/std/Build/Step/ConfigHeader.zig
@@ -420,12 +420,21 @@ fn render_cmake(
};
defer allocator.free(line);
- if (!std.mem.startsWith(u8, line, "#")) {
+ const line_start = std.mem.findNone(u8, line, " \t\r") orelse {
+ try bw.writeAll(line);
+ if (!last_line) try bw.writeByte('\n');
+ continue;
+ };
+ const whitespace_prefix = line[0..line_start];
+ const trimmed_line = line[line_start..];
+
+ if (!std.mem.startsWith(u8, trimmed_line, "#")) {
try bw.writeAll(line);
if (!last_line) try bw.writeByte('\n');
continue;
}
- var it = std.mem.tokenizeAny(u8, line[1..], " \t\r");
+
+ var it = std.mem.tokenizeAny(u8, trimmed_line[1..], " \t\r");
const cmakedefine = it.next().?;
if (!std.mem.eql(u8, cmakedefine, "cmakedefine") and
!std.mem.eql(u8, cmakedefine, "cmakedefine01"))
@@ -502,6 +511,7 @@ fn render_cmake(
value = Value{ .ident = it.rest() };
}
+ try bw.writeAll(whitespace_prefix);
try renderValueC(bw, name, value);
}
diff --git a/test/standalone/cmakedefine/config.h.in b/test/standalone/cmakedefine/config.h.in
@@ -20,6 +20,10 @@
// 1
#cmakedefine stringval 1
+// whitespace test
+ #cmakedefine stringval 1
+ #cmakedefine stringval 1
+
// cmakedefine01
// 0
diff --git a/test/standalone/cmakedefine/expected_config.h b/test/standalone/cmakedefine/expected_config.h
@@ -20,6 +20,10 @@
// 1
#define stringval 1
+// whitespace test
+ #define stringval 1
+ #define stringval 1
+
// cmakedefine01
// 0