Re: git: 4ba3797c9993 - main - graphics/png: fix build with clang 15

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 31 Jul 2022 22:04:44 UTC
On 31 Jul 2022, at 20:39, Jan Beich <jbeich@FreeBSD.org> wrote:
> 
> Dimitry Andric <dim@FreeBSD.org> writes:
> 
>> The branch main has been updated by dim (src committer):
>> 
>> URL: https://cgit.FreeBSD.org/ports/commit/?id=4ba3797c9993a25a082ed767d4f44234b1f7dc04
>> 
>> commit 4ba3797c9993a25a082ed767d4f44234b1f7dc04
>> Author:     Dimitry Andric <dim@FreeBSD.org>
>> AuthorDate: 2022-07-30 16:37:48 +0000
>> Commit:     Dimitry Andric <dim@FreeBSD.org>
>> CommitDate: 2022-07-31 17:12:11 +0000
>> 
>>    graphics/png: fix build with clang 15
>> 
>>    Building png with clang 15 results in an error:
>> 
>>        contrib/libtests/pngvalid.c:11662:4: error: call to undeclared function 'feenableexcept'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
>>           feenableexcept(FE_DIVBYZERO | FE_INVALID | FE_OVERFLOW);
>>           ^
>> 
>>    This is because clang 15 introduced this new warning, and fenv.h only
>>    declares feenableexcept() when compiling for C standards before C11.
> 
> -Wimplicit-function-declaration is ancient, so Clang 15 made it fatal
> for C99 or later. feenableexcept() is under __BSD_VISIBLE, so hidden in
> _POSIX_SOURCE mode as used by libpng. Linux cheats via _GNU_SOURCE
> which is ignored on FreeBSD, so you get the above warning.
> 
> Where did C11 come from?
> 
> See also https://github.com/llvm/llvm-project/commit/7d644e1215b3

Indeed, this is a pretty big change, which has the potential to cause
lots of breakage; I have added some notes and a request for feedback
here:

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265425#c13

-Dimitry