-
Notifications
You must be signed in to change notification settings - Fork 602
Configure: check usability of <stdckdint.h>, not only its existence #23739
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Some FreeBSD systems have <stdckdint.h>, but it cannot be compiled with C++ compilers. Configure now checks whether `ckd_*` functions can be compiled, and leave I_STDCKDINT undefined if the compilation failed. Will fix GH Perl#23725 (d51aa1a build-time failure with clang++ and g++).
|
IIUC, the differences which your patch would effect could be detected simply by running I decided to use the same FreeBSD machine on which I explored #23725 to test this out. I took my regular configuration command (which by default uses ... and use that first on blead, then on the branch in your pull request. I then compared their respective @t-a-k, is this what you would have expected? On each of these two builds I then ran This pull request DWIMs for me, but it should also be reviewed by people more familiar with |
|
Thank you for testing!
Yes. In this case <stdckdint.h> is present but fails to compile with specified compiler (probably because it is not compatible with C++), therefore |
|
My question is, is there a C++ compatible hdr that would serve instead of this |
|
And the answer to my question is no |
|
Thank you for merging.
As far as I can see, Clang 19's own stdckdint.h seems to be C++ compatible, and GCC 15's libstdc++ seems to have its own stdckdint.h for C++ programs. I verified the former on Debian 13 (whose default Clang is v19, and which does not have |
FWIW, here are the different flavors of stdckdint.h I was able to locate on the FreeBSD-14 machine from which I have been reporting: Let's see what's different. But ... |
Some FreeBSD systems have <stdckdint.h>, but it cannot be compiled with C++ compilers. This patch modifies Configure to check whether
ckd_*functions can be compiled, and leave I_STDCKDINT undefined (so that <stdckdint.h> won't be used in build time) if the compilation failed.Will fix GH #23725.