On Sun, Apr 20, 2025 at 11:29 AM Joshua Root <j...@macports.org> wrote:
> On 21/4/2025 01:27, Nils Breunese wrote: > > I created a draft pull request to bump the openjdk11 port to version > 11.0.27 (https://github.com/macports/macports-ports/pull/28212), but it > looks like this line: > > > > AO_UNUSED_MBZ = (-1)<<13, // options bits reserved for future use. > > > > in src/jdk.pack/share/native/common-unpack/constants.h results in this > error on macOS 15: > > > > expression is not an integral constant expression > > > > On macOS 13 and 14 the build succeeds without this error. > > > > I am not too familiar with C++, but does this seem related to a change > in macOS 15? Any idea what should be done to fix the build on macOS 15? > > It would be a compiler change rather than a change in the OS. I believe > using bitwise shift operators on a negative value has undefined > behaviour. The fix would be to express the constant in a well-defined > way, for example directly as a hex value, or by shifting a positive > value and then negating afterwards. I don't know how this constant is > used, so I can't say what would be most appropriate. cppreference.com says that is undefined behavior. That constant is defined as an enum, which I think means only that it needs to be a correctly defined integer. Try something like this: AO_UNUSED_MBZ = (~((1<<13) - 1))