Bug 265521

Summary: graphics/png: fix build with clang 15
Product: Ports & Packages Reporter: Dimitry Andric <dim>
Component: Individual Port(s)Assignee: Dimitry Andric <dim>
Status: Closed FIXED    
Severity: Affects Some People Flags: antoine: maintainer-feedback+
Priority: ---    
Version: Latest   
Hardware: Any   
OS: Any   
Bug Depends on:    
Bug Blocks: 265425    
Attachments:
Description Flags
graphics/png: fix build with clang 15 none

Description Dimitry Andric freebsd_committer freebsd_triage 2022-07-30 16:39:39 UTC
During an exp-run for llvm 15 (see bug 265425), it turned out that graphics/png  fails to build with clang 15, with 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.

The least disruptive way to solve this is to make the port build with USE_CSTD=gnu89.
Comment 1 Dimitry Andric freebsd_committer freebsd_triage 2022-07-30 16:40:06 UTC
Created attachment 235561 [details]
graphics/png: fix build with clang 15
Comment 2 Antoine Brodin freebsd_committer freebsd_triage 2022-07-30 19:48:23 UTC
Approved
Comment 3 commit-hook freebsd_committer freebsd_triage 2022-07-31 17:15:16 UTC
A commit in branch main references this bug:

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.

    The least disruptive way to solve this is to make the port build with
    USE_CSTD=gnu89.

    PR:             265521
    Approved by:    portmgr (antoine)
    MFH:            2022Q3

 graphics/png/Makefile | 1 +
 1 file changed, 1 insertion(+)