Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 May 2023 18:49:44 +0000
From:      bugzilla-noreply@freebsd.org
To:        ports-bugs@FreeBSD.org
Subject:   [Bug 271424] graphics/ufraw: fix build with clang 16
Message-ID:  <bug-271424-7788@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D271424

            Bug ID: 271424
           Summary: graphics/ufraw: fix build with clang 16
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: rodrigo@FreeBSD.org
          Reporter: dim@FreeBSD.org
             Flags: maintainer-feedback?(rodrigo@FreeBSD.org)
          Assignee: rodrigo@FreeBSD.org

graphics/ufraw: fix build with clang 16

Since clang 16 (and gcc 11) the default C++ standard is now gnu++17.
Because graphics/ufraw's configure scripts and Makefiles do not
explicitly set the C++ standard, this leads to several errors:

  /usr/local/include/lcms2.h:1291:44: error: ISO C++17 does not allow
'register' storage class specifier [-Wregister]
  typedef cmsInt32Number (* cmsSAMPLER16)   (CMSREGISTER const cmsUInt16Num=
ber
In[],
                                             ^~~~~~~~~~~~
  /usr/local/include/lcms2.h:158:23: note: expanded from macro 'CMSREGISTER'
  #  define CMSREGISTER register
                        ^
  /usr/local/include/lcms2.h:1292:44: error: ISO C++17 does not allow
'register' storage class specifier [-Wregister]
                                             CMSREGISTER cmsUInt16Number Ou=
t[],
                                             ^~~~~~~~~~~~
  /usr/local/include/lcms2.h:158:23: note: expanded from macro 'CMSREGISTER'
  #  define CMSREGISTER register
                        ^
  /usr/local/include/lcms2.h:1293:44: error: ISO C++17 does not allow
'register' storage class specifier [-Wregister]
                                             CMSREGISTER void * Cargo);
                                             ^~~~~~~~~~~~
  /usr/local/include/lcms2.h:158:23: note: expanded from macro 'CMSREGISTER'
  #  define CMSREGISTER register
                        ^
  /usr/local/include/lcms2.h:1295:44: error: ISO C++17 does not allow
'register' storage class specifier [-Wregister]
  typedef cmsInt32Number (* cmsSAMPLERFLOAT)(CMSREGISTER const cmsFloat32Nu=
mber
In[],
                                             ^~~~~~~~~~~~
  /usr/local/include/lcms2.h:158:23: note: expanded from macro 'CMSREGISTER'
  #  define CMSREGISTER register
                        ^
  /usr/local/include/lcms2.h:1296:44: error: ISO C++17 does not allow
'register' storage class specifier [-Wregister]
                                             CMSREGISTER cmsFloat32Number
Out[],
                                             ^~~~~~~~~~~~
  /usr/local/include/lcms2.h:158:23: note: expanded from macro 'CMSREGISTER'
  #  define CMSREGISTER register
                        ^
  /usr/local/include/lcms2.h:1297:44: error: ISO C++17 does not allow
'register' storage class specifier [-Wregister]
                                             CMSREGISTER void * Cargo);
                                             ^~~~~~~~~~~~
  /usr/local/include/lcms2.h:158:23: note: expanded from macro 'CMSREGISTER'
  #  define CMSREGISTER register
                        ^

Specifically for lcms2.h, adding -DCMS_NO_REGISTER_KEYWORD to CPPFLAGS
would be enough, but graphics/ufraw also pulls in exiv2 headers which
make use of std::auto_ptr, another construct that has been removed from
C++17.

Add USE_CXXSTD=3Dgnu++98 to compile for C++98 with GNU extensions instead.

--=20
You are receiving this mail because:
You are the assignee for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-271424-7788>