8004712: build-infra: Move user guide from web pages to repository

Sat, 23 Feb 2013 10:47:01 -0800

author
ohair
date
Sat, 23 Feb 2013 10:47:01 -0800
changeset 632
d3e3d5b06f45
parent 631
ab82853d3365
child 633
2778e6576e21

8004712: build-infra: Move user guide from web pages to repository
Summary: Just the initial work, will need more changes.
Reviewed-by: tbell

README file | annotate | diff | comparison | revisions
README-builds.html file | annotate | diff | comparison | revisions
     1.1 --- a/README	Thu Feb 21 14:16:56 2013 +0100
     1.2 +++ b/README	Sat Feb 23 10:47:01 2013 -0800
     1.3 @@ -1,45 +1,40 @@
     1.4  README:
     1.5    This file should be located at the top of the OpenJDK Mercurial root
     1.6 -  repository. This root repository will include a "make" directory,
     1.7 -  and a Makefile for building the entire OpenJDK.
     1.8 -  A full OpenJDK repository set (forest) should also include the following
     1.9 -  6 nested repositories:
    1.10 +  repository. A full OpenJDK repository set (forest) should also include
    1.11 +  the following 6 nested repositories:
    1.12      "jdk", "hotspot", "langtools", "corba", "jaxws"  and "jaxp".
    1.13 -  There are also several source downloads for the jax* repositories that
    1.14 -  will be needed.
    1.15  
    1.16 -  This one root repository can be obtained with something like:
    1.17 -
    1.18 +  The root repository can be obtained with something like:
    1.19      hg clone http://hg.openjdk.java.net/jdk8/jdk8 openjdk8
    1.20    
    1.21 -  To make sure you have all the nested repositories, you can run the
    1.22 -  get_source.sh script located in the same respository as this file:
    1.23 -
    1.24 +  You can run the get_source.sh script located in the root repository to get
    1.25 +  the other needed repositories:
    1.26      cd openjdk8 && sh ./get_source.sh
    1.27  
    1.28    People unfamiliar with Mercurial should read the first few chapters of
    1.29    the Mercurial book: http://hgbook.red-bean.com/read/
    1.30  
    1.31 -  See http://openjdk.java.net/ for more information about the OpenJDK.
    1.32 +  See http://openjdk.java.net/ for more information about OpenJDK.
    1.33  
    1.34  Simple Build Instructions:
    1.35    
    1.36    0. Get the necessary system software/packages installed on your system, see
    1.37 -     http://hg.openjdk.java.net/jdk8/build/raw-file/tip/README-builds.html
    1.38 +     http://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html
    1.39  
    1.40 -  1. If you don't have a jdk6 installed, download and install a JDK 6 from
    1.41 +  1. If you don't have a jdk7u7 or newer jdk, download and install it from
    1.42       http://java.sun.com/javase/downloads/index.jsp
    1.43 -     Set the environment variable ALT_BOOTDIR to the location of JDK 6.
    1.44 +     Add the /bin directory of this installation to your PATH environment
    1.45 +     variable.
    1.46  
    1.47 -  2. Check the sanity of doing a build with your current system:
    1.48 -       make sanity
    1.49 -     See README-builds.html if you run into problems.
    1.50 +  2. Configure the build:
    1.51 +       bash ./configure
    1.52    
    1.53 -  3. Do a complete build of the OpenJDK:
    1.54 +  3. Build the OpenJDK:
    1.55         make all
    1.56 -     The resulting JDK image should be found in build/*/j2sdk-image
    1.57 +     The resulting JDK image should be found in build/*/images/j2sdk-image
    1.58  
    1.59  where make is GNU make 3.81 or newer, /usr/bin/make on Linux usually
    1.60 -is 3.81 or newer.
    1.61 +is 3.81 or newer. Note that on Solaris, GNU make is called "gmake".
    1.62  
    1.63 -Complete details are available in README-builds.html.
    1.64 +Complete details are available in the file:
    1.65 +     http://hg.openjdk.java.net/jdk8/jdk8/raw-file/tip/README-builds.html
     2.1 --- a/README-builds.html	Thu Feb 21 14:16:56 2013 +0100
     2.2 +++ b/README-builds.html	Sat Feb 23 10:47:01 2013 -0800
     2.3 @@ -3,14 +3,15 @@
     2.4      <head>
     2.5          <title>OpenJDK Build README</title>
     2.6      </head>
     2.7 -    <body style="background-color:lightcyan">
     2.8 +    <body style="background-color:aquamarine">
     2.9 +
    2.10          <!-- ====================================================== -->
    2.11          <table width="100%">
    2.12              <tr>
    2.13                  <td align="center">
    2.14                      <img alt="OpenJDK" 
    2.15                           src="http://openjdk.java.net/images/openjdk.png" 
    2.16 -                         width=256 />
    2.17 +                         width=256>
    2.18                  </td>
    2.19              </tr>
    2.20              <tr>
    2.21 @@ -19,109 +20,116 @@
    2.22                  </td>
    2.23              </tr>
    2.24          </table>
    2.25 -        <!-- ------------------------------------------------------ --> 
    2.26 +
    2.27 +        <!-- ====================================================== -->
    2.28          <hr>
    2.29          <h2><a name="introduction">Introduction</a></h2>
    2.30          <blockquote>
    2.31 -            <p>
    2.32 -                This README file contains build instructions for the
    2.33 -                <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
    2.34 -                Building the source code for the
    2.35 -                OpenJDK
    2.36 -                requires
    2.37 -                a certain degree of technical expertise.
    2.38 +            This README file contains build instructions for the
    2.39 +            <a href="http://openjdk.java.net"  target="_blank">OpenJDK</a>.
    2.40 +            Building the source code for the
    2.41 +            OpenJDK
    2.42 +            requires
    2.43 +            a certain degree of technical expertise.
    2.44 +
    2.45 +            <!-- ====================================================== -->
    2.46 +            <h3>!!!!!!!!!!!!!!! THIS IS A MAJOR RE-WRITE of this document. !!!!!!!!!!!!!</h3>
    2.47 +            <blockquote>
    2.48 +                Some Headlines:
    2.49 +                <ul>
    2.50 +                    <li>
    2.51 +                        The build is now a "<code>configure &amp;&amp; make</code>" style build
    2.52 +                    </li>
    2.53 +                    <li>
    2.54 +                        Any GNU make 3.81 or newer should work
    2.55 +                    </li>
    2.56 +                    <li>
    2.57 +                        The build should scale, i.e. more processors should
    2.58 +                        cause the build to be done in less wall-clock time
    2.59 +                    </li>
    2.60 +                    <li>
    2.61 +                        Nested or recursive make invocations have been significantly
    2.62 +                        reduced, as has the total fork/exec or spawning
    2.63 +                        of sub processes during the build
    2.64 +                    </li>
    2.65 +                    <li>
    2.66 +                        Windows MKS usage is no longer supported
    2.67 +                    </li>
    2.68 +                    <li>
    2.69 +                        Windows Visual Studio <code>vsvars*.bat</code> and 
    2.70 +                        <code>vcvars*.bat</code> files are run automatically
    2.71 +                    </li>
    2.72 +                    <li>
    2.73 +                        Ant is no longer used when building the OpenJDK
    2.74 +                    </li>
    2.75 +                    <li>
    2.76 +                        Use of ALT_* environment variables for configuring the
    2.77 +                        build is no longer supported
    2.78 +                    </li>
    2.79 +                </ul>
    2.80 +            </blockquote>
    2.81          </blockquote>
    2.82 -        <!-- ------------------------------------------------------ -->
    2.83 +
    2.84 +        <!-- ====================================================== -->
    2.85          <hr>
    2.86          <h2><a name="contents">Contents</a></h2>
    2.87          <blockquote>
    2.88              <ul>
    2.89                  <li><a href="#introduction">Introduction</a></li>
    2.90 +
    2.91                  <li><a href="#hg">Use of Mercurial</a>
    2.92                      <ul>
    2.93                          <li><a href="#get_source">Getting the Source</a></li>
    2.94 +                        <li><a href="#repositories">Repositories</a></li>
    2.95                      </ul>
    2.96                  </li>
    2.97 -                <li><a href="#MBE">Minimum Build Environments</a></li>
    2.98 -                <li><a href="#SDBE">Specific Developer Build Environments</a>
    2.99 +
   2.100 +                <li><a href="#building">Building</a>
   2.101                      <ul>
   2.102 -                        <li><a href="#fedora">Fedora Linux</a> </li>
   2.103 -                        <li><a href="#centos">CentOS Linux</a> </li>
   2.104 -                        <li><a href="#debian">Debian GNU/Linux</a></li>
   2.105 -                        <li><a href="#ubuntu">Ubuntu Linux</a> </li>
   2.106 -                        <li><a href="#opensuse">OpenSUSE</a></li>
   2.107 -                        <li><a href="#mandriva">Mandriva</a></li>
   2.108 -                        <li><a href="#opensolaris">OpenSolaris</a></li>
   2.109 +                        <li><a href="#setup">System Setup</a>
   2.110 +                            <ul>
   2.111 +                                <li><a href="#linux">Linux</a></li>
   2.112 +                                <li><a href="#solaris">Solaris</a></li>
   2.113 +                                <li><a href="#macosx">Mac OS X</a></li>
   2.114 +                                <li><a href="#windows">Windows</a></li>
   2.115 +                            </ul>
   2.116 +                        </li>
   2.117 +                        <li><a href="#configure">Configure</a></li>
   2.118 +                        <li><a href="#make">Make</a></li>
   2.119                      </ul>
   2.120                  </li>
   2.121 -                <li><a href="#directories">Source Directory Structure</a> 
   2.122 +                <li><a href="#testing">Testing</a></li>
   2.123 +            </ul>
   2.124 +            <hr>
   2.125 +            <ul>
   2.126 +                <li><a href="#hints">Appendix A: Hints and Tips</a>
   2.127                      <ul>
   2.128 -                        <li><a href="#drops">Managing the Source Drops</a></li>
   2.129 +                        <li><a href="#faq">FAQ</a></li>
   2.130 +                        <li><a href="#performance">Build Performance Tips</a></li>
   2.131 +                        <li><a href="#troubleshooting">Troubleshooting</a></li>
   2.132                      </ul>
   2.133                  </li>
   2.134 -                <li><a href="#building">Build Information</a>
   2.135 -                    <ul>
   2.136 -                        <li><a href="#gmake">GNU Make (<tt><i>gmake</i></tt>)</a> </li>
   2.137 -                        <li><a href="#linux">Basic Linux System Setup</a> </li>
   2.138 -                        <li><a href="#solaris">Basic Solaris System Setup</a> </li>
   2.139 -                        <li><a href="#windows">Basic Windows System Setup</a> </li>
   2.140 -                        <li><a href="#macosx">Basic Mac OS X System Setup</a></li>
   2.141 -                        <li><a href="#dependencies">Build Dependencies</a>
   2.142 -                            <ul>
   2.143 -                                <li><a href="#bootjdk">Bootstrap JDK</a> </li>
   2.144 -                                <li><a href="#importjdk">Optional Import JDK</a> </li>
   2.145 -                                <li><a href="#ant">Ant 1.7.1</a> </li>
   2.146 -                                <li><a href="#cacerts">Certificate Authority File (cacert)</a> </li>
   2.147 -                                <li><a href="#compilers">Compilers</a>
   2.148 -                                    <ul>
   2.149 -                                        <li><a href="#msvc32">Microsoft Visual Studio Professional/Express for 32 bit</a> </li>
   2.150 -                                        <li><a href="#msvc64">Microsoft Visual Studio Professional for 64 bit</a> </li>
   2.151 -                                        <li><a href="#mssdk64">Microsoft Windows SDK for 64 bit</a> </li>
   2.152 -                                        <li><a href="#gcc">Linux gcc/binutils</a> </li>
   2.153 -                                        <li><a href="#studio">Sun Studio</a> </li>
   2.154 -                                    </ul>
   2.155 -                                </li>
   2.156 -                                <li><a href="#zip">Zip and Unzip</a> </li>
   2.157 -                                <li><a href="#freetype">FreeType2 Fonts</a> </li>
   2.158 -                                <li>Linux and Solaris:
   2.159 -                                    <ul>
   2.160 -                                        <li><a href="#cups">CUPS Include files</a> </li>
   2.161 -                                        <li><a href="#xrender">XRender Include files</a></li>
   2.162 -                                    </ul>
   2.163 -                                </li>
   2.164 -                                <li>Linux only:
   2.165 -                                    <ul>
   2.166 -                                        <li><a href="#alsa">ALSA files</a> </li>
   2.167 -                                    </ul>
   2.168 -                                </li>
   2.169 -                                <li>Windows only:
   2.170 -                                    <ul>
   2.171 -                                        <li>Unix Command Tools (<a href="#cygwin">CYGWIN</a>) <strong>or</strong></li>
   2.172 -                                        <li>Minimalist GNU for Windows (<a href="#msys">MinGW/MSYS</a>)</li>
   2.173 -                                        <li><a href="#dxsdk">DirectX 9.0 SDK</a> </li>
   2.174 -                                    </ul>
   2.175 -                                </li>
   2.176 -                            </ul>
   2.177 -                        </li>
   2.178 -                    </ul>
   2.179 -                </li>
   2.180 -                <li><a href="#creating">Creating the Build</a> </li>
   2.181 -                <li><a href="#testing">Testing the Build</a> </li>
   2.182 -                <li><a href="#variables">Environment/Make Variables</a></li>
   2.183 -                <li><a href="#troubleshooting">Troubleshooting</a></li>
   2.184 -                <li><a href="#newbuild">The New Build</a></li>
   2.185 +                <li><a href="#gmake">Appendix B: GNU Make Information</a></li>
   2.186 +                <li><a href="#buildenvironments">Appendix C: Build Environments</a></li>
   2.187 +
   2.188 +                <!-- Leave out
   2.189 +                <li><a href="#mapping">Appendix D: Mapping Old Builds to the New Builds</a></li>    
   2.190 +                -->
   2.191 +
   2.192              </ul>
   2.193          </blockquote>
   2.194  
   2.195 -        <!-- ------------------------------------------------------ -->
   2.196 +        <!-- ====================================================== -->
   2.197          <hr>
   2.198          <h2><a name="hg">Use of Mercurial</a></h2>
   2.199          <blockquote>
   2.200              The OpenJDK sources are maintained with the revision control system
   2.201              <a href="http://mercurial.selenic.com/wiki/Mercurial">Mercurial</a>.
   2.202              If you are new to Mercurial, please see the
   2.203 -            <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">Beginner Guides</a>
   2.204 -            or refer to the <a href="http://hgbook.red-bean.com/">Mercurial Book</a>.
   2.205 +            <a href="http://mercurial.selenic.com/wiki/BeginnersGuides">
   2.206 +                Beginner Guides</a>
   2.207 +            or refer to the <a href="http://hgbook.red-bean.com/">
   2.208 +                Mercurial Book</a>.
   2.209              The first few chapters of the book provide an excellent overview of
   2.210              Mercurial, what it is and how it works.
   2.211              <br>
   2.212 @@ -130,578 +138,1631 @@
   2.213                  Developer Guide: Installing and Configuring Mercurial</a>
   2.214              section for more information.
   2.215  
   2.216 -            <!-- ------------------------------------------------------ -->
   2.217              <h3><a name="get_source">Getting the Source</a></h3>
   2.218              <blockquote>
   2.219                  To get the entire set of OpenJDK Mercurial repositories
   2.220 -                use the script <code>get_source.sh</code> located in the root repository:
   2.221 +                use the script <code>get_source.sh</code> located in the 
   2.222 +                root repository:
   2.223                  <blockquote>
   2.224 -                    <tt>
   2.225 -                        hg clone http://hg.openjdk.java.net/jdk8/jdk8 <i>YourOpenJDK</i>
   2.226 -                        <br>cd <i>YourOpenJDK</i>
   2.227 -                        <br>sh ./get_source.sh
   2.228 -                    </tt>
   2.229 +                    <code>
   2.230 +                        hg clone http://hg.openjdk.java.net/jdk8/jdk8 
   2.231 +                        <i>YourOpenJDK</i>
   2.232 +                        <br>
   2.233 +                        cd <i>YourOpenJDK</i>
   2.234 +                        <br>
   2.235 +                        bash ./get_source.sh
   2.236 +                    </code>
   2.237                  </blockquote>
   2.238 -                Once you have all the repositories, the
   2.239 -                script <tt>make/scripts/hgforest.sh</tt>
   2.240 -                can be used to repeat the same <tt>hg</tt>
   2.241 -                command on every repository in the forest, e.g.
   2.242 +                Once you have all the repositories, keep in mind that each
   2.243 +                repository is it's own independent repository.
   2.244 +                You can also re-run <code>./get_source.sh</code> anytime to
   2.245 +                pull over all the latest changesets in all the repositories.
   2.246 +                This set of nested repositories has been given the term
   2.247 +                "forest" and there are various ways to apply the same
   2.248 +                <code>hg</code> command to each of the repositories.
   2.249 +                For example, the script <code>make/scripts/hgforest.sh</code>
   2.250 +                can be used to repeat the same <code>hg</code>
   2.251 +                command on every repository, e.g.
   2.252                  <blockquote>
   2.253 -                    <tt>
   2.254 +                    <code>
   2.255                          cd <i>YourOpenJDK</i>
   2.256 -                        <br>sh ./make/scripts/hgforest.sh pull -u
   2.257 -                    </tt>
   2.258 +                        <br>
   2.259 +                        bash ./make/scripts/hgforest.sh status
   2.260 +                    </code>
   2.261                  </blockquote>
   2.262              </blockquote>
   2.263  
   2.264 +            <h3><a name="repositories">Repositories</a></h3>
   2.265 +            <blockquote>
   2.266 +                <p>The set of repositories and what they contain:</p>
   2.267 +                <table border="1">
   2.268 +                    <thead>
   2.269 +                        <tr>
   2.270 +                            <th>Repository</th>
   2.271 +                            <th>Contains</th>
   2.272 +                        </tr>
   2.273 +                    </thead>                   
   2.274 +                    <tbody>
   2.275 +                        <tr>
   2.276 +                            <td>
   2.277 +                                . (root)
   2.278 +                            </td>
   2.279 +                            <td>
   2.280 +                                common configure and makefile logic
   2.281 +                            </td>
   2.282 +                        </tr>
   2.283 +                        <tr>
   2.284 +                            <td>
   2.285 +                                hotspot
   2.286 +                            </td>
   2.287 +                            <td>
   2.288 +                                source code and make files for building
   2.289 +                                the OpenJDK Hotspot Virtual Machine                         
   2.290 +                            </td>
   2.291 +                        </tr>
   2.292 +                        <tr>
   2.293 +                            <td>
   2.294 +                                langtools
   2.295 +                            </td>
   2.296 +                            <td>
   2.297 +                                source code for the OpenJDK javac and language tools
   2.298 +                            </td>
   2.299 +                        </tr>
   2.300 +                        <tr>
   2.301 +                            <td>
   2.302 +                                jdk
   2.303 +                            </td>
   2.304 +                            <td>
   2.305 +                                source code and make files for building
   2.306 +                                the OpenJDK runtime libraries and misc files
   2.307 +                            </td>
   2.308 +                        </tr>
   2.309 +                        <tr>
   2.310 +                            <td>
   2.311 +                                jaxp
   2.312 +                            </td>
   2.313 +                            <td>
   2.314 +                                source code for the OpenJDK JAXP functionality
   2.315 +                            </td>
   2.316 +                        </tr>
   2.317 +                        <tr>
   2.318 +                            <td>
   2.319 +                                jaxws
   2.320 +                            </td>
   2.321 +                            <td>
   2.322 +                                source code for the OpenJDK JAX-WS functionality
   2.323 +                            </td>
   2.324 +                        </tr>
   2.325 +                        <tr>
   2.326 +                            <td>
   2.327 +                                corba
   2.328 +                            </td>
   2.329 +                            <td>
   2.330 +                                source code for the OpenJDK Corba functionality
   2.331 +                            </td>
   2.332 +                        </tr>
   2.333 +                    </tbody>
   2.334 +                </table>
   2.335 +            </blockquote>
   2.336 +
   2.337 +            <h3><a name="guidelines">Repository Source Guidelines</a></h3>
   2.338 +            <blockquote>
   2.339 +                There are some very basic guidelines:
   2.340 +                <ul>
   2.341 +                    <li>
   2.342 +                        Use of whitespace in source files
   2.343 +                        (.java, .c, .h, .cpp, and .hpp files)
   2.344 +                        is restricted.
   2.345 +                        No TABs, no trailing whitespace on lines, and files
   2.346 +                        should not terminate in more than one blank line.
   2.347 +                    </li>
   2.348 +                    <li>
   2.349 +                        Files with execute permissions should not be added
   2.350 +                        to the source repositories.
   2.351 +                    </li>
   2.352 +                    <li>
   2.353 +                        All generated files need to be kept isolated from 
   2.354 +                        the files
   2.355 +                        maintained or managed by the source control system.
   2.356 +                        The standard area for generated files is the top level
   2.357 +                        <code>build/</code> directory.
   2.358 +                    </li>
   2.359 +                    <li>
   2.360 +                        The default build process should be to build the product
   2.361 +                        and nothing else, in one form, e.g. a product (optimized),
   2.362 +                        debug (non-optimized, -g plus assert logic), or
   2.363 +                        fastdebug (optimized, -g plus assert logic).
   2.364 +                    </li>
   2.365 +                    <li>
   2.366 +                        The <tt>.hgignore</tt> file in each repository
   2.367 +                        must exist and should
   2.368 +                        include <tt>^build/</tt>, <tt>^dist/</tt> and 
   2.369 +                        optionally any
   2.370 +                        <tt>nbproject/private</tt> directories.
   2.371 +                        <strong>It should NEVER</strong> include 
   2.372 +                        anything in the
   2.373 +                        <tt>src/</tt> or <tt>test/</tt>
   2.374 +                        or any managed directory area of a repository.
   2.375 +                    </li>
   2.376 +                    <li>
   2.377 +                        Directory names and file names should never contain
   2.378 +                        blanks or
   2.379 +                        non-printing characters.
   2.380 +                    </li>
   2.381 +                    <li>
   2.382 +                        Generated source or binary files should NEVER be added to
   2.383 +                        the repository (that includes <tt>javah</tt> output).
   2.384 +                        There are some exceptions to this rule, in particular
   2.385 +                        with some of the generated configure scripts.
   2.386 +                    </li>
   2.387 +                    <li>
   2.388 +                        Files not needed for typical building
   2.389 +                        or testing of the repository
   2.390 +                        should not be added to the repository.
   2.391 +                    </li>
   2.392 +                </ul>
   2.393 +            </blockquote>
   2.394 +
   2.395          </blockquote>
   2.396  
   2.397 -        <!-- ------------------------------------------------------ -->
   2.398 +        <!-- ====================================================== -->
   2.399          <hr>
   2.400 -        <h2><a name="MBE">Minimum Build Environments</a></h2>
   2.401 +        <h2><a name="building">Building</a></h2>
   2.402          <blockquote>
   2.403 -            This file often describes specific requirements for what we call the
   2.404 -            "minimum build environments" (MBE) for this 
   2.405 -            specific release of the JDK,
   2.406 -            Building with the MBE will generate the most compatible
   2.407 -            bits that install on, and run correctly on, the most variations
   2.408 -            of the same base OS and hardware architecture.
   2.409 -            These usually represent what is often called the
   2.410 -            least common denominator platforms.
   2.411 -            It is understood that most developers will NOT be using these 
   2.412 -            specific platforms, and in fact creating these specific platforms
   2.413 -            may be difficult due to the age of some of this software.
   2.414 -            <p>
   2.415 -                The minimum OS and C/C++ compiler versions needed for building the
   2.416 -                OpenJDK:
   2.417 -            <p>
   2.418 -            <table border="1">
   2.419 -                <thead>
   2.420 -                    <tr>
   2.421 -                        <th>Base OS and Architecture</th>
   2.422 -                        <th>OS</th>
   2.423 -                        <th>C/C++ Compiler</th>
   2.424 -                        <th>BOOT JDK</th>
   2.425 -                    </tr>
   2.426 -                </thead>
   2.427 -                <tbody>
   2.428 -                    <tr>
   2.429 -                        <td>Linux X86 (32-bit)</td>
   2.430 -                        <td>Fedora 9</td>
   2.431 -                        <td>gcc 4.3 </td>
   2.432 -                        <td>JDK 6u18</td>
   2.433 -                    </tr>
   2.434 -                    <tr>
   2.435 -                        <td>Linux X64 (64-bit)</td>
   2.436 -                        <td>Fedora 9</td>
   2.437 -                        <td>gcc 4.3 </td>
   2.438 -                        <td>JDK 6u18</td>
   2.439 -                    </tr>
   2.440 -                    <tr>
   2.441 -                        <td>Solaris SPARC (32-bit)</td>
   2.442 -                        <td>Solaris 10 Update 6</td>
   2.443 -                        <td>Sun Studio 12 Update 1 + patches</td>
   2.444 -                        <td>JDK 6u18</td>
   2.445 -                    </tr>
   2.446 -                    <tr>
   2.447 -                        <td>Solaris SPARCV9 (64-bit)</td>
   2.448 -                        <td>Solaris 10 Update 6</td>
   2.449 -                        <td>Sun Studio 12 Update 1 + patches</td>
   2.450 -                        <td>JDK 6u18</td>
   2.451 -                    </tr>
   2.452 -                    <tr>
   2.453 -                        <td>Solaris X86 (32-bit)</td>
   2.454 -                        <td>Solaris 10 Update 6</td>
   2.455 -                        <td>Sun Studio 12 Update 1 + patches</td>
   2.456 -                        <td>JDK 6u18</td>
   2.457 -                    </tr>
   2.458 -                    <tr>
   2.459 -                        <td>Solaris X64 (64-bit)</td>
   2.460 -                        <td>Solaris 10 Update 6</td>
   2.461 -                        <td>Sun Studio 12 Update 1 + patches</td>
   2.462 -                        <td>JDK 6u18</td>
   2.463 -                    </tr>
   2.464 -                    <tr>
   2.465 -                        <td>Windows X86 (32-bit)</td>
   2.466 -                        <td>Windows XP</td>
   2.467 -                        <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
   2.468 -                        <td>JDK 6u18</td>
   2.469 -                    </tr>
   2.470 -                    <tr>
   2.471 -                        <td>Windows X64 (64-bit)</td>
   2.472 -                        <td>Windows Server 2003 - Enterprise x64 Edition</td>
   2.473 -                        <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
   2.474 -                        <td>JDK 6u18</td>
   2.475 -                    </tr>
   2.476 -                    <tr>
   2.477 -                        <td>Mac OS X X64 (64-bit)</td>
   2.478 -                        <td>Mac OS X 10.7.3 "Lion"</td>
   2.479 -                        <td>XCode 4.1 or later</td>
   2.480 -                        <td>Java for OS X Lion Update 1</td>
   2.481 -                    </tr>
   2.482 -                </tbody>
   2.483 -            </table>
   2.484 -            <p>
   2.485 -            These same sources do indeed build on many more systems than the
   2.486 -            above older generation systems, again the above is just a minimum.
   2.487 -            <p>
   2.488 -            Compilation problems with newer or different C/C++ compilers is a
   2.489 -            common problem.
   2.490 -            Similarly, compilation problems related to changes to the
   2.491 -                <tt>/usr/include</tt> or system header files is also a
   2.492 -            common problem with newer or unreleased OS versions.
   2.493 -            Please report these types of problems as bugs so that they
   2.494 -            can be dealt with accordingly.
   2.495 -        </blockquote>
   2.496 -        <!-- ------------------------------------------------------ -->
   2.497 -        <hr>
   2.498 -        <h2><a name="SDBE">Specific Developer Build Environments</a></h2>
   2.499 -        <blockquote>
   2.500 -            We won't be listing all the possible environments, but
   2.501 -            we will try to provide what information we have available to us.
   2.502 -        </blockquote>
   2.503 -        <!-- ------------------------------------------------------ -->
   2.504 -        <h3><a name="fedora">Fedora</a></h3>
   2.505 -        <blockquote>
   2.506 -            <h4>Fedora 9</h4>
   2.507 -            <p>
   2.508 +            The very first step in building the OpenJDK is making sure the
   2.509 +            system itself has everything it needs to do OpenJDK builds.
   2.510 +            Once a system is setup, it generally doesn't need to be done again.
   2.511 +            <br>
   2.512 +            Building the OpenJDK is now done with running a 
   2.513 +            <a href="#configure"><code>configure</code></a>
   2.514 +            script which will try and find and verify you have everything
   2.515 +            you need, followed by running
   2.516 +            <a href="#gmake"><code>make</code></a>, e.g.
   2.517              <blockquote>
   2.518 -                After installing <a href="http://fedoraproject.org">Fedora</a> 9
   2.519 -              you need to install several build dependencies. The simplest
   2.520 -              way to do it is to execute the following commands as user 
   2.521 -                <tt>root</tt>:
   2.522 -                <p/>
   2.523 -                <code>yum-builddep java-1.6.0-openjdk</code>
   2.524 -                <p/>
   2.525 -                <code>yum install gcc gcc-c++</code>
   2.526 -                <p/>
   2.527 -              In addition, it's necessary to set a few environment variables for the build:
   2.528 +                <b>
   2.529 +                    <code>
   2.530 +                        bash ./configure<br>
   2.531 +                        make all
   2.532 +                    </code>
   2.533 +                </b>
   2.534 +            </blockquote>
   2.535 +            Where possible the <code>configure</code> script will attempt to located the
   2.536 +            various components in the default locations or via component
   2.537 +            specific variable settings.
   2.538 +            When the normal defaults fail or components cannot be found,
   2.539 +            additional <code>configure</code> options may be necessary to help <code>configure</code>
   2.540 +            find the necessary tools for the build, or you may need to
   2.541 +            re-visit the setup of your system due to missing software
   2.542 +            packages.
   2.543 +            <br>
   2.544 +            <strong>NOTE:</strong> The <code>configure</code> script
   2.545 +            file does not have
   2.546 +            execute permissions and will need to be explicitly run with
   2.547 +            <code>bash</code>,
   2.548 +            see the <a href="#guidelines">source guidelines</a>.
   2.549  
   2.550 -                <p/>
   2.551 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
   2.552 +            <!-- ====================================================== -->
   2.553 +            <hr>
   2.554 +            <h3><a name="setup">System Setup</a></h3>
   2.555 +            <blockquote>
   2.556 +                Before even attempting to use a system to build the OpenJDK
   2.557 +                there are some very basic system setups needed.
   2.558 +                For all systems:
   2.559 +                <ul>
   2.560 +                    <li>
   2.561 +                        Be sure the GNU make utility is version 3.81 or newer,
   2.562 +                        e.g. run "<code>make -version</code>"
   2.563 +                    </li>
   2.564 +                    <li>
   2.565 +                        Install a
   2.566 +                        <a name="bootjdk">Bootstrap JDK</a>
   2.567 +                        <br>
   2.568 +                        All OpenJDK builds require access to a previously released
   2.569 +                        JDK, this is often called a bootstrap JDK.
   2.570 +                        Currently, for this JDK release we require
   2.571 +                        JDK 7 Update 7 or newer.
   2.572 +                        The JDK 7 binaries can be downloaded from Oracle's 
   2.573 +                        <a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"
   2.574 +                           target="_blank">JDK 7 download site</a>.
   2.575 +                        For build performance reasons
   2.576 +                        is very important that this bootstrap JDK be made available 
   2.577 +                        on the local disk of the machine doing the build.
   2.578 +                        You should add its <code>bin</code> directory
   2.579 +                        to the <code>PATH</code> environment variable.
   2.580 +                        If <code>configure</code> has any issues finding this JDK, you may
   2.581 +                        need to use the <code>configure</code> option
   2.582 +                        <code>--with-boot-jdk</code>.
   2.583 +                    </li>
   2.584 +                    <li>
   2.585 +                        Insure that GNU make, the Bootstrap JDK,
   2.586 +                        and the compilers are all
   2.587 +                        in your PATH environment variable
   2.588 +                    </li>
   2.589 +                </ul>
   2.590 +                And for specific systems:
   2.591 +                <table border="1">
   2.592 +                    <thead>
   2.593 +                        <tr>
   2.594 +                            <th>Linux</th>
   2.595 +                            <th>Solaris</th>
   2.596 +                            <th>Windows</th>
   2.597 +                            <th>Mac OS X</th>
   2.598 +                        </tr>
   2.599 +                    </thead>                   
   2.600 +                    <tbody>
   2.601 +                        <tr>
   2.602 +                            <td>
   2.603 +                                Install all the software development
   2.604 +                                packages needed including
   2.605 +                                <a href="#alsa">alsa</a>,
   2.606 +                                <a href="#freetype">freetype</a>,
   2.607 +                                <a href="#cups">cups</a>, and
   2.608 +                                <a href="#xrender">xrender</a>.
   2.609 +                                <br>
   2.610 +                                See
   2.611 +                                <a href="#SDBE">specific system packages</a>.
   2.612 +                            </td>
   2.613 +                            <td>
   2.614 +                                Install all the software development
   2.615 +                                packages needed  including
   2.616 +                                <a href="#studio">Studio Compilers</a>,
   2.617 +                                <a href="#freetype">freetype</a>,
   2.618 +                                <a href="#cups">cups</a>, and
   2.619 +                                <a href="#xrender">xrender</a>.
   2.620 +                                <br>
   2.621 +                                See
   2.622 +                                <a href="#SDBE">specific system packages</a>.
   2.623 +                            </td>
   2.624 +                            <td>
   2.625 +                                <ul>
   2.626 +                                    <li>
   2.627 +                                        Install one of
   2.628 +                                        <a href="#cygwin">CYGWIN</a> or
   2.629 +                                        <a href="#msys">MinGW/MSYS</a>
   2.630 +                                    </li>
   2.631 +                                    <li>
   2.632 +                                        Install
   2.633 +                                        <a href="#vs2010">Visual Studio 2010</a>
   2.634 +                                    </li>
   2.635 +                                    <li>
   2.636 +                                        Install the
   2.637 +                                        <a href="#dxsdk">Microsoft DirectX SDK</a>
   2.638 +                                    </li>
   2.639 +                                </ul>
   2.640 +                            </td>
   2.641 +                            <td>
   2.642 +                                Install 
   2.643 +                                <a href="https://developer.apple.com/xcode/">XCode 4.5.2</a> 
   2.644 +                                and also install the "Command line tools" found under the
   2.645 +                                preferences pane "Downloads"
   2.646 +                            </td>
   2.647 +                        </tr>
   2.648 +                    </tbody>
   2.649 +                </table>
   2.650 +
   2.651 +                <h4><a name="linux">Linux</a></h4>
   2.652 +                <blockquote>
   2.653 +                    With Linux, try and favor the system packages over 
   2.654 +                    building your own
   2.655 +                    or getting packages from other areas.
   2.656 +                    Most Linux builds should be possible with the system's
   2.657 +                    available packages.
   2.658 +                    <br>
   2.659 +                    Note that some Linux systems have a habit of pre-populating
   2.660 +                    your environment variables for you, for example <code>JAVA_HOME</code>
   2.661 +                    might get pre-defined for you to refer to the JDK installed on
   2.662 +                    your Linux system.
   2.663 +                    You will need to unset <code>JAVA_HOME</code>.
   2.664 +                    It's a good idea to run <code>env</code> and verify the
   2.665 +                    environment variables you are getting from the default system
   2.666 +                    settings make sense for building the OpenJDK.
   2.667 +
   2.668 +                </blockquote>
   2.669 +
   2.670 +                <h4><a name="solaris">Solaris</a></h4>
   2.671 +                <blockquote>
   2.672 +                    <h5><a name="studio">Studio Compilers</a></h5>
   2.673 +                    <blockquote>
   2.674 +                        At a minimum, the
   2.675 +                        <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank">
   2.676 +                            Studio 12 Update 1 Compilers</a>
   2.677 +                        (containing version 5.10 of the C and C++ compilers) is required,
   2.678 +                        including specific patches.
   2.679 +                        <p>
   2.680 +                            The Solaris SPARC patch list is:
   2.681 +                        <ul>
   2.682 +                            <li>
   2.683 +                                118683-05: SunOS 5.10: Patch for profiling libraries and assembler
   2.684 +                            </li>
   2.685 +                            <li>
   2.686 +                                119963-21: SunOS 5.10: Shared library patch for C++
   2.687 +                            </li>
   2.688 +                            <li>
   2.689 +                                120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch
   2.690 +                            </li>
   2.691 +                            <li>
   2.692 +                                128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler
   2.693 +                            </li>
   2.694 +                            <li>
   2.695 +                                141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
   2.696 +                            </li>
   2.697 +                            <li>
   2.698 +                                141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler
   2.699 +                            </li>
   2.700 +                            <li>
   2.701 +                                142371-01: Sun Studio 12.1 Update 1: Patch for dbx
   2.702 +                            </li>
   2.703 +                            <li>
   2.704 +                                143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling
   2.705 +                            </li>
   2.706 +                            <li>
   2.707 +                                143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
   2.708 +                            </li>
   2.709 +                            <li>
   2.710 +                                142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools
   2.711 +                            </li>
   2.712 +                        </ul>
   2.713 +                        <p>
   2.714 +                            The Solaris X86 patch list is:
   2.715 +                        <ul>
   2.716 +                            <li>
   2.717 +                                119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
   2.718 +                            </li>
   2.719 +                            <li>
   2.720 +                                119964-21: SunOS 5.10_x86: Shared library patch for C++_x86
   2.721 +                            </li>
   2.722 +                            <li>
   2.723 +                                120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch
   2.724 +                            </li>
   2.725 +                            <li>
   2.726 +                                141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend
   2.727 +                            </li>
   2.728 +                            <li>
   2.729 +                                128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler
   2.730 +                            </li>
   2.731 +                            <li>
   2.732 +                                142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler
   2.733 +                            </li>
   2.734 +                            <li>
   2.735 +                                142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools
   2.736 +                            </li>
   2.737 +                        </ul>
   2.738 +                        <p> 
   2.739 +                            Place the <code>bin</code> directory in <code>PATH</code>.
   2.740 +                        <p>
   2.741 +                            The Oracle Solaris Studio Express compilers at:
   2.742 +                            <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index-jsp-142582.html" target="_blank">
   2.743 +                                Oracle Solaris Studio Express Download site</a>
   2.744 +                            are also an option, although these compilers have not
   2.745 +                            been extensively used yet.
   2.746 +                    </blockquote>
   2.747 +
   2.748 +                </blockquote> <!-- Solaris -->
   2.749 +
   2.750 +                <h4><a name="windows">Windows</a></h4>
   2.751 +                <blockquote>
   2.752 +
   2.753 +                    <h5><a name="toolkit">Windows Unix Toolkit</a></h5>
   2.754 +                    <blockquote>
   2.755 +                        Building on Windows requires a Unix-like environment, notably a 
   2.756 +                        Unix-like shell.
   2.757 +                        There are several such environments available of which 
   2.758 +                        <a href="http://www.cygwin.com/">Cygwin</a> and 
   2.759 +                        <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are 
   2.760 +                        currently supported for
   2.761 +                        the OpenJDK build. One of the differences of these 
   2.762 +                        systems from standard Windows tools is the way
   2.763 +                        they handle Windows path names, particularly path names which contain
   2.764 +                        spaces, backslashes as path separators and possibly drive letters. 
   2.765 +                        Depending
   2.766 +                        on the use case and the specifics of each environment these path 
   2.767 +                        problems can
   2.768 +                        be solved by a combination of quoting whole paths, translating 
   2.769 +                        backslashes to
   2.770 +                        forward slashes, escaping backslashes with additional backslashes and
   2.771 +                        translating the path names to their 
   2.772 +                        <a href="http://en.wikipedia.org/wiki/8.3_filename">
   2.773 +                            "8.3" version</a>.
   2.774 +
   2.775 +                        <h6><a name="cygwin">CYGWIN</a></h6>
   2.776 +                        <blockquote>
   2.777 +                            CYGWIN is an open source, Linux-like environment which tries to emulate
   2.778 +                            a complete POSIX layer on Windows. It tries to be smart about path names
   2.779 +                            and can usually handle all kinds of paths if they are correctly quoted
   2.780 +                            or escaped although internally it maps drive letters <code>&lt;drive&gt;:</code> 
   2.781 +                            to a virtual directory <code>/cygdrive/&lt;drive&gt;</code>.
   2.782 +                            <p>
   2.783 +                                You can always use the <code>cygpath</code> utility to map pathnames with spaces
   2.784 +                                or the backslash character into the <code>C:/</code> style of pathname
   2.785 +                                (called 'mixed'), e.g. <code>cygpath -s -m "<i>path</i>"</code>.
   2.786 +                            </p>
   2.787 +                            <p>
   2.788 +                                Note that the use of CYGWIN creates a unique problem with regards to
   2.789 +                                setting <a href="#path"><code>PATH</code></a>. Normally on Windows
   2.790 +                                the <code>PATH</code> variable contains directories
   2.791 +                                separated with the ";" character (Solaris and Linux use ":").
   2.792 +                                With CYGWIN, it uses ":", but that means that paths like "C:/path"
   2.793 +                                cannot be placed in the CYGWIN version  of <code>PATH</code> and
   2.794 +                                instead CYGWIN uses something like <code>/cygdrive/c/path</code>
   2.795 +                                which CYGWIN understands, but only CYGWIN understands.
   2.796 +                            </p>
   2.797 +                            <p>
   2.798 +                                The OpenJDK build requires CYGWIN version 1.7.16 or newer.
   2.799 +                                Information about CYGWIN can
   2.800 +                                be obtained from the CYGWIN website at
   2.801 +                                <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
   2.802 +                            </p>
   2.803 +                            <p>
   2.804 +                                By default CYGWIN doesn't install all the tools required for building
   2.805 +                                the OpenJDK.
   2.806 +                                Along with the default installation, you need to install
   2.807 +                                the following tools.
   2.808 +                            <blockquote>
   2.809 +                                <table border="1">
   2.810 +                                    <thead>
   2.811 +                                        <tr>
   2.812 +                                            <td>Binary Name</td>
   2.813 +                                            <td>Category</td>
   2.814 +                                            <td>Package</td>
   2.815 +                                            <td>Description</td>
   2.816 +                                        </tr>
   2.817 +                                    </thead>
   2.818 +                                    <tbody>
   2.819 +                                        <tr>
   2.820 +                                            <td>ar.exe</td>
   2.821 +                                            <td>Devel</td>
   2.822 +                                            <td>binutils</td>
   2.823 +                                            <td>
   2.824 +                                                The GNU assembler, linker and binary utilities
   2.825 +                                            </td>
   2.826 +                                        </tr>
   2.827 +                                        <tr>
   2.828 +                                            <td>make.exe</td>
   2.829 +                                            <td>Devel</td>
   2.830 +                                            <td>make</td>
   2.831 +                                            <td>
   2.832 +                                                The GNU version of the 'make' utility built for CYGWIN
   2.833 +                                            </td>
   2.834 +                                        </tr>
   2.835 +                                        <tr>
   2.836 +                                            <td>m4.exe</td>
   2.837 +                                            <td>Interpreters</td>
   2.838 +                                            <td>m4</td>
   2.839 +                                            <td>
   2.840 +                                                GNU implementation of the traditional Unix macro
   2.841 +                                                processor
   2.842 +                                            </td>
   2.843 +                                        </tr>
   2.844 +                                        <tr>
   2.845 +                                            <td>cpio.exe</td>
   2.846 +                                            <td>Utils</td>
   2.847 +                                            <td>cpio</td>
   2.848 +                                            <td>
   2.849 +                                                A program to manage archives of files
   2.850 +                                            </td>
   2.851 +                                        </tr>
   2.852 +                                        <tr>
   2.853 +                                            <td>gawk.exe</td>
   2.854 +                                            <td>Utils</td>
   2.855 +                                            <td>awk</td>
   2.856 +                                            <td>
   2.857 +                                                Pattern-directed scanning and processing language
   2.858 +                                            </td>
   2.859 +                                        </tr>
   2.860 +                                        <tr>
   2.861 +                                            <td>file.exe</td>
   2.862 +                                            <td>Utils</td>
   2.863 +                                            <td>file</td>
   2.864 +                                            <td>
   2.865 +                                                Determines file type using 'magic' numbers
   2.866 +                                            </td>
   2.867 +                                        </tr>
   2.868 +                                        <tr>
   2.869 +                                            <td>zip.exe</td>
   2.870 +                                            <td>Archive</td>
   2.871 +                                            <td>zip</td>
   2.872 +                                            <td>
   2.873 +                                                Package and compress (archive) files
   2.874 +                                            </td>
   2.875 +                                        </tr>
   2.876 +                                        <tr>
   2.877 +                                            <td>unzip.exe</td>
   2.878 +                                            <td>Archive</td>
   2.879 +                                            <td>unzip</td>
   2.880 +                                            <td>
   2.881 +                                                Extract compressed files in a ZIP archive
   2.882 +                                            </td>
   2.883 +                                        </tr>
   2.884 +                                        <tr>
   2.885 +                                            <td>free.exe</td>
   2.886 +                                            <td>System</td>
   2.887 +                                            <td>procps</td>
   2.888 +                                            <td>
   2.889 +                                                Display amount of free and used memory in the system
   2.890 +                                            </td>
   2.891 +                                        </tr>
   2.892 +                                    </tbody>
   2.893 +                                </table>
   2.894 +                            </blockquote>
   2.895 +                            Note that the CYGWIN software can conflict with other non-CYGWIN
   2.896 +                            software on your Windows system.
   2.897 +                            CYGWIN provides a
   2.898 +                            <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
   2.899 +                            known issues and problems, of particular interest is the
   2.900 +                            section on
   2.901 +                            <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
   2.902 +                                BLODA (applications that interfere with CYGWIN)</a>.
   2.903 +                        </blockquote>
   2.904 +
   2.905 +                        <h6><a name="msys">MinGW/MSYS</a></h6> 
   2.906 +                        <blockquote>
   2.907 +                            MinGW ("Minimalist GNU for Windows") is a collection of free Windows
   2.908 +                            specific header files and import libraries combined with GNU toolsets that
   2.909 +                            allow one to produce native Windows programs that do not rely on any
   2.910 +                            3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building
   2.911 +                            applications and programs which rely on traditional UNIX tools to
   2.912 +                            be present. Among others this includes tools like <code>bash</code>
   2.913 +                            and <code>make</code>.
   2.914 +                            See <a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a>
   2.915 +                            for more information.
   2.916 +                            <p>
   2.917 +                                Like Cygwin, MinGW/MSYS can handle different types of path formats. They
   2.918 +                                are internally converted to paths with forward slashes and drive letters
   2.919 +                                <code>&lt;drive&gt;:</code> replaced by a virtual
   2.920 +                                directory <code>/&lt;drive&gt;</code>.  Additionally, MSYS automatically
   2.921 +                                detects binaries compiled for the MSYS environment and feeds them with the
   2.922 +                                internal, Unix-style path names. If native Windows applications are called
   2.923 +                                from within MSYS programs their path arguments are automatically converted
   2.924 +                                back to Windows style path names with drive letters and backslashes as
   2.925 +                                path separators. This may cause problems for Windows applications which
   2.926 +                                use forward slashes as parameter separator (e.g. <code>cl /nologo /I</code>)
   2.927 +                                because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion">
   2.928 +                                    replace such parameters by drive letters</a>.
   2.929 +                            </p>
   2.930 +                            <p>
   2.931 +                                In addition to the tools which will be installed
   2.932 +                                by default, you have
   2.933 +                                to manually install the
   2.934 +                                <code>msys-zip</code> and
   2.935 +                                <code>msys-unzip</code> packages.
   2.936 +                                This can be easily done with the MinGW command line installer:
   2.937 +                            <blockquote> 
   2.938 +                                <code>mingw-get.exe install msys-zip</code>
   2.939 +                                <br>
   2.940 +                                <code>mingw-get.exe install msys-unzip</code>
   2.941 +                            </blockquote> 
   2.942 +                        </blockquote>
   2.943 +
   2.944 +                    </blockquote>
   2.945 +
   2.946 +                    <h5><a name="vs2010">Visual Studio 2010 Compilers</a></h5>
   2.947 +                    <blockquote>
   2.948 +                        <p>
   2.949 +                            The 32-bit and 64-bit OpenJDK Windows build requires
   2.950 +                            Microsoft Visual Studio C++ 2010 (VS2010) Professional
   2.951 +                            Edition or Express compiler.
   2.952 +                            The compiler and other tools are expected to reside
   2.953 +                            in the location defined by the variable
   2.954 +                            <code>VS100COMNTOOLS</code> which
   2.955 +                            is set by the Microsoft Visual Studio installer.
   2.956 +                        </p>
   2.957 +                        <p>
   2.958 +                            Only the C++ part of VS2010 is needed.
   2.959 +                            Try to let the installation go to the default 
   2.960 +                            install directory.
   2.961 +                            Always reboot your system after installing VS2010.
   2.962 +                            The system environment variable VS100COMNTOOLS 
   2.963 +                            should be
   2.964 +                            set in your environment.
   2.965 +                        </p>
   2.966 +                        <p>
   2.967 +                            Make sure that TMP and TEMP are also set 
   2.968 +                            in the environment
   2.969 +                            and refer to Windows paths that exist, 
   2.970 +                            like <code>C:\temp</code>,
   2.971 +                            not <code>/tmp</code>, not <code>/cygdrive/c/temp</code>, 
   2.972 +                            and not <code>C:/temp</code>.
   2.973 +                            <code>C:\temp</code> is just an example, 
   2.974 +                            it is assumed that this area is
   2.975 +                            private to the user, so by default 
   2.976 +                            after installs you should
   2.977 +                            see a unique user path in these variables.
   2.978 +                        </p>
   2.979 +                    </blockquote>
   2.980 +
   2.981 +
   2.982 +                </blockquote> <!-- Windows -->
   2.983 +
   2.984 +                <h4><a name="macosx">Mac OS X</a></h4>
   2.985 +                <blockquote>
   2.986 +                    Make sure you get the right XCode version.
   2.987 +                </blockquote> <!-- Mac OS X -->
   2.988 +
   2.989              </blockquote>
   2.990 -            <h4>Fedora 10</h4>
   2.991 -            <p>
   2.992 +
   2.993 +            <!-- ====================================================== -->
   2.994 +            <hr>
   2.995 +            <h3><a name="configure">Configure</a></h3>
   2.996              <blockquote>
   2.997 -                After installing <a href="http://fedoraproject.org">Fedora</a> 10
   2.998 -              you need to install several build dependencies. The simplest
   2.999 -              way to do it is to execute the following commands as user 
  2.1000 -                <tt>root</tt>:
  2.1001 -                <p/>
  2.1002 -                <code>yum-builddep java-1.6.0-openjdk</code>
  2.1003 -                <p/>
  2.1004 -                <code>yum install gcc gcc-c++</code>
  2.1005 -                <p/>
  2.1006 -              In addition, it's necessary to set a few environment variables for the build:
  2.1007 +                The basic invocation of the <code>configure</code> script
  2.1008 +                looks like:
  2.1009 +                <blockquote>
  2.1010 +                    <b><code>bash ./configure [<i>options</i>]</code></b>
  2.1011 +                </blockquote>
  2.1012 +                This will create an output directory containing the
  2.1013 +                "configuration" and setup an area for the build result.
  2.1014 +                This directory typically looks like:
  2.1015 +                <blockquote>
  2.1016 +                    <b><code>build/linux-x64-normal-server-release</code></b>
  2.1017 +                </blockquote>
  2.1018 +                <code>configure</code> will try to figure out what system you are running on 
  2.1019 +                and where all necessary build components are.
  2.1020 +                If you have all prerequisites for building installed,
  2.1021 +                it should find everything.
  2.1022 +                If it fails to detect any component automatically,
  2.1023 +                it will exit and inform you about the problem.
  2.1024 +                When this happens, read more below in
  2.1025 +                <a href="#configureoptions">the <code>configure</code> options</a>.
  2.1026 +                <p>
  2.1027 +                    Some examples:
  2.1028 +                </p>
  2.1029 +                <table border="1">
  2.1030 +                    <thead>
  2.1031 +                        <tr>
  2.1032 +                            <th>Description</th>
  2.1033 +                            <th>Configure Command Line</th>
  2.1034 +                        </tr>
  2.1035 +                    </thead>                   
  2.1036 +                    <tbody>
  2.1037 +                        <tr>
  2.1038 +                            <td>Windows 32bit build with freetype specified</td>
  2.1039 +                            <td>
  2.1040 +                                <code>bash ./configure --with-freetype=/cygdrive/c/freetype-i586 --with-target-bits=32</code>   
  2.1041 +                            </td>
  2.1042 +                        </tr>
  2.1043 +                        <tr>
  2.1044 +                            <td>Debug 64bit Build</td>
  2.1045 +                            <td>
  2.1046 +                                <code>bash ./configure --enable-debug --with-target-bits=64</code>   
  2.1047 +                            </td>
  2.1048 +                        </tr>
  2.1049 +                    </tbody>
  2.1050 +                </table>
  2.1051  
  2.1052 -                <p/>
  2.1053 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
  2.1054 +                <!-- ====================================================== -->
  2.1055 +                <h4><a name="configureoptions">Configure Options</a></h4>
  2.1056 +                <blockquote>
  2.1057 +                    Complete details on all the OpenJDK <code>configure</code> options can
  2.1058 +                    be seen with:
  2.1059 +                    <blockquote>
  2.1060 +                        <b><code>bash ./configure --help=short</code></b>
  2.1061 +                    </blockquote>
  2.1062 +                    Use <code>-help</code> to see all the <code>configure</code> options
  2.1063 +                    available.
  2.1064 +
  2.1065 +                    You can generate any number of different configurations,
  2.1066 +                    e.g. debug, release, 32, 64, etc.
  2.1067 +
  2.1068 +                    Some of the more commonly used <code>configure</code> options are:
  2.1069 +
  2.1070 +                    <table border="1">
  2.1071 +                        <thead>
  2.1072 +                            <tr>
  2.1073 +                                <th width="300">OpenJDK Configure Option</th>
  2.1074 +                                <th>Description</th>
  2.1075 +                            </tr>
  2.1076 +                        </thead>                   
  2.1077 +                        <tbody>
  2.1078 +                            <tr>
  2.1079 +                                <td><b><code>--enable-debug</code></b></td>
  2.1080 +                                <td>
  2.1081 +                                    set the debug level to fastdebug (this is a shorthand for
  2.1082 +                                    <code>--with-debug-level=fastdebug</code>)
  2.1083 +                                </td>
  2.1084 +                            </tr>
  2.1085 +                            <tr>
  2.1086 +                                <td><b><code>--with-alsa=</code></b><i>path</i></td>
  2.1087 +                                <td>
  2.1088 +                                    select the location of the
  2.1089 +                                    <a name="alsa">Advanced Linux Sound Architecture (ALSA)</a>
  2.1090 +                                    <br>                        
  2.1091 +                                    Version 0.9.1 or newer of the ALSA files are
  2.1092 +                                    required for building the OpenJDK on Linux.
  2.1093 +                                    These Linux files are usually available from an "alsa"
  2.1094 +                                    of "libasound"
  2.1095 +                                    development package,
  2.1096 +                                    and it's highly recommended that you try and use
  2.1097 +                                    the package provided by the particular version of Linux that
  2.1098 +                                    you are using.
  2.1099 +                                </td>
  2.1100 +                            </tr>   
  2.1101 +                            <tr>
  2.1102 +                                <td><b><code>--with-boot-jdk=</code></b><i>path</i></td>
  2.1103 +                                <td>
  2.1104 +                                    select the <a href="#bootjdk">Bootstrap JDK</a>
  2.1105 +                                </td>
  2.1106 +                            </tr>                      
  2.1107 +                            <tr>
  2.1108 +                                <td><b><code>--with-boot-jdk-jvmargs=</code></b>"<i>args</i>"</td>
  2.1109 +                                <td>
  2.1110 +                                    provide the JVM options to be used to run the 
  2.1111 +                                    <a href="#bootjdk">Bootstrap JDK</a>
  2.1112 +                                </td>
  2.1113 +                            </tr>
  2.1114 +                            <tr>
  2.1115 +                                <td><b><code>--with-cacerts=</code></b><i>path</i></td>
  2.1116 +                                <td>
  2.1117 +                                    select the path to the cacerts file.
  2.1118 +                                    <br>
  2.1119 +                                    See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
  2.1120 +                                        http://en.wikipedia.org/wiki/Certificate_Authority</a>
  2.1121 +                                    for a better understanding of the Certificate Authority (CA).
  2.1122 +                                    A certificates file named "cacerts"
  2.1123 +                                    represents a system-wide keystore with CA certificates. 
  2.1124 +                                    In JDK and JRE
  2.1125 +                                    binary bundles, the "cacerts" file contains root CA certificates from
  2.1126 +                                    several public CAs (e.g., VeriSign, Thawte, and Baltimore).
  2.1127 +                                    The source contain a cacerts file
  2.1128 +                                    without CA root certificates. 
  2.1129 +                                    Formal JDK builders will need to secure
  2.1130 +                                    permission from each public CA and include the certificates into their
  2.1131 +                                    own custom cacerts file. 
  2.1132 +                                    Failure to provide a populated cacerts file
  2.1133 +                                    will result in verification errors of a certificate chain during runtime.
  2.1134 +                                    By default an empty cacerts file is provided and that should be
  2.1135 +                                    fine for most JDK developers.
  2.1136 +                                </td>
  2.1137 +                            </tr>    
  2.1138 +                            <tr>
  2.1139 +                                <td><b><code>--with-cups=</code></b><i>path</i></td>
  2.1140 +                                <td>
  2.1141 +                                    select the CUPS install location
  2.1142 +                                    <br>
  2.1143 +                                    The
  2.1144 +                                    <a name="cups">Common UNIX Printing System (CUPS) Headers</a>
  2.1145 +                                    are required for building the 
  2.1146 +                                    OpenJDK on Solaris and Linux.
  2.1147 +                                    The Solaris header files can be obtained by installing 
  2.1148 +                                    the package <strong>SFWcups</strong> from the Solaris Software
  2.1149 +                                    Companion CD/DVD, these often will be installed into the
  2.1150 +                                    directory <code>/opt/sfw/cups</code>.
  2.1151 +                                    <br>
  2.1152 +                                    The CUPS header files can always be downloaded from
  2.1153 +                                    <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
  2.1154 +                                </td>
  2.1155 +                            </tr>    
  2.1156 +                            <tr>
  2.1157 +                                <td><b><code>--with-cups-include=</code></b><i>path</i></td>
  2.1158 +                                <td>
  2.1159 +                                    select the CUPS include directory location
  2.1160 +                                </td>
  2.1161 +                            </tr>                           
  2.1162 +                            <tr>
  2.1163 +                                <td><b><code>--with-debug-level=</code></b><i>level</i></td>
  2.1164 +                                <td>
  2.1165 +                                    select the debug information level of release,
  2.1166 +                                    fastdebug, or slowdebug
  2.1167 +                                </td>
  2.1168 +                            </tr>                          
  2.1169 +                            <tr>
  2.1170 +                                <td><b><code>--with-dev-kit=</code></b><i>path</i></td>
  2.1171 +                                <td>
  2.1172 +                                    select location of the compiler install or
  2.1173 +                                    developer install location
  2.1174 +                                </td>
  2.1175 +                            </tr>       
  2.1176 +                            <tr>
  2.1177 +                                <td><b><code>--with-dxsdk=</code></b><i>path</i></td>
  2.1178 +                                <td>
  2.1179 +                                    select location of the Windows Direct X SDK install
  2.1180 +                                    <br>
  2.1181 +                                    The <a name="dxsdk">Microsoft DirectX 9.0 SDK</a>
  2.1182 +                                    header files and libraries
  2.1183 +                                    from the Summer 2004 edition
  2.1184 +                                    are required for building OpenJDK.
  2.1185 +                                    This SDK can be downloaded from 
  2.1186 +                                    <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
  2.1187 +                                        Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
  2.1188 +                                    If the link above becomes obsolete, the SDK can be found from 
  2.1189 +                                    <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
  2.1190 +                                    (search with "DirectX 9.0 SDK Update Summer 2004"). 
  2.1191 +                                    Installation usually will set the environment variable
  2.1192 +                                    <code>DXSDK_DIR</code> to it's install location.
  2.1193 +                                </td>
  2.1194 +                            </tr>       
  2.1195 +                            <tr>
  2.1196 +                                <td><b><code>--with-freetype=</code></b><i>path</i></td>
  2.1197 +                                <td>
  2.1198 +                                    select the freetype files to use.
  2.1199 +                                    <br>
  2.1200 +                                    Expecting the
  2.1201 +                                    <a name="freetype">freetype</a> libraries under
  2.1202 +                                    <code>lib/</code> and the
  2.1203 +                                    headers under <code>include/</code>.
  2.1204 +                                    <br>
  2.1205 +                                    Version 2.3 or newer of FreeType is required.
  2.1206 +                                    On Unix systems required files can be available as part of your
  2.1207 +                                    distribution (while you still may need to upgrade them).
  2.1208 +                                    Note that you need development version of package that 
  2.1209 +                                    includes both the FreeType library and header files.
  2.1210 +                                    <br>
  2.1211 +                                    You can always download latest FreeType version from the
  2.1212 +                                    <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
  2.1213 +                                    <br>
  2.1214 +                                    Building the freetype 2 libraries from scratch is also possible,
  2.1215 +                                    however on Windows refer to the
  2.1216 +                                    <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
  2.1217 +                                        Windows FreeType DLL build instructions</a>.
  2.1218 +                                    <br>
  2.1219 +                                    Note that by default FreeType is built with byte code hinting
  2.1220 +                                    support disabled due to licensing restrictions.
  2.1221 +                                    In this case, text appearance and metrics are expected to
  2.1222 +                                    differ from Sun's official JDK build.
  2.1223 +                                    See
  2.1224 +                                    <a href="http://freetype.sourceforge.net/freetype2/index.html">
  2.1225 +                                        the SourceForge FreeType2 Home Page
  2.1226 +                                    </a>
  2.1227 +                                    for more information.
  2.1228 +                                </td>
  2.1229 +                            </tr>                          
  2.1230 +                            <tr>
  2.1231 +                                <td><b><code>--with-import-hotspot=</code></b><i>path</i></td>
  2.1232 +                                <td>
  2.1233 +                                    select the location to find hotspot
  2.1234 +                                    binaries from a previous build to avoid building
  2.1235 +                                    hotspot
  2.1236 +                                </td>
  2.1237 +                            </tr>                          
  2.1238 +                            <tr>
  2.1239 +                                <td><b><code>--with-target-bits=</code></b><i>arg</i></td>
  2.1240 +                                <td>
  2.1241 +                                    select 32 or 64 bit build
  2.1242 +                                </td>
  2.1243 +                            </tr>                           
  2.1244 +                            <tr>
  2.1245 +                                <td><b><code>--with-jvm-variants=</code></b><i>variants</i></td>
  2.1246 +                                <td>
  2.1247 +                                    select the JVM variants to build from, comma
  2.1248 +                                    separated list that can include:
  2.1249 +                                    server, client, kernel, zero and zeroshark
  2.1250 +                                </td>
  2.1251 +                            </tr>                           
  2.1252 +                            <tr>
  2.1253 +                                <td><b><code>--with-memory-size=</code></b><i>size</i></td>
  2.1254 +                                <td>
  2.1255 +                                    select the RAM size that GNU make will think
  2.1256 +                                    this system has
  2.1257 +                                </td>
  2.1258 +                            </tr>                            
  2.1259 +                            <tr>
  2.1260 +                                <td><a name="msvcrNN"><b><code>--with-msvcr-dll=</code></b><i>path</i></a></td>
  2.1261 +                                <td>
  2.1262 +                                    select the <code>msvcr100.dll</code>
  2.1263 +                                    file to include in the
  2.1264 +                                    Windows builds (C/C++ runtime library for
  2.1265 +                                    Visual Studio).
  2.1266 +                                    <br>
  2.1267 +                                    This is usually picked up automatically
  2.1268 +                                    from the redist
  2.1269 +                                    directories of Visual Studio 2010.
  2.1270 +                                </td>
  2.1271 +                            </tr>                            
  2.1272 +                            <tr>
  2.1273 +                                <td><b><code>--with-num-cores=</code></b><i>cores</i></td>
  2.1274 +                                <td>
  2.1275 +                                    select the number of cores to use (processor
  2.1276 +                                    count or CPU count)
  2.1277 +                                </td>
  2.1278 +                            </tr>
  2.1279 +                            <tr>
  2.1280 +                                <td><b><code>--with-x=</code></b><i>path</i></td>
  2.1281 +                                <td>
  2.1282 +                                    select the location of the X11 and xrender files.
  2.1283 +                                    <br>
  2.1284 +                                    The
  2.1285 +                                    <a name="xrender">XRender Extension Headers</a>
  2.1286 +                                    are required for building the
  2.1287 +                                    OpenJDK on Solaris and Linux.
  2.1288 +                                    <br>
  2.1289 +                                    The Linux header files are usually available from a "Xrender"
  2.1290 +                                    development package, it's recommended that you try and use
  2.1291 +                                    the package provided by the particular distribution of Linux that
  2.1292 +                                    you are using.
  2.1293 +                                    <br>
  2.1294 +                                    The Solaris XRender header files is
  2.1295 +                                    included with the other X11 header files
  2.1296 +                                    in the package <strong>SFWxwinc</strong>
  2.1297 +                                    on new enough versions of
  2.1298 +                                    Solaris and will be installed in
  2.1299 +                                    <code>/usr/X11/include/X11/extensions/Xrender.h</code> or
  2.1300 +                                    <code>/usr/openwin/share/include/X11/extensions/Xrender.h</code>
  2.1301 +                                </td>
  2.1302 +                            </tr>
  2.1303 +                        </tbody>
  2.1304 +                    </table>
  2.1305 +                </blockquote>
  2.1306 +
  2.1307              </blockquote>
  2.1308 -            <h4>Fedora 11</h4>
  2.1309 -            <p>
  2.1310 +
  2.1311 +            <!-- ====================================================== -->
  2.1312 +            <hr>
  2.1313 +            <h3><a name="make">Make</a></h3>
  2.1314              <blockquote>
  2.1315 -                After installing <a href="http://fedoraproject.org">Fedora</a> 11
  2.1316 -              you need to install several build dependencies. The simplest
  2.1317 -              way to do it is to execute the following commands as user 
  2.1318 -                <tt>root</tt>:
  2.1319 -                <p/>
  2.1320 -                <code>yum-builddep java-1.6.0-openjdk</code>
  2.1321 -                <p/>
  2.1322 -                <code>yum install gcc gcc-c++</code>
  2.1323 -                <p/>
  2.1324 -              In addition, it's necessary to set a few environment variables for the build:
  2.1325 -
  2.1326 -                <p/>
  2.1327 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-openjdk</code>
  2.1328 +                The basic invocation of the <code>make</code> utility
  2.1329 +                looks like:
  2.1330 +                <blockquote>
  2.1331 +                    <b><code>make all</code></b>
  2.1332 +                </blockquote>
  2.1333 +                This will start the build to the output directory containing the
  2.1334 +                "configuration" that was created by the <code>configure</code>
  2.1335 +                script. Run <code>make help</code> for more information on
  2.1336 +                the available targets.
  2.1337 +                <br>
  2.1338 +                There are some of the make targets that
  2.1339 +                are of general interest:
  2.1340 +                <table border="1">
  2.1341 +                    <thead>
  2.1342 +                        <tr>
  2.1343 +                            <th>Make Target</th>
  2.1344 +                            <th>Description</th>
  2.1345 +                        </tr>
  2.1346 +                    </thead>                   
  2.1347 +                    <tbody>
  2.1348 +                        <tr>
  2.1349 +                            <td><i>empty</i></td>
  2.1350 +                            <td>build everything but no images</td>
  2.1351 +                        </tr>
  2.1352 +                        <tr>
  2.1353 +                            <td><b><code>all</code></b></td>
  2.1354 +                            <td>build everything including images</td>
  2.1355 +                        </tr>
  2.1356 +                        <tr>
  2.1357 +                            <td><b><code>all-conf</code></b></td>
  2.1358 +                            <td>build all configurations</td>
  2.1359 +                        </tr>
  2.1360 +                        <tr>
  2.1361 +                            <td><b><code>images</code></b></td>
  2.1362 +                            <td>create complete j2sdk and j2re images</td>
  2.1363 +                        </tr>
  2.1364 +                        <tr>
  2.1365 +                            <td><b><code>install</code></b></td>
  2.1366 +                            <td>install the generated images locally, 
  2.1367 +                                typically in <code>/usr/local</code></td>
  2.1368 +                        </tr>
  2.1369 +                        <tr>
  2.1370 +                            <td><b><code>clean</code></b></td>
  2.1371 +                            <td>remove all files generated by make, 
  2.1372 +                                but not those generated by <code>configure</code></td>
  2.1373 +                        </tr>
  2.1374 +                        <tr>
  2.1375 +                            <td><b><code>dist-clean</code></b></td>
  2.1376 +                            <td>remove all files generated by both 
  2.1377 +                                and <code>configure</code> (basically killing the configuration)</td>
  2.1378 +                        </tr>
  2.1379 +                        <tr>
  2.1380 +                            <td><b><code>help</code></b></td>
  2.1381 +                            <td>give some help on using <code>make</code>, 
  2.1382 +                                including some interesting make targets</td>
  2.1383 +                        </tr>
  2.1384 +                    </tbody>
  2.1385 +                </table>
  2.1386              </blockquote>
  2.1387          </blockquote>
  2.1388 -        <!-- ------------------------------------------------------ -->
  2.1389 -        <h3><a name="centos">CentOS 5.5</a></h3>
  2.1390 +
  2.1391 +        <!-- ====================================================== -->
  2.1392 +        <hr>
  2.1393 +        <h2><a name="testing">Testing</a></h2>
  2.1394          <blockquote>
  2.1395 -            After installing
  2.1396 -            <a href="http://www.centos.org/">CentOS 5.5</a>
  2.1397 -            you need to make sure you have
  2.1398 -            the following Development bundles installed:
  2.1399 +            When the build is completed, you should see the generated
  2.1400 +            binaries and associated files in the <code>j2sdk-image</code> 
  2.1401 +            directory in the output directory. 
  2.1402 +            In particular, the 
  2.1403 +            <code>build/<i>*</i>/images/j2sdk-image/bin</code>
  2.1404 +            directory should contain executables for the 
  2.1405 +            OpenJDK tools and utilities for that configuration.
  2.1406 +            The testing tool <code>jtreg</code> will be needed
  2.1407 +            and can be found at:
  2.1408 +            <a href="http://openjdk.java.net/jtreg/" target="_blank">
  2.1409 +                the jtreg site</a>.
  2.1410 +            The provided regression tests in the repositories
  2.1411 +            can be run with the command:
  2.1412              <blockquote>
  2.1413 -                <ul>
  2.1414 -                    <li>Development Libraries</li>
  2.1415 -                    <li>Development Tools</li>
  2.1416 -                    <li>Java Development</li>
  2.1417 -                    <li>X Software Development (Including XFree86-devel)</li>
  2.1418 -                </ul>
  2.1419 -            </blockquote>
  2.1420 -            <p>
  2.1421 -                Plus the following packages:
  2.1422 -            <blockquote>
  2.1423 -                <ul>
  2.1424 -                    <li>cups devel: Cups Development Package</li>
  2.1425 -                    <li>alsa devel: Alsa Development Package</li>
  2.1426 -                    <li>ant: Ant Package</li>
  2.1427 -                    <li>Xi devel: libXi.so Development Package</li>
  2.1428 -                </ul>
  2.1429 -            </blockquote>
  2.1430 -            <p>
  2.1431 -                The freetype 2.3 packages don't seem to be available,
  2.1432 -                but the freetype 2.3 sources can be downloaded, built,
  2.1433 -                and installed easily enough from
  2.1434 -                <a href="http://downloads.sourceforge.net/freetype">
  2.1435 -                    the freetype site</a>.
  2.1436 -                Build and install with something like:
  2.1437 -            <blockquote>
  2.1438 -                <tt>./configure && make && sudo -u root make install</tt>
  2.1439 -            </blockquote>
  2.1440 -            <p>
  2.1441 -                Mercurial packages could not be found easily, but a Google
  2.1442 -                search should find ones, and they usually include Python if
  2.1443 -                it's needed.
  2.1444 -        </blockquote>
  2.1445 -        <!-- ------------------------------------------------------ -->
  2.1446 -        <h3><a name="debian">Debian</a></h3>
  2.1447 -        <blockquote>
  2.1448 -            <h4>Debian 5.0 (Lenny)</h4>
  2.1449 -            <p>
  2.1450 -            <blockquote>
  2.1451 -                After installing <a href="http://debian.org">Debian</a> 5 
  2.1452 -                you need to install several build dependencies. 
  2.1453 -                The simplest way to install the build dependencies is to 
  2.1454 -                execute the following commands as user <tt>root</tt>:
  2.1455 -                <p/>
  2.1456 -                <code>aptitude build-dep openjdk-6</code>
  2.1457 -                <p/>
  2.1458 -                <code>aptitude install openjdk-6-jdk libmotif-dev</code>
  2.1459 -                <p/>
  2.1460 -                In addition, it's necessary to set a few environment variables for the build:
  2.1461 -                <p/>
  2.1462 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
  2.1463 +                <code><b>cd test &amp;&amp; make PRODUCT_HOME=`pwd`/../build/*/images/j2sdk-image all</b></code>
  2.1464              </blockquote>
  2.1465          </blockquote>
  2.1466 +
  2.1467          <!-- ====================================================== -->
  2.1468 -        <h3><a name="ubuntu">Ubuntu</a></h3>
  2.1469 +        <!-- ====================================================== -->
  2.1470 +        <!-- ====================================================== -->
  2.1471 +        <!-- ====================================================== -->
  2.1472 +        <!-- ====================================================== -->
  2.1473 +        <!-- ====================================================== -->
  2.1474 +        <!-- ====================================================== -->
  2.1475 +        <!-- ====================================================== -->
  2.1476 +        <!-- ====================================================== -->
  2.1477 +
  2.1478 +        <!-- ====================================================== -->
  2.1479 +        <hr>
  2.1480 +        <h2><a name="hints">Appendix A: Hints and Tips</a></h2>
  2.1481          <blockquote>
  2.1482 -            <h4>Ubuntu 8.04</h4>
  2.1483 -            <p>
  2.1484 +
  2.1485 +            <h3><a name="faq">FAQ</a></h3>
  2.1486              <blockquote>
  2.1487 -                After installing <a href="http://ubuntu.org">Ubuntu</a> 8.04 
  2.1488 -                you need to install several build dependencies. 
  2.1489 -                <p/>
  2.1490 -                First, you need to enable the universe repository in the 
  2.1491 -                Software Sources application and reload the repository 
  2.1492 -                information. The Software Sources application is available 
  2.1493 -                under the System/Administration menu. 
  2.1494 -                <p/>
  2.1495 -                The simplest way to install the build dependencies is to 
  2.1496 -                execute the following commands:
  2.1497 -                <p/>
  2.1498 -                <code>sudo aptitude build-dep openjdk-6</code>
  2.1499 -                <p/>
  2.1500 -                <code>sudo aptitude install openjdk-6-jdk</code>
  2.1501 -                <p/>
  2.1502 -                In addition, it's necessary to set a few environment variables for the build:
  2.1503 -                <p/>
  2.1504 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
  2.1505 -            </blockquote>
  2.1506 -            <h4>Ubuntu 8.10</h4>
  2.1507 -            <p>
  2.1508 -            <blockquote>
  2.1509 -                After installing <a href="http://ubuntu.org">Ubuntu</a> 8.10 
  2.1510 -                you need to install several build dependencies. The simplest
  2.1511 -                way to do it is to execute the following commands:
  2.1512 -                <p/>
  2.1513 -                <code>sudo aptitude build-dep openjdk-6</code>
  2.1514 -                <p/>
  2.1515 -                <code>sudo aptitude install openjdk-6-jdk</code>
  2.1516 -                <p/>
  2.1517 -                In addition, it's necessary to set a few environment variables for the build:
  2.1518 -                <p/>
  2.1519 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
  2.1520 -            </blockquote>
  2.1521 -            <h4>Ubuntu 9.04</h4>
  2.1522 -            <p>
  2.1523 -            <blockquote>
  2.1524 -                After installing <a href="http://ubuntu.org">Ubuntu</a> 9.04 
  2.1525 -                you need to install several build dependencies. The simplest
  2.1526 -                way to do it is to execute the following commands:
  2.1527 -                <p/>
  2.1528 -                <code>sudo aptitude build-dep openjdk-6</code>
  2.1529 -                <p/>
  2.1530 -                <code>sudo aptitude install openjdk-6-jdk</code>
  2.1531 -                <p/>
  2.1532 -                In addition, it's necessary to set a few environment variables for the build:
  2.1533 -                <p/>
  2.1534 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-6-openjdk</code>
  2.1535 -            </blockquote>
  2.1536 -        </blockquote>
  2.1537 -        <!-- ====================================================== -->
  2.1538 -        <h3><a name="opensuse">OpenSUSE</a></h3>
  2.1539 -        <blockquote>
  2.1540 -            <h4>OpenSUSE 11.1</h4>
  2.1541 -            <p>
  2.1542 -            <blockquote>
  2.1543 -                After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 
  2.1544 -                you need to install several build dependencies. 
  2.1545 -                The simplest way to install the build dependencies is to 
  2.1546 -                execute the following commands:
  2.1547 -                <p/>
  2.1548 -                <code>sudo zypper source-install -d java-1_6_0-openjdk</code>
  2.1549 -                <p/>
  2.1550 -                <code>sudo zypper install make</code>
  2.1551 -                <p/>
  2.1552 -                In addition, it is necessary to set a few environment variables for the build:
  2.1553 -                <p/>
  2.1554 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
  2.1555 -                <p/>
  2.1556 -                Finally, you need to unset the <code>JAVA_HOME</code> environment variable:
  2.1557 -                <p/>
  2.1558 -                <code>export -n JAVA_HOME</code>
  2.1559 -            </blockquote>
  2.1560 -        </blockquote>
  2.1561 -        <!-- ====================================================== -->
  2.1562 -        <h3><a name="mandriva">Mandriva</a></h3>
  2.1563 -        <blockquote>
  2.1564 -            <h4>Mandriva Linux One 2009 Spring</h4>
  2.1565 -            <p>
  2.1566 -            <blockquote>
  2.1567 -                After installing <a href="http://mandriva.org">Mandriva</a> Linux One 2009 Spring 
  2.1568 -                you need to install several build dependencies. 
  2.1569 -                The simplest way to install the build dependencies is to 
  2.1570 -                execute the following commands as user <tt>root</tt>:
  2.1571 -                <p/>
  2.1572 -                <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>
  2.1573 -                <p/>
  2.1574 -                In addition, it is necessary to set a few environment variables for the build:
  2.1575 -                <p/>
  2.1576 -                <code>export LANG=C ALT_BOOTDIR=/usr/lib/jvm/java-1.6.0-openjdk</code>
  2.1577 -            </blockquote>
  2.1578 -        </blockquote>
  2.1579 -        <!-- ====================================================== -->
  2.1580 -        <h3><a name="opensolaris">OpenSolaris</a></h3>
  2.1581 -        <blockquote>
  2.1582 -            <h4>OpenSolaris 2009.06</h4>
  2.1583 -            <p>
  2.1584 -            <blockquote>
  2.1585 -                After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 
  2.1586 -                you need to install several build dependencies. 
  2.1587 -                The simplest way to install the build dependencies is to 
  2.1588 -                execute the following commands:
  2.1589 -                <p/>
  2.1590 -                <code>pfexec pkg install SUNWgmake SUNWj6dev SUNWant sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
  2.1591 -                <p/>
  2.1592 -                In addition, it is necessary to set a few environment variables for the build:
  2.1593 -                <p/>
  2.1594 -                <code>export LANG=C ALT_COMPILER_PATH=/opt/SunStudioExpress/bin/ ALT_CUPS_HEADERS_PATH=/usr/include/</code>
  2.1595 -                <p/>
  2.1596 -                Finally, you need to make sure that the build process can find the Sun Studio compilers:
  2.1597 -                <p/>
  2.1598 -                <code>export PATH=$PATH:/opt/SunStudioExpress/bin/</code>
  2.1599 -            </blockquote>
  2.1600 -        </blockquote>
  2.1601 -        <!-- ------------------------------------------------------ -->  
  2.1602 -        <hr>
  2.1603 -        <h2><a name="directories">Source Directory Structure</a></h2>
  2.1604 -        <blockquote>
  2.1605 -            <p>
  2.1606 -                The source code for the OpenJDK is delivered in a set of
  2.1607 -                directories:
  2.1608 -                <tt>hotspot</tt>,
  2.1609 -                <tt>langtools</tt>,
  2.1610 -                <tt>corba</tt>,
  2.1611 -                <tt>jaxws</tt>,
  2.1612 -                <tt>jaxp</tt>,
  2.1613 -                and
  2.1614 -                <tt>jdk</tt>.
  2.1615 -                The <tt>hotspot</tt> directory contains the source code and make
  2.1616 -                files for building the OpenJDK Hotspot Virtual Machine.
  2.1617 -                The <tt>langtools</tt> directory contains the source code and make
  2.1618 -                files for building the OpenJDK javac and language tools.
  2.1619 -                The <tt>corba</tt> directory contains the source code and make
  2.1620 -                files for building the OpenJDK Corba files.
  2.1621 -                The <tt>jaxws</tt> directory contains the source code and make
  2.1622 -                files for building the OpenJDK JAXWS files.
  2.1623 -                The <tt>jaxp</tt> directory contains the source code and make
  2.1624 -                files for building the OpenJDK JAXP files.
  2.1625 -                The <tt>jdk</tt> directory contains the source code and make files for
  2.1626 -                building the OpenJDK runtime libraries and misc files.
  2.1627 -                The top level <tt>Makefile</tt>
  2.1628 -                is used to build the entire OpenJDK.
  2.1629  
  2.1630 -            <h3><a name="drops">Managing the Source Drops</a></h3>
  2.1631 -            <blockquote>
  2.1632                  <p>
  2.1633 -                    The repositories <tt>jaxp</tt> and <tt>jaxws</tt> actually
  2.1634 -                    do not contain the sources for JAXP or JAX-WS.
  2.1635 -                    These products have their own open source procedures at their
  2.1636 -                    <a href="http://jaxp.java.net/">JAXP</a> and
  2.1637 -                    <a href="http://jax-ws.java.net/">JAX-WS</a> home pages.
  2.1638 -                    The OpenJDK project does need access to these sources to build
  2.1639 -                    a complete JDK image because JAXP and JAX-WS are part of the JDK.
  2.1640 -                    The current process for delivery of the JAXP and JAX-WS sources
  2.1641 -                    involves so called "source drop bundles" downloaded from a public
  2.1642 -                    website.
  2.1643 -                    There are many reasons for this current mechanism, and it is
  2.1644 -                    understood that this is not ideal for the open source community.
  2.1645 -                    It is possible this process could change in the future.
  2.1646 +                    <b>Q:</b> The <code>configure</code> file looks horrible! 
  2.1647 +                    How are you going to edit it?
  2.1648                      <br>
  2.1649 -                    <b>NOTE:</b> The <a href="http://download.java.net/openjdk/jdk8/">
  2.1650 -                        Complete OpenJDK Source Bundles</a> <u>will</u> contain the JAXP and
  2.1651 -                    JAX-WS sources.
  2.1652 +                    <b>A:</b> The <code>configure</code> file is generated (think
  2.1653 +                    "compiled") by the autoconf tools. The source code is
  2.1654 +                    in <code>configure.ac</code> various .m4 files in common/autoconf,
  2.1655 +                    which are
  2.1656 +                    much more readable.
  2.1657                  </p>
  2.1658  
  2.1659 -                <h4><a name="dropcreation">Creation of New Source Drop Bundles</a></h4>
  2.1660 +                <p>
  2.1661 +                    <b>Q:</b> 
  2.1662 +                    Why is the <code>configure</code> file checked in, 
  2.1663 +                    if it is generated?
  2.1664 +                    <br>
  2.1665 +                    <b>A:</b> 
  2.1666 +                    If it was not generated, every user would need to have the autoconf 
  2.1667 +                    tools installed, and re-generate the <code>configure</code> file
  2.1668 +                    as the first step. 
  2.1669 +                    Our goal is to minimize the work needed to be done by the user 
  2.1670 +                    to start building OpenJDK, and to minimize
  2.1671 +                    the number of external dependencies required.
  2.1672 +                </p>
  2.1673 +
  2.1674 +                <p>
  2.1675 +                    <b>Q:</b>
  2.1676 +                    Do you require a specific version of autoconf for regenerating
  2.1677 +                    <code>configure</code>?
  2.1678 +                    <br>
  2.1679 +                    <b>A:</b>
  2.1680 +                    Currently, no, but this will likely be the case when things have 
  2.1681 +                    settled down a bit more. (The reason for this is to avoid
  2.1682 +                    large spurious changes in <code>configure</code> 
  2.1683 +                    in commits that made small changes to <code>configure.ac</code>).
  2.1684 +                </p>
  2.1685 +
  2.1686 +                <p>
  2.1687 +                    <b>Q:</b> 
  2.1688 +                    What are the files in <code>common/makefiles/support/*</code> for? 
  2.1689 +                    They look like gibberish.
  2.1690 +                    <br>
  2.1691 +                    <b>A:</b>
  2.1692 +                    They are a somewhat ugly hack to compensate for command line length
  2.1693 +                    limitations on certain platforms (Windows, Solaris).
  2.1694 +                    Due to a combination of limitations in make and the shell, 
  2.1695 +                    command lines containing too many files will not work properly. 
  2.1696 +                    These
  2.1697 +                    helper files are part of an elaborate hack that will compress the
  2.1698 +                    command line in the makefile and then uncompress it safely. 
  2.1699 +                    We're
  2.1700 +                    not proud of it, but it does fix the problem. 
  2.1701 +                    If you have any better suggestions, we're all ears! :-)
  2.1702 +                </p>
  2.1703 +
  2.1704 +                <p>
  2.1705 +                    <b>Q:</b> 
  2.1706 +                    I want to see the output of the commands that make runs, 
  2.1707 +                    like in the old build. How do I do that?
  2.1708 +                    <br>
  2.1709 +                    <b>A:</b> 
  2.1710 +                    You specify the <code>LOG</code> variable to make. There are
  2.1711 +                    several log levels:
  2.1712 +                </p>
  2.1713                  <blockquote>
  2.1714 -                    <ol>
  2.1715 +                    <ul>
  2.1716                          <li>
  2.1717 -                            The JAXP or JAX-WS team prepares a new zip bundle,
  2.1718 -                            places a copy in a public download area on java.net,
  2.1719 -                            sends us a link and a list of CRs (Change Request Numbers).
  2.1720 -                            The older download bundles should not be deleted.
  2.1721 -                            It is the responsibility of the JAXP and JAX-WS team to
  2.1722 -                            place the proper GPL legal notices on the sources
  2.1723 -                            and do any filtering or java re-packaging for the
  2.1724 -                            OpenJDK instances of these classes.
  2.1725 +                            <b><code>warn</code></b> &mdash; Default and very quiet.
  2.1726                          </li>
  2.1727                          <li>
  2.1728 -                            The OpenJDK team copies this new bundle into shared
  2.1729 -                            area (e.g. <tt>/java/devtools/share/jdk8-drops</tt>).
  2.1730 -                            Older bundles are never deleted so we retain the history.
  2.1731 +                            <b><code>info</code></b> &mdash; Shows more progress information
  2.1732 +                            than warn.
  2.1733                          </li>
  2.1734                          <li>
  2.1735 -                            The OpenJDK team edits the ant property file
  2.1736 -                            <tt>jaxp/jaxp.properties</tt> or
  2.1737 -                            <tt>jaxws/jaxws.properties</tt> to update the
  2.1738 -                            base URL, the zip bundle name, and the MD5 checksum
  2.1739 -                            of the zip bundle
  2.1740 -                            (on Solaris: <tt>sum -c md5 <i>bundlename</i></tt>)
  2.1741 +                            <b><code>debug</code></b> &mdash; Echos all command lines and
  2.1742 +                            prints all macro calls for compilation definitions.
  2.1743                          </li>
  2.1744                          <li>
  2.1745 -                            OpenJDK team reviews and commits those changes with the
  2.1746 -                            given CRs.
  2.1747 +                            <b><code>trace</code></b> &mdash; Echos all $(shell) command
  2.1748 +                            lines as well.
  2.1749                          </li>
  2.1750 -                    </ol>
  2.1751 +                    </ul>
  2.1752                  </blockquote>
  2.1753  
  2.1754 -                <h4><a name="dropusage">Using Source Drop Bundles</a></h4>
  2.1755 +                <p>
  2.1756 +                    <b>Q:</b> 
  2.1757 +                    When do I have to re-run <code>configure</code>?
  2.1758 +                    <br>
  2.1759 +                    <b>A:</b> 
  2.1760 +                    Normally you will run <code>configure</code> only once for creating a 
  2.1761 +                    configuration. 
  2.1762 +                    You need to re-run configuration only if you want to change any
  2.1763 +                    configuration options, 
  2.1764 +                    or if you pull down changes to the <code>configure</code> script.
  2.1765 +                </p>
  2.1766 +
  2.1767 +                <p>
  2.1768 +                    <b>Q:</b> 
  2.1769 +                    I have added a new source file. Do I need to modify the makefiles?
  2.1770 +                    <br>
  2.1771 +                    <b>A:</b> 
  2.1772 +                    Normally, no. If you want to create e.g. a new native
  2.1773 +                    library, 
  2.1774 +                    you will need to modify the makefiles. But for normal file
  2.1775 +                    additions or removals, no changes are needed. There are certan
  2.1776 +                    exceptions for some native libraries where the source files are spread
  2.1777 +                    over many directories which also contain courses for other
  2.1778 +                    libraries. In these cases it was simply easier to create include lists
  2.1779 +                    rather thane excludes.
  2.1780 +                </p>
  2.1781 +
  2.1782 +                <p>
  2.1783 +                    <b>Q:</b>
  2.1784 +                    When I run <code>configure --help</code>, I see many strange options, 
  2.1785 +                    like <code>--dvidir</code>. What is this?
  2.1786 +                    <br>
  2.1787 +                    <b>A:</b> 
  2.1788 +                    Configure provides a slew of options by default, to all projects 
  2.1789 +                    that use autoconf. Most of them are not used in OpenJDK,
  2.1790 +                    so you can safely ignore them. To list only OpenJDK specific features, 
  2.1791 +                    use <code>configure --help=short</code> instead.
  2.1792 +                </p>
  2.1793 +
  2.1794 +                <p>
  2.1795 +                    <b>Q:</b> 
  2.1796 +                    <code>configure</code> provides OpenJDK-specific features such as
  2.1797 +                    <code>--enable-jigsaw</code> or <code>--with-builddeps-server</code>
  2.1798 +                    that are not described in this document. What about those?
  2.1799 +                    <br>
  2.1800 +                    <b>A:</b>
  2.1801 +                    Try them out if you like! But be aware that most of these are 
  2.1802 +                    experimental features. 
  2.1803 +                    Many of them don't do anything at all at the moment; the option 
  2.1804 +                    is just a placeholder. Other depends on
  2.1805 +                    pieces of code or infrastructure that is currently 
  2.1806 +                    not ready for prime time.
  2.1807 +                </p>
  2.1808 +
  2.1809 +                <p>
  2.1810 +                    <b>Q:</b> 
  2.1811 +                    How will you make sure you don't break anything?
  2.1812 +                    <br>
  2.1813 +                    <b>A:</b> 
  2.1814 +                    We have a script that compares the result of the new build system
  2.1815 +                    with the result of the old. For most part, we aim for (and achieve)
  2.1816 +                    byte-by-byte identical output. There are however technical issues 
  2.1817 +                    with e.g. native binaries, which might differ in a byte-by-byte 
  2.1818 +                    comparison, even
  2.1819 +                    when building twice with the old build system. 
  2.1820 +                    For these, we compare relevant aspects 
  2.1821 +                    (e.g. the symbol table and file size). 
  2.1822 +                    Note that we still don't have 100%
  2.1823 +                    equivalence, but we're close.
  2.1824 +                </p>
  2.1825 +
  2.1826 +                <p>
  2.1827 +                    <b>Q:</b> 
  2.1828 +                    I noticed this thing X in the build that looks very broken by design. 
  2.1829 +                    Why don't you fix it?
  2.1830 +                    <br>
  2.1831 +                    <b>A:</b>
  2.1832 +                    Our goal is to produce a build output that is as close as 
  2.1833 +                    technically possible to the old build output. 
  2.1834 +                    If things were weird in the old build,
  2.1835 +                    they will be weird in the new build. 
  2.1836 +                    Often, things were weird before due to obscurity, 
  2.1837 +                    but in the new build system the weird stuff comes up to the surface.
  2.1838 +                    The plan is to attack these things at a later stage, 
  2.1839 +                    after the new build system is established.
  2.1840 +                </p>
  2.1841 +
  2.1842 +                <p>
  2.1843 +                    <b>Q:</b> 
  2.1844 +                    The code in the new build system is not that well-structured.
  2.1845 +                    Will you fix this?
  2.1846 +                    <br>
  2.1847 +                    <b>A:</b>
  2.1848 +                    Yes! The new build system has grown bit by bit as we converted 
  2.1849 +                    the old system. When all of the old build system is converted,
  2.1850 +                    we can take a step back and clean up the structure of the new build
  2.1851 +                    system. Some of this we plan to do before replacing the old build
  2.1852 +                    system and some will need to wait until after.
  2.1853 +                </p>
  2.1854 +
  2.1855 +                <p>
  2.1856 +                    <b>Q:</b> What is @GenerateNativeHeaders?
  2.1857 +                    <br>
  2.1858 +                    <b>A:</b> 
  2.1859 +                    To speed up compilation, we added a flag to javac which makes it 
  2.1860 +                    do the job of javah as well, as a by-product; that is, generating
  2.1861 +                    native .h header files. These files are only generated 
  2.1862 +                    if a class contains native methods. However, sometimes 
  2.1863 +                    a class contains no native method,
  2.1864 +                    but still contains constants that native code needs to use. 
  2.1865 +                    The new GenerateNativeHeaders annotation tells javac to
  2.1866 +                    force generation of a
  2.1867 +                    header file in these cases. (We don't want to generate 
  2.1868 +                    native headers for all classes that contains constants 
  2.1869 +                    but no native methods, since
  2.1870 +                    that would slow down the compilation process needlessly.)
  2.1871 +                </p>
  2.1872 +
  2.1873 +                <p>
  2.1874 +                    <b>Q:</b> 
  2.1875 +                    Is anything able to use the results of the new build's default make target?
  2.1876 +                    <br>
  2.1877 +                    <b>A:</b> 
  2.1878 +                    Yes, this is the minimal (or roughly minimal) 
  2.1879 +                    set of compiled output needed for a developer to actually 
  2.1880 +                    execute the newly built JDK. The idea is that in an incremental 
  2.1881 +                    development fashion, when doing a normal make, 
  2.1882 +                    you should only spend time recompiling what's changed 
  2.1883 +                    (making it purely incremental) and only do the work that's 
  2.1884 +                    needed to actually run and test your code.
  2.1885 +                    The packaging stuff that is part of the <code>images</code>
  2.1886 +                    target is not needed for a normal developer who wants to
  2.1887 +                    test his new code. Even if it's quite fast, it's still unnecessary. 
  2.1888 +                    We're targeting sub-second incremental rebuilds! ;-) 
  2.1889 +                    (Or, well, at least single-digit seconds...)
  2.1890 +                </p>
  2.1891 +
  2.1892 +                <p>
  2.1893 +                    <b>Q:</b>
  2.1894 +                    I usually set a specific environment variable when building, 
  2.1895 +                    but I can't find the equivalent in the new build. 
  2.1896 +                    What should I do?
  2.1897 +                    <br>
  2.1898 +                    <b>A:</b>
  2.1899 +                    It might very well be that we have missed to add support for
  2.1900 +                    an option that was actually used from outside the build system.
  2.1901 +                    Email us and we will
  2.1902 +                    add support for it!
  2.1903 +                </p>
  2.1904 +
  2.1905 +            </blockquote>
  2.1906 +
  2.1907 +            <h3><a name="performance">Build Performance Tips</a></h3>
  2.1908 +            <blockquote>
  2.1909 +
  2.1910 +                <p>Building OpenJDK requires a lot of horsepower. 
  2.1911 +                    Some of the build tools can be adjusted to utilize more or less
  2.1912 +                    of resources such as
  2.1913 +                    parallel threads and memory. 
  2.1914 +                    The <code>configure</code> script analyzes your system and selects reasonable 
  2.1915 +                    values for such options based on your hardware.
  2.1916 +                    If you encounter resource problems, such as out of memory conditions, 
  2.1917 +                    you can modify the detected values with:</p>
  2.1918 +
  2.1919 +                <ul>
  2.1920 +                    <li>
  2.1921 +                        <b><code>--with-num-cores</code></b> 
  2.1922 +                        &mdash; 
  2.1923 +                        number of cores in the build system,
  2.1924 +                        e.g. <code>--with-num-cores=8</code>
  2.1925 +                    </li>
  2.1926 +                    <li>
  2.1927 +                        <b><code>--with-memory-size</code></b> 
  2.1928 +                        &mdash; memory (in MB) available in the build system,
  2.1929 +                        e.g. <code>--with-memory-size=1024</code>
  2.1930 +                    </li>
  2.1931 +                </ul>
  2.1932 +
  2.1933 +                <p>It might also be necessary to specify the JVM arguments passed 
  2.1934 +                    to the Bootstrap JDK, using e.g.
  2.1935 +                    <code>--with-boot-jdk-jvmargs="-Xmx8G -enableassertions"</code>. 
  2.1936 +                    Doing this will override the default JVM arguments 
  2.1937 +                    passed to the Bootstrap JDK.</p>
  2.1938 +
  2.1939 +
  2.1940 +                <p>One of the top goals of the new build system is to improve the
  2.1941 +                    build performance and decrease the time needed to build. This will
  2.1942 +                    soon also apply to the java compilation when the Smart Javac wrapper
  2.1943 +                    is making its way into jdk8. It can be tried in the build-infra
  2.1944 +                    repository already. You are likely to find that the new build system
  2.1945 +                    is faster than the old one even without this feature.</p>
  2.1946 +
  2.1947 +                <p>At the end of a successful execution of <code>configure</code>, 
  2.1948 +                    you will get a performance summary, 
  2.1949 +                    indicating how well the build will perform. Here you will
  2.1950 +                    also get performance hints. 
  2.1951 +                    If you want to build fast, pay attention to those!</p>
  2.1952 +
  2.1953 +                <h4>Building with ccache</h4>
  2.1954 +
  2.1955 +                <p>A simple way to radically speed up compilation of native code
  2.1956 +                    (typically hotspot and native libraries in JDK) is to install
  2.1957 +                    ccache. This will cache and reuse prior compilation results, if the
  2.1958 +                    source code is unchanged. However, ccache versions prior to 3.1.4
  2.1959 +                    does not work correctly with the precompiled headers used in
  2.1960 +                    OpenJDK. So if your platform supports ccache at 3.1.4 or later, we
  2.1961 +                    highly recommend installing it. This is currently only supported on
  2.1962 +                    linux.</p> 
  2.1963 +
  2.1964 +                <h4>Building on local disk</h4>
  2.1965 +
  2.1966 +                <p>If you are using network shares, e.g. via NFS, for your source code, 
  2.1967 +                    make sure the build directory is situated on local disk. 
  2.1968 +                    The performance
  2.1969 +                    penalty is extremely high for building on a network share, 
  2.1970 +                    close to unusable.</p>
  2.1971 +
  2.1972 +                <h4>Building only one JVM</h4>
  2.1973 +
  2.1974 +                <p>The old build builds multiple JVMs on 32-bit systems (client and
  2.1975 +                    server; and on Windows kernel as well). In the new build we have
  2.1976 +                    changed this default to only build server when it's available. This
  2.1977 +                    improves build times for those not interested in multiple JVMs. To
  2.1978 +                    mimic the old behavior on platforms that support it, 
  2.1979 +                    use <code>--with-jvm-variants=client,server</code>.</p>
  2.1980 +
  2.1981 +                <h4>Selecting the number of cores to build on</h4>
  2.1982 +
  2.1983 +                <p>By default, <code>configure</code> will analyze your machine and run the make
  2.1984 +                    process in parallel with as many threads as you have cores. This
  2.1985 +                    behavior can be overridden, either "permanently" (on a <code>configure</code>
  2.1986 +                    basis) using <code>--with-num-cores=N</code> or for a single build
  2.1987 +                    only (on a make basis), using <code>make JOBS=N</code>.</p>
  2.1988 +
  2.1989 +                <p>If you want to make a slower build just this time, to save some CPU
  2.1990 +                    power for other processes, you can run
  2.1991 +                    e.g. <code>make JOBS=2</code>. This will force the makefiles
  2.1992 +                    to only run 2 parallel processes, or even <code>make JOBS=1</code>
  2.1993 +                    which will disable parallelism.</p>
  2.1994 +
  2.1995 +                <p>If you want to have it the other way round, namely having slow 
  2.1996 +                    builds default and override with fast if you're
  2.1997 +                    impatient, you should call <code>configure</code> with 
  2.1998 +                    <code>--with-num-cores=2</code>, making 2 the default. 
  2.1999 +                    If you want to run with more
  2.2000 +                    cores, run <code>make JOBS=8</code></p>
  2.2001 +
  2.2002 +            </blockquote>
  2.2003 +
  2.2004 +            <h3><a name="troubleshooting">Troubleshooting</a></h3>
  2.2005 +            <blockquote>
  2.2006 +
  2.2007 +                <h4>Solving build problems</h4>
  2.2008 +
  2.2009                  <blockquote>
  2.2010 -                    <p>
  2.2011 -                        The ant scripts that build <tt>jaxp</tt> and <tt>jaxws</tt>
  2.2012 -                        will attempt to locate these zip bundles from the directory
  2.2013 -                        in the environment variable
  2.2014 -                        <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt>.
  2.2015 -                        The checksums protect from getting the wrong, corrupted, or
  2.2016 -                        improperly modified sources.
  2.2017 -                        Once the sources are made available, the population will not
  2.2018 -                        happen again unless a <tt>make clobber</tt> is requested
  2.2019 -                        or the <tt>jaxp/drop/</tt> or <tt>jaxws/drop/</tt>
  2.2020 -                        directory is explicitly deleted.
  2.2021 -                        <br>
  2.2022 -                        <b>NOTE:</b> The default Makefile and ant script behavior
  2.2023 -                        is to NOT download these bundles from the public http site.
  2.2024 -                        In general, doing downloads
  2.2025 -                        during the build process is not advised, it creates too much
  2.2026 -                        unpredictability in the build process.
  2.2027 -                        However, you can use <tt>make ALLOW_DOWNLOADS=true</tt> to
  2.2028 -                        tell the ant script that the download of the zip bundle is
  2.2029 -                        acceptable.
  2.2030 -                    </p>
  2.2031 -                    <p>
  2.2032 -                        The recommended procedure for keeping a cache of these
  2.2033 -                        source bundles would be to download them once, place them
  2.2034 -                        in a directory outside the repositories, and then set
  2.2035 -                        <tt><a href="#ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> to refer
  2.2036 -                        to that directory.
  2.2037 -                        These drop bundles do change occasionally, so the newer
  2.2038 -                        bundles may need to be added to this area from time to time.
  2.2039 -                    </p>
  2.2040 +                    If the build fails (and it's not due to a compilation error in 
  2.2041 +                    a source file you've changed), the first thing you should do
  2.2042 +                    is to re-run the build with more verbosity. 
  2.2043 +                    Do this by adding <code>LOG=debug</code> to your make command line.
  2.2044 +                    <br>
  2.2045 +                    The build log (with both stdout and stderr intermingled,
  2.2046 +                    basically the same as you see on your console) can be found as
  2.2047 +                    <code>build.log</code> in your build directory.
  2.2048 +                    <br>
  2.2049 +                    You can ask for help on build problems with the new build system 
  2.2050 +                    on either the
  2.2051 +                    <a href="http://mail.openjdk.java.net/mailman/listinfo/build-dev">
  2.2052 +                        build-dev</a>
  2.2053 +                    or the
  2.2054 +                    <a href="http://mail.openjdk.java.net/mailman/listinfo/build-infra-dev">
  2.2055 +                        build-infra-dev</a>
  2.2056 +                    mailing lists. Please include the relevant parts
  2.2057 +                    of the build log.
  2.2058 +                    <br>
  2.2059 +                    A build can fail for any number of reasons. 
  2.2060 +                    Most failures
  2.2061 +                    are a result of trying to build in an environment in which all the
  2.2062 +                    pre-build requirements have not been met. 
  2.2063 +                    The first step in
  2.2064 +                    troubleshooting a build failure is to recheck that you have satisfied
  2.2065 +                    all the pre-build requirements for your platform.
  2.2066 +                    Scanning the <code>configure</code> log is a good first step, making
  2.2067 +                    sure that what it found makes sense for your system.
  2.2068 +                    Look for strange error messages or any difficulties that
  2.2069 +                    <code>configure</code> had in finding things.
  2.2070 +                    <br>
  2.2071 +                    Some of the more common problems with builds are briefly
  2.2072 +                    described
  2.2073 +                    below, with suggestions for remedies.
  2.2074 +                    <ul>
  2.2075 +                        <li>
  2.2076 +                            <b>Corrupted Bundles on Windows:</b>
  2.2077 +                            <blockquote>
  2.2078 +                                Some virus scanning software has been known to 
  2.2079 +                                corrupt the
  2.2080 +                                downloading of zip bundles.
  2.2081 +                                It may be necessary to disable the 'on access' or 
  2.2082 +                                'real time'
  2.2083 +                                virus scanning features to prevent this corruption.
  2.2084 +                                This type of "real time" virus scanning can also 
  2.2085 +                                slow down the
  2.2086 +                                build process significantly.
  2.2087 +                                Temporarily disabling the feature, or excluding the build
  2.2088 +                                output directory may be necessary to get correct and
  2.2089 +                                faster builds.
  2.2090 +                            </blockquote>
  2.2091 +                        </li>
  2.2092 +                        <li>
  2.2093 +                            <b>Slow Builds:</b>
  2.2094 +                            <blockquote>
  2.2095 +                                If your build machine seems to be overloaded from too many
  2.2096 +                                simultaneous C++ compiles, try setting the 
  2.2097 +                                <code>JOBS=1</code> on the <code>make</code> command line.
  2.2098 +                                Then try increasing the count slowly to an acceptable
  2.2099 +                                level for your system. Also:
  2.2100 +                                <blockquote>
  2.2101 +                                    Creating the javadocs can be very slow, 
  2.2102 +                                    if you are running
  2.2103 +                                    javadoc, consider skipping that step.
  2.2104 +                                    <br>
  2.2105 +                                    Faster CPUs, more RAM, and a faster DISK usually helps.
  2.2106 +                                    The VM build tends to be CPU intensive 
  2.2107 +                                    (many C++ compiles),
  2.2108 +                                    and the rest of the JDK will often be disk intensive.
  2.2109 +                                    <br>
  2.2110 +                                    Faster compiles are possible using a tool called
  2.2111 +                                    <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
  2.2112 +                                </blockquote>
  2.2113 +                            </blockquote>
  2.2114 +                        </li>
  2.2115 +                        <li>
  2.2116 +                            <b>File time issues:</b>
  2.2117 +                            <blockquote>
  2.2118 +                                If you see warnings that refer to file time stamps, e.g.
  2.2119 +                                <blockquote>
  2.2120 +                                    <i>Warning message:</i><code> 
  2.2121 +                                        File `xxx' has modification time in
  2.2122 +                                        the future.</code>
  2.2123 +                                    <br>
  2.2124 +                                    <i>Warning message:</i> <code> Clock skew detected. 
  2.2125 +                                        Your build may
  2.2126 +                                        be incomplete.</code>
  2.2127 +                                </blockquote>
  2.2128 +                                These warnings can occur when the clock on the build 
  2.2129 +                                machine is out of
  2.2130 +                                sync with the timestamps on the source files. 
  2.2131 +                                Other errors, apparently
  2.2132 +                                unrelated but in fact caused by the clock skew, 
  2.2133 +                                can occur along with
  2.2134 +                                the clock skew warnings. 
  2.2135 +                                These secondary errors may tend to obscure the
  2.2136 +                                fact that the true root cause of the problem 
  2.2137 +                                is an out-of-sync clock.
  2.2138 +                                <p>
  2.2139 +                                    If you see these warnings, reset the clock on the
  2.2140 +                                    build
  2.2141 +                                    machine, run "<code><i>gmake</i> clobber</code>" 
  2.2142 +                                    or delete the directory
  2.2143 +                                    containing the build output, and restart the 
  2.2144 +                                    build from the beginning.
  2.2145 +                            </blockquote>
  2.2146 +                        </li>
  2.2147 +                        <li>
  2.2148 +                            <b>Error message: 
  2.2149 +                                <code>Trouble writing out table to disk</code></b>
  2.2150 +                            <blockquote>
  2.2151 +                                Increase the amount of swap space on your build machine.
  2.2152 +                                This  could be caused by overloading the system and
  2.2153 +                                it may be necessary to use:
  2.2154 +                                <blockquote>
  2.2155 +                                    <code>make JOBS=1</code>
  2.2156 +                                </blockquote>
  2.2157 +                                to reduce the load on the system.
  2.2158 +                            </blockquote>
  2.2159 +                        </li>
  2.2160 +                        <li>
  2.2161 +                            <b>Error Message: 
  2.2162 +                                <code>libstdc++ not found:</code></b>
  2.2163 +                            <blockquote>
  2.2164 +                                This is caused by a missing libstdc++.a library.
  2.2165 +                                This is installed as part of a specific package
  2.2166 +                                (e.g. libstdc++.so.devel.386).
  2.2167 +                                By default some 64-bit Linux versions (e.g. Fedora)
  2.2168 +                                only install the 64-bit version of the libstdc++ package.
  2.2169 +                                Various parts of the JDK build require a static
  2.2170 +                                link of the C++ runtime libraries to allow for maximum
  2.2171 +                                portability of the built images.
  2.2172 +                            </blockquote>
  2.2173 +                        </li>
  2.2174 +                        <li>
  2.2175 +                            <b>Linux Error Message:
  2.2176 +                                <code>cannot restore segment prot after reloc</code></b>
  2.2177 +                            <blockquote>
  2.2178 +                                This is probably an issue with SELinux (See
  2.2179 +                                <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
  2.2180 +                                    http://en.wikipedia.org/wiki/SELinux</a>).
  2.2181 +                                Parts of the VM is built without the <code>-fPIC</code> for
  2.2182 +                                performance reasons.
  2.2183 +                                <p>
  2.2184 +                                    To completely disable SELinux:
  2.2185 +                                <ol>
  2.2186 +                                    <li><code>$ su root</code></li>
  2.2187 +                                    <li><code># system-config-securitylevel</code></li>
  2.2188 +                                    <li><code>In the window that appears, select the SELinux tab</code></li>
  2.2189 +                                    <li><code>Disable SELinux</code></li>
  2.2190 +                                </ol>
  2.2191 +                                <p>
  2.2192 +                                    Alternatively, instead of completely disabling it you could
  2.2193 +                                    disable just this one check.
  2.2194 +                                <ol>
  2.2195 +                                    <li>Select System->Administration->SELinux Management</li>
  2.2196 +                                    <li>In the SELinux Management Tool which appears,
  2.2197 +                                        select "Boolean" from the menu on the left</li>
  2.2198 +                                    <li>Expand the "Memory Protection" group</li>
  2.2199 +                                    <li>Check the first item, labeled
  2.2200 +                                        "Allow all unconfined executables to use 
  2.2201 +                                        libraries requiring text relocation ..."</li>
  2.2202 +                                </ol>
  2.2203 +                            </blockquote>
  2.2204 +                        </li>
  2.2205 +                        <li>
  2.2206 +                            <b>Windows Error Messages:</b>
  2.2207 +                            <br>
  2.2208 +                            <code>*** fatal error - couldn't allocate heap, ... </code>
  2.2209 +                            <br>
  2.2210 +                            <code>rm fails with "Directory not empty"</code>
  2.2211 +                            <br>
  2.2212 +                            <code>unzip fails with "cannot create ... Permission denied"</code>
  2.2213 +                            <br>
  2.2214 +                            <code>unzip fails with "cannot create ... Error 50"</code>
  2.2215 +                            <br>
  2.2216 +                            <blockquote>
  2.2217 +                                The CYGWIN software can conflict with other non-CYGWIN
  2.2218 +                                software. See the CYGWIN FAQ section on
  2.2219 +                                <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
  2.2220 +                                    BLODA (applications that interfere with CYGWIN)</a>.
  2.2221 +                            </blockquote>
  2.2222 +                        </li>
  2.2223 +                        <li>
  2.2224 +                            <b>Windows Error Message: <code>spawn failed</code></b>
  2.2225 +                            <blockquote>
  2.2226 +                                Try rebooting the system, or there could be some kind of
  2.2227 +                                issue with the disk or disk partition being used.
  2.2228 +                                Sometimes it comes with a "Permission Denied" message.
  2.2229 +                            </blockquote>
  2.2230 +                        </li>
  2.2231 +                    </ul>
  2.2232                  </blockquote>
  2.2233 -            </blockquote>
  2.2234 -        </blockquote>
  2.2235 -        <!-- ------------------------------------------------------ -->
  2.2236 +
  2.2237 +            </blockquote> <!-- Troubleshooting -->
  2.2238 +
  2.2239 +        </blockquote> <!-- Appendix A -->
  2.2240 +
  2.2241 +        <!-- ====================================================== -->
  2.2242          <hr>
  2.2243 -        <h2><a name="building">Build Information</a></h2>
  2.2244 +        <h2><a name="gmake">Appendix B: GNU make</a></h2>
  2.2245          <blockquote>
  2.2246 -            Building the OpenJDK
  2.2247 -            is done with a <a href="#gmake">GNU <tt>make</tt></a> command line
  2.2248 -            and various
  2.2249 -            environment or make variable settings that direct the makefile rules
  2.2250 -            to where various components have been installed.
  2.2251 -            Where possible the makefiles will attempt to located the various
  2.2252 -            components in the default locations or any component specific 
  2.2253 -            variable settings.
  2.2254 -            When the normal defaults fail or components cannot be found,
  2.2255 -            the various
  2.2256 -            <tt>ALT_*</tt> variables (alternates)
  2.2257 -            can be used to help the makefiles locate components.
  2.2258 -            <p>
  2.2259 -                Refer to the bash/sh/ksh setup file
  2.2260 -                <tt>jdk/make/jdk_generic_profile.sh</tt>
  2.2261 -                if you need help in setting up your environment variables.
  2.2262 -                A build could be as simple as:
  2.2263 -            <blockquote>
  2.2264 -                <pre><tt>
  2.2265 -                bash
  2.2266 -                . jdk/make/jdk_generic_profile.sh
  2.2267 -                <a href="#gmake"><tt>make</tt></a> sanity &amp;&amp; <a href="#gmake"><tt>make</tt></a>
  2.2268 -                </tt></pre>
  2.2269 -            </blockquote>
  2.2270 -            <p>
  2.2271 -                Of course ksh or sh would work too.
  2.2272 -                But some customization will probably be necessary.
  2.2273 -                The <tt>sanity</tt> rule will make some basic checks on build
  2.2274 -                dependencies and generate appropriate warning messages
  2.2275 -                regarding missing, out of date, or newer than expected components
  2.2276 -                found on your system.
  2.2277 -        </blockquote>
  2.2278 -        <!-- ------------------------------------------------------ -->
  2.2279 -        <hr>
  2.2280 -        <h3><a name="gmake">GNU make (<tt><i>gmake</i></tt>)</a></h3>
  2.2281 -        <blockquote>
  2.2282 +
  2.2283              The Makefiles in the OpenJDK are only valid when used with the 
  2.2284 -            GNU version of the utility command <tt>make</tt>
  2.2285 -            (<tt><i>gmake</i></tt>).
  2.2286 +            GNU version of the utility command <code>make</code>
  2.2287 +            (usually called <code>gmake</code> on Solaris).
  2.2288              A few notes about using GNU make:
  2.2289              <ul>
  2.2290                  <li>
  2.2291                      You need GNU make version 3.81 or newer.
  2.2292 +                    If the GNU make utility on your systems is not
  2.2293 +                    3.81 or newer,
  2.2294 +                    see <a href="#buildgmake">"Building GNU make"</a>.
  2.2295                  </li>
  2.2296                  <li>
  2.2297 -                    Place the location of the GNU make binary in the <tt>PATH</tt>. 
  2.2298 -                </li>
  2.2299 -                <li>
  2.2300 -                    <strong>Linux:</strong>
  2.2301 -                    The <tt>/usr/bin/make</tt> should be 3.81 or newer
  2.2302 -                    and should work fine for you.
  2.2303 -                    If this version is not 3.81 or newer,
  2.2304 -                    see the <a href="#buildgmake">"Building GNU make"</a> section.
  2.2305 +                    Place the location of the GNU make binary in the
  2.2306 +                    <code>PATH</code>. 
  2.2307                  </li>
  2.2308                  <li>
  2.2309                      <strong>Solaris:</strong>
  2.2310 -                    Do NOT use <tt>/usr/bin/make</tt> on Solaris.
  2.2311 +                    Do NOT use <code>/usr/bin/make</code> on Solaris.
  2.2312                      If your Solaris system has the software
  2.2313 -                    from the Solaris Companion CD installed, 
  2.2314 -                    you should try and use <tt>gmake</tt>
  2.2315 -                    which will be located in either the <tt>/opt/sfw/bin</tt> or 
  2.2316 -                    <tt>/usr/sfw/bin</tt> directory.
  2.2317 -                    In more recent versions of Solaris GNU make might be found
  2.2318 -                    at <tt>/usr/bin/gmake</tt>.<br>
  2.2319 -                    <b>NOTE:</b> It is very likely that this <tt>gmake</tt>
  2.2320 -                    could be 3.80, you need 3.81, in which case,
  2.2321 -                    see the <a href="#buildgmake">"Building GNU make"</a> section.
  2.2322 +                    from the Solaris Developer Companion CD installed, 
  2.2323 +                    you should try and use <code>gmake</code>
  2.2324 +                    which will be located in either the
  2.2325 +                    <code>/usr/bin</code>, <code>/opt/sfw/bin</code> or 
  2.2326 +                    <code>/usr/sfw/bin</code> directory.
  2.2327                  </li>
  2.2328                  <li>
  2.2329                      <strong>Windows:</strong>
  2.2330 -                    Make sure you start your build inside a bash/sh/ksh shell and are
  2.2331 -                    using a <tt>make.exe</tt> utility built for that environment.<br/>
  2.2332 -                    <strong>MKS</strong> builds need a native Windows version of GNU make
  2.2333 -                    (see <a href="#buildgmake">Building GNU make</a>).<br/>
  2.2334 -                    <strong>Cygwin</strong> builds need
  2.2335 -                    a make version which was specially compiled for the Cygwin environment
  2.2336 -                    (see <a href="#buildgmake">Building GNU make</a>). <strong>WARNING:</strong>
  2.2337 -                    the OpenJDK build with the make utility provided by Cygwin will <strong>not</strong>
  2.2338 -                    work because it does not support drive letters in paths. Make sure that
  2.2339 -                    your version of make will be found before the Cygwins default make by 
  2.2340 -                    setting an appropriate <tt>PATH</tt> environment variable or by removing
  2.2341 -                    Cygwin's make after you built your own make version.<br/>
  2.2342 -                    <strong>MinGW/MSYS</strong> builds can use the default make which 
  2.2343 -                    comes with the environment.
  2.2344 +                    Make sure you start your build inside a bash shell.
  2.2345 +                </li>
  2.2346 +                <li>
  2.2347 +                    <strong>Mac OS X:</strong>
  2.2348 +                    The XCode "command line tools" must be installed on your Mac.
  2.2349                  </li>
  2.2350              </ul>
  2.2351              <p>
  2.2352 @@ -714,1539 +1775,728 @@
  2.2353                  <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
  2.2354                      ftp.gnu.org/pub/gnu/make/</a>.
  2.2355              </p>
  2.2356 -            <!-- ------------------------------------------------------ -->
  2.2357 -            <h4><a name="buildgmake">Building GNU make</a></h4>
  2.2358 +
  2.2359 +            <h3><a name="buildgmake">Building GNU make</a></h3>
  2.2360              <blockquote>
  2.2361 -                First step is to get the GNU make 3.81 (or newer) source from
  2.2362 +                First step is to get the GNU make 3.81 or newer source from
  2.2363                  <a href="http://ftp.gnu.org/pub/gnu/make/" target="_blank">
  2.2364                      ftp.gnu.org/pub/gnu/make/</a>.
  2.2365 -                Building is a little different depending on the OS and unix toolset
  2.2366 -                on Windows:
  2.2367 -                <ul>
  2.2368 -                    <li>
  2.2369 -                        <strong>Linux:</strong>
  2.2370 -                        <tt>./configure && make</tt>
  2.2371 -                    </li>
  2.2372 -                    <li>
  2.2373 -                        <strong>Solaris:</strong>
  2.2374 -                        <tt>./configure && gmake CC=gcc</tt>
  2.2375 -                    </li>
  2.2376 -                    <li>
  2.2377 -                        <strong>Windows for CYGWIN:</strong><br/>
  2.2378 -                        <tt>./configure</tt><br/>
  2.2379 -                        Add the line <tt>#define HAVE_CYGWIN_SHELL 1</tt> to the end of <tt>config.h</tt><br/>
  2.2380 -                        <tt>make</tt><br/>
  2.2381 -                        <br/>
  2.2382 -                        This should produce <tt>make.exe</tt> in the current directory.
  2.2383 -                    </li>
  2.2384 -                    <li>
  2.2385 -                        <strong>Windows for MKS:</strong><br/>
  2.2386 -                        Edit <tt>config.h.W32</tt> and uncomment the line <tt>#define HAVE_MKS_SHELL 1</tt><br/>
  2.2387 -                        Set the environment for your native compiler (e.g. by calling:<br/>
  2.2388 -                        <tt>"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\SetEnv.cmd" /Release /xp /x64)</tt>
  2.2389 -                        <tt>nmake -f NMakefile.win32</tt>
  2.2390 -                        <br/>
  2.2391 -                        This should produce <tt>WinDebug/make.exe</tt> and <tt>WinRel/make.exe</tt>
  2.2392 -                        <br/>
  2.2393 -                        If you get the error: <tt>NMAKE : fatal error U1045: spawn failed : Permission denied</tt>
  2.2394 -                        you have to set the <tt>Read &amp; execute</tt> permission for the file <tt>subproc.bat</tt>.
  2.2395 -                    </li>
  2.2396 -                </ul>
  2.2397 -            </blockquote>
  2.2398 -        </blockquote>
  2.2399 -        <!-- ------------------------------------------------------ -->
  2.2400 -        <hr>
  2.2401 -        <h3><a name="linux">Basic Linux System Setup</a></h3>
  2.2402 -        <blockquote>
  2.2403 -            <strong>i586 only:</strong>
  2.2404 -            The minimum recommended hardware for building the Linux version
  2.2405 -            is a Pentium class processor or better, at least 256 MB of RAM, and
  2.2406 -            approximately 1.5 GB of free disk space.
  2.2407 -            <p> 
  2.2408 -                <strong>X64 only:</strong>
  2.2409 -                The minimum recommended hardware for building the Linux
  2.2410 -                version is an AMD Opteron class processor, at least 512 MB of RAM, and
  2.2411 -                approximately 4 GB of free disk space.
  2.2412 -            <p> 
  2.2413 -                The build will use the tools contained in
  2.2414 -                <tt>/bin</tt> and
  2.2415 -                <tt>/usr/bin</tt>
  2.2416 -                of a standard installation of the Linux operating environment.
  2.2417 -                You should ensure that these directories are in your
  2.2418 -                <tt>PATH</tt>.
  2.2419 -            <p>
  2.2420 -                Note that some Linux systems have a habit of pre-populating
  2.2421 -                your environment variables for you, for example <tt>JAVA_HOME</tt>
  2.2422 -                might get pre-defined for you to refer to the JDK installed on
  2.2423 -                your Linux system.
  2.2424 -                You will need to unset <tt>JAVA_HOME</tt>.
  2.2425 -                It's a good idea to run <tt>env</tt> and verify the
  2.2426 -                environment variables you are getting from the default system
  2.2427 -                settings make sense for building the
  2.2428 -                OpenJDK.
  2.2429 -        </blockquote>
  2.2430 -        <!-- ------------------------------------------------------ -->
  2.2431 -        <h4><a name="linux_checklist">Basic Linux Check List</a></h4>
  2.2432 -        <blockquote>
  2.2433 -            <ol>
  2.2434 -                <li>
  2.2435 -                    Install the
  2.2436 -                    <a href="#bootjdk">Bootstrap JDK</a>, set
  2.2437 -                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
  2.2438 -                </li>
  2.2439 -                <li>
  2.2440 -                    <a href="#importjdk">Optional Import JDK</a>, set
  2.2441 -                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
  2.2442 -                </li>
  2.2443 -                <li>
  2.2444 -                    Install or upgrade the <a href="#freetype">FreeType development
  2.2445 -                        package</a>.
  2.2446 -                </li>
  2.2447 -                <li>
  2.2448 -                    Install
  2.2449 -                    <a href="#ant">Ant 1.7.1 or newer</a>,
  2.2450 -                    make sure it is in your PATH.
  2.2451 -                </li>
  2.2452 -            </ol>
  2.2453 -        </blockquote>
  2.2454 -        <!-- ------------------------------------------------------ -->
  2.2455 -        <hr>
  2.2456 -        <h3><a name="solaris">Basic Solaris System Setup</a></h3>
  2.2457 -        <blockquote>
  2.2458 -            The minimum recommended hardware for building the
  2.2459 -            Solaris SPARC version is an UltraSPARC with 512 MB of RAM. 
  2.2460 -            For building
  2.2461 -            the Solaris x86 version, a Pentium class processor or better and at
  2.2462 -            least 512 MB of RAM are recommended. 
  2.2463 -            Approximately 1.4 GB of free disk
  2.2464 -            space is needed for a 32-bit build.
  2.2465 -            <p>
  2.2466 -                If you are building the 64-bit version, you should
  2.2467 -                run the command "isainfo -v" to verify that you have a
  2.2468 -                64-bit installation, it should say <tt>sparcv9</tt> or
  2.2469 -                <tt>amd64</tt>.
  2.2470 -                An additional 7 GB of free disk space is needed
  2.2471 -                for a 64-bit build.
  2.2472 -            <p> 
  2.2473 -                The build uses the tools contained in <tt>/usr/ccs/bin</tt>
  2.2474 -                and <tt>/usr/bin</tt> of a standard developer or full installation of
  2.2475 -                the Solaris operating environment.
  2.2476 -            <p> 
  2.2477 -                Solaris patches specific to the JDK can be downloaded from the
  2.2478 -                <a href="http://sunsolve.sun.com/show.do?target=patches/JavaSE" target="_blank">
  2.2479 -                    SunSolve JDK Solaris patches download page</a>.
  2.2480 -                You should ensure that the latest patch cluster for
  2.2481 -                your version of the Solaris operating environment has also
  2.2482 -                been installed.
  2.2483 -        </blockquote>
  2.2484 -        <!-- ------------------------------------------------------ -->
  2.2485 -        <h4><a name="solaris_checklist">Basic Solaris Check List</a></h4>
  2.2486 -        <blockquote>
  2.2487 -            <ol>
  2.2488 -                <li>
  2.2489 -                    Install the
  2.2490 -                    <a href="#bootjdk">Bootstrap JDK</a>, set
  2.2491 -                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
  2.2492 -                </li>
  2.2493 -                <li>
  2.2494 -                    <a href="#importjdk">Optional Import JDK</a>, set
  2.2495 -                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
  2.2496 -                </li>
  2.2497 -                <li>
  2.2498 -                    Install the
  2.2499 -                    <a href="#studio">Sun Studio Compilers</a>, set
  2.2500 -                    <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>.
  2.2501 -                </li>
  2.2502 -                <li>
  2.2503 -                    Install the
  2.2504 -                    <a href="#cups">CUPS Include files</a>, set
  2.2505 -                    <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>.
  2.2506 -                </li>
  2.2507 -                <li>
  2.2508 -                    Install the <a href="#xrender">XRender Include files</a>.
  2.2509 -                </li>
  2.2510 -                <li>
  2.2511 -                    Install
  2.2512 -                    <a href="#ant">Ant 1.7.1 or newer</a>,
  2.2513 -                    make sure it is in your PATH.
  2.2514 -                </li>
  2.2515 -            </ol>
  2.2516 -        </blockquote>
  2.2517 -        <!-- ------------------------------------------------------ -->
  2.2518 -        <hr>
  2.2519 -        <h3><a name="windows">Basic Windows System Setup</a></h3>
  2.2520 -        <blockquote> 
  2.2521 -            <strong>i586 only:</strong>
  2.2522 -            The minimum recommended hardware for building the 32-bit or X86
  2.2523 -            Windows version is an Pentium class processor or better, at least
  2.2524 -            512 MB of RAM, and approximately 600 MB of free disk space.
  2.2525 -            <strong>
  2.2526 -                NOTE: The Windows build machines need to use the
  2.2527 -                file system NTFS. 
  2.2528 -                Build machines formatted to FAT32 will not work 
  2.2529 -                because FAT32 doesn't support case-sensitivity in file names.
  2.2530 -            </strong>
  2.2531 -            <p> 
  2.2532 -                <strong>X64 only:</strong>
  2.2533 -                The minimum recommended hardware for building
  2.2534 -                the Windows X64 version is an AMD Opteron class processor, at least 1
  2.2535 -                GB of RAM, and approximately 10 GB of free disk space.
  2.2536 -        </blockquote>
  2.2537 -        <!-- ------------------------------------------------------ -->
  2.2538 -        <h4><a name="paths">Windows Paths</a></h4>
  2.2539 -        <blockquote>
  2.2540 -            <strong>Windows:</strong>
  2.2541 -            Note that GNU make, the shell and other Unix-tools required during the build
  2.2542 -            do not tolerate the Windows habit
  2.2543 -            of having spaces in pathnames or the use of the <tt>\</tt>characters in pathnames.
  2.2544 -            Luckily on most Windows systems, you can use <tt>/</tt>instead of <tt>\</tt>, and
  2.2545 -            there is always a short <a href="http://en.wikipedia.org/wiki/8.3_filename">
  2.2546 -	    "8.3" pathname</a> without spaces for any path that contains spaces.
  2.2547 -            Unfortunately, this short pathname is somewhat dynamic (i.e. dependant on the
  2.2548 -            other files and directories inside a given directory) and can not be 
  2.2549 -            algorithmicly calculated by only looking at a specific path name.
  2.2550 -            <p>
  2.2551 -                The makefiles will try to translate any pathnames supplied
  2.2552 -                to it into the <tt>C:/</tt> style automatically.
  2.2553 -            </p>
  2.2554 -            <p>
  2.2555 -                Special care has to be taken if native Windows applications
  2.2556 -                like <tt>nmake</tt> or <tt>cl</tt> are called with file arguments processed
  2.2557 -                by Unix-tools like <tt>make</tt> or <tt>sh</tt>!
  2.2558 -            </p>
  2.2559 -        </blockquote>
  2.2560 -        <!-- ------------------------------------------------------ -->
  2.2561 -        <h4><a name="paths">Windows build environments</a></h4>
  2.2562 -        <blockquote>
  2.2563 -            Building on Windows requires a Unix-like environment, notably a Unix-like shell.
  2.2564 -            There are several such environments available of which 
  2.2565 -            <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a>, 
  2.2566 -            <a href="http://www.cygwin.com/">Cygwin</a> and 
  2.2567 -            <a href="http://www.mingw.org/wiki/MSYS">MinGW/MSYS</a> are currently supported for
  2.2568 -            the OpenJDK build. One of the differences of these three systems is the way
  2.2569 -            they handle Windows path names, particularly path names which contain
  2.2570 -            spaces, backslashes as path separators and possibly drive letters. Depending
  2.2571 -            on the use case and the specifics of each environment these path problems can
  2.2572 -            be solved by a combination of quoting whole paths, translating backslashes to
  2.2573 -            forward slashes, escaping backslashes with additional backslashes and
  2.2574 -            translating the path names to their <a href="http://en.wikipedia.org/wiki/8.3_filename">
  2.2575 -	    "8.3" version</a>.
  2.2576 -            <p>
  2.2577 -                As of this writing (MKS ver. 9.4, Cygwin ver. 1.7.9, MinGW/MSYS 1.0.17),
  2.2578 -                MKS builds are known to be the fastest Windows builds while MingGW/MSYS
  2.2579 -                builds are slightly slower (about 10%) than MKS builds and Cygwin builds
  2.2580 -                require nearly twice the time (about 180%) of MKS builds (e.g. on a
  2.2581 -                DualCore i7 notebook with 8GB of RAM, HDD and 64-bit Windows 7 operating system
  2.2582 -                the complete OpenJDK 8 product build takes about 49min with MKS, 54min with
  2.2583 -                MinGW/MSYS and 88min with Cygwin).
  2.2584 -            </p>
  2.2585 -            <p>
  2.2586 -                Mixing tools from the different Unix emulation environments is not a good
  2.2587 -                idea and will probably not work!
  2.2588 -            </p>
  2.2589 -            <p>
  2.2590 -                <strong>MKS:</strong> is a commercial product which includes
  2.2591 -                all the Unix utilities which are required to build the OpenJDK except GNU
  2.2592 -                make. In pre-OpenJDK times it was the only supported build environment on
  2.2593 -                Windows. The MKS tools support Windows paths with drive letters and
  2.2594 -                forward slashes as path separator. Paths in environment variables like (for
  2.2595 -                example) <tt>PATH</tt> are separated by semicolon '<tt>;</tt>'.
  2.2596 -            </p>
  2.2597 -            <p>
  2.2598 -                Recent versions of MKS provide the <tt>dosname</tt> utility to convert paths
  2.2599 -                with spaces to short (8.3) path names,e .g.
  2.2600 -                <tt>dosname -s "<i>path</i>"</tt>.   
  2.2601 -            </p>
  2.2602 -            <p>
  2.2603 -                If you are using the MKS environment, you need a native Windows version
  2.2604 -                of Gnu make <a href="#buildgmake">which you can easily build yourself</a>. 
  2.2605 -            </p>
  2.2606 -            <p>
  2.2607 -                <strong>Cygwin:</strong>
  2.2608 -                is an open source, Linux-like environment which tries to emulate
  2.2609 -                a complete POSIX layer on Windows. It tries to be smart about path names
  2.2610 -                and can usually handle all kinds of paths if they are correctly quoted
  2.2611 -                or escaped although internally it maps drive letters <tt>&lt;drive&gt;:</tt> 
  2.2612 -                to a virtual directory <tt>/cygdrive/&lt;drive&gt;</tt>.
  2.2613 -            </p>
  2.2614 -            <p>
  2.2615 -                You can always use the <tt>cygpath</tt> utility to map pathnames with spaces
  2.2616 -                or the backslash character into the <tt>C:/</tt> style of pathname
  2.2617 -                (called 'mixed'), e.g. <tt>cygpath -s -m "<i>path</i>"</tt>.
  2.2618 -            </p>
  2.2619 -            <p>
  2.2620 -                Note that the use of CYGWIN creates a unique problem with regards to
  2.2621 -                setting <a href="#path"><tt>PATH</tt></a>. Normally on Windows
  2.2622 -                the <tt>PATH</tt> variable contains directories
  2.2623 -                separated with the ";" character (Solaris and Linux use ":").
  2.2624 -                With CYGWIN, it uses ":", but that means that paths like "C:/path"
  2.2625 -                cannot be placed in the CYGWIN version  of <tt>PATH</tt> and
  2.2626 -                instead CYGWIN uses something like <tt>/cygdrive/c/path</tt>
  2.2627 -                which CYGWIN understands, but only CYGWIN understands.
  2.2628 -            </p>
  2.2629 -            <p>
  2.2630 -                If you are using the Cygwin environment, you need to 
  2.2631 -                <a href="#buildgmake">compile your own version</a>
  2.2632 -                of GNU make because the default Cygwin make can not handle drive letters in paths. 
  2.2633 -            </p>
  2.2634 -            <p>
  2.2635 -                <strong>MinGW/MSYS:</strong> 
  2.2636 -                MinGW ("Minimalist GNU for Windows") is a collection of free Windows
  2.2637 -                specific header files and import libraries combined with GNU toolsets that
  2.2638 -                allow one to produce native Windows programs that do not rely on any
  2.2639 -                3rd-party C runtime DLLs. MSYS is a supplement to MinGW which allows building
  2.2640 -                applications and programs which rely on traditional UNIX tools to
  2.2641 -                be present. Among others this includes tools like <tt>bash</tt> and <tt>make</tt>.
  2.2642 -            </p>
  2.2643 -            <p>
  2.2644 -                Like Cygwin, MinGW/MSYS can handle different types of path formats. They
  2.2645 -                are internally converted to paths with forward slashes and drive letters
  2.2646 -                <tt>&lt;drive&gt;:</tt> replaced by a virtual
  2.2647 -                directory <tt>/&lt;drive&gt;</tt>.  Additionally, MSYS automatically
  2.2648 -                detects binaries compiled for the MSYS environment and feeds them with the
  2.2649 -                internal, Unix-style path names. If native Windows applications are called
  2.2650 -                from within MSYS programs their path arguments are automatically converted
  2.2651 -                back to Windows style path names with drive letters and backslashes as
  2.2652 -                path separators. This may cause problems for Windows applications which
  2.2653 -                use forward slashes as parameter separator (e.g. <tt>cl /nologo /I</tt>)
  2.2654 -                because MSYS may wrongly <a href="http://mingw.org/wiki/Posix_path_conversion">
  2.2655 -                replace such parameters by drive letters</a>.
  2.2656 -            </p>
  2.2657 -            <p>
  2.2658 -                If you are using the MinGW/MSYS system you can use the default make
  2.2659 -                version supplied by the environment.
  2.2660 -            </p>
  2.2661 -        </blockquote>
  2.2662 -        <!-- ------------------------------------------------------ -->
  2.2663 -        <h4><a name="windows_checklist">Basic Windows Check List</a></h4>
  2.2664 -        <blockquote>
  2.2665 -            <ol>
  2.2666 -                <li>
  2.2667 -                    Install one of the 
  2.2668 -                    <a href="#cygwin">CYGWIN</a>, <a href="#msys">MinGW/MSYS</a> or 
  2.2669 -                    <a href="http://www.mkssoftware.com/products/tk/ds_tkdev.asp">MKS</a> environments. 
  2.2670 -                </li>
  2.2671 -                <li>
  2.2672 -                    Install the 
  2.2673 -                    <a href="#bootjdk">Bootstrap JDK</a>, set
  2.2674 -                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>.
  2.2675 -                </li>
  2.2676 -                <li>
  2.2677 -                    <a href="#importjdk">Optional Import JDK</a>, set
  2.2678 -                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
  2.2679 -                </li>
  2.2680 -                <li>
  2.2681 -                    Install the
  2.2682 -                    <a href="#msvc32">Microsoft Visual Studio Compilers</a>).
  2.2683 -                </li>
  2.2684 -                <li>
  2.2685 -                    Setup all environment variables for compilers 
  2.2686 -                    (see <a href="#msvc32">compilers</a>).
  2.2687 -                </li>
  2.2688 -                <li>
  2.2689 -                    Install 
  2.2690 -                    <a href="#dxsdk">Microsoft DirectX SDK</a>.
  2.2691 -                </li>
  2.2692 -                <li>
  2.2693 -                    Install
  2.2694 -                    <a href="#ant">Ant 1.7.1 or newer</a>,
  2.2695 -                    make sure it is in your PATH and set
  2.2696 -                    <tt><a href="#ANT_HOME">ANT_HOME</a></tt>.
  2.2697 -                </li>
  2.2698 -            </ol>
  2.2699 -        </blockquote>
  2.2700 -        <!-- ------------------------------------------------------ -->
  2.2701 -        <hr>
  2.2702 -        <h3><a name="macosx">Basic Mac OS X System Setup</a></h3>
  2.2703 -        <blockquote> 
  2.2704 -            <strong>X64 only:</strong>
  2.2705 -            The minimum recommended hardware for building
  2.2706 -            the Mac OS X version is any 64-bit capable Intel processor, at least 2
  2.2707 -            GB of RAM, and approximately 3 GB of free disk space. You should also
  2.2708 -            have OS X Lion 10.7.3 installed.
  2.2709 -        </blockquote>
  2.2710 -        <!-- ------------------------------------------------------ -->
  2.2711 -
  2.2712 -        <h4><a name="macosx_checklist">Basic Mac OS X Check List</a></h4>
  2.2713 -        <blockquote>
  2.2714 -            <ol>
  2.2715 -                <li>
  2.2716 -                    Install <a href="https://developer.apple.com/xcode/">XCode 4.1</a> or newer. 
  2.2717 -		    If you install XCode 4.3 or newer, make sure you also install 
  2.2718 -		    "Command line tools" found under the preferences pane "Downloads".
  2.2719 -                </li>
  2.2720 -                <li>
  2.2721 -                    Install <a href="http://support.apple.com/kb/dl1421" target="_blank">"Java for OS X Lion Update 1"</a>, 
  2.2722 -                    set <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a> to <code>`/usr/libexec/java_home -v 1.6`</code></tt>
  2.2723 -                </li>
  2.2724 -                <li>
  2.2725 -                    <a href="#importjdk">Optional Import JDK</a>, set
  2.2726 -                    <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>.
  2.2727 -                </li>
  2.2728 -            </ol>
  2.2729 -        </blockquote>
  2.2730 -        <!-- ------------------------------------------------------ -->
  2.2731 -        <hr>
  2.2732 -        <h3><a name="dependencies">Build Dependencies</a></h3>
  2.2733 -        <blockquote>
  2.2734 -            Depending on the platform, the OpenJDK build process has some basic
  2.2735 -            dependencies on components not part of the OpenJDK sources.
  2.2736 -            Some of these are specific to a platform, some even specific to
  2.2737 -            an architecture.
  2.2738 -            Each dependency will have a set of ALT variables that can be set
  2.2739 -            to tell the makefiles where to locate the component.
  2.2740 -            In most cases setting these ALT variables may not be necessary
  2.2741 -            and the makefiles will find defaults on the system in standard
  2.2742 -            install locations or through component specific variables.
  2.2743 -            <!-- ------------------------------------------------------ -->
  2.2744 -            <h4><a name="bootjdk">Bootstrap JDK</a></h4>
  2.2745 -            <blockquote>
  2.2746 -                All OpenJDK builds require access to the previously released 
  2.2747 -                JDK 6, this is often called a bootstrap JDK.
  2.2748 -                The JDK 6 binaries can be downloaded from Sun's 
  2.2749 -                <a href="http://java.sun.com/javase/downloads/index.jsp"
  2.2750 -                   target="_blank">JDK 6 download site</a>.
  2.2751 -                For build performance reasons
  2.2752 -                is very important that this bootstrap JDK be made available on the
  2.2753 -                local disk of the machine doing the build.
  2.2754 -                You should always set 
  2.2755 -                <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
  2.2756 -                to point to the location of
  2.2757 -                the bootstrap JDK installation, this is the directory pathname
  2.2758 -                that contains a <tt>bin, lib, and include</tt>
  2.2759 -                It's also a good idea to also place its <tt>bin</tt> directory
  2.2760 -                in the <tt>PATH</tt> environment variable, although it's
  2.2761 -                not required.
  2.2762 -                <p>
  2.2763 -                    <strong>Solaris:</strong>
  2.2764 -                    Some pre-installed JDK images may be available to you in the
  2.2765 -                    directory <tt>/usr/jdk/instances</tt>.
  2.2766 -                    If you don't set
  2.2767 -                    <tt><a href="#ALT_BOOTDIR">ALT_BOOTDIR</a></tt>
  2.2768 -                    the makefiles will look in that location for a JDK it can use.
  2.2769 -            </blockquote>
  2.2770 -            <!-- ------------------------------------------------------ -->
  2.2771 -            <h4><a name="importjdk">Optional Import JDK</a></h4>
  2.2772 -            <blockquote>
  2.2773 -                The <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
  2.2774 -                setting is only needed if you are not building the entire
  2.2775 -                JDK. For example, if you have built the entire JDK once, and
  2.2776 -                wanted to avoid repeatedly building the Hotspot VM, you could
  2.2777 -                set this to the location of the previous JDK install image
  2.2778 -                and the build will copy the needed files from this import area.
  2.2779 -            </blockquote>
  2.2780 -            <!-- ------------------------------------------------------ -->
  2.2781 -            <h4><a name="ant">Ant</a></h4>
  2.2782 -            <blockquote>
  2.2783 -                All OpenJDK builds require access to least Ant 1.7.1.
  2.2784 -                The Ant tool is available from the 
  2.2785 -                <a href="http://archive.apache.org/dist/ant/binaries/apache-ant-1.7.1-bin.zip" target="_blank">
  2.2786 -                    Ant 1.7.1 archive download site</a>.
  2.2787 -                You should always make sure <tt>ant</tt> is in your PATH, and
  2.2788 -                on Windows you may also need to set 
  2.2789 -                <tt><a href="#ANT_HOME">ANT_HOME</a></tt>
  2.2790 -                to point to the location of
  2.2791 -                the Ant installation, this is the directory pathname
  2.2792 -                that contains a <tt>bin and lib</tt>.
  2.2793 -                <br>
  2.2794 -                <b>WARNING:</b> Ant versions used from IDE tools like NetBeans
  2.2795 -                or installed via system packages may not operate the same
  2.2796 -                as the one obtained from the Ant download bundles.
  2.2797 -                These system and IDE installers sometimes choose to change
  2.2798 -                the ant installation enough to cause differences.
  2.2799 -            </blockquote>
  2.2800 -            <!-- ------------------------------------------------------ -->
  2.2801 -            <h4><a name="cacerts">Certificate Authority File (cacert)</a></h4>
  2.2802 -            <blockquote>
  2.2803 -                See <a href="http://en.wikipedia.org/wiki/Certificate_Authority" target="_blank">
  2.2804 -                    http://en.wikipedia.org/wiki/Certificate_Authority</a>
  2.2805 -                for a better understanding of the Certificate Authority (CA).
  2.2806 -                A certificates file named "cacerts"
  2.2807 -                represents a system-wide keystore with CA certificates. 
  2.2808 -                In JDK and JRE
  2.2809 -                binary bundles, the "cacerts" file contains root CA certificates from
  2.2810 -                several public CAs (e.g., VeriSign, Thawte, and Baltimore).
  2.2811 -                The source contain a cacerts file
  2.2812 -                without CA root certificates. 
  2.2813 -                Formal JDK builders will need to secure
  2.2814 -                permission from each public CA and include the certificates into their
  2.2815 -                own custom cacerts file. 
  2.2816 -                Failure to provide a populated cacerts file
  2.2817 -                will result in verification errors of a certificate chain during runtime.
  2.2818 -                The variable 
  2.2819 -                <tt><a href="#ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt>
  2.2820 -                can be used to override the default location of the
  2.2821 -                cacerts file that will get placed in your build.
  2.2822 -                By default an empty cacerts file is provided and that should be
  2.2823 -                fine for most JDK developers.
  2.2824 -            </blockquote>
  2.2825 -            <!-- ------------------------------------------------------ -->
  2.2826 -            <h4><a name="compilers">Compilers</a></h4>
  2.2827 -            <blockquote>
  2.2828 -                <strong><a name="gcc">Linux gcc/binutils</a></strong>
  2.2829 +                Building is a little different depending on the OS but is
  2.2830 +                basically done with:
  2.2831                  <blockquote>
  2.2832 -                    The GNU gcc compiler version should be 4.3 or newer.
  2.2833 -                    The compiler used should be the default compiler installed
  2.2834 -                    in <tt>/usr/bin</tt>.
  2.2835 -                </blockquote>
  2.2836 -                <strong><a name="studio">Solaris: Sun Studio</a></strong>
  2.2837 -                <blockquote>
  2.2838 -                    At a minimum, the
  2.2839 -                    <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm" target="_blank">
  2.2840 -                        Sun Studio 12 Update 1 Compilers</a>
  2.2841 -                    (containing version 5.10 of the C and C++ compilers) is required,
  2.2842 -                    including specific patches.
  2.2843 -                    <p>
  2.2844 -                    The Solaris SPARC patch list is:
  2.2845 -                    <ul>
  2.2846 -                        <li>
  2.2847 -                            118683-05: SunOS 5.10: Patch for profiling libraries and assembler
  2.2848 -                        </li>
  2.2849 -                        <li>
  2.2850 -                            119963-21: SunOS 5.10: Shared library patch for C++
  2.2851 -                        </li>
  2.2852 -                        <li>
  2.2853 -                            120753-08: SunOS 5.10: Microtasking libraries (libmtsk) patch
  2.2854 -                        </li>
  2.2855 -                        <li>
  2.2856 -                            128228-09: Sun Studio 12 Update 1: Patch for Sun C++ Compiler
  2.2857 -                        </li>
  2.2858 -                        <li>
  2.2859 -                            141860-03: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
  2.2860 -                        </li>
  2.2861 -                        <li>
  2.2862 -                            141861-05: Sun Studio 12 Update 1: Patch for Sun C Compiler
  2.2863 -                        </li>
  2.2864 -                        <li>
  2.2865 -                            142371-01: Sun Studio 12.1 Update 1: Patch for dbx
  2.2866 -                        </li>
  2.2867 -                        <li>
  2.2868 -                            143384-02: Sun Studio 12 Update 1: Patch for debuginfo handling
  2.2869 -                        </li>
  2.2870 -                        <li>
  2.2871 -                            143385-02: Sun Studio 12 Update 1: Patch for Compiler Common patch for Sun C C++ F77 F95
  2.2872 -                        </li>
  2.2873 -                        <li>
  2.2874 -                            142369-01: Sun Studio 12.1: Patch for Performance Analyzer Tools
  2.2875 -                        </li>
  2.2876 -                    </ul>
  2.2877 -                    <p>
  2.2878 -                        The Solaris X86 patch list is:
  2.2879 -                    <ul>
  2.2880 -                        <li>
  2.2881 -                            119961-07: SunOS 5.10_x86, x64, Patch for profiling libraries and assembler
  2.2882 -                        </li>
  2.2883 -                        <li>
  2.2884 -                            119964-21: SunOS 5.10_x86: Shared library patch for C++_x86
  2.2885 -                        </li>
  2.2886 -                        <li>
  2.2887 -                            120754-08: SunOS 5.10_x86: Microtasking libraries (libmtsk) patch
  2.2888 -                        </li>
  2.2889 -                        <li>
  2.2890 -                            141858-06: Sun Studio 12 Update 1_x86: Sun Compiler Common patch for x86 backend
  2.2891 -                        </li>
  2.2892 -                        <li>
  2.2893 -                            128229-09: Sun Studio 12 Update 1_x86: Patch for C++ Compiler
  2.2894 -                        </li>
  2.2895 -                        <li>
  2.2896 -                            142363-05: Sun Studio 12 Update 1_x86: Patch for C Compiler
  2.2897 -                        </li>
  2.2898 -                        <li>
  2.2899 -                            142368-01: Sun Studio 12.1_x86: Patch for Performance Analyzer Tools
  2.2900 -                        </li>
  2.2901 -                    </ul>
  2.2902 -                    <p> 
  2.2903 -                        Set
  2.2904 -                        <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a>
  2.2905 -                        to point to the location of
  2.2906 -                        the compiler binaries, and place this location in the <tt>PATH</tt>.
  2.2907 -                    <p>
  2.2908 -                        The Oracle Solaris Studio Express compilers at:
  2.2909 -                        <a href="http://developers.sun.com/sunstudio/downloads/express.jsp" target="_blank">
  2.2910 -                            Oracle Solaris Studio Express Download site</a>
  2.2911 -                        are also an option, although these compilers have not
  2.2912 -                        been extensively used yet.
  2.2913 -                </blockquote>
  2.2914 -                <strong><a name="msvc32">Windows i586: Microsoft Visual Studio 2010 Compilers</a></strong>
  2.2915 -                <blockquote>
  2.2916 -                    <p>
  2.2917 -                        <b>BEGIN WARNING</b>: JDK 7 has transitioned to
  2.2918 -                        use the newest VS2010 Microsoft compilers.
  2.2919 -                        No other compilers are known to build the entire JDK,
  2.2920 -                        including non-open portions.
  2.2921 -                        Visual Studio 2010 Express compilers are now able to build all the
  2.2922 -                        open source repositories, but this is 32 bit only. To build 64 bit
  2.2923 -                        Windows binaries use the the 7.1 Windows SDK.
  2.2924 -                        <b>END WARNING.</b>
  2.2925 -                    <p>
  2.2926 -                        The 32-bit OpenJDK Windows build requires
  2.2927 -                        Microsoft Visual Studio C++ 2010 (VS2010) Professional
  2.2928 -                        Edition or Express compiler.
  2.2929 -                        The compiler and other tools are expected to reside
  2.2930 -                        in the location defined by the variable
  2.2931 -                        <tt>VS100COMNTOOLS</tt> which
  2.2932 -                        is set by the Microsoft Visual Studio installer.
  2.2933 -                    <p> 
  2.2934 -                        Once the compiler is installed,
  2.2935 -                        it is recommended that you run <tt>VCVARS32.BAT</tt>
  2.2936 -                        to set the compiler environment variables
  2.2937 -                        <tt>INCLUDE</tt>,
  2.2938 -                        <tt>LIB</tt>, and
  2.2939 -                        <tt>PATH</tt>
  2.2940 -                        prior to building the
  2.2941 -                        OpenJDK.
  2.2942 -                        The above environment variables <b>MUST</b> be set.
  2.2943 -                        This compiler also contains the Windows SDK v 7.0a,
  2.2944 -                        which is an update to the Windows 7 SDK.
  2.2945 -                    <p>
  2.2946 -                        <b>WARNING:</b> Make sure you check out the
  2.2947 -                        <a href="#cygwin">CYGWIN link.exe WARNING</a>.
  2.2948 -                        The path <tt>/usr/bin</tt> must be after the path to the
  2.2949 -                        Visual Studio product.
  2.2950 -                </blockquote>
  2.2951 -                <strong><a name="msvc64">Windows x64: Microsoft Visual Studio 2010 Professional Compiler</a></strong>
  2.2952 -                <blockquote>
  2.2953 -                    For <b>X64</b>, the set up is much the same as 32 bit
  2.2954 -                    except that you run <tt>amd64\VCVARS64.BAT</tt>
  2.2955 -                    to set the compiler environment variables.
  2.2956 -                    Previously 64 bit builds had to use the 64 bit compiler in
  2.2957 -                    an unbundled Windows SDK but this is no longer necessary if
  2.2958 -                    you have VS2010 Professional.
  2.2959 -                </blockquote>
  2.2960 -                <strong><a name="mssdk64">Windows x64: Microsoft Windows 7.1 SDK 64 bit compilers.</a></strong>
  2.2961 -                For a free alternative for 64 bit builds, use the 7.1 SDK.
  2.2962 -                Microsoft say that to set up your paths for this run
  2.2963 -                <pre>
  2.2964 -    c:\Program Files\Microsoft SDKs\Windows\v7.1\bin\setenv.cmd /x64.
  2.2965 -                </pre>
  2.2966 -                What was tested is just directly setting up LIB, INCLUDE,
  2.2967 -                PATH and based on the installation directories using the
  2.2968 -                DOS short name appropriate for the system, (you will
  2.2969 -                need to set them for yours, not just blindly copy this) eg :
  2.2970 -                <pre>
  2.2971 -    set VSINSTALLDIR=c:\PROGRA~2\MICROS~1.0
  2.2972 -    set WindowsSdkDir=c:\PROGRA~1\MICROS~1\Windows\v7.1
  2.2973 -    set PATH=%VSINSTALLDIR%\vc\bin\amd64;%VSINSTALLDIR%\Common7\IDE;%WindowsSdkDir%\bin;%PATH%
  2.2974 -    set INCLUDE=%VSINSTALLDIR%\vc\include;%WindowsSdkDir%\include
  2.2975 -    set LIB=%VSINSTALLDIR%\vc\lib\amd64;%WindowsSdkDir%\lib\x64
  2.2976 -                </pre>
  2.2977 -                <strong><a name="llvmgcc">OS X Lion 10.7.3: LLVM GCC</a></strong>
  2.2978 -                <blockquote>
  2.2979 -                   LLVM GCC is bundled with XCode. The version should be at least 4.2.1.
  2.2980 +                    <code>bash ./configure</code>
  2.2981 +                    <br>
  2.2982 +                    <code>make</code>
  2.2983                  </blockquote>
  2.2984              </blockquote>
  2.2985 -            <!-- ------------------------------------------------------ --> 
  2.2986 -            <h4><a name="zip">Zip and Unzip</a></h4>
  2.2987 +
  2.2988 +        </blockquote> <!-- Appendix B -->
  2.2989 +
  2.2990 +        <!-- ====================================================== -->
  2.2991 +        <hr>
  2.2992 +        <h2><a name="buildenvironments">Appendix C: Build Environments</a></h2>
  2.2993 +        <blockquote>
  2.2994 +
  2.2995 +            <h3><a name="MBE">Minimum Build Environments</a></h3>
  2.2996              <blockquote>
  2.2997 -                Version 2.2 (November 3rd 1997) or newer of the zip utility 
  2.2998 -                and version 5.12 or newer of the unzip utility is needed 
  2.2999 -                to build the JDK.
  2.3000 -                With Solaris, Linux, and Windows CYGWIN, the zip and unzip
  2.3001 -                utilities installed on the system should be fine.
  2.3002 -                Information and the source code for
  2.3003 -                ZIP.EXE and UNZIP.EXE is available on the
  2.3004 -                <a href="http://www.info-zip.org" 
  2.3005 -                   target="_blank">info-zip web site</a>.
  2.3006 +                This file often describes specific requirements for what we 
  2.3007 +                call the
  2.3008 +                "minimum build environments" (MBE) for this 
  2.3009 +                specific release of the JDK.
  2.3010 +                What is listed below is what the Oracle Release
  2.3011 +                Engineering Team will use to build the Oracle JDK product.
  2.3012 +                Building with the MBE will hopefully generate the most compatible
  2.3013 +                bits that install on, and run correctly on, the most variations
  2.3014 +                of the same base OS and hardware architecture.
  2.3015 +                In some cases, these represent what is often called the
  2.3016 +                least common denominator, but each Operating System has different
  2.3017 +                aspects to it.
  2.3018 +                <p>
  2.3019 +                    In all cases, the Bootstrap JDK version minimum is critical,
  2.3020 +                    we cannot guarantee builds will work with older Bootstrap JDK's.
  2.3021 +                    Also in all cases, more RAM and more processors is better,
  2.3022 +                    the minimums listed below are simply recommendations.
  2.3023 +                <p>
  2.3024 +                    With Solaris and Mac OS X, the version listed below is the
  2.3025 +                    oldest release we can guarantee builds and works, and the
  2.3026 +                    specific version of the compilers used could be critical.
  2.3027 +                <p>
  2.3028 +                    With Windows the critical aspect is the Visual Studio compiler
  2.3029 +                    used, which due to it's runtime, generally dictates what Windows
  2.3030 +                    systems can do the builds and where the resulting bits can
  2.3031 +                    be used.<br>
  2.3032 +                    <b>NOTE: We expect a change here off these older Windows OS releases
  2.3033 +                        and to a 'less older' one, probably Windows 2008R2 X64.</b>
  2.3034 +                <p>
  2.3035 +                    With Linux, it was just a matter of picking a
  2.3036 +                    stable distribution that is a good representative for Linux
  2.3037 +                    in general.<br>
  2.3038 +                    <b>NOTE: We expect a change here from Fedora 9 to something else,
  2.3039 +                        but it has not been completely determined yet, possibly
  2.3040 +                        Ubuntu 12.04 X64, unbiased community feedback would be welcome on
  2.3041 +                        what a good choice would be here.</b>
  2.3042 +                <p>
  2.3043 +                    It is understood that most developers will NOT be using these 
  2.3044 +                    specific versions, and in fact creating these specific versions
  2.3045 +                    may be difficult due to the age of some of this software.
  2.3046 +                    It is expected that developers are more often using the more
  2.3047 +                    recent releases and distributions of these operating systems.
  2.3048 +                <p>
  2.3049 +                    Compilation problems with newer or different C/C++ compilers is a
  2.3050 +                    common problem.
  2.3051 +                    Similarly, compilation problems related to changes to the
  2.3052 +                    <code>/usr/include</code> or system header files is also a
  2.3053 +                    common problem with older, newer, or unreleased OS versions.
  2.3054 +                    Please report these types of problems as bugs so that they
  2.3055 +                    can be dealt with accordingly.
  2.3056 +                </p>
  2.3057 +                <table border="1">
  2.3058 +                    <thead>
  2.3059 +                        <tr>
  2.3060 +                            <th>Base OS and Architecture</th>
  2.3061 +                            <th>OS</th>
  2.3062 +                            <th>C/C++ Compiler</th>
  2.3063 +                            <th>Bootstrap JDK</th>
  2.3064 +                            <th>Processors</th>
  2.3065 +                            <th>RAM Minimum</th>
  2.3066 +                            <th>DISK Needs</th>
  2.3067 +                        </tr>
  2.3068 +                    </thead>
  2.3069 +                    <tbody>
  2.3070 +                        <tr>
  2.3071 +                            <td>Linux X86 (32-bit) and X64 (64-bit)</td>
  2.3072 +                            <td>Fedora 9</td>
  2.3073 +                            <td>gcc 4.3 </td>
  2.3074 +                            <td>JDK 7u7</td>
  2.3075 +                            <td>2 or more</td>
  2.3076 +                            <td>1 GB</td>
  2.3077 +                            <td>6 GB</td>
  2.3078 +                        </tr>
  2.3079 +                        <tr>
  2.3080 +                            <td>Solaris SPARC (32-bit) and SPARCV9 (64-bit)</td>
  2.3081 +                            <td>Solaris 10 Update 6</td>
  2.3082 +                            <td>Studio 12 Update 1 + patches</td>
  2.3083 +                            <td>JDK 7u7</td>
  2.3084 +                            <td>4 or more</td>
  2.3085 +                            <td>4 GB</td>
  2.3086 +                            <td>8 GB</td>
  2.3087 +                        </tr>
  2.3088 +                        <tr>
  2.3089 +                            <td>Solaris X86 (32-bit) and X64 (64-bit)</td>
  2.3090 +                            <td>Solaris 10 Update 6</td>
  2.3091 +                            <td>Studio 12 Update 1 + patches</td>
  2.3092 +                            <td>JDK 7u7</td>
  2.3093 +                            <td>4 or more</td>
  2.3094 +                            <td>4 GB</td>
  2.3095 +                            <td>8 GB</td>
  2.3096 +                        </tr>
  2.3097 +                        <tr>
  2.3098 +                            <td>Windows X86 (32-bit)</td>
  2.3099 +                            <td>Windows XP</td>
  2.3100 +                            <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
  2.3101 +                            <td>JDK 7u7</td>
  2.3102 +                            <td>2 or more</td>
  2.3103 +                            <td>2 GB</td>
  2.3104 +                            <td>6 GB</td>
  2.3105 +                        </tr>
  2.3106 +                        <tr>
  2.3107 +                            <td>Windows X64 (64-bit)</td>
  2.3108 +                            <td>Windows Server 2003 - Enterprise x64 Edition</td>
  2.3109 +                            <td>Microsoft Visual Studio C++ 2010 Professional Edition</td>
  2.3110 +                            <td>JDK 7u7</td>
  2.3111 +                            <td>2 or more</td>
  2.3112 +                            <td>2 GB</td>
  2.3113 +                            <td>6 GB</td>
  2.3114 +                        </tr>
  2.3115 +                        <tr>
  2.3116 +                            <td>Mac OS X X64 (64-bit)</td>
  2.3117 +                            <td>Mac OS X 10.7 "Lion"</td>
  2.3118 +                            <td>XCode 4.5.2 or newer</td>
  2.3119 +                            <td>JDK 7u7</td>
  2.3120 +                            <td>2 or more</td>
  2.3121 +                            <td>4 GB</td>
  2.3122 +                            <td>6 GB</td>
  2.3123 +                        </tr>
  2.3124 +                    </tbody>
  2.3125 +                </table>
  2.3126              </blockquote>
  2.3127 -            <!-- ------------------------------------------------------ -->
  2.3128 -            <h4><a name="cups">Common UNIX Printing System (CUPS) Headers (Solaris &amp; Linux)</a></h4>
  2.3129 +
  2.3130 +            <!-- ====================================================== -->
  2.3131 +            <hr>
  2.3132 +            <h3><a name="SDBE">Specific Developer Build Environments</a></h3>
  2.3133              <blockquote>
  2.3134 -                <strong>Solaris:</strong>
  2.3135 -                CUPS header files are required for building the 
  2.3136 -                OpenJDK on Solaris.
  2.3137 -                The Solaris header files can be obtained by installing 
  2.3138 -                the package <strong>SFWcups</strong> from the Solaris Software
  2.3139 -                Companion CD/DVD, these often will be installed into 
  2.3140 -                <tt>/opt/sfw/cups</tt>.
  2.3141 +                We won't be listing all the possible environments, but
  2.3142 +                we will try to provide what information we have available to us.
  2.3143                  <p>
  2.3144 -                    <strong>Linux:</strong>
  2.3145 -                    CUPS header files are required for building the
  2.3146 -                    OpenJDK on Linux.
  2.3147 -                    The Linux header files are usually available from a "cups"
  2.3148 -                    development package, it's recommended that you try and use
  2.3149 -                    the package provided by the particular version of Linux that
  2.3150 -                    you are using.
  2.3151 -                <p>
  2.3152 -                    The CUPS header files can always be downloaded from
  2.3153 -                    <a href="http://www.cups.org" target="_blank">www.cups.org</a>.
  2.3154 -                    The variable
  2.3155 -                    <tt><a href="#ALT_CUPS_HEADERS_PATH">ALT_CUPS_HEADERS_PATH</a></tt>
  2.3156 -                    can be used to override the default location of the
  2.3157 -                    CUPS Header files.
  2.3158 +                    <strong>NOTE: The community can help out by updating
  2.3159 +                        this part of the document.
  2.3160 +                    </strong>
  2.3161 +
  2.3162 +                <h4><a name="fedora">Fedora</a></h4>
  2.3163 +                <blockquote>
  2.3164 +                    After installing the latest
  2.3165 +                    <a href="http://fedoraproject.org">Fedora</a>
  2.3166 +                    you need to install several build dependencies.
  2.3167 +                    The simplest way to do it is to execute the 
  2.3168 +                    following commands as user <code>root</code>:
  2.3169 +                    <blockquote>
  2.3170 +                        <code>yum-builddep java-1.7.0-openjdk</code>
  2.3171 +                        <br>
  2.3172 +                        <code>yum install gcc gcc-c++</code>
  2.3173 +                    </blockquote>
  2.3174 +                    <p>
  2.3175 +                        In addition, it's necessary to set a few environment 
  2.3176 +                        variables for the build:
  2.3177 +                    <blockquote>
  2.3178 +                        <code>export LANG=C</code>
  2.3179 +                        <br>
  2.3180 +                        <code>export PATH="/usr/lib/jvm/java-openjdk/bin:${PATH}"</code>
  2.3181 +                    </blockquote>
  2.3182 +                </blockquote>
  2.3183 +
  2.3184 +
  2.3185 +                <h4><a name="centos">CentOS 5.5</a></h4>
  2.3186 +                <blockquote>
  2.3187 +                    After installing
  2.3188 +                    <a href="http://www.centos.org/">CentOS 5.5</a>
  2.3189 +                    you need to make sure you have
  2.3190 +                    the following Development bundles installed:
  2.3191 +                    <blockquote>
  2.3192 +                        <ul>
  2.3193 +                            <li>Development Libraries</li>
  2.3194 +                            <li>Development Tools</li>
  2.3195 +                            <li>Java Development</li>
  2.3196 +                            <li>X Software Development (Including XFree86-devel)</li>
  2.3197 +                        </ul>
  2.3198 +                    </blockquote>
  2.3199 +                    <p>
  2.3200 +                        Plus the following packages:
  2.3201 +                    <blockquote>
  2.3202 +                        <ul>
  2.3203 +                            <li>cups devel: Cups Development Package</li>
  2.3204 +                            <li>alsa devel: Alsa Development Package</li>
  2.3205 +                            <li>Xi devel: libXi.so Development Package</li>
  2.3206 +                        </ul>
  2.3207 +                    </blockquote>
  2.3208 +                    <p>
  2.3209 +                        The freetype 2.3 packages don't seem to be available,
  2.3210 +                        but the freetype 2.3 sources can be downloaded, built,
  2.3211 +                        and installed easily enough from
  2.3212 +                        <a href="http://downloads.sourceforge.net/freetype">
  2.3213 +                            the freetype site</a>.
  2.3214 +                        Build and install with something like:
  2.3215 +                    <blockquote>
  2.3216 +                        <code>bash ./configure</code>
  2.3217 +                        <br>
  2.3218 +                        <code>make</code>
  2.3219 +                        <br>
  2.3220 +                        <code>sudo -u root make install</code>
  2.3221 +                    </blockquote>
  2.3222 +                    <p>
  2.3223 +                        Mercurial packages could not be found easily, but a Google
  2.3224 +                        search should find ones, and they usually include Python if
  2.3225 +                        it's needed.
  2.3226 +                </blockquote>
  2.3227 +
  2.3228 +                <h4><a name="debian">Debian 5.0 (Lenny)</a></h4>
  2.3229 +                <blockquote>
  2.3230 +                    After installing <a href="http://debian.org">Debian</a> 5 
  2.3231 +                    you need to install several build dependencies. 
  2.3232 +                    The simplest way to install the build dependencies is to 
  2.3233 +                    execute the following commands as user <code>root</code>:
  2.3234 +                    <blockquote>
  2.3235 +                        <code>aptitude build-dep openjdk-7</code>
  2.3236 +                        <br>
  2.3237 +                        <code>aptitude install openjdk-7-jdk libmotif-dev</code>
  2.3238 +                    </blockquote>
  2.3239 +                    <p>
  2.3240 +                        In addition, it's necessary to set a few environment 
  2.3241 +                        variables for the build:
  2.3242 +                    <blockquote>
  2.3243 +                        <code>export LANG=C</code>
  2.3244 +                        <br>
  2.3245 +                        <code>export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"</code>
  2.3246 +                    </blockquote>
  2.3247 +                </blockquote>
  2.3248 +
  2.3249 +                <h4><a name="ubuntu">Ubuntu 12.04</a></h4>
  2.3250 +                <blockquote>                       
  2.3251 +                    After installing <a href="http://ubuntu.org">Ubuntu</a> 12.04 
  2.3252 +                    you need to install several build dependencies. The simplest
  2.3253 +                    way to do it is to execute the following commands:
  2.3254 +                    <blockquote>
  2.3255 +                        <code>sudo aptitude build-dep openjdk-7</code>
  2.3256 +                        <br>
  2.3257 +                        <code>sudo aptitude install openjdk-7-jdk</code>
  2.3258 +                    </blockquote>
  2.3259 +                    <p>
  2.3260 +                        In addition, it's necessary to set a few environment 
  2.3261 +                        variables for the build:
  2.3262 +                    <blockquote>
  2.3263 +                        <code>export LANG=C</code>
  2.3264 +                        <br>
  2.3265 +                        <code>export PATH="/usr/lib/jvm/java-7-openjdk/bin:${PATH}"</code>
  2.3266 +                    </blockquote>
  2.3267 +                </blockquote>
  2.3268 +
  2.3269 +                <h4><a name="opensuse">OpenSUSE 11.1</a></h4>
  2.3270 +                <blockquote>
  2.3271 +                    After installing <a href="http://opensuse.org">OpenSUSE</a> 11.1 
  2.3272 +                    you need to install several build dependencies. 
  2.3273 +                    The simplest way to install the build dependencies is to 
  2.3274 +                    execute the following commands:
  2.3275 +                    <blockquote>
  2.3276 +                        <code>sudo zypper source-install -d java-1_7_0-openjdk</code>
  2.3277 +                        <br>
  2.3278 +                        <code>sudo zypper install make</code>
  2.3279 +                    </blockquote>
  2.3280 +                    <p>
  2.3281 +                        In addition, it is necessary to set a few environment 
  2.3282 +                        variables for the build:
  2.3283 +                    <blockquote>
  2.3284 +                        <code>export LANG=C</code>
  2.3285 +                        <br>
  2.3286 +                        <code>export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:$[PATH}"</code>
  2.3287 +                    </blockquote>
  2.3288 +                    <p>
  2.3289 +                        Finally, you need to unset the <code>JAVA_HOME</code> 
  2.3290 +                        environment variable:
  2.3291 +                    <blockquote>
  2.3292 +                        <code>export -n JAVA_HOME</code>
  2.3293 +                    </blockquote>
  2.3294 +                </blockquote>
  2.3295 +
  2.3296 +                <h4><a name="mandriva">Mandriva Linux One 2009 Spring</a></h4>
  2.3297 +                <blockquote>
  2.3298 +                    After installing <a href="http://mandriva.org">Mandriva</a>
  2.3299 +                    Linux One 2009 Spring 
  2.3300 +                    you need to install several build dependencies. 
  2.3301 +                    The simplest way to install the build dependencies is to 
  2.3302 +                    execute the following commands as user <code>root</code>:
  2.3303 +                    <blockquote>
  2.3304 +                        <code>urpmi java-1.7.0-openjdk-devel make gcc gcc-c++ 
  2.3305 +                            freetype-devel zip unzip libcups2-devel libxrender1-devel
  2.3306 +                            libalsa2-devel libstc++-static-devel libxtst6-devel 
  2.3307 +                            libxi-devel</code>
  2.3308 +                    </blockquote>
  2.3309 +                    <p>
  2.3310 +                        In addition, it is necessary to set a few environment 
  2.3311 +                        variables for the build:
  2.3312 +                    <blockquote>
  2.3313 +                        <code>export LANG=C</code>
  2.3314 +                        <br>
  2.3315 +                        <code>export PATH="/usr/lib/jvm/java-1.7.0-openjdk/bin:${PATH}"</code>
  2.3316 +                    </blockquote>
  2.3317 +                </blockquote>
  2.3318 +
  2.3319 +                <h4><a name="opensolaris">OpenSolaris 2009.06</a></h4>
  2.3320 +                <blockquote>
  2.3321 +                    After installing <a href="http://opensolaris.org">OpenSolaris</a> 2009.06 
  2.3322 +                    you need to install several build dependencies. 
  2.3323 +                    The simplest way to install the build dependencies is to 
  2.3324 +                    execute the following commands:
  2.3325 +                    <blockquote>
  2.3326 +                        <code>pfexec pkg install SUNWgmake SUNWj7dev 
  2.3327 +                            sunstudioexpress SUNWcups SUNWzip SUNWunzip SUNWxwhl 
  2.3328 +                            SUNWxorg-headers SUNWaudh SUNWfreetype2</code>
  2.3329 +                    </blockquote>
  2.3330 +                    <p>
  2.3331 +                        In addition, it is necessary to set a few environment 
  2.3332 +                        variables for the build:
  2.3333 +                    <blockquote>
  2.3334 +                        <code>export LANG=C</code>
  2.3335 +                        <br>
  2.3336 +                        <code>export PATH="/opt/SunStudioExpress/bin:${PATH}"</code>
  2.3337 +                    </blockquote>
  2.3338 +                </blockquote>
  2.3339 +
  2.3340              </blockquote>
  2.3341 -            <!-- ------------------------------------------------------ -->
  2.3342 -            <h4><a name="xrender">XRender Extension Headers (Solaris &amp; Linux)</a></h4>
  2.3343 -            <blockquote>
  2.3344 -                <p>
  2.3345 -                    <strong>Solaris:</strong>
  2.3346 -                    XRender header files are required for building the
  2.3347 -                    OpenJDK on Solaris.
  2.3348 -                    The XRender header file is included with the other X11 header files
  2.3349 -                    in the package <strong>SFWxwinc</strong> on new enough versions of
  2.3350 -                    Solaris and will be installed in
  2.3351 -                    <tt>/usr/X11/include/X11/extensions/Xrender.h</tt> or
  2.3352 -                    <tt>/usr/openwin/share/include/X11/extensions/Xrender.h</tt>
  2.3353 -                </p><p>
  2.3354 -                    <strong>Linux:</strong>
  2.3355 -                    XRender header files are required for building the
  2.3356 -                    OpenJDK on Linux.
  2.3357 -                    The Linux header files are usually available from a "Xrender"
  2.3358 -                    development package, it's recommended that you try and use
  2.3359 -                    the package provided by the particular distribution of Linux that
  2.3360 -                    you are using.
  2.3361 -                </p>
  2.3362 -            </blockquote>
  2.3363 -            <!-- ------------------------------------------------------ -->
  2.3364 -            <h4><a name="freetype">FreeType 2</a></h4>
  2.3365 -            <blockquote>
  2.3366 -                Version 2.3 or newer of FreeType is required for building the OpenJDK.
  2.3367 -                On Unix systems required files can be available as part of your
  2.3368 -                distribution (while you still may need to upgrade them).
  2.3369 -                Note that you need development version of package that 
  2.3370 -                includes both FreeType library and header files.
  2.3371 -                <p>
  2.3372 -                    You can always download latest FreeType version from the
  2.3373 -                    <a href="http://www.freetype.org" target="_blank">FreeType website</a>.
  2.3374 -                <p>
  2.3375 -                    Makefiles will try to pick FreeType from /usr/lib and /usr/include.
  2.3376 -                    In case it is installed elsewhere you will need to set environment
  2.3377 -                    variables
  2.3378 -                    <tt><a href="#ALT_FREETYPE_LIB_PATH">ALT_FREETYPE_LIB_PATH</a></tt>
  2.3379 -                    and
  2.3380 -                    <tt><a href="#ALT_FREETYPE_HEADERS_PATH">ALT_FREETYPE_HEADERS_PATH</a></tt>
  2.3381 -                    to refer to place where library and header files are installed.
  2.3382 -                <p>
  2.3383 -                    Building the freetype 2 libraries from scratch is also possible,
  2.3384 -                    however on Windows refer to the
  2.3385 -                    <a href="http://freetype.freedesktop.org/wiki/FreeType_DLL">
  2.3386 -                        Windows FreeType DLL build instructions</a>.
  2.3387 -                <p>
  2.3388 -                    Note that by default FreeType is built with byte code hinting
  2.3389 -                    support disabled due to licensing restrictions.
  2.3390 -                    In this case, text appearance and metrics are expected to
  2.3391 -                    differ from Sun's official JDK build.
  2.3392 -                    See
  2.3393 -                    <a href="http://freetype.sourceforge.net/freetype2/index.html">
  2.3394 -                        the SourceForge FreeType2 Home Page
  2.3395 -                    </a>
  2.3396 -                    for more information.
  2.3397 -            </blockquote>    
  2.3398 -            <!-- ------------------------------------------------------ -->
  2.3399 -            <h4><a name="alsa">Advanced Linux Sound Architecture (ALSA) (Linux only)</a></h4>
  2.3400 -            <blockquote>
  2.3401 -                <strong>Linux only:</strong>
  2.3402 -                Version 0.9.1 or newer of the ALSA files are
  2.3403 -                required for building the OpenJDK on Linux.
  2.3404 -                These Linux files are usually available from an "alsa"
  2.3405 -                of "libasound"
  2.3406 -                development package, it's highly recommended that you try and use
  2.3407 -                the package provided by the particular version of Linux that
  2.3408 -                you are using.
  2.3409 -                The makefiles will check this emit a sanity error if it is
  2.3410 -                missing or the wrong version.
  2.3411 -                <p>
  2.3412 -                    In particular, older Linux systems will likely not have the
  2.3413 -                    right version of ALSA installed, for example
  2.3414 -                    Redhat AS 2.1 U2 and SuSE 8.1 do not include a sufficiently
  2.3415 -                    recent ALSA distribution.
  2.3416 -                    On rpm-based systems, you can see if ALSA is installed by
  2.3417 -                    running this command:
  2.3418 -                <pre>
  2.3419 -                    <tt>rpm -qa | grep alsa</tt>
  2.3420 -                </pre>
  2.3421 -                Both <tt>alsa</tt> and <tt>alsa-devel</tt> packages are needed.
  2.3422 -                <p> 
  2.3423 -                    If your distribution does not come with ALSA, and you can't
  2.3424 -                    find ALSA packages built for your particular system,
  2.3425 -                    you can try to install the pre-built ALSA rpm packages from
  2.3426 -                    <a href="http://www.freshrpms.net/" target="_blank">
  2.3427 -                        <tt>www.freshrpms.net</tt></a>.
  2.3428 -                    Note that installing a newer ALSA could
  2.3429 -                    break sound output if an older version of ALSA was previously
  2.3430 -                    installed on the system, but it will enable JDK compilation.
  2.3431 -                <blockquote>
  2.3432 -                    Installation: execute as root<br>
  2.3433 -                    [i586]: <code>rpm -Uv --force alsa-lib-devel-0.9.1-rh61.i386.rpm</code><br>
  2.3434 -                    [x64]: <code>rpm -Uv --force alsa-lib-devel-0.9.8-amd64.x86_64.rpm</code><br>
  2.3435 -                    Uninstallation:<br>
  2.3436 -                    [i586]: <code>rpm -ev alsa-lib-devel-0.9.1-rh61</code><br>
  2.3437 -                    [x64]:<code>rpm -ev alsa-lib-devel-0.9.8-amd64</code><br>
  2.3438 -                    Make sure that you do not link to the static library
  2.3439 -                    (<tt>libasound.a</tt>),
  2.3440 -                    by verifying that the dynamic library (<tt>libasound.so</tt>) is
  2.3441 -                    correctly installed in <tt>/usr/lib</tt>.
  2.3442 -                </blockquote>
  2.3443 -                As a last resort you can go to the
  2.3444 -                <a href="http://www.alsa-project.org" target="_blank">
  2.3445 -                    Advanced Linux Sound Architecture Site</a> and build it from
  2.3446 -                source.
  2.3447 -                <blockquote>
  2.3448 -                    Download driver and library
  2.3449 -                    source tarballs from 
  2.3450 -                    <a href="http://www.alsa-project.org" target="_blank">ALSA's homepage</a>. 
  2.3451 -                    As root, execute the following
  2.3452 -                    commands (you may need to adapt the version number):
  2.3453 -                    <pre>
  2.3454 -                        <tt>
  2.3455 -                            $ tar xjf alsa-driver-0.9.1.tar.bz2
  2.3456 -                            $ cd alsa-driver-0.9.1
  2.3457 -                            $ ./configure
  2.3458 -                            $ make install
  2.3459 -                            $ cd ..
  2.3460 -                            $ tar xjf alsa-lib-0.9.1.tar.bz2
  2.3461 -                            $ cd alsa-lib-0.9.1
  2.3462 -                            $ ./configure
  2.3463 -                            $ make install
  2.3464 -                        </tt>
  2.3465 -                    </pre>
  2.3466 -                    Should one of the above steps fail, refer to the documentation on
  2.3467 -                    ALSA's home page.
  2.3468 -                </blockquote>
  2.3469 -                Note that this is a minimum install that enables
  2.3470 -                building the JDK platform. To actually use ALSA sound drivers, more
  2.3471 -                steps are necessary as outlined in the documentation on ALSA's homepage.
  2.3472 -                <p>
  2.3473 -                    ALSA can be uninstalled by executing <tt>make uninstall</tt> first in
  2.3474 -                    the <tt>alsa-lib-0.9.1</tt> directory and then in
  2.3475 -                    <tt>alsa-driver-0.9.1</tt>.
  2.3476 -            </blockquote>
  2.3477 -            There are no ALT* variables to change the assumed locations of ALSA,
  2.3478 -            the makefiles will expect to find the ALSA include files and library at:
  2.3479 -            <tt>/usr/include/alsa</tt> and <tt>/usr/lib/libasound.so</tt>.
  2.3480 -        </blockquote>
  2.3481 -        <!-- ------------------------------------------------------ -->
  2.3482 -        <h4>Windows Specific Dependencies</h4>
  2.3483 -        <blockquote>
  2.3484 -            <strong>Unix Command Tools (<a name="cygwin">CYGWIN</a>)</strong>
  2.3485 -            <blockquote> 
  2.3486 -                The OpenJDK requires access to a set of unix command tools
  2.3487 -                on Windows which can be supplied by 
  2.3488 -                <a href="http://www.cygwin.com" target="_blank">CYGWIN</a>. 
  2.3489 -                <p>
  2.3490 -                    The OpenJDK build requires CYGWIN version 1.5.12 or newer.
  2.3491 -                    Information about CYGWIN can
  2.3492 -                    be obtained from the CYGWIN website at
  2.3493 -                    <a href="http://www.cygwin.com" target="_blank">www.cygwin.com</a>.
  2.3494 -                <p>
  2.3495 -                    By default CYGWIN doesn't install all the tools required for building
  2.3496 -                    the OpenJDK.
  2.3497 -                    Along with the default installation, you need to install
  2.3498 -                    the following tools.
  2.3499 -                <blockquote>
  2.3500 -                    <table border="1">
  2.3501 -                        <thead>
  2.3502 -                            <tr>
  2.3503 -                                <td>Binary Name</td>
  2.3504 -                                <td>Category</td>
  2.3505 -                                <td>Package</td>
  2.3506 -                                <td>Description</td>
  2.3507 -                            </tr>
  2.3508 -                        </thead>
  2.3509 -                        <tbody>
  2.3510 -                            <tr>
  2.3511 -                                <td>ar.exe</td>
  2.3512 -                                <td>Devel</td>
  2.3513 -                                <td>binutils</td>
  2.3514 -                                <td>The GNU assembler, linker and binary
  2.3515 -                                    utilities</td>
  2.3516 -                            </tr>
  2.3517 -                            <tr>
  2.3518 -                                <td>make.exe</td>
  2.3519 -                                <td>Devel</td>
  2.3520 -                                <td>make</td>
  2.3521 -                                <td>The GNU version of the 'make' utility built for CYGWIN.<br>
  2.3522 -                                    <b>NOTE</b>: the Cygwin make can not be used to build the 
  2.3523 -                                    OpenJDK.  You only need it to build your own version of make 
  2.3524 -                                    (see <a href="#gmake">the GNU make section</a>)</td>
  2.3525 -                            </tr>
  2.3526 -                            <tr>
  2.3527 -                                <td>m4.exe</td>
  2.3528 -                                <td>Interpreters</td>
  2.3529 -                                <td>m4</td>
  2.3530 -                                <td>GNU implementation of the traditional Unix macro
  2.3531 -                                    processor</td>
  2.3532 -                            </tr>
  2.3533 -                            <tr>
  2.3534 -                                <td>cpio.exe</td>
  2.3535 -                                <td>Utils</td>
  2.3536 -                                <td>cpio</td>
  2.3537 -                                <td>A program to manage archives of files</td>
  2.3538 -                            </tr>
  2.3539 -                            <tr>
  2.3540 -                                <td>gawk.exe</td>
  2.3541 -                                <td>Utils</td>
  2.3542 -                                <td>awk</td>
  2.3543 -                                <td>Pattern-directed scanning and processing language</td>
  2.3544 -                            </tr>
  2.3545 -                            <tr>
  2.3546 -                                <td>file.exe</td>
  2.3547 -                                <td>Utils</td>
  2.3548 -                                <td>file</td>
  2.3549 -                                <td>Determines file type using 'magic' numbers</td>
  2.3550 -                            </tr>
  2.3551 -                            <tr>
  2.3552 -                                <td>zip.exe</td>
  2.3553 -                                <td>Archive</td>
  2.3554 -                                <td>zip</td>
  2.3555 -                                <td>Package and compress (archive) files</td>
  2.3556 -                            </tr>
  2.3557 -                            <tr>
  2.3558 -                                <td>unzip.exe</td>
  2.3559 -                                <td>Archive</td>
  2.3560 -                                <td>unzip</td>
  2.3561 -                                <td>Extract compressed files in a ZIP archive</td>
  2.3562 -                            </tr>
  2.3563 -                            <tr>
  2.3564 -                                <td>free.exe</td>
  2.3565 -                                <td>System</td>
  2.3566 -                                <td>procps</td>
  2.3567 -                                <td>Display amount of free and used memory in the system</td>
  2.3568 -                            </tr>
  2.3569 -                        </tbody>
  2.3570 -                    </table>
  2.3571 -                </blockquote>
  2.3572 -                <p>
  2.3573 -                    Note that the CYGWIN software can conflict with other non-CYGWIN
  2.3574 -                    software on your Windows system.
  2.3575 -                    CYGWIN provides a
  2.3576 -                    <a href="http://cygwin.com/faq/faq.using.html" target="_blank">FAQ</a> for
  2.3577 -                    known issues and problems, of particular interest is the
  2.3578 -                    section on
  2.3579 -                    <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
  2.3580 -                        BLODA (applications that interfere with CYGWIN)</a>.
  2.3581 -                <p>
  2.3582 -                    <b>WARNING:</b>
  2.3583 -                    Be very careful with <b><tt>link.exe</tt></b>, it will conflict
  2.3584 -                    with the Visual Studio version. You need the Visual Studio
  2.3585 -                    version of <tt>link.exe</tt>, not the CYGWIN one.
  2.3586 -                    So it's important that the Visual Studio paths in PATH preceed
  2.3587 -                    the CYGWIN path <tt>/usr/bin</tt>.
  2.3588 -            </blockquote>
  2.3589 -            <strong> Minimalist GNU for Windows (<a name="msys">MinGW/MSYS</a>)</strong>
  2.3590 -            <blockquote> 
  2.3591 -                Alternatively, the set of unix command tools for the OpenJDK build on 
  2.3592 -                Windows can be supplied by 
  2.3593 -                <a href="http://www.mingw.org/wiki/MSYS" target="_blank">MinGW/MSYS</a>.
  2.3594 -                <p>
  2.3595 -                    In addition to the tools which will be installed by default, you have
  2.3596 -                    to manually install the <tt>msys-zip</tt> and <tt>msys-unzip</tt> packages.
  2.3597 -                    This can be easily done with the MinGW command line installer:<br/>
  2.3598 -                    <tt><br/>
  2.3599 -                        mingw-get.exe install msys-zip<br/>
  2.3600 -                        mingw-get.exe install msys-unzip<br/>
  2.3601 -                    </tt>
  2.3602 -                </p>
  2.3603 -            </blockquote>
  2.3604 -            <strong><a name="dxsdk">Microsoft DirectX 9.0 SDK header files and libraries</a></strong>
  2.3605 -            <blockquote>
  2.3606 -                Microsoft DirectX 9.0 SDK (Summer 2004)
  2.3607 -                headers are required for building
  2.3608 -                OpenJDK.
  2.3609 -                This SDK can be downloaded from 
  2.3610 -                <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FD044A42-9912-42A3-9A9E-D857199F888E&amp;displaylang=en" target="_blank">
  2.3611 -                    Microsoft DirectX 9.0 SDK (Summer 2004)</a>.
  2.3612 -                If the link above becomes obsolete, the SDK can be found from 
  2.3613 -                <a href="http://download.microsoft.com" target="_blank">the Microsoft Download Site</a>
  2.3614 -                (search with "DirectX 9.0 SDK Update Summer 2004"). 
  2.3615 -                The location of this SDK can be set with 
  2.3616 -                <tt><a href="#ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt>
  2.3617 -                but it's normally found via the DirectX environment variable
  2.3618 -                <tt>DXSDK_DIR</tt>.
  2.3619 -            </blockquote>
  2.3620 -            <strong><a name="msvcrNN"><tt>MSVCR100.DLL</tt></a></strong>
  2.3621 -            <blockquote> 
  2.3622 -                The OpenJDK build requires access to a redistributable
  2.3623 -                <tt>MSVCR100.DLL</tt>.
  2.3624 -                This is usually picked up automatically from the redist
  2.3625 -                directories of Visual Studio 2010.
  2.3626 -                If this cannot be found set the 
  2.3627 -                <a href="#ALT_MSVCRNN_DLL_PATH"><tt>ALT_MSVCRNN_DLL_PATH</tt></a>
  2.3628 -                variable to the location of this file.
  2.3629 -                <p> 
  2.3630 -            </blockquote>
  2.3631 -        </blockquote>
  2.3632 -        <!-- ------------------------------------------------------ -->
  2.3633 +
  2.3634 +        </blockquote> <!-- Appendix C -->
  2.3635 +
  2.3636 +        <!-- ====================================================== -->
  2.3637 +
  2.3638 +        <!-- Leave out Appendix D --
  2.3639 +
  2.3640 +<hr>
  2.3641 +<h2><a name="mapping">Appendix D: Mapping Old to New</a></h2>
  2.3642 +<blockquote>
  2.3643 +    <p>This table will help you convert some idioms of the old build
  2.3644 +        system to the new build system.</p>
  2.3645 +    <table summary="Cheat sheet for converting from old to new build system">
  2.3646 +        <tr valign="top">
  2.3647 +            <th>In the old build system, you used to...</th>
  2.3648 +            <th>In the new build system, you should ...</th>
  2.3649 +        </tr>
  2.3650 +        <tr valign="top">
  2.3651 +            <td>run <code>make sanity</code></td>
  2.3652 +            <td>run <code>bash ./configure</code></td>
  2.3653 +        </tr>
  2.3654 +        <tr valign="top">
  2.3655 +            <td>set <code>ALT_OUTPUTDIR=build/my-special-output</code></td>
  2.3656 +            <td>before building the first time:
  2.3657 +                <br>
  2.3658 +                <code>cd build/my-special-output</code>
  2.3659 +                <br>
  2.3660 +                <code>bash ../../configure</code>
  2.3661 +                <br>
  2.3662 +                to build:
  2.3663 +                <br>
  2.3664 +                <code>cd build/my-special-output</code>
  2.3665 +                <br>
  2.3666 +                <code>make</code>
  2.3667 +            </td>
  2.3668 +        </tr>
  2.3669 +        <tr valign="top">
  2.3670 +            <td>set <code>ALT_BOOTDIR=/opt/java/jdk7</code></td>
  2.3671 +            <td>run <code>configure --with-boot-jdk=/opt/java/jdk7</code></td>
  2.3672 +        </tr>
  2.3673 +        <tr valign="top">
  2.3674 +            <td>run <code>make ARCH_DATA_MODEL=32</code></td>
  2.3675 +            <td>run <code>configure --with-target-bits=32</code></td>
  2.3676 +        </tr>
  2.3677 +        <tr valign="top">
  2.3678 +            <td>set <code>BUILD_CLIENT_ONLY=true</code></td>
  2.3679 +            <td>run <code>configure --with-jvm-variants=client</code></td>
  2.3680 +        </tr>
  2.3681 +        <tr valign="top">
  2.3682 +            <td>set <code>ALT_FREETYPE_LIB_PATH=/opt/freetype/lib</code> 
  2.3683 +                and <code>ALT_FREETYPE_HEADERS_PATH=/opt/freetype/include</code></td>
  2.3684 +            <td>run <code>configure --with-freetype=/opt/freetype</code></td>
  2.3685 +        </tr>
  2.3686 +        <tr valign="top">
  2.3687 +            <td>set <code>ALT_CUPS_HEADERS_PATH=/opt/cups/include</code></td>
  2.3688 +            <td>run <code>configure --with-cups=/opt/cups</code></td>
  2.3689 +        </tr>
  2.3690 +        <tr valign="top">
  2.3691 +            <td>set <code>ALT_OPENWIN_HOME=/opt/X11R6</code></td>
  2.3692 +            <td>run <code>configure --with-x=/opt/X11R6</code></td>
  2.3693 +        </tr>
  2.3694 +        <tr valign="top">
  2.3695 +            <td>set <code>ALT_MSVCRNN_DLL_PATH=c:/vc_redist</code></td>
  2.3696 +            <td>run <code>configure --with-msvcr100dll=/cygdrive/c/vc_redist</code></td>
  2.3697 +        </tr>
  2.3698 +        <tr valign="top">
  2.3699 +            <td>set <code>ALT_COMPILER_PATH=/opt/my-gcc/bin/gcc</code></td>
  2.3700 +            <td>run <code>CC=/opt/my-gcc/bin/gcc configure</code> 
  2.3701 +                or <code>CXX=/opt/my-gcc/bin/g++ configure</code>
  2.3702 +            </td>
  2.3703 +        </tr>
  2.3704 +        <tr valign="top">
  2.3705 +            <td>set <code>BUILD_HEADLESS_ONLY=true</code></td>
  2.3706 +            <td>run <code>configure --disable-headful</code></td>
  2.3707 +        </tr>
  2.3708 +        <tr valign="top">
  2.3709 +            <td>set <code>ALT_DEVTOOLS_PATH=/opt/mytools</code></td>
  2.3710 +            <td>just run <code>configure</code>, 
  2.3711 +                your tools should be detected automatically. 
  2.3712 +                If you have an unusual configuration, 
  2.3713 +                add the tools directory to your <code>PATH</code>.
  2.3714 +            </td>
  2.3715 +        </tr>
  2.3716 +        <tr valign="top">
  2.3717 +            <td>set <code>ALT_DROPS_DIR=/home/user/dropdir</code></td>
  2.3718 +            <td>source drops are not used anymore</td>
  2.3719 +        </tr>
  2.3720 +        <tr valign="top">
  2.3721 +            <td>set <code>USE_ONLY_BOOTDIR_TOOLS=true</code></td>
  2.3722 +            <td>not needed, <code>configure</code> should always do the Right Thing automatically</td>
  2.3723 +        </tr>
  2.3724 +        <tr valign="top">
  2.3725 +            <td>set <code>ALT_JDK_IMPORT_PATH=/opt/java/import-jdk</code>
  2.3726 +                or <code>ALT_BUILD_JDK_IMPORT_PATH=/opt/java/import-jdk</code>
  2.3727 +            </td>
  2.3728 +            <td>Importing JDKs is no longer possible, 
  2.3729 +                but hotspot can be imported using 
  2.3730 +                <code>--with-import-hotspot</code>. 
  2.3731 +                Documentation on how to achieve a 
  2.3732 +                similar solution will come soon!
  2.3733 +            </td>
  2.3734 +        </tr>
  2.3735 +        <tr valign="top">
  2.3736 +            <td>set <code>EXTRA_CFLAGS=-Xfoo</code></td>
  2.3737 +            <td>run <code>CFLAGS=-Xfoo configure</code></td>
  2.3738 +        </tr>
  2.3739 +        <tr valign="top">
  2.3740 +            <td>set <code>CROSS_COMPILE_ARCH=i586</code></td>
  2.3741 +            <td>see <a href="#sec7.3"> section 7.3, Cross-compilation</a></td>
  2.3742 +        </tr>
  2.3743 +        <tr valign="top">
  2.3744 +            <td>set <code>SKIP_BOOT_CYCLE=false</code></td>
  2.3745 +            <td>Run <code>make bootcycle-images</code>.</td>
  2.3746 +        </tr>
  2.3747 +    </table>
  2.3748 +
  2.3749 +    <h3><a name="variables">Environment/Make Variables</a></h3>
  2.3750 +    <p>
  2.3751 +        Some of the
  2.3752 +        environment or make variables (just called <b>variables</b> in this
  2.3753 +        document) that can impact the build are:
  2.3754 +    <blockquote>
  2.3755 +        <dl>
  2.3756 +            <dt><a name="path"><code>PATH</code></a> </dt>
  2.3757 +            <dd>Typically you want to set the <code>PATH</code> to include:
  2.3758 +                <ul>
  2.3759 +                    <li>The location of the GNU make binary</li>
  2.3760 +                    <li>The location of the Bootstrap JDK <code>java</code> 
  2.3761 +                        (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
  2.3762 +                    <li>The location of the C/C++ compilers 
  2.3763 +                        (see <a href="#compilers"><code>compilers</code></a>)</li>
  2.3764 +                    <li>The location or locations for the Unix command utilities
  2.3765 +                        (e.g. <code>/usr/bin</code>)</li>
  2.3766 +                </ul>
  2.3767 +            </dd>
  2.3768 +            <dt><code>MILESTONE</code> </dt>
  2.3769 +            <dd>
  2.3770 +                The milestone name for the build (<i>e.g.</i>"beta"). 
  2.3771 +                The default value is "internal".
  2.3772 +            </dd>
  2.3773 +            <dt><code>BUILD_NUMBER</code> </dt>
  2.3774 +            <dd>
  2.3775 +                The build number for the build (<i>e.g.</i> "b27"). 
  2.3776 +                The default value is "b00".
  2.3777 +            </dd>
  2.3778 +            <dt><a name="arch_data_model"><code>ARCH_DATA_MODEL</code></a></dt>
  2.3779 +            <dd>The <code>ARCH_DATA_MODEL</code> variable
  2.3780 +                is used to specify whether the build is to generate 32-bit or 64-bit
  2.3781 +                binaries. 
  2.3782 +                The Solaris build supports either 32-bit or 64-bit builds, but
  2.3783 +                Windows and Linux will support only one, depending on the specific
  2.3784 +                OS being used.
  2.3785 +                Normally, setting this variable is only necessary on Solaris.
  2.3786 +                Set <code>ARCH_DATA_MODEL</code> to <code>32</code> for generating 32-bit binaries, 
  2.3787 +                or to <code>64</code> for generating 64-bit binaries.
  2.3788 +            </dd>
  2.3789 +            <dt><a name="ALT_BOOTDIR"><code>ALT_BOOTDIR</code></a></dt>
  2.3790 +            <dd>
  2.3791 +                The location of the bootstrap JDK installation. 
  2.3792 +                See <a href="#bootjdk">Bootstrap JDK</a> for more information.
  2.3793 +                You should always install your own local Bootstrap JDK and
  2.3794 +                always set <code>ALT_BOOTDIR</code> explicitly.
  2.3795 +            </dd>
  2.3796 +            <dt><a name="ALT_OUTPUTDIR"><code>ALT_OUTPUTDIR</code></a> </dt>
  2.3797 +            <dd>
  2.3798 +                An override for specifying the (absolute) path of where the
  2.3799 +                build output is to go.
  2.3800 +                The default output directory will be build/<i>platform</i>.
  2.3801 +            </dd>
  2.3802 +            <dt><a name="ALT_COMPILER_PATH"><code>ALT_COMPILER_PATH</code></a> </dt>
  2.3803 +            <dd>
  2.3804 +                The location of the C/C++ compiler.
  2.3805 +                The default varies depending on the platform. 
  2.3806 +            </dd>
  2.3807 +            <dt><code><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></code></dt>
  2.3808 +            <dd>
  2.3809 +                The location of the <a href="#cacerts">cacerts</a> file.
  2.3810 +                The default will refer to 
  2.3811 +                <code>jdk/src/share/lib/security/cacerts</code>.
  2.3812 +            </dd>
  2.3813 +            <dt><a name="ALT_CUPS_HEADERS_PATH"><code>ALT_CUPS_HEADERS_PATH</code></a> </dt>
  2.3814 +            <dd>
  2.3815 +                The location of the CUPS header files.
  2.3816 +                See <a href="#cups">CUPS information</a> for more information.
  2.3817 +                If this path does not exist the fallback path is 
  2.3818 +                <code>/usr/include</code>.
  2.3819 +            </dd>
  2.3820 +            <dt><a name="ALT_FREETYPE_LIB_PATH"><code>ALT_FREETYPE_LIB_PATH</code></a></dt>
  2.3821 +            <dd>
  2.3822 +                The location of the FreeType shared library. 
  2.3823 +                See <a href="#freetype">FreeType information</a> for details. 
  2.3824 +            </dd>
  2.3825 +            <dt><a name="ALT_FREETYPE_HEADERS_PATH"><code>ALT_FREETYPE_HEADERS_PATH</code></a></dt>
  2.3826 +            <dd>
  2.3827 +                The location of the FreeType header files.
  2.3828 +                See <a href="#freetype">FreeType information</a> for details. 
  2.3829 +            </dd>
  2.3830 +            <dt><a name="ALT_JDK_DEVTOOLS_PATH"><code>ALT_JDK_DEVTOOLS_PATH</code></a></dt>
  2.3831 +            <dd>
  2.3832 +                The default root location of the devtools.
  2.3833 +                The default value is 
  2.3834 +                <code>$(ALT_SLASH_JAVA)/devtools</code>.
  2.3835 +            </dd>
  2.3836 +            <dt><code><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></code> </dt>
  2.3837 +            <dd>
  2.3838 +                The location of tools like the 
  2.3839 +                <a href="#zip"><code>zip</code> and <code>unzip</code></a>
  2.3840 +                binaries, but might also contain the GNU make utility
  2.3841 +                (<code><i>gmake</i></code>).
  2.3842 +                So this area is a bit of a grab bag, especially on Windows.
  2.3843 +                The default value depends on the platform and
  2.3844 +                Unix Commands being used.
  2.3845 +                On Linux the default will be 
  2.3846 +                <code>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</code>, 
  2.3847 +                on Solaris
  2.3848 +                <code>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</code>, 
  2.3849 +                and on Windows with CYGWIN
  2.3850 +                <code>/usr/bin</code>.
  2.3851 +            </dd>
  2.3852 +            <dt><a name="ALT_UNIXCCS_PATH"><code>ALT_UNIXCCS_PATH</code></a></dt>
  2.3853 +            <dd>
  2.3854 +                <strong>Solaris only:</strong>
  2.3855 +                An override for specifying where the Unix CCS
  2.3856 +                command set are located.
  2.3857 +                The default location is <code>/usr/ccs/bin</code> 
  2.3858 +            </dd>
  2.3859 +            <dt><a name="ALT_SLASH_JAVA"><code>ALT_SLASH_JAVA</code></a></dt>
  2.3860 +            <dd>
  2.3861 +                The default root location for many of the ALT path locations
  2.3862 +                of the following ALT variables.
  2.3863 +                The default value is 
  2.3864 +                <code>"/java"</code> on Solaris and Linux, 
  2.3865 +                <code>"J:"</code> on Windows.
  2.3866 +            </dd>
  2.3867 +
  2.3868 +            <dt><a name="ALT_OPENWIN_HOME"><code>ALT_OPENWIN_HOME</code></a></dt>
  2.3869 +            <dd>
  2.3870 +                The top-level directory of the libraries and include files 
  2.3871 +                for the platform's 
  2.3872 +                graphical programming environment. 
  2.3873 +                The default location is platform specific. 
  2.3874 +                For example, on Linux it defaults to <code>/usr/X11R6/</code>.
  2.3875 +            </dd>
  2.3876 +            <dt><strong>Windows specific:</strong></dt>
  2.3877 +            <dd>
  2.3878 +                <dl>
  2.3879 +                    <dt><a name="ALT_WINDOWSSDKDIR"><code>ALT_WINDOWSSDKDIR</code></a> </dt>
  2.3880 +                    <dd>
  2.3881 +                        The location of the 
  2.3882 +                        Microsoft Windows SDK where some tools will be
  2.3883 +                        located.
  2.3884 +                        The default is whatever WINDOWSSDKDIR is set to
  2.3885 +                        (or WindowsSdkDir) or the path
  2.3886 +                        <br>
  2.3887 +                        <code>c:\Program Files\Microsoft SDKs\Windows\v7.0a</code>
  2.3888 +                    </dd>
  2.3889 +                    <dt><code><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></code> </dt>
  2.3890 +                    <dd>
  2.3891 +                        The location of the 
  2.3892 +                        <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
  2.3893 +                        The default will be to try and use the DirectX environment
  2.3894 +                        variable <code>DXSDK_DIR</code>,
  2.3895 +                        failing that, look in <code>C:/DXSDK</code>.
  2.3896 +                    </dd>
  2.3897 +                    <dt><code><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></code> </dt>
  2.3898 +                    <dd>
  2.3899 +                        The location of the 
  2.3900 +                        <a href="#msvcrNN"><code>MSVCR100.DLL</code></a>. 
  2.3901 +                    </dd>
  2.3902 +                </dl>
  2.3903 +            </dd>
  2.3904 +            <dt><strong>Cross-Compilation Support:</strong></dt>
  2.3905 +            <dd>
  2.3906 +                <dl>
  2.3907 +                    <dt><a name="CROSS_COMPILE_ARCH"><code>CROSS_COMPILE_ARCH</code></a> </dt>
  2.3908 +                    <dd>
  2.3909 +                        Set to the target architecture of a 
  2.3910 +                        cross-compilation build. If set, this
  2.3911 +                        variable is used to signify that we are 
  2.3912 +                        cross-compiling. The expectation
  2.3913 +                        is that
  2.3914 +                        <a href="#ALT_COMPILER_PATH"><code>ALT_COMPILER_PATH</code></a> 
  2.3915 +                        is set
  2.3916 +                        to point to the cross-compiler and that any
  2.3917 +                        cross-compilation specific flags
  2.3918 +                        are passed using 
  2.3919 +                        <a href="#EXTRA_CFLAGS"><code>EXTRA_CFLAGS</code></a>.
  2.3920 +                        The <a href="#ALT_OPENWIN_HOME"><code>ALT_OPENWIN_HOME</code></a>
  2.3921 +                        variable should 
  2.3922 +                        also be set to point to the graphical header files
  2.3923 +                        (e.g. X11) provided with 
  2.3924 +                        the cross-compiler.
  2.3925 +                        When cross-compiling we skip execution of any demos 
  2.3926 +                        etc that may be built, and
  2.3927 +                        also skip binary-file verification.
  2.3928 +                    </dd>
  2.3929 +                    <dt><code><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></code> </dt>
  2.3930 +                    <dd>
  2.3931 +                        Used to pass cross-compilation options to the 
  2.3932 +                        cross-compiler.
  2.3933 +                        These are added to the <code>CFLAGS</code> 
  2.3934 +                        and <code>CXXFLAGS</code> variables. 
  2.3935 +                    </dd>
  2.3936 +                    <dt><code><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></code> </dt>
  2.3937 +                    <dd>
  2.3938 +                        Used primarily for cross-compilation builds
  2.3939 +                        (and always set in that case)
  2.3940 +                        this variable indicates that tools from the
  2.3941 +                        boot JDK should be used during
  2.3942 +                        the build process, not the tools
  2.3943 +                        (<code>javac</code>, <code>javah</code>, <code>jar</code>)
  2.3944 +                        just built (which can't execute on the build host).
  2.3945 +                    </dd>
  2.3946 +                    <dt><code><a name="HOST_CC">HOST_CC</a></code> </dt>
  2.3947 +                    <dd>
  2.3948 +                        The location of the C compiler to generate programs 
  2.3949 +                        to run on the build host.
  2.3950 +                        Some parts of the build generate programs that are
  2.3951 +                        then compiled and executed
  2.3952 +                        to produce other parts of the build. Normally the 
  2.3953 +                        primary C compiler is used
  2.3954 +                        to do this, but when cross-compiling that would be
  2.3955 +                        the cross-compiler and the
  2.3956 +                        resulting program could not be executed. 
  2.3957 +                        On Linux this defaults to <code>/usr/bin/gcc</code>; 
  2.3958 +                        on other platforms it must be
  2.3959 +                        set explicitly.
  2.3960 +                    </dd>
  2.3961 +                </dl>
  2.3962 +            <dt><strong>Specialized Build Options:</strong></dt>
  2.3963 +            <dd>
  2.3964 +                Some build variables exist to support specialized build 
  2.3965 +                environments and/or specialized
  2.3966 +                build products. Their use is only supported in those contexts:
  2.3967 +                <dl>
  2.3968 +                    <dt><code><a name="BUILD_CLIENT_ONLY">BUILD_CLIENT_ONLY</a></code> </dt>
  2.3969 +                    <dd>
  2.3970 +                        Indicates this build will only contain the 
  2.3971 +                        Hotspot client VM. In addition to
  2.3972 +                        controlling the Hotspot build target, 
  2.3973 +                        it ensures that we don't try to copy
  2.3974 +                        any server VM files/directories, 
  2.3975 +                        and defines a default <code>jvm.cfg</code> file
  2.3976 +                        suitable for a client-only environment. 
  2.3977 +                        Using this in a 64-bit build will
  2.3978 +                        generate a sanity warning as 64-bit client 
  2.3979 +                        builds are not directly supported.
  2.3980 +                    </dd>
  2.3981 +                    <dt><code><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</code> </dt>
  2.3982 +                    <dd>
  2.3983 +                        Used when the build environment has no graphical 
  2.3984 +                        capabilities at all. This
  2.3985 +                        excludes building anything that requires graphical 
  2.3986 +                        libraries to be available.
  2.3987 +                    </dd>
  2.3988 +                    <dt><code><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</code> </dt>
  2.3989 +                    <dd>
  2.3990 +                        Used to indicate this is a build of the Oracle 
  2.3991 +                        Java SE Embedded product. 
  2.3992 +                        This will enable the directives included in the 
  2.3993 +                        SE-Embedded specific build 
  2.3994 +                        files.
  2.3995 +                    </dd>
  2.3996 +                    <dt><code><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></code> </dt>
  2.3997 +                    <dd>
  2.3998 +                        If set to false, disables the use of mmap by the
  2.3999 +                        zip utility. Otherwise,
  2.4000 +                        mmap will be used.
  2.4001 +                    </dd>
  2.4002 +                    <dt><code><a name="COMPRESS_JARS"></a>COMPRESS_JARS</code> </dt>
  2.4003 +                    <dd>
  2.4004 +                        If set to true, causes certain jar files that 
  2.4005 +                        would otherwise be built without
  2.4006 +                        compression, to use compression.
  2.4007 +                    </dd>
  2.4008 +                </dl>
  2.4009 +            </dd>
  2.4010 +        </dl>
  2.4011 +    </blockquote>
  2.4012 +
  2.4013 +</blockquote> <!-- Appendix D -->
  2.4014 +
  2.4015 +        <!-- ====================================================== -->
  2.4016          <hr>
  2.4017 -        <h2><a name="creating">Creating the Build</a></h2>
  2.4018 -        <blockquote>
  2.4019 -            Once a machine is setup to build the OpenJDK,
  2.4020 -            the steps to create the build are fairly simple.
  2.4021 -            The various ALT settings can either be made into  variables
  2.4022 -            or can be supplied on the 
  2.4023 -            <a href="#gmake"><tt><i>gmake</i></tt></a> 
  2.4024 -            command.
  2.4025 -            <ol>
  2.4026 -                <li>Use the sanity rule to double check all the ALT settings:
  2.4027 -                    <blockquote>
  2.4028 -                        <tt>
  2.4029 -                            <i>gmake</i> 
  2.4030 -                            sanity
  2.4031 -                            [ARCH_DATA_MODEL=<i>32 or 64</i>]
  2.4032 -                            [other "ALT_" overrides]
  2.4033 -                        </tt>
  2.4034 -                    </blockquote>
  2.4035 -                </li>
  2.4036 -                <li>Start the build with the command:
  2.4037 -                    <blockquote>
  2.4038 -                        <tt>
  2.4039 -                            <i>gmake</i> 
  2.4040 -                            [ARCH_DATA_MODEL=<i>32 or 64</i>]
  2.4041 -                            [ALT_OUTPUTDIR=<i>output_directory</i>] 
  2.4042 -                            [other "ALT_" overrides] 
  2.4043 -                        </tt>
  2.4044 -                    </blockquote>
  2.4045 -                </li>
  2.4046 -            </ol>
  2.4047 -            <p>
  2.4048 -                <strong>Solaris:</strong>
  2.4049 -                Note that ARCH_DATA_MODEL is really only needed on Solaris to
  2.4050 -                indicate you want to built the 64-bit version.
  2.4051 -                And before the Solaris 64-bit binaries can be used, they
  2.4052 -                must be merged with the binaries from a separate 32-bit build.
  2.4053 -                The merged binaries may then be used in either 32-bit or 64-bit mode, with
  2.4054 -                the selection occurring at runtime
  2.4055 -                with the <tt>-d32</tt> or <tt>-d64</tt> options.
  2.4056 -        </blockquote>
  2.4057 -        <!-- ------------------------------------------------------ -->
  2.4058 +        <p>End of OpenJDK README-builds.html document.<br>Please come again!
  2.4059          <hr>
  2.4060 -        <h2><a name="testing">Testing the Build</a></h2>
  2.4061 -        <blockquote>
  2.4062 -            When the build is completed, you should see the generated
  2.4063 -            binaries and associated files in the <tt>j2sdk-image</tt> 
  2.4064 -            directory in the output directory. 
  2.4065 -            The default output directory is
  2.4066 -            <tt>build/<i>platform</i></tt>,
  2.4067 -            where <tt><i>platform</i></tt> is one of
  2.4068 -            <blockquote>
  2.4069 -                <ul>
  2.4070 -                    <li><tt>solaris-sparc</tt></li>
  2.4071 -                    <li><tt>solaris-sparcv9</tt></li>
  2.4072 -                    <li><tt>solaris-i586</tt></li>
  2.4073 -                    <li><tt>solaris-amd64</tt></li>
  2.4074 -                    <li><tt>linux-i586</tt></li>
  2.4075 -                    <li><tt>linux-amd64</tt></li>
  2.4076 -                    <li><tt>windows-i586</tt></li>
  2.4077 -                    <li><tt>windows-amd64</tt></li>
  2.4078 -                </ul>
  2.4079 -            </blockquote>
  2.4080 -            In particular, the 
  2.4081 -            <tt>build/<i>platform</i>/j2sdk-image/bin</tt>
  2.4082 -            directory should contain executables for the 
  2.4083 -            OpenJDK tools and utilities.
  2.4084 -            <p>
  2.4085 -                You can test that the build completed properly by using the build
  2.4086 -                to run the various demos that you will find in the
  2.4087 -                <tt>build/<i>platform</i>/j2sdk-image/demo</tt>
  2.4088 -                directory.
  2.4089 -            <p>
  2.4090 -                The provided regression tests can be run with the <tt>jtreg</tt>
  2.4091 -                utility from
  2.4092 -                <a href="http://openjdk.java.net/jtreg/" target="_blank">the jtreg site</a>.
  2.4093 -        </blockquote>
  2.4094 -        <!-- ------------------------------------------------------ -->
  2.4095 -        <hr>
  2.4096 -        <h2><a name="variables">Environment/Make Variables</a></h2>
  2.4097 -        <p>
  2.4098 -            Some of the
  2.4099 -            environment or make variables (just called <b>variables</b> in this
  2.4100 -            document) that can impact the build are:
  2.4101 -        <blockquote>
  2.4102 -            <dl>
  2.4103 -                <dt><a name="path"><tt>PATH</tt></a> </dt>
  2.4104 -                <dd>Typically you want to set the <tt>PATH</tt> to include:
  2.4105 -                    <ul>
  2.4106 -                        <li>The location of the GNU make binary</li>
  2.4107 -                        <li>The location of the Bootstrap JDK <tt>java</tt> 
  2.4108 -                            (see <a href="#bootjdk">Bootstrap JDK</a>)</li>
  2.4109 -                        <li>The location of the C/C++ compilers 
  2.4110 -                            (see <a href="#compilers"><tt>compilers</tt></a>)</li>
  2.4111 -                        <li>The location or locations for the Unix command utilities
  2.4112 -                            (e.g. <tt>/usr/bin</tt>)</li>
  2.4113 -                    </ul>
  2.4114 -                </dd>
  2.4115 -                <dt><tt>MILESTONE</tt> </dt>
  2.4116 -                <dd>
  2.4117 -                    The milestone name for the build (<i>e.g.</i>"beta"). 
  2.4118 -                    The default value is "internal".
  2.4119 -                </dd>
  2.4120 -                <dt><tt>BUILD_NUMBER</tt> </dt>
  2.4121 -                <dd>
  2.4122 -                    The build number for the build (<i>e.g.</i> "b27"). 
  2.4123 -                    The default value is "b00".
  2.4124 -                </dd>
  2.4125 -                <dt><a name="arch_data_model"><tt>ARCH_DATA_MODEL</tt></a></dt>
  2.4126 -                <dd>The <tt>ARCH_DATA_MODEL</tt> variable
  2.4127 -                    is used to specify whether the build is to generate 32-bit or 64-bit
  2.4128 -                    binaries. 
  2.4129 -                    The Solaris build supports either 32-bit or 64-bit builds, but
  2.4130 -                    Windows and Linux will support only one, depending on the specific
  2.4131 -                    OS being used.
  2.4132 -                    Normally, setting this variable is only necessary on Solaris.
  2.4133 -                    Set <tt>ARCH_DATA_MODEL</tt> to <tt>32</tt> for generating 32-bit binaries, 
  2.4134 -                    or to <tt>64</tt> for generating 64-bit binaries.
  2.4135 -                </dd>
  2.4136 -                <dt><a name="ALT_BOOTDIR"><tt>ALT_BOOTDIR</tt></a></dt>
  2.4137 -                <dd>
  2.4138 -                    The location of the bootstrap JDK installation. 
  2.4139 -                    See <a href="#bootjdk">Bootstrap JDK</a> for more information.
  2.4140 -                    You should always install your own local Bootstrap JDK and
  2.4141 -                    always set <tt>ALT_BOOTDIR</tt> explicitly.
  2.4142 -                </dd>
  2.4143 -                <dt><a name="ALT_JDK_IMPORT_PATH"><tt>ALT_JDK_IMPORT_PATH</tt></a></dt>
  2.4144 -                <dd>
  2.4145 -                    The location of a previously built JDK installation. 
  2.4146 -                    See <a href="#importjdk">Optional Import JDK</a> for more information.
  2.4147 -                </dd>
  2.4148 -                <dt><a name="ALT_OUTPUTDIR"><tt>ALT_OUTPUTDIR</tt></a> </dt>
  2.4149 -                <dd>
  2.4150 -                    An override for specifying the (absolute) path of where the
  2.4151 -                    build output is to go.
  2.4152 -                    The default output directory will be build/<i>platform</i>.
  2.4153 -                </dd>
  2.4154 -                <dt><a name="ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> </dt>
  2.4155 -                <dd>
  2.4156 -                    The location of the C/C++ compiler.
  2.4157 -                    The default varies depending on the platform. 
  2.4158 -                </dd>
  2.4159 -                <dt><tt><a name="ALT_CACERTS_FILE">ALT_CACERTS_FILE</a></tt></dt>
  2.4160 -                <dd>
  2.4161 -                    The location of the <a href="#cacerts">cacerts</a> file.
  2.4162 -                    The default will refer to 
  2.4163 -                    <tt>jdk/src/share/lib/security/cacerts</tt>.
  2.4164 -                </dd>
  2.4165 -                <dt><a name="ALT_CUPS_HEADERS_PATH"><tt>ALT_CUPS_HEADERS_PATH</tt></a> </dt>
  2.4166 -                <dd>
  2.4167 -                    The location of the CUPS header files.
  2.4168 -                    See <a href="#cups">CUPS information</a> for more information.
  2.4169 -                    If this path does not exist the fallback path is 
  2.4170 -                    <tt>/usr/include</tt>.
  2.4171 -                </dd>
  2.4172 -                <dt><a name="ALT_FREETYPE_LIB_PATH"><tt>ALT_FREETYPE_LIB_PATH</tt></a></dt>
  2.4173 -                <dd>
  2.4174 -                    The location of the FreeType shared library. 
  2.4175 -                    See <a href="#freetype">FreeType information</a> for details. 
  2.4176 -                </dd>
  2.4177 -                <dt><a name="ALT_FREETYPE_HEADERS_PATH"><tt>ALT_FREETYPE_HEADERS_PATH</tt></a></dt>
  2.4178 -                <dd>
  2.4179 -                    The location of the FreeType header files.
  2.4180 -                    See <a href="#freetype">FreeType information</a> for details. 
  2.4181 -                </dd>
  2.4182 -                <dt><a name="ALT_JDK_DEVTOOLS_PATH"><tt>ALT_JDK_DEVTOOLS_PATH</tt></a></dt>
  2.4183 -                <dd>
  2.4184 -                    The default root location of the devtools.
  2.4185 -                    The default value is 
  2.4186 -                    <tt>$(ALT_SLASH_JAVA)/devtools</tt>.
  2.4187 -                </dd>
  2.4188 -                <dt><tt><a name="ALT_DEVTOOLS_PATH">ALT_DEVTOOLS_PATH</a></tt> </dt>
  2.4189 -                <dd>
  2.4190 -                    The location of tools like the 
  2.4191 -                    <a href="#zip"><tt>zip</tt> and <tt>unzip</tt></a>
  2.4192 -                    binaries, but might also contain the GNU make utility
  2.4193 -                    (<tt><i>gmake</i></tt>).
  2.4194 -                    So this area is a bit of a grab bag, especially on Windows.
  2.4195 -                    The default value depends on the platform and
  2.4196 -                    Unix Commands being used.
  2.4197 -                    On Linux the default will be 
  2.4198 -                    <tt>$(ALT_JDK_DEVTOOLS_PATH)/linux/bin</tt>, 
  2.4199 -                    on Solaris
  2.4200 -                    <tt>$(ALT_JDK_DEVTOOLS_PATH)/<i>{sparc,i386}</i>/bin</tt>, 
  2.4201 -                    and on Windows with CYGWIN
  2.4202 -                    <tt>/usr/bin</tt>.
  2.4203 -                </dd>
  2.4204 -                <dt><tt><a name="ALT_DROPS_DIR">ALT_DROPS_DIR</a></tt> </dt>
  2.4205 -                <dd>
  2.4206 -                    The location of any source drop bundles
  2.4207 -                    (see <a href="#drops">Managing the Source Drops</a>).
  2.4208 -                    The default will be
  2.4209 -                    <tt>$(ALT_JDK_DEVTOOLS_PATH)/share/jdk8-drops</tt>.
  2.4210 -                </dd>
  2.4211 -                <dt><a name="ALT_UNIXCCS_PATH"><tt>ALT_UNIXCCS_PATH</tt></a></dt>
  2.4212 -                <dd>
  2.4213 -                    <strong>Solaris only:</strong>
  2.4214 -                    An override for specifying where the Unix CCS
  2.4215 -                    command set are located.
  2.4216 -                    The default location is <tt>/usr/ccs/bin</tt> 
  2.4217 -                </dd>
  2.4218 -                <dt><a name="ALT_SLASH_JAVA"><tt>ALT_SLASH_JAVA</tt></a></dt>
  2.4219 -                <dd>
  2.4220 -                    The default root location for many of the ALT path locations
  2.4221 -                    of the following ALT variables.
  2.4222 -                    The default value is 
  2.4223 -                    <tt>"/java"</tt> on Solaris and Linux, 
  2.4224 -                    <tt>"J:"</tt> on Windows.
  2.4225 -                </dd>
  2.4226 -                <dt><a name="ALT_BUILD_JDK_IMPORT_PATH"><tt>ALT_BUILD_JDK_IMPORT_PATH</tt></a></dt>
  2.4227 -                <dd>
  2.4228 -                    These are useful in managing builds on multiple platforms.
  2.4229 -                    The default network location for all of the import JDK images
  2.4230 -                    for all platforms. 
  2.4231 -                    If <tt><a href="#ALT_JDK_IMPORT_PATH">ALT_JDK_IMPORT_PATH</a></tt>
  2.4232 -                    is not set, this directory will be used and should contain 
  2.4233 -                    the following directories:
  2.4234 -                    <tt>solaris-sparc</tt>,
  2.4235 -                    <tt>solaris-i586</tt>,
  2.4236 -                    <tt>solaris-sparcv9</tt>,
  2.4237 -                    <tt>solaris-amd64</tt>,
  2.4238 -                    <tt>linux-i586</tt>,
  2.4239 -                    <tt>linux-amd64</tt>,
  2.4240 -                    <tt>windows-i586</tt>,
  2.4241 -                    and
  2.4242 -                    <tt>windows-amd64</tt>.
  2.4243 -                    Where each of these directories contain the import JDK image
  2.4244 -                    for that platform.
  2.4245 -                </dd>
  2.4246 -                <dt><a name="ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a></dt>
  2.4247 -                <dd>
  2.4248 -                    The top-level directory of the libraries and include files for the platform's 
  2.4249 -                    graphical programming environment. The default location is platform specific. 
  2.4250 -                    For example, on Linux it defaults to <tt>/usr/X11R6/</tt>.
  2.4251 -                </dd>
  2.4252 -                <dt><strong>Windows specific:</strong></dt>
  2.4253 -                <dd>
  2.4254 -                    <dl>
  2.4255 -                        <dt><a name="ALT_WINDOWSSDKDIR"><tt>ALT_WINDOWSSDKDIR</tt></a> </dt>
  2.4256 -                        <dd>
  2.4257 -                            The location of the 
  2.4258 -                            Microsoft Windows SDK where some tools will be
  2.4259 -                            located.
  2.4260 -                            The default is whatever WINDOWSSDKDIR is set to
  2.4261 -                            (or WindowsSdkDir) or the path
  2.4262 -                            <br>
  2.4263 -                            <tt>c:\Program Files\Microsoft SDKs\Windows\v7.0a</tt>
  2.4264 -                        </dd>
  2.4265 -                        <dt><tt><a name="ALT_DXSDK_PATH">ALT_DXSDK_PATH</a></tt> </dt>
  2.4266 -                        <dd>
  2.4267 -                            The location of the 
  2.4268 -                            <a href="#dxsdk">Microsoft DirectX 9 SDK</a>.
  2.4269 -                            The default will be to try and use the DirectX environment
  2.4270 -                            variable <tt>DXSDK_DIR</tt>,
  2.4271 -                            failing that, look in <tt>C:/DXSDK</tt>.
  2.4272 -                        </dd>
  2.4273 -                        <dt><tt><a name="ALT_MSVCRNN_DLL_PATH">ALT_MSVCRNN_DLL_PATH</a></tt> </dt>
  2.4274 -                        <dd>
  2.4275 -                            The location of the 
  2.4276 -                            <a href="#msvcrNN"><tt>MSVCR100.DLL</tt></a>. 
  2.4277 -                        </dd>
  2.4278 -                    </dl>
  2.4279 -                </dd>
  2.4280 -                <dt><strong>Cross-Compilation Support:</strong></dt>
  2.4281 -                <dd>
  2.4282 -                    <dl>
  2.4283 -                        <dt><a name="CROSS_COMPILE_ARCH"><tt>CROSS_COMPILE_ARCH</tt></a> </dt>
  2.4284 -                        <dd>
  2.4285 -                            Set to the target architecture of a cross-compilation build. If set, this
  2.4286 -                            variable is used to signify that we are cross-compiling. The expectation
  2.4287 -                            is that <a href="#ALT_COMPILER_PATH"><tt>ALT_COMPILER_PATH</tt></a> is set
  2.4288 -                            to point to the cross-compiler and that any cross-compilation specific flags
  2.4289 -                            are passed using <a href="#EXTRA_CFLAGS"><tt>EXTRA_CFLAGS</tt></a>.
  2.4290 -                            The <a href="#ALT_OPENWIN_HOME"><tt>ALT_OPENWIN_HOME</tt></a> variable should 
  2.4291 -                            also be set to point to the graphical header files (e.g. X11) provided with 
  2.4292 -                            the cross-compiler.
  2.4293 -                            When cross-compiling we skip execution of any demos etc that may be built, and
  2.4294 -                            also skip binary-file verification.
  2.4295 -                        </dd>
  2.4296 -                        <dt><tt><a name="EXTRA_CFLAGS">EXTRA_CFLAGS</a></tt> </dt>
  2.4297 -                        <dd>
  2.4298 -                           Used to pass cross-compilation options to the cross-compiler.
  2.4299 -                           These are added to the <tt>CFLAGS</tt> and <tt>CXXFLAGS</tt> variables. 
  2.4300 -                        </dd>
  2.4301 -                        <dt><tt><a name="USE_ONLY_BOOTDIR_TOOLS">USE_ONLY_BOOTDIR_TOOLS</a></tt> </dt>
  2.4302 -                        <dd>
  2.4303 -                            Used primarily for cross-compilation builds (and always set in that case)
  2.4304 -                            this variable indicates that tools from the boot JDK should be used during
  2.4305 -                            the build process, not the tools (<tt>javac</tt>, <tt>javah</tt>, <tt>jar</tt>)
  2.4306 -                            just built (which can't execute on the build host).
  2.4307 -                        </dd>
  2.4308 -                        <dt><tt><a name="HOST_CC">HOST_CC</a></tt> </dt>
  2.4309 -                        <dd>
  2.4310 -                            The location of the C compiler to generate programs to run on the build host.
  2.4311 -                            Some parts of the build generate programs that are then compiled and executed
  2.4312 -                            to produce other parts of the build. Normally the primary C compiler is used
  2.4313 -                            to do this, but when cross-compiling that would be the cross-compiler and the
  2.4314 -                            resulting program could not be executed. 
  2.4315 -                            On Linux this defaults to <tt>/usr/bin/gcc</tt>; on other platforms it must be
  2.4316 -                            set explicitly.
  2.4317 -                        </dd>
  2.4318 -                    </dl>
  2.4319 -                <dt><strong>Specialized Build Options:</strong></dt>
  2.4320 -                <dd>
  2.4321 -                  Some build variables exist to support specialized build environments and/or specialized
  2.4322 -                  build products. Their use is only supported in those contexts:
  2.4323 -                    <dl>
  2.4324 -                        <dt><tt><a name="BUILD_CLIENT_ONLY">BUILD_CLIENT_ONLY</a></tt> </dt>
  2.4325 -                        <dd>
  2.4326 -                            Indicates this build will only contain the Hotspot client VM. In addition to
  2.4327 -                            controlling the Hotspot build target, it ensures that we don't try to copy
  2.4328 -                            any server VM files/directories, and defines a default <tt>jvm.cfg</tt> file
  2.4329 -                            suitable for a client-only environment. Using this in a 64-bit build will
  2.4330 -                            generate a sanity warning as 64-bit client builds are not directly supported.
  2.4331 -                        </dd>
  2.4332 -                        <dt><tt><a name="BUILD_HEADLESS_ONLY"></a>BUILD_HEADLESS_ONLY</tt> </dt>
  2.4333 -                        <dd>
  2.4334 -                            Used when the build environment has no graphical capabilities at all. This
  2.4335 -                            excludes building anything that requires graphical libraries to be available.
  2.4336 -                        </dd>
  2.4337 -                        <dt><tt><a name="JAVASE_EMBEDDED"></a>JAVASE_EMBEDDED</tt> </dt>
  2.4338 -                        <dd>
  2.4339 -                            Used to indicate this is a build of the Oracle Java SE Embedded product. 
  2.4340 -                            This will enable the directives included in the SE-Embedded specific build 
  2.4341 -                            files.
  2.4342 -                        </dd>
  2.4343 -                        <dt><tt><a name="LIBZIP_CAN_USE_MMAP">LIBZIP_CAN_USE_MMAP</a></tt> </dt>
  2.4344 -                        <dd>
  2.4345 -                            If set to false, disables the use of mmap by the zip utility. Otherwise,
  2.4346 -                            mmap will be used.
  2.4347 -                        </dd>
  2.4348 -                        <dt><tt><a name="COMPRESS_JARS"></a>COMPRESS_JARS</tt> </dt>
  2.4349 -                        <dd>
  2.4350 -                          If set to true, causes certain jar files that would otherwise be built without
  2.4351 -                          compression, to use compression.
  2.4352 -                        </dd>
  2.4353 -                    </dl>
  2.4354 -                </dd>
  2.4355 -            </dl>
  2.4356 -        </blockquote>
  2.4357 -        <!-- ------------------------------------------------------ -->
  2.4358 -        <hr>
  2.4359 -        <h2><a name="hints">Hints and Tips</a></h2>
  2.4360 -        <blockquote>
  2.4361 -            You don't have to use all these hints and tips, and in fact people do actually
  2.4362 -            build with systems that contradict these, but they might prove to be
  2.4363 -            helpful to some.
  2.4364 -            <ul>
  2.4365 -                <li>
  2.4366 -                    If <tt>make sanity</tt> does not work, find out why, fix that
  2.4367 -                    before going any further. Or at least understand what the
  2.4368 -                    complaints are from it.
  2.4369 -                </li>
  2.4370 -                <li>
  2.4371 -                    JDK: Keep in mind that you are building a JDK, but you need
  2.4372 -                    a JDK (BOOTDIR JDK) to build this JDK.
  2.4373 -                </li>
  2.4374 -                <li>
  2.4375 -                    Ant: The ant utility is a java application and besides having
  2.4376 -                    ant available to you, it's important that ant finds the right
  2.4377 -                    java to run with. Make sure you can type <tt>ant -version</tt>
  2.4378 -                    and get clean results with no error messages.
  2.4379 -                </li>
  2.4380 -                <li>
  2.4381 -                    Linux: Try and favor the system packages over building your own
  2.4382 -                    or getting packages from other areas.
  2.4383 -                    Most Linux builds should be possible with the system's
  2.4384 -                    available packages.
  2.4385 -                </li>
  2.4386 -                <li>
  2.4387 -                    Solaris: Typically you will need to get compilers on your systems
  2.4388 -                    and occasionally GNU make 3.81 if a gmake binary is not available.
  2.4389 -                    The gmake binary might not be 3.81, be careful.
  2.4390 -                </li>
  2.4391 -                <li>
  2.4392 -                    Windows VS2010:
  2.4393 -                    <ul>
  2.4394 -                        <li>
  2.4395 -                            Only the C++ part of VS2010 is needed.
  2.4396 -                            Try to let the installation go to the default install directory.
  2.4397 -                            Always reboot your system after installing VS2010.
  2.4398 -                            The system environment variable VS100COMNTOOLS should be
  2.4399 -                            set in your environment.
  2.4400 -                        </li>
  2.4401 -                        <li>
  2.4402 -                            Make sure that TMP and TEMP are also set in the environment
  2.4403 -                            and refer to Windows paths that exist, like <tt>C:\temp</tt>,
  2.4404 -                            not <tt>/tmp</tt>, not <tt>/cygdrive/c/temp</tt>, and not <tt>C:/temp</tt>.
  2.4405 -                            <tt>C:\temp</tt> is just an example, it is assumed that this area is
  2.4406 -                            private to the user, so by default after installs you should
  2.4407 -                            see a unique user path in these variables.
  2.4408 -                        </li>
  2.4409 -                        <li>
  2.4410 -                            You need to use vsvars32.bat or vsvars64.bat to get the
  2.4411 -                            PATH, INCLUDE, LIB, LIBPATH, and WINDOWSSDKDIR
  2.4412 -                            variables set in your shell environment.
  2.4413 -                            These bat files are not easy to use from a shell environment.
  2.4414 -                            However, there is a script placed in the root jdk8 repository called
  2.4415 -                            vsvars.sh that can help, it should only be done once in a shell
  2.4416 -                            that will be doing the build, e.g.<br>
  2.4417 -                            <tt>sh ./make/scripts/vsvars.sh -v10 > settings<br>
  2.4418 -                                eval `cat settings`</tt><br>
  2.4419 -                            Or just <tt>eval `sh ./make/scripts/vsvars.sh -v10`</tt>.
  2.4420 -                        </li>
  2.4421 -                    </ul>
  2.4422 -                </li>
  2.4423 -                <li>
  2.4424 -                    Windows: PATH order is critical, see the
  2.4425 -                    <a href="#paths">paths</a> section for more information.
  2.4426 -                </li>
  2.4427 -                <li>
  2.4428 -                    Windows 64bit builds: Use ARCH_DATA_MODEL=64.
  2.4429 -                </li>
  2.4430 -            </ul>
  2.4431 -        </blockquote>
  2.4432 -        <!-- ------------------------------------------------------ -->
  2.4433 -        <hr>
  2.4434 -        <h2><a name="troubleshooting">Troubleshooting</a></h2>
  2.4435 -        <blockquote>
  2.4436 -            A build can fail for any number of reasons. 
  2.4437 -            Most failures
  2.4438 -            are a result of trying to build in an environment in which all the
  2.4439 -            pre-build requirements have not been met. 
  2.4440 -            The first step in
  2.4441 -            troubleshooting a build failure is to recheck that you have satisfied
  2.4442 -            all the pre-build requirements for your platform.
  2.4443 -            Look for the check list of the platform you are building on in the
  2.4444 -            <a href="#contents">Table of Contents</a>.
  2.4445 -            <p>
  2.4446 -                You can validate your build environment by using the <tt>sanity</tt>
  2.4447 -                target.
  2.4448 -                Any errors listed
  2.4449 -                will stop the build from starting, and any warnings may result in
  2.4450 -                a flawed product build.
  2.4451 -                We strongly encourage you to evaluate every
  2.4452 -                sanity check warning and fix it if required, before you proceed
  2.4453 -                further with your build.
  2.4454 -            <p>
  2.4455 -                Some of the more common problems with builds are briefly described
  2.4456 -                below, with suggestions for remedies.
  2.4457 -            <ul>
  2.4458 -                <li>
  2.4459 -                    <b>Corrupted Bundles on Windows:</b>
  2.4460 -                    <blockquote>
  2.4461 -                        Some virus scanning software has been known to corrupt the
  2.4462 -                        downloading of zip bundles.
  2.4463 -                        It may be necessary to disable the 'on access' or 'real time'
  2.4464 -                        virus scanning features to prevent this corruption.
  2.4465 -                        This type of "real time" virus scanning can also slow down the
  2.4466 -                        build process significantly.
  2.4467 -                        Temporarily disabling the feature, or excluding the build
  2.4468 -                        output directory may be necessary to get correct and faster builds.
  2.4469 -                    </blockquote>
  2.4470 -                </li>
  2.4471 -                <li>
  2.4472 -                    <b>Slow Builds:</b>
  2.4473 -                    <blockquote>
  2.4474 -                        If your build machine seems to be overloaded from too many
  2.4475 -                        simultaneous C++ compiles, try setting the <tt>HOTSPOT_BUILD_JOBS</tt>
  2.4476 -                        variable to <tt>1</tt> (if you're using a multiple CPU
  2.4477 -                        machine, setting it to more than the the number of CPUs is probably
  2.4478 -                        not a good idea).
  2.4479 -                        <p>
  2.4480 -                            Creating the javadocs can be very slow, if you are running
  2.4481 -                            javadoc, consider skipping that step.
  2.4482 -                        <p>
  2.4483 -                            Faster hardware and more RAM always helps too.
  2.4484 -                            The VM build tends to be CPU intensive (many C++ compiles),
  2.4485 -                            and the rest of the JDK will often be disk intensive.
  2.4486 -                        <p>
  2.4487 -                            Faster compiles are possible using a tool called
  2.4488 -                            <a href="http://ccache.samba.org/" target="_blank">ccache</a>.
  2.4489 -                    </blockquote>
  2.4490 -                </li>
  2.4491 -                <li>
  2.4492 -                    <b>File time issues:</b>
  2.4493 -                    <blockquote>
  2.4494 -                        If you see warnings that refer to file time stamps, e.g.
  2.4495 -                        <blockquote>
  2.4496 -                            <i>Warning message:</i><tt> File `xxx' has modification time in
  2.4497 -                                the future.</tt>
  2.4498 -                            <br>
  2.4499 -                            <i>Warning message:</i> <tt> Clock skew detected. Your build may
  2.4500 -                                be incomplete.</tt>
  2.4501 -                        </blockquote>
  2.4502 -                        These warnings can occur when the clock on the build machine is out of
  2.4503 -                        sync with the timestamps on the source files. Other errors, apparently
  2.4504 -                        unrelated but in fact caused by the clock skew, can occur along with
  2.4505 -                        the clock skew warnings. These secondary errors may tend to obscure the
  2.4506 -                        fact that the true root cause of the problem is an out-of-sync clock.
  2.4507 -                        For example, an out-of-sync clock has been known to cause an old
  2.4508 -                        version of javac to be used to compile some files, resulting in errors
  2.4509 -                        when the pre-1.4 compiler ran across the new <tt>assert</tt> keyword
  2.4510 -                        in the 1.4 source code.
  2.4511 -                        <p>
  2.4512 -                            If you see these warnings, reset the clock on the build
  2.4513 -                            machine, run "<tt><i>gmake</i> clobber</tt>" or delete the directory
  2.4514 -                            containing the build output, and restart the build from the beginning.
  2.4515 -                    </blockquote>
  2.4516 -                </li>
  2.4517 -                <li>
  2.4518 -                    <b>Error message: <tt>Trouble writing out table to disk</tt></b>
  2.4519 -                    <blockquote>
  2.4520 -                        Increase the amount of swap space on your build machine.
  2.4521 -                    </blockquote>
  2.4522 -                </li>
  2.4523 -                <li>
  2.4524 -                    <b>Error Message: <tt>libstdc++ not found:</tt></b>
  2.4525 -                    <blockquote>
  2.4526 -                        This is caused by a missing libstdc++.a library.
  2.4527 -                        This is installed as part of a specific package
  2.4528 -                        (e.g. libstdc++.so.devel.386).
  2.4529 -                        By default some 64-bit Linux versions (e.g. Fedora)
  2.4530 -                        only install the 64-bit version of the libstdc++ package.
  2.4531 -                        Various parts of the JDK build require a static
  2.4532 -                        link of the C++ runtime libraries to allow for maximum
  2.4533 -                        portability of the built images.
  2.4534 -                    </blockquote>
  2.4535 -                </li>
  2.4536 -                <li>
  2.4537 -                    <b>Error Message: <tt>cannot restore segment prot after reloc</tt></b>
  2.4538 -                    <blockquote>
  2.4539 -                        This is probably an issue with SELinux (See
  2.4540 -                        <a href="http://en.wikipedia.org/wiki/SELinux" target="_blank">
  2.4541 -                            http://en.wikipedia.org/wiki/SELinux</a>).
  2.4542 -                        Parts of the VM is built without the <tt>-fPIC</tt> for
  2.4543 -                        performance reasons.
  2.4544 -                        <p>
  2.4545 -                            To completely disable SELinux:
  2.4546 -                        <ol>
  2.4547 -                            <li><tt>$ su root</tt></li>
  2.4548 -                            <li><tt># system-config-securitylevel</tt></li>
  2.4549 -                            <li><tt>In the window that appears, select the SELinux tab</tt></li>
  2.4550 -                            <li><tt>Disable SELinux</tt></li>
  2.4551 -                        </ol>
  2.4552 -                        <p>
  2.4553 -                            Alternatively, instead of completely disabling it you could
  2.4554 -                            disable just this one check.
  2.4555 -                        <ol>
  2.4556 -                            <li>Select System->Administration->SELinux Management</li>
  2.4557 -                            <li>In the SELinux Management Tool which appears,
  2.4558 -                                select "Boolean" from the menu on the left</li>
  2.4559 -                            <li>Expand the "Memory Protection" group</li>
  2.4560 -                            <li>Check the first item, labeled
  2.4561 -                                "Allow all unconfined executables to use libraries requiring text relocation ..."</li>
  2.4562 -                        </ol>
  2.4563 -                    </blockquote>
  2.4564 -                </li>
  2.4565 -                <li>
  2.4566 -                    <b>Windows Error Messages:</b><br>
  2.4567 -                    <tt>*** fatal error - couldn't allocate heap, ... </tt><br>
  2.4568 -                    <tt>rm fails with "Directory not empty"</tt><br>
  2.4569 -                    <tt>unzip fails with "cannot create ... Permission denied"</tt><br>
  2.4570 -                    <tt>unzip fails with "cannot create ... Error 50"</tt><br>
  2.4571 -                    <blockquote>
  2.4572 -                        The CYGWIN software can conflict with other non-CYGWIN
  2.4573 -                        software. See the CYGWIN FAQ section on
  2.4574 -                        <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda" target="_blank">
  2.4575 -                            BLODA (applications that interfere with CYGWIN)</a>.
  2.4576 -                    </blockquote>
  2.4577 -                </li>
  2.4578 -                <li>
  2.4579 -                    <b>Windows Error Message: <tt>spawn failed</tt></b>
  2.4580 -                    <blockquote>
  2.4581 -                        Try rebooting the system, or there could be some kind of
  2.4582 -                        issue with the disk or disk partition being used.
  2.4583 -                        Sometimes it comes with a "Permission Denied" message.
  2.4584 -                    </blockquote>
  2.4585 -                </li>
  2.4586 -            </ul>
  2.4587 -        </blockquote>
  2.4588 -        <!-- ------------------------------------------------------ -->
  2.4589 -        <hr>
  2.4590 -        <h2><a name="newbuild">The New Build</a></h2>
  2.4591 -        <blockquote>
  2.4592 -            The <a href="http://openjdk.java.net/projects/build-infra/">
  2.4593 -            Build Infrastructure project</a> is working on a new 
  2.4594 -            build. For information on how to try it out, please see the
  2.4595 -            <a href="http://openjdk.java.net/projects/build-infra/guide.html">
  2.4596 -            Build Infra User Guide</a> 
  2.4597 -        </blockquote>
  2.4598 -        <hr>
  2.4599 +
  2.4600      </body>
  2.4601  </html>

mercurial