jdk8u: -Wno-regsiter to support newer compilers
David Holmes
david.holmes at oracle.com
Wed Aug 7 01:10:09 UTC 2024
On 7/08/2024 4:42 am, Elazar Leibovich wrote:
> Thanks,
> I did follow the readme, but could not find any commentary about the
> build environment or the required compilers.
There is a tiny bit of info there but I think it is out-of-date:
Linux X86 (32-bit) and X64 (64-bit) Fedora 9 gcc 4.3
Mac OS X X64 (64-bit) Mac OS X 10.7 "Lion" XCode 4.5.2 or newer
There is also info here, but again likely out-of-date:
https://wiki.openjdk.org/display/Build/Supported+Build+Platforms
The folks on jdk8u-dev are the best source of current info.
David
-----
> Even less information was on Mac OS X, where the autoconf files seems
> not to be updated, and as a result arm was chosen instead of aarch64.
>
> If you can point me to a specific section in the documentation
> specifying, say, a list of known good compilers, I'll be grateful.
>
> On Tue, 6 Aug 2024 at 21:37, Magnus Ihse Bursie
> <magnus.ihse.bursie at oracle.com <mailto:magnus.ihse.bursie at oracle.com>>
> wrote:
>
> __
>
> On 2024-08-06 20:33, Elazar Leibovich wrote:
>
>> Thanks,
>> I still fail to understand how JDK8u developers are building the
>> project.
>
> Setting up a build environment for jdk8 is unfortunately not a
> trivial task. The build readme can be of some use:
> https://github.com/openjdk/jdk8u-dev/blob/master/doc/building.md
> <https://github.com/openjdk/jdk8u-dev/blob/master/doc/building.md>.
> The build system has gone through a complete overhaul in later
> versions, so if you were to build the mainline JDK it would be a
> much smoother experience. After all, JDK 8 was released 10 years
> ago, and much has happened since then.
>
> /Magnus
>
>
>
>> Is there a docker file specifying the build environment? What's
>> the recommended way of doing that?
>> Removing the register keyword, plus disabling an overflow warning
>> in a specific test with pragma did the trick for me, but:
>> 1. I could not get it built in Mac OS X
>> 2. I felt as if I'm paving my own path building it, instead of
>> following the Yellow Brick Road, which I'm trying to locate.
>>
>> Thanks again,
>>
>> On Tue, 6 Aug 2024 at 21:10, Zdeněk Žamberský <zzambers at redhat.com
>> <mailto:zzambers at redhat.com>> wrote:
>>
>> Hello,
>>
>> this is known issue, which should get fixed by JDK-8281096:
>> https://github.com/openjdk/jdk8u-dev/pull/357
>> <https://github.com/openjdk/jdk8u-dev/pull/357>
>>
>> (see also: https://github.com/openjdk/jdk8u-dev/pull/508
>> <https://github.com/openjdk/jdk8u-dev/pull/508>)
>>
>> TLDR:
>> Jdk 8 explicitly specifies older c++ version (gnu++98, which
>> not yet
>> deprecated
>> 'register' keyword), but flags are not propagated to ADLC
>> build due to bug.
>> (correct me, if I am wrong)
>>
>>
>> When it comes to Adoptium, I don't know exactly, but I think
>> they are using
>> older compiler, which uses older c++ standard by default.
>>
>> On 06. 08. 24 18:37, Magnus Ihse Bursie wrote:
>> > Hi Elazar,
>> >
>> > I see that you never got any replies here. I suggest that
>> you re-ask
>> > your question on the jdk8u mailing list instead (cc'd).
>> >
>> > /Magnus
>> >
>> > On 2024-07-19 16:20, Elazar Leibovich wrote:
>> >> When trying to compile the latest jdk8u on linux I get
>> failures over
>> >> warnings with the register keywords.
>> >>
>> >> I'm using https://github.com/openjdk/jdk8u-dev.git
>> <https://github.com/openjdk/jdk8u-dev.git> which seems to be
>> >> pretty up to date (I'm using master), and last commit is
>> less than
>> >> two days ago.
>> >>
>> >> This is a workaround I had to use:
>> >> diff --git a/hotspot/make/linux/makefiles/gcc.make
>> >> b/hotspot/make/linux/makefiles/gcc.make
>> >> index 7dde7f0963..81f156574a 100644
>> >> --- a/hotspot/make/linux/makefiles/gcc.make
>> >> +++ b/hotspot/make/linux/makefiles/gcc.make
>> >> @@ -202,7 +202,7 @@ else
>> >> endif
>> >>
>> >> # Compiler warnings are treated as errors
>> >> -WARNINGS_ARE_ERRORS = -Werror
>> >> +WARNINGS_ARE_ERRORS = -Werror -Wno-register
>> >>
>> >> But I guess the best solution is to remove the register
>> keywords from
>> >> the codebase.
>> >>
>> >> How is adoptium building it? Does it use specific compiler?
>> Is the
>> >> supported compiler documented anywhere?
>> >>
>> >> FTR using temurin-build repository and scripts, fails for
>> other
>> >> reasons, and fails even with -D/--podman docker containers.
>> >>
>> >> This patch builds it with centos stream 9 on amd64.
>> >>
>> >> Am I doing something wrong? What's the recommended way of
>> building jdk8?
>> >>
>> >> Thanks,
>> >> Elazar Leibovich
>> >
>>
>> --
>> Zdeněk Žamberský
>> OpenJDK QE
>> Red Hat
>>
More information about the build-dev
mailing list