build: define YY_NO_UNISTD_H only for MSVC#280
Open
hjiawei wants to merge 1 commit into
Open
Conversation
MinGW provides a real unistd.h, and suppressing it leaves the flex generated lexer without a declaration of isatty(), which GCC 14 and later reject as an implicit function declaration. Keep the suppression for MSVC, which has no unistd.h. Signed-off-by: Jiawei Huang <jiawei@tigera.io>
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
YY_NO_UNISTD_His currently defined for all Windows targets to keep the flex-generated lexer from including<unistd.h>. That's correct for MSVC, which has nounistd.h, but wrong for MinGW-w64: MinGW ships a realunistd.h, and suppressing it leaves the generated lexer without a declaration ofisatty(), which GCC 14 and later reject as an implicit function declaration (an error by default).Gate the definition on
MSVCso MinGW builds get the realunistd.h. No change for MSVC.Testing
Verified by cross-compiling Fluent Bit (which bundles cmetrics) for Windows from Linux with the Fedora MinGW-w64 UCRT toolchain: the cmetrics prometheus decode lexer compiles instead of failing on the implicit
isattydeclaration. MSVC builds are unaffected — the definition still applies there.