<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>OpenJDK Build README</title>
    </head>
    <body style="background-color:lightcyan">
        <!-- ====================================================== -->
        <table width="100%">
            <tr>
                <td align="center">
                    <img alt="OpenJDK" 
                         src="http://openjdk.java.net/images/openjdk.png" 
                         width=256 />
                </td>
            </tr>
            <tr>
                <td align=center>
                    <h1>OpenJDK Build README</h1>
                </td>
            </tr>
        </table>
        <!-- ------------------------------------------------------ --> 
        <hr>
        <h2><a name="introduction">Introduction</a></h2>
        <blockquote>
            <p>
            This README file contains build instructions for the 
            <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
            Building the source code for the 
            OpenJDK
            requires
            a certain degree of technical expertise.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="contents">Contents</a></h2>
        <blockquote>
            <ul>
                <li><a href="#introduction">Introduction</a></li>
                <li><a href="#MBE">Minimum Build Environments</a></li>
                <li><a href="#SDBE">Specific Developer Build Environments</a></li>
                    <ul>
                        <li><a href="#fedora">Fedora Linux</a> </li>
                        <li><a href="#centos">CentOS Linux</a> </li>
                        <li><a href="#ubuntu">Ubuntu Linux</a> </li>
                    </ul>
                <li><a href="#directories">Source Directory Structure</a> </li>
                <li><a href="#building">Build Information</a>
                    <ul>
                        <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
                        <li><a href="#linux">Basic Linux System Setup</a> </li>
                        <li><a href="#solaris">Basic Solaris System Setup</a> </li>
                        <li><a href="#windows">Basic Windows System Setup</a> </li>
                        <li><a href="#dependencies">Build Dependencies</a> </li>
                        <ul>
                            <li><a href="#bootjdk">Bootstrap JDK</a> </li>
                            <li><a href="#binaryplugs">Binary Plugs</a> </li>
                            <li><a href="#importjdk">Optional Import JDK</a> </li>
                            <li><a href="#ant">Ant</a> </li>
                            <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
                            <li><a href="#compilers">Compilers</a> 
                                <ul>
                                    <li><a href="#msvc">Microsoft Visual Studio</a> </li>
                                    <li><a href="#mssdk">Microsoft Platform SDK</a> </li>
                                    <li><a href="#gcc">Linux gcc/binutils</a> </li>
                                    <li><a href="#studio">Sun Studio</a> </li>
                                </ul>
                            </li>
                            <li><a href="#zip">Zip and Unzip</a> </li>
                            <li><a href="#freetype">FreeType2 Fonts</a> </li>
                            <li>Linux and Solaris:
                                <ul>
                                    <li><a href="#cups">CUPS Include files</a> </li>
                                </ul>
                            </li>
                            <li>Linux only:
                                <ul>
                                    <li><a href="#alsa">ALSA files</a> </li>
                                </ul>
                            </li>
                            <li>Windows only:
                                <ul>
                                    <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>)</li>
                                    <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
                                </ul>
                            </li>
                        </ul>
                    </ul>
                </li>
                <li><a href="#creating">Creating the Build</a> </li>
                <li><a href="#testing">Testing the Build</a> </li>
                <li><a href="#variables">Environment/Make Variables</a></li>
                <li><a href="#troubleshooting">Troubleshooting</a></li>
            </ul>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="MBE">Minimum Build Environments</a></h2>
        <blockquote>
            This file often describes specific requirements for what we call the
            "minimum build environments" (MBE) for this 
	    specific release of the JDK,
            Building with the MBE will generate the most compatible
            bits that install on, and run correctly on, the most variations
            of the same base OS and hardware architecture.
            These usually represent what is often called the
            least common denominator platforms.
            It is understood that most developers will NOT be using these 
            specific platforms, and in fact creating these specific platforms
            may be difficult due to the age of some of this software.
            <p>
            The minimum OS and C/C++ compiler versions needed for building the
            OpenJDK:
            <p>
            <table border="1">
                <thead>
                    <tr>
                        <th>Base OS and Architecture</th>
                        <th>OS</th>
                        <th>C/C++ Compiler</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Linux X86 (32-bit)</td>
                        <td>Fedora 9</td>
                        <td>gcc 4 </td>
                    </tr>
                    <tr>
                        <td>Linux X64 (64-bit)</td>
                        <td>Fedora 9</td>
                        <td>gcc 4 </td>
                    </tr>
                    <tr>
                        <td>Solaris SPARC (32-bit)</td>
                        <td>Solaris 10 + patches 
                            <br>
                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                            SunSolve</a> for patch downloads.
                        </td>
                        <td>Sun Studio 12</td>
                    </tr>
                    <tr>
                        <td>Solaris SPARCV9 (64-bit)</td>
                        <td>Solaris 10 + patches
                            <br>
                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                            SunSolve</a> for patch downloads.
                        </td>
                        <td>Sun Studio 12</td>
                    </tr>
                    <tr>
                        <td>Solaris X86 (32-bit)</td>
                        <td>Solaris 10 + patches
                            <br>
                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                            SunSolve</a> for patch downloads.
                        </td>
                        <td>Sun Studio 12</td>
                    </tr>
                    <tr>
                        <td>Solaris X64 (64-bit)</td>
                        <td>Solaris 10 + patches
                            <br>
                            See <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/JavaSE" target="_blank">
                            SunSolve</a> for patch downloads.
                        </td>
                        <td>Sun Studio 12</td>
                    </tr>
                    <tr>
                        <td>Windows X86 (32-bit)</td>
                        <td>Windows XP</td>
                        <td>Microsoft Visual Studio C++ 2008 Standard Edition</td>
                    </tr>
                    <tr>
                        <td>Windows X64 (64-bit)</td>
                        <td>Windows Server 2003 - Enterprise x64 Edition</td>
                        <td>Microsoft Platform SDK - April 2005</td>
                    </tr>
                </tbody>
            </table>
	    <p>
	    These same sources do indeed build on many more systems than the
	    above older generation systems, again the above is just a minimum.
	    <p>
	    Compilation problems with newer or different C/C++ compilers is a
	    common problem.
	    Similarly, compilation problems related to changes to the
	    <tt>/usr/include</tt> or system header files is also a
	    common problem with newer or unreleased OS versions.
	    Please report these types of problems as bugs so that they
	    can be dealt with accordingly.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="SDBE">Specific Developer Build Environments</a></h2>
        <blockquote>
            We won't be listing all the possible environments, but
            we will try to provide what information we have available to us.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h3><a name="fedora">Fedora 9</a></h3>
        <blockquote>
            After installing
            <a href="http://www.fedoraproject.org/">Fedora 9</a>
            you need to make sure you have
            the "Software Development" bundle installed, plus the
            following packages:
            <blockquote>
                <ul>
                    <li>cups devel: Cups Development Package</li>
                    <li>freetype 2.3+ devel: Freetype 2.3 Development Package</li>
                    <li>hg: Mercurial, if you need to clone or manage source repositories</li>
                    <li>ksh: May be needed when using <tt>webrev</tt></li>
                </ul>
            </blockquote>
            <p>
            Always a good idea to do a complete Software Update/Refresh
            after you get all the packages installed.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h3><a name="centos">CentOS 5.2</a></h3>
        <blockquote>
            After installing
            <a href="http://www.centos.org/">CentOS 5.2</a>
            you need to make sure you have
            the following Development bundles installed:
            <blockquote>
                <ul>
                    <li>Development Libraries</li>
                    <li>Development Tools</li>
                    <li>Java Development</li>
                    <li>X Software Development</li>
                </ul>
            </blockquote>
            <p>
            Plus the following packages:
            <blockquote>
                <ul>
                    <li>cups devel: Cups Development Package</li>
                    <li>alsa devel: Alsa Development Package</li>
                    <li>ant: Ant Package</li>
                    <li>Xi devel: libXi.so Development Package</li>
                </ul>
            </blockquote>
            <p>
            The freetype 2.3 packages don't seem to be available,
            but the freetype 2.3 sources can be downloaded, built,
            and installed easily enough from
            <a href="http://downloads.sourceforge.net/freetype">
            the freetype site</a>.
            Build and install with something like:
            <blockquote>
                <tt>./configure && make && sudo -u root make install</tt>
            </blockquote>
            <p>
            Mercurial packages could not be found easily, but a Google
            search should find ones, and they usually include Python if
            it's needed.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h3><a name="ubuntu">Ubuntu</a></h3>
        <blockquote>
            In addition to needing the Bootstrap JDK and the Binary Plugs, 
            when building on Ubuntu you will need to
            make sure certain packages are installed.
            In particular, certain X11 packages, make, m4, gawk, gcc 4, 
            binutils, cups, freetype
            and alsa.
            <!-- ------------------------------------------------------ -->
            <h4>Ubuntu 6.06</h4>
            <p>
            The following list of packages for Ubuntu 6.06 is a working set that
            does appear to work. 
            <p>
            <b>Note that it's quite possible that some of these
                packages are not required, so anyone discovering that some of the
                packages listed below are NOT required,
                please let the
                OpenJDK
            team know.</b>
            <p>
            All the packages below can be installed with the
            Synaptic Package manager provided with the base Ubuntu 6.06 release.
            <blockquote>
                <ul>
                    <li>binutils (2.16.1cvs20060117-1ubuntu2.1)</li>
                    <li>cpp (4:4.0.3-1)</li>
                    <li>cpp-4.0 (4.0.3-1ubuntu5)</li>
                    <li>libfreetype6-dev</li>
                    <li>g++ (4:4.0.3-1)</li>
                    <li>g++-4.0 (4.0.3-1ubuntu5)</li>
                    <li>gawk (1:3.1.5-2build1)</li>
                    <li>gcc (4:4.0.3-1)</li>
                    <li>gcc-4.0 (4.0.3-1ubuntu5)</li>
                    <li>libasound2-dev (1.0.10-2ubuntu4)</li>
                    <li>libc6 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
                    <li>libc6-dev (2.3.6-0ubuntu20.4)</li>
                    <li>libc6-i686 (2.3.6-0ubuntu20) to 2.3.6-0ubuntu20.4</li>
                    <li>libcupsys2-dev (1.2.2-0ubuntu0.6.06)</li>
                    <li>libgcrypt11-dev (1.2.2-1)</li>
                    <li>libgnutls-dev (1.2.9-2ubuntu1.1)</li>
                    <li>libgnutls12 (1.2.9-2ubuntu1) to 1.2.9-2ubuntu1.1</li>
                    <li>libgpg-error-dev (1.1-4)</li>
                    <li>libice-dev (2:1.0.0-0ubuntu2)</li>
                    <li>liblockfile1 (1.06.1)</li>
                    <li>libopencdk8-dev (0.5.7-2)</li>
                    <li>libpopt-dev (1.7-5)</li>
                    <li>libsm-dev (2:1.0.0-0ubuntu2)</li>
                    <li>libstdc++6-4.0-dev (4.0.3-1ubuntu5)</li>
                    <li>libtasn1-2-dev (0.2.17-1ubuntu1)</li>
                    <li>libx11-dev (2:1.0.0-0ubuntu9)</li>
                    <li>libxau-dev (1:1.0.0-0ubuntu4)</li>
                    <li>libxaw-headers (2:1.0.1-0ubuntu3)</li>
                    <li>libxaw7-dev (2:1.0.1-0ubuntu3)</li>
                    <li>libxdmcp-dev (1:1.0.0-0ubuntu2)</li>
                    <li>libxext-dev (2:1.0.0-0ubuntu4)</li>
                    <li>libxi-dev (2:1.0.0-0ubuntu3) </li>
                    <li>libxmu-dev (2:1.0.0-0ubuntu3)</li>
                    <li>libxmu-headers (2:1.0.0-0ubuntu3)</li>
                    <li>libxmuu-dev (2:1.0.0-0ubuntu3)</li>
                    <li>libxp-dev (6.8.2-11ubuntu2)</li>
                    <li>libxpm-dev (1:3.5.4.2-0ubuntu3)</li>
                    <li>libxrandr-dev (1:1.1.0.2-0ubuntu4)</li>
                    <li>libxt-dev (1:1.0.0-0ubuntu3)</li>
                    <li>libxtrap-dev (2:1.0.0-0ubuntu2)</li>
                    <li>libxtst-dev (2:1.0.1-0ubuntu2)</li>
                    <li>libxv-dev (2:1.0.1-0ubuntu3)</li>
                    <li>linux-kernel-headers (2.6.11.2-0ubuntu18)</li>
                    <li>m4 (1.4.4-1)</li>
                    <li>make (3.80+3.81.b4-1)</li>
                    <li>ssl-cert (1.0.13)</li>
                    <li>x-dev (7.0.4-0ubuntu2)</li>
                    <li>x11proto-core-dev (7.0.4-0ubuntu2)</li>
                    <li>x11proto-input-dev (1.3.2-0ubuntu2)</li>
                    <li>x11proto-kb-dev (1.0.2-0ubuntu2)</li>
                    <li>x11proto-randr-dev (1.1.2-0ubuntu2)</li>
                    <li>x11proto-record-dev (1.13.2-0ubuntu2)</li>
                    <li>x11proto-trap-dev (3.4.3-0ubuntu2)</li>
                    <li>x11proto-video-dev (2.2.2-0ubuntu2)</li>
                    <li>x11proto-xext-dev (7.0.2-0ubuntu2)</li>
                    <li>xlibs-dev (7.0.0-0ubuntu45)</li>
                    <li>zlib1g-dev (1:1.2.3-6ubuntu4)</li>
                </ul>
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4>Ubuntu 7.04</h4>
            <p>
            Using the Synaptic Package Manager, download the following
            packages (double indented packages are automatically aquired
            due to package dependencies):
            <blockquote>
                <ul>
                    <li>build-essential</li>
                    <ul>
                        <li>dpkg-dev</li>
                        <li>g++</li>
                        <li>g++-4.1</li>
                        <li>libc6-dev</li>
                        <li>libstdc++6.4.1-dev</li>
                        <li>linux-libc-dev</li>
                    </ul>
                    <li>gawk</li>
                    <li>m4</li>
                    <li>libasound2-dev</li>
                    <li>libcupsys2-dev</li>
                    <ul>
                        <li>libgcrypt11-dev</li>
                        <li>lgnutls-dev</li>
                        <li>libgpg-error-dev</li>
                        <li>liblzo-dev</li>
                        <li>libopencdk8-dev</li>
                        <li>libpopt-dev</li>
                        <li>libtasn1-3-dev</li>
                        <li>zlib1g-dev</li>
                    </ul>
                    <li>sun-java6-jdk</li>
                    <ul>
                        <li>java-common</li>
                        <li>libltdl3</li>
                        <li>odbcinst1debian1</li>
                        <li>sun-java6-bin</li>
                        <li>sun-java6-jre</li>
                        <li>unixodbc</li>
                    </ul>
                    <li>xlibs-dev</li>
                    <ul>
                        <li>(many)</li>
                    </ul>
                    <li>x11proto-print-dev</li>
                    <li>libxaw7-dev</li>
                    <ul>
                        <li>libxaw-headers</li>
                    </ul>
                    <li>libxp-dev</li>
                    <li>libfreetype6-dev</li>
                </ul>
            </blockquote>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="directories">Source Directory Structure</a></h2>
        <blockquote>
            <p>
            The source code for the OpenJDK is delivered in a set of
            directories:
            <tt>hotspot</tt>, 
            <tt>langtools</tt>, 
            <tt>corba</tt>, 
            <tt>jaxws</tt>, 
            <tt>jaxp</tt>, 
            and
            <tt>jdk</tt>.
            The <tt>hotspot</tt> directory contains the source code and make
            files for building the OpenJDK Hotspot Virtual Machine. 
            The <tt>langtools</tt> directory contains the source code and make
            files for building the OpenJDK javac and language tools.
            The <tt>corba</tt> directory contains the source code and make
            files for building the OpenJDK Corba files.
            The <tt>jaxws</tt> directory contains the source code and make
            files for building the OpenJDK JAXWS files.
            The <tt>jaxp</tt> directory contains the source code and make
            files for building the OpenJDK JAXP files.
            The <tt>jdk</tt> directory contains the source code and make files for
            building the OpenJDK runtime libraries and misc files.
            The top level <tt>Makefile</tt>
            is used to build the entire OpenJDK.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="building">Build Information</a></h2>
        <blockquote>
            Building the OpenJDK
            is done with a <tt><i>gmake</i></tt>
            command line and various
            environment or make variable settings that direct the make rules
            to where various components have been installed.
            Where possible the makefiles will attempt to located the various
            components in the default locations or any component specific 
            variable settings.
            When the normal defaults fail or components cannot be found,
            the various
            <tt>ALT_*</tt> variables (alternates)
            can be used to help the makefiles locate components.
            <p>
            Refer to the bash/sh/ksh setup file
            <tt>jdk/make/jdk_generic_profile.sh</tt>
            if you need help in setting up your environment variables.
            A build could be as simple as:
            <blockquote>
                <pre><tt>
                bash
                . jdk/make/jdk_generic_profile.sh
                <i>gmake</i> sanity &amp;&amp; <i>gmake</i>
                </tt></pre>
            </blockquote>
            <p>
            Of course ksh or sh would work too.
            But some customization will probably be necessary.
            The <tt>sanity</tt> rule will make some basic checks on build
            dependencies and generate appropriate warning messages
            regarding missing, out of date, or newer than expected components
            found on your system.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
        <blockquote>
            The Makefiles in the OpenJDK are only valid when used with the 
            GNU version of the utility command <tt>make</tt>
            (<tt><i>gmake</i></tt>).
            A few notes about using GNU make:
            <ul>
                <li>
                    In general, you need GNU make version 3.78.1 or newer.
                </li>
                <li>
                    Place the location of the GNU make binary in the <tt>PATH</tt>. 
                </li>
                <li>
                    <strong>Linux:</strong>
                    The <tt>/usr/bin/make</tt> command should work fine for you.
                </li>
                <li>
                    <strong>Solaris:</strong>
                    Do NOT use <tt>/usr/bin/make</tt> on Solaris.
                    If your Solaris system has the software
                    from the Solaris Companion CD installed, 
                    you should use <tt>gmake</tt>
                    which will be located in either the <tt>/opt/sfw/bin</tt> or 
                    <tt>/usr/sfw/bin</tt> directory.
                    In more recent versions of Solaris GNU make can be found
                    at <tt>/usr/bin/gmake</tt>. 
                </li>
                <li>
                    <strong>Windows:</strong>
                    Make sure you start your build inside a bash/sh/ksh shell.
                    <br>
                    <b>WARNING:</b> Watch out for make version 3.81, it may
                    not work due to a lack of support for MS-DOS drive letter paths
                    like <tt>C:/</tt> or <tt>C:\</tt>.
                    Use a 3.80 version, or find a newer
                    version that has this problem fixed.
                    The older 3.80 version of make.exe can be downloaded with this
                    <a href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2" target="_blank">
                    link</a>.
                    Use of this older 3.80 make.exe may require that you install the
                    libintl2.dll library or libintl2 cygwin package which is
                    no longer installed by default by the cygwin installer.
                    <br>
                    Also see the
                    <a href="http://developer.mozilla.org/en/docs/Windows_build_prerequisites_using_cygwin#make" target="_blank">
                    mozilla developer center</a>
                    on this topic.
                    <br>
                    It's hoped that when make 3.82 starts shipping in a future cygwin
                    release that this MS-DOS path issue will be fixed.
                    In addition to the above 3.80 make.exe you can download 
                    this
                    <a href="http://www.cmake.org/files/cygwin/make.exe">
                    www.cmake.org make.exe</a> which will not have a libintl2.dll
                    dependency.
                </li>
            </ul>
            <p>
            Information on GNU make, and access to ftp download sites, are
            available on the
            <a href="http://www.gnu.org/software/make/make.html" target="_blank">
                GNU make web site
            </a>.
            The latest source to GNU make is available at
            <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
            ftp.gnu.org/pub/gnu/make/</a>.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h3><a name="linux">Basic Linux System Setup</a></h3>
        <blockquote>
            <strong>i586 only:</strong>
            The minimum recommended hardware for building the Linux version
            is a Pentium class processor or better, at least 256 MB of RAM, and
            approximately 1.5 GB of free disk space.
            <p> 
            <strong>X64 only:</strong>
            The minimum recommended hardware for building the Linux
            version is an AMD Opteron class processor, at least 512 MB of RAM, and
            approximately 4 GB of free disk space.
            <p> 
            The build will use the tools contained in 
            <tt>/bin</tt> and 
            <tt>/usr/bin</tt>
            of a standard installation of the Linux operating environment. 
            You should ensure that these directories are in your 
            <tt>PATH</tt>.
            <p>
            Note that some Linux systems have a habit of pre-populating
            your environment variables for you, for example <tt>JAVA_HOME</tt>
            might get pre-defined for you to refer to the JDK installed on
            your Linux system. 
            You will need to unset <tt>JAVA_HOME</tt>.
            It's a good idea to run <tt>env</tt> and verify the
            environment variables you are getting from the default system
            settings make sense for building the 
            OpenJDK.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
        <blockquote>
            <ol>
                <li>
                    Install the
                    <a href="#bootjdk">Bootstrap JDK</a>, set
                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
                </li>
                <li>
                    Install the
                    <a href="#binaryplugs">Binary Plugs</a>, set
                    <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
                </li>
                <li>
                    <a href="#importjdk">Optional Import JDK</a>, set
                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                </li>
                <li>
                    Install or upgrade the <a href="#freetype">FreeType development
                    package</a>.
                </li>
                <li>
                    Install
                    <a href="#ant">Ant</a>, 
                    make sure it is in your PATH.
                </li>
            </ol>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h3><a name="solaris">Basic Solaris System Setup</a></h3>
        <blockquote>
            The minimum recommended hardware for building the
            Solaris SPARC version is an UltraSPARC with 512 MB of RAM. 
            For building
            the Solaris x86 version, a Pentium class processor or better and at
            least 512 MB of RAM are recommended. 
            Approximately 1.4 GB of free disk
            space is needed for a 32-bit build.
            <p>
            If you are building the 64-bit version, you should
            run the command "isainfo -v" to verify that you have a
            64-bit installation, it should say <tt>sparcv9</tt> or
            <tt>amd64</tt>.
            An additional 7 GB of free disk space is needed
            for a 64-bit build.
            <p> 
            The build uses the tools contained in <tt>/usr/ccs/bin</tt>
            and <tt>/usr/bin</tt> of a standard developer or full installation of
            the Solaris operating environment.
            <p> 
            Solaris patches specific to the JDK can be downloaded from the 
            <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
            SunSolve JDK Solaris patches download page</a>.
            You should ensure that the latest patch cluster for
            your version of the Solaris operating environment has also
            been installed.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
        <blockquote>
            <ol>
                <li>
                    Install the
                    <a href="#bootjdk">Bootstrap JDK</a>, set
                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
                </li>
                <li>
                    Install the
                    <a href="#binaryplugs">Binary Plugs</a>, set
                    <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>.
                </li>
                <li>
                    <a href="#importjdk">Optional Import JDK</a>, set
                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                </li>
                <li>
                    Install the
                    <a href="#studio">Sun Studio Compilers</a>, set
                    <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
                </li>
                <li>
                    Install the
                    <a href="#cups">CUPS Include files</a>, set
                    <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
                </li>
                <li>
                    Install
                    <a href="#ant">Ant</a>, 
                    make sure it is in your PATH.
                </li>
            </ol>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h3><a name="windows">Basic Windows System Setup</a></h3>
        <blockquote> 
            <strong>i586 only:</strong>
            The minimum recommended hardware for building the 32-bit or X86
            Windows version is an Pentium class processor or better, at least
            512 MB of RAM, and approximately 600 MB of free disk space.
            <strong>
                NOTE: The Windows build machines need to use the
                file system NTFS. 
                Build machines formatted to FAT32 will not work 
                because FAT32 doesn't support case-sensitivity in file names.
            </strong>
            <p> 
            <strong>X64 only:</strong>
            The minimum recommended hardware for building
            the Windows X64 version is an AMD Opteron class processor, at least 1
            GB of RAM, and approximately 10 GB of free disk space.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h4><a name="paths">Windows Paths</a></h4>
        <blockquote>
            <strong>Windows:</strong>
            Note that GNU make is a historic utility and is based very
            heavily on shell scripting, so it does not tolerate the Windows habit
            of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
            Luckily on most Windows systems, you can use <tt>/</tt>instead of \, and
            there is always a 'short' pathname without spaces for any path that 
            contains spaces.
            Unfortunately, this short pathname can be somewhat dynamic and the
            formula is difficult to explain.
            You can use <tt>cygpath</tt> utility to map pathnames with spaces
            or the <tt>\</tt>character into the <tt>C:/</tt> style of pathname
            (called 'mixed'), e.g.
            <tt>cygpath -s -m "<i>path</i>"</tt>.
            <p>
            The makefiles will try to translate any pathnames supplied
            to it into the <tt>C:/</tt> style automatically.
            <p>
            Note that use of CYGWIN creates a unique problem with regards to
            setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
            the <tt>PATH</tt> variable contains directories
            separated with the ";" character (Solaris and Linux uses ":").
            With CYGWIN, it uses ":", but that means that paths like "C:/path"
            cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
            instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
            which CYGWIN understands, but only CYGWIN understands.
            So be careful with paths on Windows.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
        <blockquote>
            <ol>
                <li>
                    Install the
                    <a href="#cygwin">CYGWIN product</a>. 
                </li>
                <li>
                    Install the 
                    <a href="#bootjdk">Bootstrap JDK</a>, set
                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
                </li>
                <li>
                    Install the
                    <a href="#binaryplugs">Binary Plugs</a>, set
                    <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>..
                </li>
                <li>
                    <a href="#importjdk">Optional Import JDK</a>, set
                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
                </li>
                <li>
                    Install the
                    <a href="#msvc">Microsoft Visual Studio Compilers</a> (32-bit).
                </li>
                <li>
                    Install the
                    <a href="#mssdk">Microsoft Platform SDK</a>.
                </li>
                <li>
                    Setup all environment variables for compilers 
                    (see <a href="#msvc">compilers</a>).
                </li>
                <li>
                    Install 
                    <a href="#dxsdk">Microsoft DirectX SDK</a>.
                </li>
                <li>
                    Install
                    <a href="#ant">Ant</a>, 
                    make sure it is in your PATH and set
                    <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
                </li>
            </ol>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h3><a name="dependencies">Build Dependencies</a></h3>
        <blockquote>
            Depending on the platform, the OpenJDK build process has some basic
            dependencies on components not part of the OpenJDK sources.
            Some of these are specific to a platform, some even specific to
            an architecture.
            Each dependency will have a set of ALT variables that can be set
            to tell the makefiles where to locate the component.
            In most cases setting these ALT variables may not be necessary
            and the makefiles will find defaults on the system in standard
            install locations or through component specific variables.
            <!-- ------------------------------------------------------ -->
            <h4><a name="bootjdk">Bootstrap JDK</a></h4>
            <blockquote>
                All OpenJDK builds require access to the previously released 
                JDK 6, this is often called a bootstrap JDK.
                The JDK 6 binaries can be downloaded from Sun's 
                <a href="http://java.sun.com/javase/1.6.0/download.html" target="_blank">JDK 6 download site</a>.
                For build performance reasons
                is very important that this bootstrap JDK be made available on the
                local disk of the machine doing the build.
                You should always set 
                <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
                to point to the location of
                the bootstrap JDK installation, this is the directory pathname
                that contains a <tt>bin, lib, and include</tt>
                It's also a good idea to also place its <tt>bin</tt> directory
                in the <tt>PATH</tt> environment variable, although it's
                not required.
                <p>
                <strong>Solaris:</strong>
                Some pre-installed JDK images may be available to you in the
                directory <tt>/usr/jdk/instances</tt>.
                If you don't set
                <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
                the makefiles will look in that location for a JDK it can use.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="binaryplugs">Binary Plugs</a></h4>
            <blockquote>
                Not all of the source code that makes up the JDK is available
                under an open-source license.
                This is a temporary situation and these binary plugs will be
                replaced with fully open source replacements as soon as possible.
                So currently, in order to build a complete OpenJDK image,
                you must first download and install the appropriate
                binary plug bundles for the OpenJDK, go to the
                <a href="http://openjdk.java.net" target="_blank">OpenJDK</a> site and select
                the 
                "<b>Bundles(7)</b>"
                link and download the binaryplugs for
                your particular platform.
                The file downloaded is a jar file that must be extracted by running
                the jar file with:
                <blockquote>
                    <pre>
            <tt><b>java -jar jdk-7-ea-plug-b<i>nn</i>-<i>os</i>-<i>arch</i>-<i>dd</i>_<i>month</i>_<i>year</i>.jar</b></tt>
                    </pre>
                </blockquote>
                A prompt will be issued for acceptance of these binary plug files.
                During the OpenJDK build process these "binary plugs"
                for the encumbered components will be copied into your
                resulting OpenJDK binary build image.
                These binary plug files are only for the purpose of
                building an OpenJDK binary.
                Make sure you set
                <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
                to the root of this installation.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="importjdk">Optional Import JDK</a></h4>
            <blockquote>
                The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
                setting is only needed if you are not building the entire
                JDK. For example, if you have built the entire JDK once, and
                wanted to avoid repeatedly building the Hotspot VM, you could
                set this to the location of the previous JDK install image
                and the build will copy the needed files from this import area.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="ant">Ant</a></h4>
            <blockquote>
                All OpenJDK builds require access to least Ant 1.6.5.
                The Ant tool is available from the 
                <a href="http://ant.apache.org" target="_blank">
                Ant download site</a>.
                You should always make sure <tt>ant</tt> is in your PATH, and
                on Windows you may also need to set 
                <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
                to point to the location of
                the Ant installation, this is the directory pathname
                that contains a <tt>bin and lib</tt>.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
            <blockquote>
                See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
                http://en.wikipedia.org/wiki/Certificate_Authority</a>
                for a better understanding of the Certificate Authority (CA).
                A certificates file named "cacerts"
                represents a system-wide keystore with CA certificates. 
                In JDK and JRE
                binary bundles, the "cacerts" file contains root CA certificates from
                several public CAs (e.g., VeriSign, Thawte, and Baltimore).
                The source contain a cacerts file
                without CA root certificates. 
                Formal JDK builders will need to secure
                permission from each public CA and include the certificates into their
                own custom cacerts file. 
                Failure to provide a populated cacerts file
                will result in verification errors of a certificate chain during runtime.
                The variable 
                <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
                can be used to override the default location of the
                cacerts file that will get placed in your build.
                By default an empty cacerts file is provided and that should be
                fine for most JDK developers.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="compilers">Compilers</a></h4>
            <blockquote>
                <strong><a name="gcc">Linux gcc/binutils</a></strong>
                <blockquote>
                    The GNU gcc compiler version should be 4 or newer.
                    The compiler used should be the default compiler installed
                    in <tt>/usr/bin</tt>.
                </blockquote>
                <strong><a name="studio">Solaris: Sun Studio</a></strong>
                <blockquote>
                    At a minimum, the
                    <a href="http://developers.sun.com/sunstudio/index.jsp" target="_blank">
                    Sun Studio 12 Compilers</a>
                    (containing version 5.9 of the C and C++ compilers) is required,
                    with patches from the
                    <a href="http://sunsolve.sun.com/pub-cgi/show.pl?target=patches/patch-access" target="_blank">
                    SunSolve web site</a>.
                    <p> 
                    Set 
                    <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
                    to point to the location of
                    the compiler binaries, and place this location in the <tt>PATH</tt>.
                    <p>
                    The Sun Studio Express compilers at:
                    <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
                    Sun Studio Express Download site</a>
                    are also an option, although these compilers have not
                    been extensively used yet.
                </blockquote>
                <strong><a name="msvc">Windows i586: Microsoft Visual Studio Compilers</a></strong>
                <blockquote>
                    The 32-bit OpenJDK Windows build
                    requires 
                    Microsoft Visual Studio C++ 2008 (VS2008) Standard
                    Edition compiler. 
                    The compiler and other tools are expected to reside
                    in the location defined by the variable 
                    <tt>VS90COMNTOOLS</tt> which
                    is set by the Microsoft Visual Studio installer.
                    <p> 
                    Once the compiler is installed, 
                    it is recommended that you run <tt>VCVARS32.BAT</tt> 
                    to set the compiler environment variables
                    <tt>INCLUDE</tt>,
                    <tt>LIB</tt>, and
                    <tt>PATH</tt> 
                    prior to building the 
                    OpenJDK.
                    The above environment variables <b>MUST</b> be set.
                    <p>
                    <b>WARNING:</b> Make sure you check out the
                    <a href="#cygwin">CYGWIN link.exe WARNING</a>.
                    The path <tt>/usr/bin</tt> must be after the path to the
                    Visual Studio product.
                </blockquote>
                <strong><a name="mssdk">Windows: Microsoft Platform SDK</a></strong>
                <blockquote>
                    On <b>X64</b>, the Microsoft Platform Software
                    Development Kit (SDK), April 2005 Edition compiler,
                    is required for building the OpenJDK
                    because it contains the C/C++ compiler. 
                    You will need to minimally install the Core SDK and
                    the MDAC SDK features of this compiler.
                    <p>
                    Once the Platform SDK is installed,
                    it is recommended that you run <tt>SetEnv.Cmd /X64</tt> 
                    to set the compiler environment variables
                    <tt>MSSDK</tt>, 
                    <tt>MSTOOLS</tt>,
                    <tt>INCLUDE</tt>,
                    <tt>LIB</tt>, and
                    <tt>PATH</tt> 
                    prior to building the 
                    OpenJDK.
                    The above environment variables <b>MUST</b> be set.
                    <p>
                    This Platform SDK compiler is only used on X64 builds
                    but other parts of the Platform SDK may be used 
                    for the X86 builds.
                </blockquote>
            </blockquote>
            <!-- ------------------------------------------------------ --> 
            <h4><a name="zip">Zip and Unzip</a></h4>
            <blockquote>
                Version 2.2 (November 3rd 1997) or newer of the zip utility 
                and version 5.12 or newer of the unzip utility is needed 
                to build the JDK.
                With Solaris, Linux, and Windows CYGWIN, the zip and unzip
                utilities installed on the system should be fine.
                Information and the source code for
                ZIP.EXE and UNZIP.EXE is available on the
                <a href="http://www.info-zip.org" 
                   target="_blank">info-zip web site</a>.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris &amp; Linux)</a></h4>
            <blockquote>
                <strong>Solaris:</strong>
                CUPS header files are required for building the 
                OpenJDK on Solaris.
                The Solaris header files can be obtained by installing 
                the package <strong>SFWcups</strong> from the Solaris Software
                Companion CD/DVD, these often will be installed into 
                <tt>/opt/sfw/cups</tt>.
                <p>
                <strong>Linux:</strong>
                CUPS header files are required for building the 
                OpenJDK on Linux.
                The Linux header files are usually available from a "cups"
                development package, it's recommended that you try and use
                the package provided by the particular version of Linux that
                you are using.
                <p>
                The CUPS header files can always be downloaded from 
                <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
                The variable 
                <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
                can be used to override the default location of the
                CUPS Header files.
            </blockquote>
            <!-- ------------------------------------------------------ -->
            <h4><a name="freetype">FreeType 2</a></h4>
            <blockquote>
                Version 2.3 or newer of FreeType is required for building the OpenJDK.
                On Unix systems required files can be available as part of your
                distribution (while you still may need to upgrade them).
                Note that you need development version of package that 
                includes both FreeType library and header files.
                <p>
                You can always download latest FreeType version from the
                <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
                <p>
                Makefiles will try to pick FreeType from /usr/lib and /usr/include.
                In case it is installed elsewhere you will need to set environment
                variables 
                <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
                and 
                <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
                to refer to place where library and header files are installed.
                <p>
                Building the freetype 2 libraries from scratch is also possible,
                however on Windows refer to the
                <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
                Windows FreeType DLL build instructions</a>.
                <p>
                Note that by default FreeType is built with byte code hinting
                support disabled due to licensing restrictions.
                In this case, text appearance and metrics are expected to
                differ from Sun's official JDK build.
                See
                <a href="http://freetype.sourceforge.net/freetype2/index.html">
                    the SourceForge FreeType2 Home Page
                </a>
                for more information.
            </blockquote>    
            <!-- ------------------------------------------------------ -->
            <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
            <blockquote>
                <strong>Linux only:</strong>
                Version 0.9.1 or newer of the ALSA files are
                required for building the OpenJDK on Linux.
                These Linux files are usually available from an "alsa"
                of "libasound"
                development package, it's highly recommended that you try and use
                the package provided by the particular version of Linux that
                you are using.
                The makefiles will check this emit a sanity error if it is
                missing or the wrong version.
                <p>
                In particular, older Linux systems will likely not have the
                right version of ALSA installed, for example
                Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently 
                recent ALSA distribution.
                On rpm-based systems, you can see if ALSA is installed by 
                running this command:
                <pre>
                    <tt>rpm -qa | grep alsa</tt>
                </pre>
                Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
                <p> 
                If your distribution does not come with ALSA, and you can't
                find ALSA packages built for your particular system,
                you can try to install the pre-built ALSA rpm packages from
                <a href="http://www.freshrpms.net/" target="_blank">
                <tt>www.freshrpms.net</tt></a>. 
                Note that installing a newer ALSA could
                break sound output if an older version of ALSA was previously
                installed on the system, but it will enable JDK compilation.
                <blockquote>
                    Installation: execute as root<br>
                    [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
                    [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br>
                    Uninstallation:<br>
                    [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br>
                    [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br>
                    Make sure that you do not link to the static library
                    (<tt>libasound.a</tt>),
                    by verifying that the dynamic library (<tt>libasound.so</tt>) is
                    correctly installed in <tt>/usr/lib</tt>.
                </blockquote>
                As a last resort you can go to the
                <a href="http://www.alsa-project.org" target="_blank">
                Advanced Linux Sound Architecture Site</a> and build it from
                source.
                <blockquote>
                    Download driver and library
                    source tarballs from 
                    <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>. 
                    As root, execute the following
                    commands (you may need to adapt the version number):
                    <pre>
                        <tt>
                            $ tar xjf alsa-driver-0.9.1.tar.bz2
                            $ cd alsa-driver-0.9.1
                            $ ./configure
                            $ make install
                            $ cd ..
                            $ tar xjf alsa-lib-0.9.1.tar.bz2
                            $ cd alsa-lib-0.9.1
                            $ ./configure
                            $ make install
                        </tt>
                    </pre>
                    Should one of the above steps fail, refer to the documentation on
                    ALSA's home page.
                </blockquote>
                Note that this is a minimum install that enables
                building the JDK platform. To actually use ALSA sound drivers, more
                steps are necessary as outlined in the documentation on ALSA's homepage.
                <p>
                ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
                the <tt>alsa-lib-0.9.1</tt> directory and then in 
                <tt>alsa-driver-0.9.1</tt>.
            </blockquote>
            There are no ALT* variables to change the assumed locations of ALSA,
            the makefiles will expect to find the ALSA include files and library at:
            <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <h4>Windows Specific Dependencies</h4>
        <blockquote>
            <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
            <blockquote> 
                The OpenJDK requires access to a set of unix command tools
                on Windows which can be supplied by 
                <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>. 
                <p>
                The OpenJDK build requires CYGWIN version 1.5.12 or newer. 
                Information about CYGWIN can
                be obtained from the CYGWIN website at 
                <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>. 
                <p>
                By default CYGWIN doesn't install all the tools required for building
                the OpenJDK.
                Along with the default installation, you need to install
                the following tools.
                <blockquote>
                    <table border="1">
                        <thead>
                            <tr>
                                <td>Binary Name</td>
                                <td>Category</td>
                                <td>Package</td>
                                <td>Description</td>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>ar.exe</td>
                                <td>Devel</td>
                                <td>binutils</td>
                                <td>The GNU assembler, linker and binary
                                utilities</td>
                            </tr>
                            <tr>
                                <td>make.exe</td>
                                <td>Devel</td>
                                <td>make</td>
                                <td>The GNU version of the 'make' utility built for CYGWIN.<br>
                                <b>NOTE</b>: See <a href="#gmake">the GNU make section</a></td>
                            </tr>
                            <tr>
                                <td>m4.exe</td>
                                <td>Interpreters</td>
                                <td>m4</td>
                                <td>GNU implementation of the traditional Unix macro
                                processor</td>
                            </tr>
                            <tr>
                                <td>cpio.exe</td>
                                <td>Utils</td>
                                <td>cpio</td>
                                <td>A program to manage archives of files</td>
                            </tr>
                            <tr>
                                <td>gawk.exe</td>
                                <td>Utils</td>
                                <td>awk</td>
                                <td>Pattern-directed scanning and processing language</td>
                            </tr>
                            <tr>
                                <td>file.exe</td>
                                <td>Utils</td>
                                <td>file</td>
                                <td>Determines file type using 'magic' numbers</td>
                            </tr>
                            <tr>
                                <td>zip.exe</td>
                                <td>Archive</td>
                                <td>zip</td>
                                <td>Package and compress (archive) files</td>
                            </tr>
                            <tr>
                                <td>unzip.exe</td>
                                <td>Archive</td>
                                <td>unzip</td>
                                <td>Extract compressed files in a ZIP archive</td>
                            </tr>
                            <tr>
                                <td>free.exe</td>
                                <td>System</td>
                                <td>procps</td>
                                <td>Display amount of free and used memory in the system</td>
                            </tr>
                        </tbody>
                    </table>
                </blockquote>
                <p>
                Note that the CYGWIN software can conflict with other non-CYGWIN
                software on your Windows system.
                CYGWIN provides a
                <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
                known issues and problems, of particular interest is the
                section on
                <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
                BLODA (applications that interfere with CYGWIN)</a>.
                <p>
                <b>WARNING:</b>
                Be very careful with <b><tt>link.exe</tt></b>, it will conflict
                with the Visual Studio version. You need the Visual Studio
                version of <tt>link.exe</tt>, not the CYGWIN one.
                So it's important that the Visual Studio paths in PATH preceed
                the CYGWIN path <tt>/usr/bin</tt>.
            </blockquote>
            <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
            <blockquote>
                Microsoft DirectX 9.0 SDK (Summer 2004)
                headers are required for building
                OpenJDK.
                This SDK can be downloaded from 
                <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
                Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
                If the link above becomes obsolete, the SDK can be found from 
                <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
                (search with "DirectX 9.0 SDK Update Summer 2004"). 
                The location of this SDK can be set with 
                <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
                but it's normally found via the DirectX environment variable
                <tt>DXSDK_DIR</tt>.
            </blockquote>
            <strong><a name="msvcrt"><tt>MSVCRT.DLL</tt></a></strong>
            <blockquote> 
                <strong>i586 only:</strong>
                The OpenJDK 32-bit build requires access to a redistributable
                <tt>MSVCRT.DLL</tt>.
                If the <tt>MSVCRT.DLL</tt> is not installed in 
                the system32 directory set the 
                <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
                variable to the location of this file.
                <p> 
                <strong>X64 only:</strong>
                The OpenJDK 64-bit build requires access to a redistributable
                <tt>MSVCRT.DLL</tt>, which is
                usually supplied by the
                <a href="#mssdk">Platform SDK</a>.
                If it is not available from the Platform SDK,
                set the 
                <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
                variable to the location of this file.
            </blockquote>
            <strong><tt><a name="msvcr90">MSVCR90.DLL</a></tt></strong>
            <blockquote>
                <strong>i586 only:</strong>
                The 
                OpenJDK
                build requires access to a redistributable
                <tt>MSVCR90.DLL</tt> which should be
                supplied by the
                <a href="#msvc">Visual Studio product</a>.
                If the <tt>MSVCR90.DLL</tt> is not available from the
                Visual Studio product
                set the 
                <a href="#ALT_MSVCR90_DLL_PATH"><tt>ALT_MSVCR90_DLL_PATH</tt></a>
                variable to the location of this file.
            </blockquote>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="creating">Creating the Build</a></h2>
        <blockquote>
            Once a machine is setup to build the OpenJDK,
            the steps to create the build are fairly simple.
            The various ALT settings can either be made into  variables
            or can be supplied on the 
            <a href="#gmake"><tt><i>gmake</i></tt></a> 
            command.
            <ol>
                <li>Use the sanity rule to double check all the ALT settings:
                    <blockquote>
                        <tt>
                            <i>gmake</i> 
                            sanity
                            [ARCH_DATA_MODEL=<i>32 or 64</i>]
                            [other "ALT_" overrides]
                        </tt>
                    </blockquote>
                </li>
                <li>Start the build with the command:
                    <blockquote>
                        <tt>
                            <i>gmake</i> 
                            [ARCH_DATA_MODEL=<i>32 or 64</i>]
                            [ALT_OUTPUTDIR=<i>output_directory</i>] 
                            [other "ALT_" overrides] 
                        </tt>
                    </blockquote>
                </li>
            </ol>
            <p>
            <strong>Solaris:</strong>
            Note that ARCH_DATA_MODEL is really only needed on Solaris to
            indicate you want to built the 64-bit version.
            And before the Solaris 64-bit binaries can be used, they
            must be merged with the binaries from a separate 32-bit build. 
            The merged binaries may then be used in either 32-bit or 64-bit mode, with
            the selection occurring at runtime 
            with the <tt>-d32</tt> or <tt>-d64</tt> options. 
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="testing">Testing the Build</a></h2>
        <blockquote>
            When the build is completed, you should see the generated
            binaries and associated files in the <tt>j2sdk-image</tt> 
            directory in the output directory. 
            The default output directory is
            <tt>build/<i>platform</i></tt>,
            where <tt><i>platform</i></tt> is one of
            <tt><ul>
                    <li>solaris-sparc</li>
                    <li>solaris-sparcv9</li>
                    <li>solaris-i586</li>
                    <li>solaris-amd64</li>
                    <li>linux-i586</li>
                    <li>linux-amd64</li>
                    <li>windows-i586</li>
                    <li>windows-amd64</li>
            </ul></tt>
            In particular, the 
            <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
            directory should contain executables for the 
            OpenJDK tools and utilities.
            <p>
            You can test that the build completed properly by using the build
            to run the various demos that you will find in the 
            <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
            directory.
            <p>
            The provided regression tests can be run with the <tt>jtreg</tt>
            utility from 
            <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="variables">Environment/Make Variables</a></h2>
        <p>
        Some of the
        environment or make variables (just called <b>variables</b> in this
        document) that can impact the build are:
        <blockquote>
            <dl>
                <dt><a name="path"><tt>PATH</tt></a> </dt>
                <dd>Typically you want to set the <tt>PATH</tt> to include:
                    <ul>
                        <li>The location of the GNU make binary</li>
                        <li>The location of the Bootstrap JDK <tt>java</tt> 
                        (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
                        <li>The location of the C/C++ compilers 
                        (see <a href="#compilers"><tt>compilers</tt></a>)</li>
                        <li>The location or locations for the Unix command utilities
                        (e.g. <tt>/usr/bin</tt>)</li>
                    </ul>
                </dd>
                <dt><tt>MILESTONE</tt> </dt>
                <dd>
                    The milestone name for the build (<i>e.g.</i>"beta"). 
                    The default value is "internal".
                </dd>
                <dt><tt>BUILD_NUMBER</tt> </dt>
                <dd>
                    The build number for the build (<i>e.g.</i> "b27"). 
                    The default value is "b00".
                </dd>
                <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
                <dd>The <tt>ARCH_DATA_MODEL</tt> variable
                    is used to specify whether the build is to generate 32-bit or 64-bit
                    binaries. 
                    The Solaris build supports either 32-bit or 64-bit builds, but
                    Windows and Linux will support only one, depending on the specific
                    OS being used.
                    Normally, setting this variable is only necessary on Solaris.
                    Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries, 
                    or to <tt>64</tt> for generating 64-bit binaries.
                </dd>
                <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
                <dd>
                    The location of the bootstrap JDK installation. 
                    See <a href="#bootjdk">Bootstrap JDK</a> for more information.
                    You should always install your own local Bootstrap JDK and
                    always set <tt>ALT_BOOTDIR</tt> explicitly.
                </dd>
                <dt><a name="ALT_BINARY_PLUGS_PATH"><tt>ALT_BINARY_PLUGS_PATH</tt></a></dt>
                <dd>
                    The location of the binary plugs installation.
                    See <a href="#binaryplugs">Binary Plugs</a> for more information.
                    You should always have a local copy of a
                    recent Binary Plugs install image
                    and set this variable to that location.
                </dd>
                <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
                <dd>
                    The location of a previously built JDK installation. 
                    See <a href="#importjdk">Optional Import JDK</a> for more information.
                </dd>
                <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
                <dd>
                    An override for specifying the (absolute) path of where the
                    build output is to go.
                    The default output directory will be build/<i>platform</i>.
                </dd>
                <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
                <dd>
                    The location of the C/C++ compiler.
                    The default varies depending on the platform. 
                </dd>
                <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
                <dd>
                    The location of the <a href="#cacerts">cacerts</a> file.
                    The default will refer to 
                    <tt>jdk/src/share/lib/security/cacerts</tt>.
                </dd>
                <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
                <dd>
                    The location of the CUPS header files.
                    See <a href="#cups">CUPS information</a> for more information.
                    If this path does not exist the fallback path is 
                    <tt>/usr/include</tt>.
                </dd>
                <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
                <dd>
                    The location of the FreeType shared library. 
                    See <a href="#freetype">FreeType information</a> for details. 
                </dd>
                <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
                <dd>
                    The location of the FreeType header files.
                    See <a href="#freetype">FreeType information</a> for details. 
                </dd>
                <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
                <dd>
                    The default root location of the devtools.
                    The default value is 
                    <tt>$(ALT_SLASH_JAVA)/devtools</tt>.
                </dd>
                <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
                <dd>
                    The location of tools like the 
                    <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
                    binaries, but might also contain the GNU make utility
                    (<tt><i>gmake</i></tt>).
                    So this area is a bit of a grab bag, especially on Windows.
                    The default value depends on the platform and
                    Unix Commands being used.
                    On Linux the default will be 
                    <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>, 
                    on Solaris
                    <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>, 
                    and on Windows with CYGWIN
                    <tt>/usr/bin</tt>.
                </dd>
                <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
                <dd>
                    <strong>Solaris only:</strong>
                    An override for specifying where the Unix CCS
                    command set are located.
                    The default location is <tt>/usr/ccs/bin</tt> 
                </dd>
                <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt>
                <dd>
                    The default root location for many of the ALT path locations
                    of the following ALT variables.
                    The default value is 
                    <tt>"/java"</tt> on Solaris and Linux, 
                    <tt>"J:"</tt> on Windows.
                </dd>
                <dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
                <dd>
                    These are useful in managing builds on multiple platforms.
                    The default network location for all of the import JDK images
                    for all platforms. 
                    If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
                    is not set, this directory will be used and should contain 
                    the following directories:
                    <tt>solaris-sparc</tt>,
                    <tt>solaris-i586</tt>,
                    <tt>solaris-sparcv9</tt>,
                    <tt>solaris-amd64</tt>,
                    <tt>linux-i586</tt>,
                    <tt>linux-amd64</tt>,
                    <tt>windows-i586</tt>,
                    and
                    <tt>windows-amd64</tt>.
                    Where each of these directories contain the import JDK image
                    for that platform.
                </dd>
                <dt><a name="ALT_BUILD_BINARY_PLUGS_PATH"><tt>ALT_BUILD_BINARY_PLUGS_PATH</tt></a></dt>
                <dd>
                    These are useful in managing builds on multiple platforms.
                    The default network location for all of the binary plug images
                    for all platforms. 
                    If <tt><a href="#ALT_BINARY_PLUGS_PATH">ALT_BINARY_PLUGS_PATH</a></tt>
                    is not set, this directory will be used and should contain 
                    the following directories:
                    <tt>solaris-sparc</tt>,
                    <tt>solaris-i586</tt>,
                    <tt>solaris-sparcv9</tt>,
                    <tt>solaris-amd64</tt>,
                    <tt>linux-i586</tt>,
                    <tt>linux-amd64</tt>,
                    <tt>windows-i586</tt>,
                    and
                    <tt>windows-amd64</tt>.
                    Where each of these directories contain the binary plugs image
                    for that platform.
                </dd>
                <dt><strong>Windows specific:</strong></dt>
                <dd>
                    <dl>
                        <dt><a name="ALT_MSDEVTOOLS_PATH"><tt>ALT_MSDEVTOOLS_PATH</tt></a> </dt>
                        <dd>
                            The location of the 
                            Microsoft Visual Studio
                            tools 'bin' directory.
                            The default is usually derived from
                            <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
                        </dd>
                        <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
                        <dd>
                            The location of the 
                            <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
                            The default will be to try and use the DirectX environment
                            variable <tt>DXSDK_DIR</tt>,
                            failing that, look in <tt>C:/DXSDK</tt>.
                        </dd>
                        <dt><tt><a name="ALT_MSVCRT_DLL_PATH">ALT_MSVCRT_DLL_PATH</a></tt> </dt>
                        <dd>
                            The location of the 
                            <a href="#msvcrt"><tt>MSVCRT.DLL</tt></a>. 
                        </dd>
                        <dt><tt><a name="ALT_MSVCR90_DLL_PATH">ALT_MSVCR90_DLL_PATH</a></tt> </dt>
                        <dd>
                            <strong>i586 only:</strong>
                            The location of the 
                            <a href="#msvcr90"><tt>MSVCR90.DLL</tt></a>. 
                        </dd>
                    </dl>
                </dd>
            </dl>
        </blockquote>
        <!-- ------------------------------------------------------ -->
        <hr>
        <h2><a name="troubleshooting">Troubleshooting</a></h2>
        <blockquote>
            A build can fail for any number of reasons. 
            Most failures
            are a result of trying to build in an environment in which all the
            pre-build requirements have not been met. 
            The first step in
            troubleshooting a build failure is to recheck that you have satisfied
            all the pre-build requirements for your platform.
            Look for the check list of the platform you are building on in the
            <a href="#contents">Table of Contents</a>.
            <p>
            You can validate your build environment by using the <tt>sanity</tt>
            target.
            Any errors listed
            will stop the build from starting, and any warnings may result in
            a flawed product build.
            We strongly encourage you to evaluate every
            sanity check warning and fix it if required, before you proceed
            further with your build.
            <p>
            Some of the more common problems with builds are briefly described
            below, with suggestions for remedies.
            <ul>
                <li>
                    <b>Slow Builds:</b>
                    <blockquote>
                        If your build machine seems to be overloaded from too many
                        simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
                        variable to <tt>1</tt> (if you're using a multiple CPU
                        machine, setting it to more than the the number of CPUs is probably
                        not a good idea).
                        <p>
                        Creating the javadocs can be very slow, if you are running
                        javadoc, consider skipping that step.
                        <p>
                        Faster hardware and more RAM always helps too.
                        The VM build tends to be CPU intensive (many C++ compiles),
                        and the rest of the JDK will often be disk intensive.
                        <p>
                        Faster compiles are possible using a tool called
                        <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
                    </blockquote>
                </li>
                <li>
                    <b>File time issues:</b>
                    <blockquote>
                        If you see warnings that refer to file time stamps, e.g.
                        <blockquote>
                            <i>Warning message:</i><tt> File `xxx' has modification time in
                            the future.</tt>
                            <br>
                            <i>Warning message:</i> <tt> Clock skew detected. Your build may
                            be incomplete.</tt> 
                        </blockquote>
                        These warnings can occur when the clock on the build machine is out of
                        sync with the timestamps on the source files. Other errors, apparently
                        unrelated but in fact caused by the clock skew, can occur along with
                        the clock skew warnings. These secondary errors may tend to obscure the
                        fact that the true root cause of the problem is an out-of-sync clock.
                        For example, an out-of-sync clock has been known to cause an old
                        version of javac to be used to compile some files, resulting in errors
                        when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
                        in the 1.4 source code.
                        <p>
                        If you see these warnings, reset the clock on the build
                        machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
                        containing the build output, and restart the build from the beginning.
                    </blockquote>
                </li>
                <li>
                    <b>Error message: <tt>Trouble writing out table to disk</tt></b>
                    <blockquote>
                        Increase the amount of swap space on your build machine.
                    </blockquote>
                </li>
                <li>
                    <b>Error Message: <tt>libstdc++ not found:</tt></b>
                    <blockquote>
                        This is caused by a missing libstdc++.a library.
                        This is installed as part of a specific package
                        (e.g. libstdc++.so.devel.386).
                        By default some 64-bit Linux versions (e.g. Fedora)
                        only install the 64-bit version of the libstdc++ package.
                        Various parts of the JDK build require a static
                        link of the C++ runtime libraries to allow for maximum
                        portability of the built images.
                    </blockquote>
                </li>
                <li>
                    <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
                    <blockquote>
                        This is probably an issue with SELinux (See
                        <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
                        http://en.wikipedia.org/wiki/SELinux</a>).
                        Parts of the VM is built without the <tt>-fPIC</tt> for
                        performance reasons.
                        <p>
                        To completely disable SELinux:
                        <tt>
                            <ol>
                                <li>$ su root</li>
                                <li># system-config-securitylevel</li>
                                <li>In the window that appears, select the SELinux tab</li>
                                <li>Disable SELinux</li>
                            </ol>
                        </tt>
                        <p>
                        Alternatively, instead of completely disabling it you could
                        disable just this one check.
                        <tt>
                            <ol>
                                <li>Select System->Administration->SELinux Management</li>
                                <li>In the SELinux Management Tool which appears, 
                                select "Boolean" from the menu on the left</li>
                                <li>Expand the "Memory Protection" group</li>
                                <li>Check the first item, labeled
                                "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
                            </ol>
                        </tt>
                    </blockquote>
                </li>
                <li>
                    <b>Windows Error Message: <tt>*** fatal error - couldn't allocate heap, ... </tt></b>
                    <blockquote>
                        The CYGWIN software can conflict with other non-CYGWIN
                        software. See the CYGWIN FAQ section on
                        <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
                        BLODA (applications that interfere with CYGWIN)</a>.
                    </blockquote>
                </li>
                <li>
                    <b>Windows Error Message: <tt>*** multiple target patterns.  Stop.</tt></b>
                    <blockquote>
                        The CYGWIN make version 3.81 may not like the Windows <tt>C:/</tt>
                        style paths, it may not like the ':' character in the path
                        when used in a makefile target definition.
                        See the <a href="#gmake"><tt><i>gmake</i></tt></a> section.
                    </blockquote>
                </li>
            </ul>
        </blockquote>
        <hr>
    </body>
</html>
