<!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>
                    <ul>
                        <li><a href="#fedora">Fedora Linux</a> </li>
                        <li><a href="#centos">CentOS Linux</a> </li>
		        <li><a href="#debian">Debian GNU/Linux</a></li>
			<li><a href="#ubuntu">Ubuntu Linux</a> </li>
		        <li><a href="#opensuse">OpenSUSE</a></li>
		        <li><a href="#mandriva">Mandriva</a></li>
		        <li><a href="#opensolaris">OpenSolaris</a></li>
                    </ul>
		</li>
                <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="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li>
                                    <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li>
                                    <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</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>
                                    <li><a href="#xrender">XRender 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>
                        <th>BOOT JDK</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Linux X86 (32-bit)</td>
                        <td>Fedora 9</td>
                        <td>gcc 4 </td>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Linux X64 (64-bit)</td>
                        <td>Fedora 9</td>
                        <td>gcc 4 </td>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Solaris SPARC (32-bit)</td>
                        <td>Solaris 10u2 + 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>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Solaris SPARCV9 (64-bit)</td>
                        <td>Solaris 10u2 + 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>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Solaris X86 (32-bit)</td>
                        <td>Solaris 10u2 + 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>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Solaris X64 (64-bit)</td>
                        <td>Solaris 10u2 + 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>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Windows X86 (32-bit)</td>
                        <td>Windows XP</td>
                        <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
                        <td>JDK 6u14 FCS </td>
                    </tr>
                    <tr>
                        <td>Windows X64 (64-bit)</td>
                        <td>Windows Server 2003 - Enterprise x64 Edition</td>
                        <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
                        <td>JDK 6u14 FCS </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</a></h3>
        <blockquote>
	  <h4>Fedora 9</h4>
	  <p>
	    <blockquote>
              After installing <a href="http://fedoraproject.org">Fedora</a> 9 
	      you need to install several build dependencies. The simplest
	      way to do it is to execute the following commands as user 
	      <tt>root</tt>:
	      <p/>
	      <code>yum-builddep java-openjdk</code>
	      <p/>
	      <code>yum install gcc gcc-c++</code>
	      <p/>
	      In addition, it's necessary to set a few environment variables for the build:

	      <p/>
	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
            </blockquote>
	  <h4>Fedora 10</h4>
	  <p>
	    <blockquote>
              After installing <a href="http://fedoraproject.org">Fedora</a> 10 
	      you need to install several build dependencies. The simplest
	      way to do it is to execute the following commands as user 
	      <tt>root</tt>:
	      <p/>
	      <code>yum-builddep java-1.6.0-openjdk</code>
	      <p/>
	      <code>yum install gcc gcc-c++</code>
	      <p/>
	      In addition, it's necessary to set a few environment variables for the build:

	      <p/>
	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
            </blockquote>
	  <h4>Fedora 11</h4>
	  <p>
	    <blockquote>
              After installing <a href="http://fedoraproject.org">Fedora</a> 11 
	      you need to install several build dependencies. The simplest
	      way to do it is to execute the following commands as user 
	      <tt>root</tt>:
	      <p/>
	      <code>yum-builddep java-1.6.0-openjdk</code>
	      <p/>
	      <code>yum install gcc gcc-c++</code>
	      <p/>
	      In addition, it's necessary to set a few environment variables for the build:

	      <p/>
	      <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
             </blockquote>
        </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="debian">Debian</a></h3>
        <blockquote>
            <h4>Debian 5.0 (Lenny)</h4>
            <p>
	      <blockquote>
		After installing <a href="http://debian.org">Debian</a> 5 
		you need to install several build dependencies. 
		The simplest way to install the build dependencies is to 
		execute the following commands as user <tt>root</tt>:
		<p/>
		<code>aptitude build-dep openjdk-6</code>
		<p/>
		<code>aptitude install openjdk-6-jdk libmotif-dev</code>
		<p/>
		In addition, it's necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
	      </blockquote>
        </blockquote>
        <!-- ====================================================== -->
	<h3><a name="ubuntu">Ubuntu</a></h3>
        <blockquote>
            <h4>Ubuntu 8.04</h4>
            <p>
	      <blockquote>
		After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 
		you need to install several build dependencies. 
		<p/>
		First, you need to enable the universe repository in the 
		Software Sources application and reload the repository 
		information. The Software Sources application is available 
		under the System/Administration menu. 
		<p/>
		The simplest way to install the build dependencies is to 
		execute the following commands:
		<p/>
		<code>sudo aptitude build-dep openjdk-6</code>
		<p/>
		<code>sudo aptitude install openjdk-6-jdk</code>
		<p/>
		In addition, it's necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
              </blockquote>
           <h4>Ubuntu 8.10</h4>
            <p>
	      <blockquote>
		After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 
		you need to install several build dependencies. The simplest
		way to do it is to execute the following commands:
		<p/>
		<code>sudo aptitude build-dep openjdk-6</code>
		<p/>
		<code>sudo aptitude install openjdk-6-jdk</code>
		<p/>
		In addition, it's necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
             </blockquote>
           <h4>Ubuntu 9.04</h4>
            <p>
	      <blockquote>
		After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 
		you need to install several build dependencies. The simplest
		way to do it is to execute the following commands:
		<p/>
		<code>sudo aptitude build-dep openjdk-6</code>
		<p/>
		<code>sudo aptitude install openjdk-6-jdk</code>
		<p/>
		In addition, it's necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
             </blockquote>
        </blockquote>
        <!-- ====================================================== -->
        <h3><a name="opensuse">OpenSUSE</a></h3>
        <blockquote>
            <h4>OpenSUSE 11.1</h4>
            <p>
	      <blockquote>
		After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 
		you need to install several build dependencies. 
		The simplest way to install the build dependencies is to 
		execute the following commands:
		<p/>
		<code>sudo zypper source-install -d java-1_6_0-openjdk</code>
		<p/>
		<code>sudo zypper install make</code>
		<p/>
		In addition, it is necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
		<p/>
		Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
		<p/>
		<code>export -n JAVA_HOME</code>
	      </blockquote>
	</blockquote>
        <!-- ====================================================== -->
        <h3><a name="mandriva">Mandriva</a></h3>
        <blockquote>
            <h4>Mandriva Linux One 2009 Spring</h4>
            <p>
	      <blockquote>
		After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring 
		you need to install several build dependencies. 
		The simplest way to install the build dependencies is to 
		execute the following commands as user <tt>root</tt>:
		<p/>
		<code>urpmi java-1.6.0-openjdk-devel ant make gcc gcc-c++ freetype-devel zip unzip libcups2-devel libxrender1-devel libalsa2-devel libstc++-static-devel libxtst6-devel libxi-devel</code>
                <p/>
		In addition, it is necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
	      </blockquote>
        </blockquote>
        <!-- ====================================================== -->
        <h3><a name="opensolaris">OpenSolaris</a></h3>
        <blockquote>
            <h4>OpenSolaris 2009.06</h4>
            <p>
	      <blockquote>
		After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 
		you need to install several build dependencies. 
		The simplest way to install the build dependencies is to 
		execute the following commands:
		<p/>
		<code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
                <p/>
		In addition, it is necessary to set a few environment variables for the build:
		<p/>
		<code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
		<p/>
		Finally, you need to make sure that the build process can find the Sun Studio compilers:
		<p/>
		<code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
	      </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
                    and are using a <tt>make.exe</tt> utility built for that
                    environment (a cygwin <tt>make.exe</tt> is not the same
                    as a <tt>make.exe</tt> built for something like
                    <a href="http://www.mkssoftware.com/">MKS</a>). 
                    <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 the <a href="#xrender">XRender Include files</a>.
                </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="#msvc32">Microsoft Visual Studio Compilers</a>).
                </li>
                <li>
                    Setup all environment variables for compilers 
                    (see <a href="#msvc32">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/downloads/index.jsp"
		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="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong>
                <blockquote>
<p>
<b>BEGIN WARNING</b>: At this time (Spring/Summer 2010) JDK 7 is starting a transition to
use the newest VS2010 Microsoft compilers. These build instructions are updated
to show where we are going. We have a QA process to go through before
official builds actually use VS2010. So for now, official builds are
still using VS2003. No other compilers are known to build the entire JDK,
including non-open portions.
So for now you should be able to build with either VS2003 or VS2010.
We do not guarantee that VS2008 will work, although there is sufficient
makefile support to make at least basic JDK builds plausible.
Visual Studio 2010 Express compilers are now able to build all the
open source repositories, but this is 32 bit only. To build 64 bit
Windows binaries use the the 7.1 Windows SDK.<b>END WARNING.</b>
<p>
                    The 32-bit OpenJDK Windows build
                    requires 
                    Microsoft Visual Studio C++ 2010 (VS2010) Professional
                    Edition or Express compiler.
                    The compiler and other tools are expected to reside
                    in the location defined by the variable 
                    <tt>VS100COMNTOOLS</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.
                    This compiler also contains the Windows SDK v 7.0a,
                    which is an update to the Windows 7 SDK.
                    <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="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong>
                <blockquote>
                    For <b>X64</b>, builds, when using the VS2010 Professional
                    compiler, the 64 bit build set up is much the same as 32 bit
                    except that you run <tt>amd64\VCVARS64.BAT</tt>
                    to set the compiler environment variables.
                    Previously 64 bit builds had used the 64 bit compiler in
                    an unbundled Windows SDK but this is no longer necessary if
                    you have VS2010 Professional.
                </blockquote>
                <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong>
                   For a free alternative for 64 bit builds, use the 7.1 SDK.
                   Microsoft say that to set up your paths for this run
<pre>
    c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv.cmd /x64.
</pre>
                   What was tested is just directly setting up LIB, INCLUDE,
                   PATH and based on the installation directories using the
                   DOS short name appropriate for the system, (you will
                   need to set them for yours, not just blindly copy this) eg :
<pre>
    set VSINSTALLDIR=c:\PROGRA~2\MICROS~1.0
    set WindowsSdkDir=c:\PROGRA~1\MICROS~1\Windows\v7.1
    set PATH=%VSINSTALLDIR%\vc\bin\amd64;%VSINSTALLDIR%\Common7\IDE;%WindowsSdkDir%\bin;%PATH%
    set INCLUDE=%VSINSTALLDIR%\vc\include;%WindowsSdkDir%\include
    set LIB=%VSINSTALLDIR%\vc\lib\amd64;%WindowsSdkDir%\lib\x64
</pre>
            </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="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
            <blockquote>
                <p>
                <strong>Solaris:</strong>
                XRender header files are required for building the 
                OpenJDK on Solaris.
                The XRender header file is included with the other X11 header files
                in the package <strong>SFWxwinc</strong> on new enough versions of
                Solaris and will be installed in
	        <tt>/usr/X11/include/X11/extensions/Xrender.h</tt>
                </p><p>
                <strong>Linux:</strong>
                XRender header files are required for building the 
                OpenJDK on Linux.
                The Linux header files are usually available from a "Xrender"
                development package, it's recommended that you try and use
                the package provided by the particular distribution of Linux that
                you are using.
	        </p>
            </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>MSVCR100.DLL</tt></a></strong>
            <blockquote> 
                The OpenJDK build requires access to a redistributable
                <tt>MSVCR100.DLL</tt>.
                This is usually picked up automatically from the redist
                directories of Visual Studio 2010.
                If this cannot be found set the 
                <a href="#ALT_MSVCRT_DLL_PATH"><tt>ALT_MSVCRT_DLL_PATH</tt></a>
                variable to the location of this file.
                <p> 
            </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_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></tt> </dt>
                        <dd>
                            The location of the 
                            <a href="#msvcrt"><tt>MSVCR100.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>
