authorgravatar for sentrycraft123@gmail.comJan200101 <sentrycraft123@gmail.com> 2026-03-12 21:23:28+01:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-04-08 14:24:48+02:00
log9fd63daff2f6b98c2c7ae3a2668d2fa6cd92589c
treebccf5cba7b36d9e4e59fd7c295df7e9763f3e458
parente2a6c74c9afef9734a65549b0b55c63b437199b4

std.Build.Step.ConfigHeader: handle leading whitespace for cmake


3 files changed, 20 insertions(+), 2 deletions(-)

lib/std/Build/Step/ConfigHeader.zig+12-2
......@@ -420,12 +420,21 @@ fn render_cmake(
420420 };
421421 defer allocator.free(line);
422422
423 if (!std.mem.startsWith(u8, line, "#")) {
423 const line_start = std.mem.findNone(u8, line, " \t\r") orelse {
424 try bw.writeAll(line);
425 if (!last_line) try bw.writeByte('\n');
426 continue;
427 };
428 const whitespace_prefix = line[0..line_start];
429 const trimmed_line = line[line_start..];
430
431 if (!std.mem.startsWith(u8, trimmed_line, "#")) {
424432 try bw.writeAll(line);
425433 if (!last_line) try bw.writeByte('\n');
426434 continue;
427435 }
428 var it = std.mem.tokenizeAny(u8, line[1..], " \t\r");
436
437 var it = std.mem.tokenizeAny(u8, trimmed_line[1..], " \t\r");
429438 const cmakedefine = it.next().?;
430439 if (!std.mem.eql(u8, cmakedefine, "cmakedefine") and
431440 !std.mem.eql(u8, cmakedefine, "cmakedefine01"))
......@@ -502,6 +511,7 @@ fn render_cmake(
502511 value = Value{ .ident = it.rest() };
503512 }
504513
514 try bw.writeAll(whitespace_prefix);
505515 try renderValueC(bw, name, value);
506516 }
507517
test/standalone/cmakedefine/config.h.in+4
......@@ -20,6 +20,10 @@
2020// 1
2121#cmakedefine stringval 1
2222
23// whitespace test
24 #cmakedefine stringval 1
25 #cmakedefine stringval 1
26
2327
2428// cmakedefine01
2529// 0
test/standalone/cmakedefine/expected_config.h+4
......@@ -20,6 +20,10 @@
2020// 1
2121#define stringval 1
2222
23// whitespace test
24 #define stringval 1
25 #define stringval 1
26
2327
2428// cmakedefine01
2529// 0