RFR (S): Enable new build on Linux/PPC64 (top-level part)
Erik Joelsson
erik.joelsson at oracle.com
Tue Jun 25 10:21:43 UTC 2013
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/
>
> 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>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), 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.
> 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
> 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>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.
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.
/Erik
More information about the build-dev
mailing list