zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

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:
Mlib/std/Build/Step/ConfigHeader.zig | 14++++++++++++--
Mtest/standalone/cmakedefine/config.h.in | 4++++
Mtest/standalone/cmakedefine/expected_config.h | 4++++
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