RFR (S): Enable new build on Linux/PPC64 (top-level part)
David Holmes
david.holmes at oracle.com
Fri Jul 5 05:51:41 UTC 2013
Hi Volker,
This seems okay to me.
The CFLAGS -m64 bit seems unfortunately messy for you, but I don't think
we've encountered a 64-bit platform where the compiler builds 32-bit by
default. :( Hopefully this can be cleaned up.
Just in case it hasn't been noticed, please note that INCLUDE_SA only
controls whether or not sa-jdi.jar gets copied into the final image. It
doesn't get passed through to the hotspot build to control whether the
SA is indeed built or not. (In fact hotspot doesn't have a single
variable to control this as the sa-jdi.jar can be built even if there is
no native support built via saproc :( ).
David
On 27/06/2013 1:28 AM, Volker Simonis wrote:
> Hi Erik,
>
> thanks for the BugID!
>
> Here's the new webrev:
>
> http://cr.openjdk.java.net/~simonis/webrevs/8017568_toplevel
>
> I've added a detection for buggy linkers on older SuSE distros (e.g. on
> SLES 10) which complains with: "Invalid version tag `SUNWprivate_1.1'. Only
> anonymous version tag is allowed in executable." if feeded with a version
> script which contains named tags. If detected this will be exported as
> USING_BROKEN_SUSE_LD=yes
> for the jdk build.
>
> What do you think, do you want to push this directly into the build
> repositories or should I push it into the staging repository first?
>
> Please see further comments inline.
>
> Thank you and best regards,
> Volker
>
> On Tue, Jun 25, 2013 at 12:21 PM, Erik Joelsson <erik.joelsson at oracle.com>wrote:
>
>> Hello Volker,
>>
>>
>> On 2013-06-24 19:23, Volker Simonis wrote:
>>
>>> Hi,
>>>
>>> could somebody please review the following change and create an
>>> appropriate
>>> Bug ID for it:
>>>
>>> Created 8017568: Enable new build on Linux/PPC64
>> You can use it for both root and jdk changes.
>>
>>> http://cr.openjdk.java.net/~**simonis/webrevs/linux_ppc_**build_top/<http://cr.openjdk.java.net/~simonis/webrevs/linux_ppc_build_top/>
>>>
>>> The change will enable to build the PowerPC/AIX port on Linux/PPC64 with
>>> the new build system using an interpreter only VM using the C++
>>> interpreter. Therefore it introduces a new JVM variant called "core" which
>>> enables an interpreter only build and a new configure option called
>>> "--with-jvm-interpreter" which can be used to choose either the default
>>> "template" interpreter or the "C++" interpreter.
>>>
>>> Notice that this 'core' build currently only works on Linux/PPC64 and it
>>> is
>>> used for the PowerPC/AIX porting project to bootstrap its build. (See
>>> 8016476:
>>> PPC64 (part 1): reenable CORE
>>> build<http://bugs.sun.com/**bugdatabase/view_bug.do?bug_**id=8016476<http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016476>
>>>> for
>>>
>>> the corresponding HotSpot change).
>>>
>>> Once we have all the required patches in the HotSpot repository (and the
>>> small JDK changes from
>>> http://cr.openjdk.java.net/~**simonis/webrevs/linux_ppc_**build_jdk<http://cr.openjdk.java.net/~simonis/webrevs/linux_ppc_build_jdk>),
>>> building
>>> on newer Linux distros like Fedora 17 will be as easy as:
>>>
>>> sh /priv/openjdk/OpenJDK/ppc-aix-**port/jdk8/configure
>>> --with-boot-jdk=/priv/openjdk/**OpenJDK/openjdk1.7.0-ppc-aix-**port-b03
>>> --with-jvm-variants=core --with-jvm-interpreter=cpp
>>> --with-debug-level=slowdebug
>>>
>>> make images LOG=debug
>>>
>>> On older releases like SLES 10 you'll have to use something like:
>>>
>>> sh /priv/openjdk/OpenJDK/ppc-aix-**port/jdk8/configure --with-boot-jdk=
>>> /priv/openjdk/OpenJDK/**openjdk1.7.0-ppc-aix-port-b03-**
>>> -with-jvm-variants=core
>>> --with-jvm-interpreter=cpp--**with-debug-level=release
>>> --with-extra-cflags=-m64
>>> --with-extra-cxxflags=-m64 --with-extra-ldflags='-m64 -L/lib64'
>>> --x-libraries=/usr/X11R6/lib64 --x-includes=/usr/X11R6/**include
>>> CFLAGS=-m64
>>> CXXFLAGS=-m64
>>>
>>> make images LOG=debug
>>>
>>> The extra options and flags are mainly necessary because the GCC on the
>>> latter platform produces 32-bit binaries by default. Notice that the
>>> environment variables "CFLAGS=-m64 CXXFLAGS=-m64" are necessary for the
>>> configure script itself to detect the correct 64-bit platform while the
>>> configure options like "--with-extra-cflags" are needed in order to select
>>> the right flags for the build.
>>>
>> This should be addressed I think. I'm not happy with the current handling
>> of CFLAGS*, CXXFLAGS* and LDFLAGS*. But not in this patch.
>>
>
> Yes, I didn't change anything here, I just wanted to explain the command
> line and why both, "--with-extra-cflags" and CFLAGS are necessary.
>
> Following some more detailed descriptions of the change:
>>> common/autoconf/boot-jdk.m4
>>>
>>> Linux/PPC64 needs a slightly bigger heap for the huge JDK batch. Treat it
>>> like MacOS which uses '-Xmx1600M'.
>>> common/autoconf/configure.ac
>>> common/autoconf/hotspot-spec.**gmk.in <http://hotspot-spec.gmk.in>
>>> common/autoconf/jdk-options.m4
>>>
>>> Add --with-interpreter option to configure which can be used th choose one
>>> of the 'template' or the 'C++' interpreter. Default is the 'template'
>>> interpreter.
>>> common/autoconf/jdk-options.m4
>>> common/autoconf/spec.gmk.in
>>> make/hotspot-rules.gmk
>>>
>>> Add JVM variant 'core' to configure which can be used th choose the
>>> HotSpot
>>> 'core' (i.e. 'interpreter only') build. Notice that this 'core' build
>>> currently only works on Linux/PPC64 and it is used for the PowerPC/AIX
>>> porting project to bootstrap its build. (See 8016476: PPC64 (part 1):
>>> reenable CORE build<http://bugs.sun.com/**bugdatabase/view_bug.do?bug_**
>>> id=8016476 <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8016476>
>>>> for
>>>
>>> the corresponding HotSpot change).
>>>
>>> We currently also don't build the serviceability agent on PPC64.
>>> common/autoconf/libraries.m4
>>>
>>> Older Linuxes (e.g. SLES 10) may still have the X11R6 directory but also a
>>> symlink from /usr/include/X11 to ../X11R6/include/X11 so we need to check
>>> for the X11R6 directory AFTER we checked for /usr/include/X11
>>> Thank you and best regards,
>>>
>> Note that this last part won't apply cleanly after some recent changes.
>>
>>
> The good news here is that the recent change which broke my patch also
> fixed my problem, so this part isn't necessary any more!
>
>
>> Why change make/hotspot-rules.gmk? It's only used in the old build.
>> Otherwise this all looks good to me from a build perspective.
>>
>
> You're right, that was an leftover in the patch from the old build system.
> I've removed it.
>
>
>> /Erik
>>
More information about the build-dev
mailing list