Friday, July 25, 2008

Building OpenJDK

[This might be already out of date.]

Here's how I build a 32 bit OpenJDK (build 31) on my Ubuntu 8.04 (Hardy Heron) system.

1. Download
Download the following two files
from the download page, into the directory ~/openjdk7-ws/ and you get two files: the source bundle
~/openjdk7-ws/openjdk-7-ea-src-b31-17_jul_2008.zip
and the binary plugs
~/openjdk7-ws/jdk-7-ea-plug-b31-linux-i586-17_jul_2008.jar


2. Install required packages
Make sure that you install the following Ubuntu packages (I use the Synaptic Package Manger)
  • ant
  • ant-optional
  • gawk
  • gcc
  • g++
  • libasound2-dev
  • libcupsys2-dev
  • libfreetype6-dev
  • libmotif-dev
  • libx11proto-print-dev
  • libxi-dev
  • libxrender-dev
  • libxt-dev
  • libxext-dev
  • libxtst-dev
  • sun-java6-jdk

3. Unpack the source

Unzip the source bundle by typing
$ cd ~/openjdk7-ws
$ unzip openjdk-7-ea-src-b31-17_jul_2008.zip
and you will get the source directory
~/openjdk7-ws/openjdk.

4. Unpack the binary plugs

Expand the binary plugs by typing
$ cd ~/openjdk7-ws
$ java -jar jdk-7-ea-plug-b31-linux-i586-17_jul_2008.jar
which invokes a Java GUI extractor. Accept the license and select ~/openjdk7-ws as the destination and you get the binary plugs directory
~/openjdk7-ws/openjdk-binary-plugs.


5. Suppress compiler warnings and errors

Edit the file
~/openjdk7-ws/openjdk/hotspot/make/linux/makefiles
and add the following compiler option
CFLAGS += -Wno-write-strings
at the end of the list of the compiler options (line 60.)

And replace
#!/bin/sh
with
#!/bin/bash
in the first line of the six .sh files under
~/openjdk7-ws/openjdk/jdk/make/java/nio/
and change the value of variable SH from sh to bash in line 121 of
~/openjdk7-ws/openjdk/jdk/make/common/shared/Defs-utils.gmk


6. Build

Start the build by typing the following
$ cd ~/openjdk7-ws
$ unset JAVA_HOME
$ export ALT_BOOTDIR=/usr/lib/jvm/java-6-sun
$ export ALT_BINARY_PLUGS_PATH=~/openjdk7-ws/openjdk-binary-plugs
$ export LANG=C
$ make debug_build
and wait for a while and you will get the debug build in
$ ~/openjdk7-ws/openjdk/build/linux-i586-debug/j2sdk-image
To build a product build, type
$ make product_build
and you will get the product build in
$ ~/openjdk7-ws/openjdk/build/linux-i586/j2sdk-image
To clean the build directory, use
$ make clobber