std.Build.Step.ConfigHeader: improve handling of autoconf style headers #22941
+88
−8
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While trying to port libelf to the zig build system, I noticed that their
config.h.in
has#undef HAVE_MEMSET
twice in the same file which makes it incompatible with Zig'sstd.Build.Step.ConfigHeader
utility. It is valid to redefine a macro if the definitions are identical.While trying to port GNU Readline to the zig build system, I noticed that their config.h.in has trailing whitespace in their definition of
HAVE_WCHAR_T
(and other macros) which makes it incompatible with Zig'sstd.Build.Step.ConfigHeader
utility.This change not specific to autoconf style headers but applies to
std.Build.Step.ConfigHeader
in general. I can split this into a separate PR if needed. I kept them together to duplicate the test coverageOne use case that would benefit from this is when inserting an enum value into a config header that is determined at runtime due to relying on the build system target.
Example from libelf